Update and clean Tomato RAF files
[tomato.git] / release / src / router / nginx / src / core / ngx_shmtx.h
blob91e11bebbf414d883c469e3d5f5217cde5c66aaa
2 /*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
5 */
8 #ifndef _NGX_SHMTX_H_INCLUDED_
9 #define _NGX_SHMTX_H_INCLUDED_
12 #include <ngx_config.h>
13 #include <ngx_core.h>
16 typedef struct {
17 ngx_atomic_t lock;
18 #if (NGX_HAVE_POSIX_SEM)
19 ngx_atomic_t wait;
20 #endif
21 } ngx_shmtx_sh_t;
24 typedef struct {
25 #if (NGX_HAVE_ATOMIC_OPS)
26 ngx_atomic_t *lock;
27 #if (NGX_HAVE_POSIX_SEM)
28 ngx_atomic_t *wait;
29 ngx_uint_t semaphore;
30 sem_t sem;
31 #endif
32 #else
33 ngx_fd_t fd;
34 u_char *name;
35 #endif
36 ngx_uint_t spin;
37 } ngx_shmtx_t;
40 ngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, ngx_shmtx_sh_t *addr,
41 u_char *name);
42 void ngx_shmtx_destroy(ngx_shmtx_t *mtx);
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);
46 ngx_uint_t ngx_shmtx_force_unlock(ngx_shmtx_t *mtx, ngx_pid_t pid);
49 #endif /* _NGX_SHMTX_H_INCLUDED_ */