Home | History | Annotate | Download | only in librumpuser

Lines Matching refs:cv

502 rumpuser_cv_init(struct rumpuser_cv **cv)
505 NOFAIL(*cv = malloc(sizeof(struct rumpuser_cv)));
506 NOFAIL_ERRNO(pthread_cond_init(&((*cv)->pthcv), NULL));
507 (*cv)->nwaiters = 0;
511 rumpuser_cv_destroy(struct rumpuser_cv *cv)
514 NOFAIL_ERRNO(pthread_cond_destroy(&cv->pthcv));
515 free(cv);
531 * If the cv interlock is a spin mutex, we must first release
557 rumpuser_cv_wait(struct rumpuser_cv *cv, struct rumpuser_mtx *mtx)
561 cv->nwaiters++;
563 NOFAIL_ERRNO(pthread_cond_wait(&cv->pthcv, &mtx->pthmtx));
565 cv->nwaiters--;
569 rumpuser_cv_wait_nowrap(struct rumpuser_cv *cv, struct rumpuser_mtx *mtx)
572 cv->nwaiters++;
574 NOFAIL_ERRNO(pthread_cond_wait(&cv->pthcv, &mtx->pthmtx));
576 cv->nwaiters--;
580 rumpuser_cv_timedwait(struct rumpuser_cv *cv, struct rumpuser_mtx *mtx,
595 cv->nwaiters++;
604 rv = pthread_cond_timedwait(&cv->pthcv, &mtx->pthmtx, &ts);
607 cv->nwaiters--;
613 rumpuser_cv_signal(struct rumpuser_cv *cv)
616 NOFAIL_ERRNO(pthread_cond_signal(&cv->pthcv));
620 rumpuser_cv_broadcast(struct rumpuser_cv *cv)
623 NOFAIL_ERRNO(pthread_cond_broadcast(&cv->pthcv));
627 rumpuser_cv_has_waiters(struct rumpuser_cv *cv, int *nwaiters)
630 *nwaiters = cv->nwaiters;