Lines Matching refs:sem
256 void qemu_sem_init(QemuSemaphore *sem, int init) in qemu_sem_init() argument
258 qemu_mutex_init(&sem->mutex); in qemu_sem_init()
259 qemu_cond_init(&sem->cond); in qemu_sem_init()
264 sem->count = init; in qemu_sem_init()
267 void qemu_sem_destroy(QemuSemaphore *sem) in qemu_sem_destroy() argument
269 qemu_cond_destroy(&sem->cond); in qemu_sem_destroy()
270 qemu_mutex_destroy(&sem->mutex); in qemu_sem_destroy()
273 void qemu_sem_post(QemuSemaphore *sem) in qemu_sem_post() argument
275 qemu_mutex_lock(&sem->mutex); in qemu_sem_post()
276 if (sem->count == UINT_MAX) { in qemu_sem_post()
279 sem->count++; in qemu_sem_post()
280 qemu_cond_signal(&sem->cond); in qemu_sem_post()
282 qemu_mutex_unlock(&sem->mutex); in qemu_sem_post()
285 int qemu_sem_timedwait(QemuSemaphore *sem, int ms) in qemu_sem_timedwait() argument
291 qemu_mutex_lock(&sem->mutex); in qemu_sem_timedwait()
292 while (sem->count == 0) { in qemu_sem_timedwait()
296 rc = qemu_cond_timedwait_ts(&sem->cond, &sem->mutex, &ts, in qemu_sem_timedwait()
304 --sem->count; in qemu_sem_timedwait()
306 qemu_mutex_unlock(&sem->mutex); in qemu_sem_timedwait()
310 void qemu_sem_wait(QemuSemaphore *sem) in qemu_sem_wait() argument
312 qemu_mutex_lock(&sem->mutex); in qemu_sem_wait()
313 while (sem->count == 0) { in qemu_sem_wait()
314 qemu_cond_wait(&sem->cond, &sem->mutex); in qemu_sem_wait()
316 --sem->count; in qemu_sem_wait()
317 qemu_mutex_unlock(&sem->mutex); in qemu_sem_wait()