Lines Matching refs:w
127 static void __wait(struct waiter *w) in __wait() argument
132 if (!w->task) in __wait()
141 static void __wake_waiter(struct waiter *w) in __wake_waiter() argument
145 list_del(&w->list); in __wake_waiter()
146 task = w->task; in __wake_waiter()
148 w->task = NULL; in __wake_waiter()
157 struct waiter *w, *tmp; in __wake_many() local
160 list_for_each_entry_safe(w, tmp, &lock->waiters, list) { in __wake_many()
164 if (w->wants_write) { in __wake_many()
169 __add_holder(lock, w->task); in __wake_many()
170 __wake_waiter(w); in __wake_many()
175 __add_holder(lock, w->task); in __wake_many()
176 __wake_waiter(w); in __wake_many()
201 struct waiter w; in bl_down_read() local
219 w.task = current; in bl_down_read()
220 w.wants_write = 0; in bl_down_read()
221 list_add_tail(&w.list, &lock->waiters); in bl_down_read()
224 __wait(&w); in bl_down_read()
264 struct waiter w; in bl_down_write() local
281 w.task = current; in bl_down_write()
282 w.wants_write = 1; in bl_down_write()
288 list_add(&w.list, &lock->waiters); in bl_down_write()
291 __wait(&w); in bl_down_write()