comparison src/os/unix/ngx_thread.h @ 266:5238e93961a1

nginx-0.0.2-2004-02-23-23:57:12 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 23 Feb 2004 20:57:12 +0000
parents
children 83205e0b5522
comparison
equal deleted inserted replaced
265:6468241715e6 266:5238e93961a1
1 #ifndef _NGX_THREAD_H_INCLUDED_
2 #define _NGX_THREAD_H_INCLUDED_
3
4
5 #include <ngx_config.h>
6 #include <ngx_core.h>
7
8 #if (NGX_THREADS)
9
10 #if (USE_RFORK)
11
12 #include <sys/ipc.h>
13 #include <sys/sem.h>
14 #include <sched.h>
15
16 typedef pid_t ngx_tid_t;
17
18 #define TID_T_FMT PID_T_FMT
19
20 #define ngx_log_tid 0
21
22 #undef ngx_log_pid
23 #define ngx_log_pid ngx_thread_self()
24
25
26 #define NGX_MUTEX_LIGHT 1
27 #define NGX_MUTEX_CV 2
28
29 #define NGX_MUTEX_LOCK_BUSY 0x80000000
30
31 typedef struct {
32 ngx_atomic_t lock;
33 ngx_log_t *log;
34 int semid;
35 } ngx_mutex_t;
36
37
38 #else /* use pthreads */
39
40 #include <pthread.h>
41
42 typedef pthread_t ngx_tid_t;
43
44 #define ngx_log_tid ngx_thread_self()
45
46 #endif
47
48
49 ngx_int_t ngx_init_threads(int n, size_t size, ngx_log_t *log);
50 int ngx_create_thread(ngx_tid_t *tid, int (*func)(void *arg), void *arg,
51 ngx_log_t *log);
52 ngx_tid_t ngx_thread_self();
53
54 ngx_mutex_t *ngx_mutex_init(ngx_log_t *log, uint flags);
55 void ngx_mutex_done(ngx_mutex_t *m);
56
57 #define ngx_mutex_trylock(m) ngx_mutex_do_lock(m, 1)
58 #define ngx_mutex_lock(m) ngx_mutex_do_lock(m, 0)
59 ngx_int_t ngx_mutex_do_lock(ngx_mutex_t *m, ngx_int_t try);
60 ngx_int_t ngx_mutex_unlock(ngx_mutex_t *m);
61
62
63 #else /* !NGX_THREADS */
64
65 #define ngx_log_tid 0
66 #define TID_T_FMT "%d"
67
68 #define ngx_mutex_lock(m)
69 #define ngx_mutex_unlock(m)
70
71 #endif
72
73
74 #endif /* _NGX_THREAD_H_INCLUDED_ */