xref: /unit/src/nxt_semaphore.h (revision 0:a63ceefd6ab0)
1 
2 /*
3  * Copyright (C) Igor Sysoev
4  * Copyright (C) NGINX, Inc.
5  */
6 
7 #ifndef _NXT_UNIX_SEMAPHORE_H_INCLUDED_
8 #define _NXT_UNIX_SEMAPHORE_H_INCLUDED_
9 
10 
11 #if (NXT_HAVE_SEM_TIMEDWAIT)
12 
13 typedef sem_t           nxt_sem_t;
14 
15 #else
16 
17 typedef struct {
18     nxt_atomic_t        count;
19     nxt_thread_mutex_t  mutex;
20     nxt_thread_cond_t   cond;
21 } nxt_sem_t;
22 
23 #endif
24 
25 
26 NXT_EXPORT nxt_int_t nxt_sem_init(nxt_sem_t *sem, nxt_uint_t count);
27 NXT_EXPORT void nxt_sem_destroy(nxt_sem_t *sem);
28 NXT_EXPORT nxt_int_t nxt_sem_post(nxt_sem_t *sem);
29 NXT_EXPORT nxt_err_t nxt_sem_wait(nxt_sem_t *sem, nxt_nsec_t timeout);
30 
31 
32 #endif /* _NXT_UNIX_SEMAPHORE_H_INCLUDED_ */
33