160
|
1
|
|
2 /*
|
|
3 * Copyright (C) Igor Sysoev
|
|
4 */
|
|
5
|
|
6
|
|
7 #ifndef _NGX_SHMTX_H_INCLUDED_
|
|
8 #define _NGX_SHMTX_H_INCLUDED_
|
|
9
|
|
10
|
|
11 #include <ngx_config.h>
|
|
12 #include <ngx_core.h>
|
|
13
|
|
14
|
|
15 typedef struct {
|
|
16 #if (NGX_HAVE_ATOMIC_OPS)
|
|
17 ngx_atomic_t *lock;
|
624
|
18 #if (NGX_HAVE_POSIX_SEM)
|
|
19 ngx_uint_t semaphore;
|
|
20 sem_t sem;
|
|
21 #endif
|
160
|
22 #else
|
|
23 ngx_fd_t fd;
|
|
24 u_char *name;
|
|
25 #endif
|
624
|
26 ngx_uint_t spin;
|
160
|
27 } ngx_shmtx_t;
|
|
28
|
|
29
|
258
|
30 ngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, void *addr, u_char *name);
|
160
|
31 void ngx_shmtx_destory(ngx_shmtx_t *mtx);
|
624
|
32 ngx_uint_t ngx_shmtx_trylock(ngx_shmtx_t *mtx);
|
|
33 void ngx_shmtx_lock(ngx_shmtx_t *mtx);
|
|
34 void ngx_shmtx_unlock(ngx_shmtx_t *mtx);
|
160
|
35
|
|
36
|
|
37 #endif /* _NGX_SHMTX_H_INCLUDED_ */
|