Lines Matching defs:waiter
182 // enqueue a waiter
183 RWLockable::Waiter waiter(writer);
184 lockable->fWaiters.Add(&waiter);
185 waiter.queued = true;
201 if (!waiter.queued)
202 return waiter.status;
206 lockable->fWaiters.Remove(&waiter);
219 RWLockable::Waiter* waiter = lockable->fWaiters.Head();
220 if (waiter == NULL || lockable->fOwner >= 0)
224 if (waiter->writer) {
226 waiter->status = B_OK;
227 waiter->queued = false;
228 lockable->fWaiters.Remove(waiter);
229 lockable->fOwner = waiter->thread;
232 _kern_unblock_thread(waiter->thread, B_OK);
246 && (waiter = lockable->fWaiters.Head()) != NULL
247 && !waiter->writer) {
248 waiter->status = B_OK;
249 waiter->queued = false;
250 lockable->fWaiters.Remove(waiter);
252 readers[readerCount++] = waiter->thread;