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