160
|
1
|
|
2 /*
|
|
3 * Copyright (C) Igor Sysoev
|
660
|
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 {
|
650
|
17 ngx_atomic_t lock;
|
|
18 #if (NGX_HAVE_POSIX_SEM)
|
|
19 ngx_atomic_t wait;
|
|
20 #endif
|
|
21 } ngx_shmtx_sh_t;
|
|
22
|
|
23
|
|
24 typedef struct {
|
160
|
25 #if (NGX_HAVE_ATOMIC_OPS)
|
|
26 ngx_atomic_t *lock;
|
624
|
27 #if (NGX_HAVE_POSIX_SEM)
|
650
|
28 ngx_atomic_t *wait;
|
624
|
29 ngx_uint_t semaphore;
|
|
30 sem_t sem;
|
|
31 #endif
|
160
|
32 #else
|
|
33 ngx_fd_t fd;
|
|
34 u_char *name;
|
|
35 #endif
|
624
|
36 ngx_uint_t spin;
|
160
|
37 } ngx_shmtx_t;
|
|
38
|
|
39
|
650
|
40 ngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, ngx_shmtx_sh_t *addr,
|
|
41 u_char *name);
|
680
|
42 void ngx_shmtx_destroy(ngx_shmtx_t *mtx);
|
624
|
43 ngx_uint_t ngx_shmtx_trylock(ngx_shmtx_t *mtx);
|
|
44 void ngx_shmtx_lock(ngx_shmtx_t *mtx);
|
|
45 void ngx_shmtx_unlock(ngx_shmtx_t *mtx);
|
650
|
46 ngx_uint_t ngx_shmtx_force_unlock(ngx_shmtx_t *mtx, ngx_pid_t pid);
|
160
|
47
|
|
48
|
|
49 #endif /* _NGX_SHMTX_H_INCLUDED_ */
|