Lines Matching defs:cond

246 	pthread_cond_t cond;
248 cond = calloc(1, sizeof(*cond));
249 if (!cond)
251 cond->lock = _SPINLOCK_UNLOCKED;
252 TAILQ_INIT(&cond->waiters);
254 cond->clock = CLOCK_REALTIME;
256 cond->clock = (*attr)->ca_clock;
257 *condp = cond;
266 pthread_cond_t cond;
269 cond = *condp;
270 if (cond) {
271 if (!TAILQ_EMPTY(&cond->waiters)) {
277 free(cond);
288 pthread_cond_t cond;
302 cond = *condp;
304 (void *)cond, (void *)mutex);
326 _spinlock(&cond->lock);
329 if (cond->mutex == NULL) {
330 cond->mutex = mutex;
331 assert(TAILQ_EMPTY(&cond->waiters));
332 } else if (cond->mutex != mutex) {
333 assert(cond->mutex == mutex);
334 _spinunlock(&cond->lock);
338 assert(! TAILQ_EMPTY(&cond->waiters));
345 self->blocking_cond = cond;
346 TAILQ_INSERT_TAIL(&cond->waiters, self, waiting);
347 _spinunlock(&cond->lock);
359 error = __thrsleep(self, cond->clock, abstime,
397 * cond->lock here to prevent race with cond_signal().
399 _spinlock(&cond->lock);
401 _spinunlock(&cond->lock);
405 assert(self->blocking_cond == cond);
414 TAILQ_REMOVE(&cond->waiters, self, waiting);
415 assert(mutex == cond->mutex);
416 if (TAILQ_EMPTY(&cond->waiters))
417 cond->mutex = NULL;
419 _spinunlock(&cond->lock);
444 pthread_cond_t cond;
457 cond = *condp;
459 (void *)cond, (void *)mutex);
477 _spinlock(&cond->lock);
480 if (cond->mutex == NULL) {
481 cond->mutex = mutex;
482 assert(TAILQ_EMPTY(&cond->waiters));
483 } else if (cond->mutex != mutex) {
484 assert(cond->mutex == mutex);
485 _spinunlock(&cond->lock);
489 assert(! TAILQ_EMPTY(&cond->waiters));
496 self->blocking_cond = cond;
497 TAILQ_INSERT_TAIL(&cond->waiters, self, waiting);
498 _spinunlock(&cond->lock);
536 * cond->lock here to prevent race with cond_signal().
538 _spinlock(&cond->lock);
540 _spinunlock(&cond->lock);
544 assert(self->blocking_cond == cond);
551 TAILQ_REMOVE(&cond->waiters, self, waiting);
552 assert(mutex == cond->mutex);
553 if (TAILQ_EMPTY(&cond->waiters))
554 cond->mutex = NULL;
556 _spinunlock(&cond->lock);
582 pthread_cond_t cond;
591 cond = *condp;
593 (void *)cond, (void *)cond->mutex);
594 _spinlock(&cond->lock);
595 thread = TAILQ_FIRST(&cond->waiters);
597 assert(cond->mutex == NULL);
598 _spinunlock(&cond->lock);
602 assert(thread->blocking_cond == cond);
603 TAILQ_REMOVE(&cond->waiters, thread, waiting);
606 mutex = cond->mutex;
608 if (TAILQ_EMPTY(&cond->waiters))
609 cond->mutex = NULL;
613 _spinunlock(&cond->lock);
630 pthread_cond_t cond;
640 cond = *condp;
642 (void *)cond, (void *)cond->mutex);
643 _spinlock(&cond->lock);
644 thread = TAILQ_FIRST(&cond->waiters);
646 assert(cond->mutex == NULL);
647 _spinunlock(&cond->lock);
651 mutex = cond->mutex;
673 mutex->lockers.tqh_last = cond->waiters.tqh_last;
684 TAILQ_INIT(&cond->waiters);
685 assert(cond->mutex != NULL);
686 cond->mutex = NULL;
687 _spinunlock(&cond->lock);