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