Lines Matching refs:sema
78 pipe_semaphore_init(pipe_semaphore *sema, int init_val)
80 (void) mtx_init(&sema->mutex, mtx_plain);
81 cnd_init(&sema->cond);
82 sema->counter = init_val;
86 pipe_semaphore_destroy(pipe_semaphore *sema)
88 mtx_destroy(&sema->mutex);
89 cnd_destroy(&sema->cond);
94 pipe_semaphore_signal(pipe_semaphore *sema)
96 mtx_lock(&sema->mutex);
97 sema->counter++;
98 cnd_signal(&sema->cond);
99 mtx_unlock(&sema->mutex);
104 pipe_semaphore_wait(pipe_semaphore *sema)
106 mtx_lock(&sema->mutex);
107 while (sema->counter <= 0) {
108 cnd_wait(&sema->cond, &sema->mutex);
110 sema->counter--;
111 mtx_unlock(&sema->mutex);