Lines Matching defs:waiter

278 	mutex_waiter* waiter = lock->lock.waiters;
279 while (waiter != NULL) {
280 kprintf(" %" B_PRId32, waiter->thread->id);
281 waiter = waiter->next;
295 // enqueue in waiter list
296 rw_lock_waiter waiter;
297 waiter.thread = thread_get_current_thread();
298 waiter.next = NULL;
299 waiter.writer = writer;
302 lock->waiters->last->next = &waiter;
304 lock->waiters = &waiter;
306 lock->waiters->last = &waiter;
309 thread_prepare_to_block(waiter.thread, 0, THREAD_BLOCK_TYPE_RW_LOCK, lock);
324 rw_lock_waiter* waiter = lock->waiters;
325 if (waiter == NULL || lock->holder >= 0)
329 if (waiter->writer) {
334 lock->waiters = waiter->next;
336 lock->waiters->last = waiter->last;
338 lock->holder = waiter->thread->id;
341 thread_unblock(waiter->thread, B_OK);
343 waiter->thread = NULL;
351 lock->waiters = waiter->next;
353 lock->waiters->last = waiter->last;
358 thread_unblock(waiter->thread, B_OK);
360 waiter->thread = NULL;
361 } while ((waiter = lock->waiters) != NULL && !waiter->writer);
428 while (rw_lock_waiter* waiter = lock->waiters) {
430 lock->waiters = waiter->next;
433 thread_unblock(waiter->thread, B_ERROR);
599 // enqueue in waiter list
600 rw_lock_waiter waiter;
601 waiter.thread = thread_get_current_thread();
602 waiter.next = NULL;
603 waiter.writer = false;
606 lock->waiters->last->next = &waiter;
608 lock->waiters = &waiter;
610 lock->waiters->last = &waiter;
613 thread_prepare_to_block(waiter.thread, 0, THREAD_BLOCK_TYPE_RW_LOCK, lock);
617 if (error == B_OK || waiter.thread == NULL) {
627 // We failed to get the lock -- dequeue from waiter list.
630 while (other != &waiter) {
637 lock->waiters = waiter.next;
639 lock->waiters->last = waiter.last;
642 previous->next = waiter.next;
643 if (lock->waiters->last == &waiter)
815 rw_lock_waiter* waiter = lock->waiters;
816 while (waiter != NULL) {
817 kprintf(" %" B_PRId32 "/%c", waiter->thread->id, waiter->writer ? 'w' : 'r');
818 waiter = waiter->next;
873 while (mutex_waiter* waiter = lock->waiters) {
875 lock->waiters = waiter->next;
878 Thread* thread = waiter->thread;
879 waiter->thread = NULL;
995 // enqueue in waiter list
996 mutex_waiter waiter;
997 waiter.thread = thread_get_current_thread();
998 waiter.next = NULL;
1001 lock->waiters->last->next = &waiter;
1003 lock->waiters = &waiter;
1005 lock->waiters->last = &waiter;
1008 thread_prepare_to_block(waiter.thread, 0, THREAD_BLOCK_TYPE_MUTEX, lock);
1014 ASSERT(lock->holder == waiter.thread->id);
1035 mutex_waiter* waiter = lock->waiters;
1036 if (waiter != NULL) {
1037 // dequeue the first waiter
1038 lock->waiters = waiter->next;
1040 lock->waiters->last = waiter->last;
1047 lock->holder = waiter->thread->id;
1051 thread_unblock(waiter->thread, B_OK);
1111 // enqueue in waiter list
1112 mutex_waiter waiter;
1113 waiter.thread = thread_get_current_thread();
1114 waiter.next = NULL;
1117 lock->waiters->last->next = &waiter;
1119 lock->waiters = &waiter;
1121 lock->waiters->last = &waiter;
1124 thread_prepare_to_block(waiter.thread, 0, THREAD_BLOCK_TYPE_MUTEX, lock);
1131 ASSERT(lock->holder == waiter.thread->id);
1135 if (waiter.thread == NULL)
1143 // If the timeout occurred, we must remove our waiter structure from
1147 while (otherWaiter != NULL && otherWaiter != &waiter) {
1151 if (otherWaiter == &waiter) {
1153 if (&waiter == lock->waiters) {
1154 if (waiter.next != NULL)
1155 waiter.next->last = waiter.last;
1156 lock->waiters = waiter.next;
1158 if (waiter.next == NULL)
1160 previousWaiter->next = waiter.next;
1171 ASSERT(lock->holder == waiter.thread->id);
1206 mutex_waiter* waiter = lock->waiters;
1207 while (waiter != NULL) {
1208 kprintf(" %" B_PRId32, waiter->thread->id);
1209 waiter = waiter->next;