Lines Matching refs:waiter

404 	struct rwsem_waiter *waiter, *tmp;
411 * Take a peek at the queue head waiter such that we can determine
414 waiter = rwsem_first_waiter(sem);
416 if (waiter->type == RWSEM_WAITING_FOR_WRITE) {
425 wake_q_add(wake_q, waiter->task);
455 time_after(jiffies, waiter->timeout)) {
469 owner = waiter->task;
470 if (waiter->last_rowner & RWSEM_RD_NONSPINNABLE) {
484 * reader phase (first waiter is a reader), all readers are eligible
491 * is because the to-be-woken waiter may not have slept yet. So it
492 * may see waiter->task got cleared, finish its critical section and
497 * 2) For each waiters in the new list, clear waiter->task and
501 list_for_each_entry_safe(waiter, tmp, &sem->wait_list, list) {
502 if (waiter->type == RWSEM_WAITING_FOR_WRITE)
506 list_move_tail(&waiter->list, &wlist);
533 list_for_each_entry_safe(waiter, tmp, &wlist, list) {
536 tsk = waiter->task;
541 * waiter to nil such that rwsem_down_read_slowpath() cannot
545 smp_store_release(&waiter->task, NULL);
548 * after setting the reader waiter to nil.
995 struct rwsem_waiter waiter;
1003 waiter.last_rowner = atomic_long_read(&sem->owner);
1004 if (!(waiter.last_rowner & RWSEM_READER_OWNED))
1005 waiter.last_rowner &= RWSEM_RD_NONSPINNABLE;
1019 * waiter is a reader.
1030 } else if (rwsem_reader_phase_trylock(sem, waiter.last_rowner)) {
1036 waiter.task = current;
1037 waiter.type = RWSEM_WAITING_FOR_READ;
1038 waiter.timeout = jiffies + RWSEM_WAIT_TIMEOUT;
1059 list_add_tail(&waiter.list, &sem->wait_list);
1071 * wake our own waiter to join the existing active readers !
1087 if (!smp_load_acquire(&waiter.task)) {
1093 if (waiter.task)
1108 list_del(&waiter.list);
1141 struct rwsem_waiter waiter;
1163 waiter.task = current;
1164 waiter.type = RWSEM_WAITING_FOR_WRITE;
1165 waiter.timeout = jiffies + RWSEM_WAIT_TIMEOUT;
1172 list_add_tail(&waiter.list, &sem->wait_list);
1246 (rwsem_first_waiter(sem) == &waiter))
1258 time_after(jiffies, waiter.timeout))) {
1268 list_del(&waiter.list);
1278 list_del(&waiter.list);
1295 * handle waking up a waiter on the semaphore