Lines Matching refs:sem
23 void sem_init(semaphore_t *sem, unsigned int value) { in sem_init() argument
24 *sem = (semaphore_t)SEMAPHORE_INITIAL_VALUE(*sem, value); in sem_init()
27 void sem_destroy(semaphore_t *sem) { in sem_destroy() argument
29 sem->count = 0; in sem_destroy()
30 wait_queue_destroy(&sem->wait, true); in sem_destroy()
34 int sem_post(semaphore_t *sem, bool resched) { in sem_post() argument
43 if (unlikely(++sem->count <= 0)) in sem_post()
44 ret = wait_queue_wake_one(&sem->wait, resched, NO_ERROR); in sem_post()
51 status_t sem_wait(semaphore_t *sem) { in sem_wait() argument
59 if (unlikely(--sem->count < 0)) in sem_wait()
60 ret = wait_queue_block(&sem->wait, INFINITE_TIME); in sem_wait()
66 status_t sem_trywait(semaphore_t *sem) { in sem_trywait() argument
70 if (unlikely(sem->count <= 0)) in sem_trywait()
73 sem->count--; in sem_trywait()
79 status_t sem_timedwait(semaphore_t *sem, lk_time_t timeout) { in sem_timedwait() argument
83 if (unlikely(--sem->count < 0)) { in sem_timedwait()
84 ret = wait_queue_block(&sem->wait, timeout); in sem_timedwait()
87 sem->count++; in sem_timedwait()