Lines Matching refs:waiter
50 struct rwsem_waiter *waiter;
54 waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list);
57 if (waiter->flags & RWSEM_WAITING_FOR_WRITE)
67 if (waiter->flags & RWSEM_WAITING_FOR_WRITE) {
69 list_del(&waiter->list);
70 tsk = waiter->task;
71 /* Don't touch waiter after ->task has been NULLed */
73 waiter->task = NULL;
82 while (waiter->flags & RWSEM_WAITING_FOR_READ) {
83 struct list_head *next = waiter->list.next;
85 list_del(&waiter->list);
86 tsk = waiter->task;
88 waiter->task = NULL;
94 waiter = list_entry(next, struct rwsem_waiter, list);
109 struct rwsem_waiter *waiter;
114 waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list);
115 list_del(&waiter->list);
117 tsk = waiter->task;
119 waiter->task = NULL;
130 struct rwsem_waiter waiter;
146 waiter.task = tsk;
147 waiter.flags = RWSEM_WAITING_FOR_READ;
150 list_add_tail(&waiter.list, &sem->wait_list);
157 if (!waiter.task)
196 struct rwsem_waiter waiter;
212 waiter.task = tsk;
213 waiter.flags = RWSEM_WAITING_FOR_WRITE;
216 list_add_tail(&waiter.list, &sem->wait_list);
223 if (!waiter.task)