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