Lines Matching refs:sema
218 pipe_semaphore_init(pipe_semaphore *sema, int init_val) in pipe_semaphore_init() argument
220 pipe_mutex_init(sema->mutex); in pipe_semaphore_init()
221 pipe_condvar_init(sema->cond); in pipe_semaphore_init()
222 sema->counter = init_val; in pipe_semaphore_init()
226 pipe_semaphore_destroy(pipe_semaphore *sema) in pipe_semaphore_destroy() argument
228 pipe_mutex_destroy(sema->mutex); in pipe_semaphore_destroy()
229 pipe_condvar_destroy(sema->cond); in pipe_semaphore_destroy()
234 pipe_semaphore_signal(pipe_semaphore *sema) in pipe_semaphore_signal() argument
236 pipe_mutex_lock(sema->mutex); in pipe_semaphore_signal()
237 sema->counter++; in pipe_semaphore_signal()
238 pipe_condvar_signal(sema->cond); in pipe_semaphore_signal()
239 pipe_mutex_unlock(sema->mutex); in pipe_semaphore_signal()
244 pipe_semaphore_wait(pipe_semaphore *sema) in pipe_semaphore_wait() argument
246 pipe_mutex_lock(sema->mutex); in pipe_semaphore_wait()
247 while (sema->counter <= 0) { in pipe_semaphore_wait()
248 pipe_condvar_wait(sema->cond, sema->mutex); in pipe_semaphore_wait()
250 sema->counter--; in pipe_semaphore_wait()
251 pipe_mutex_unlock(sema->mutex); in pipe_semaphore_wait()