Lines Matching +full:no +full:- +full:sync +full:- +full:mode
1 // SPDX-License-Identifier: GPL-2.0-only
21 int wake_bit_function(struct wait_queue_entry *wq_entry, unsigned mode, int sync, void *arg) in wake_bit_function() argument
26 if (wait_bit->key.flags != key->flags || in wake_bit_function()
27 wait_bit->key.bit_nr != key->bit_nr || in wake_bit_function()
28 test_bit(key->bit_nr, key->flags)) in wake_bit_function()
31 return autoremove_wake_function(wq_entry, mode, sync, key); in wake_bit_function()
36 * To allow interruptible waiting and asynchronous (i.e. non-blocking)
42 wait_bit_action_f *action, unsigned mode) in __wait_on_bit() argument
47 prepare_to_wait(wq_head, &wbq_entry->wq_entry, mode); in __wait_on_bit()
48 if (test_bit(wbq_entry->key.bit_nr, wbq_entry->key.flags)) in __wait_on_bit()
49 ret = (*action)(&wbq_entry->key, mode); in __wait_on_bit()
50 } while (test_bit_acquire(wbq_entry->key.bit_nr, wbq_entry->key.flags) && !ret); in __wait_on_bit()
52 finish_wait(wq_head, &wbq_entry->wq_entry); in __wait_on_bit()
59 wait_bit_action_f *action, unsigned mode) in out_of_line_wait_on_bit() argument
64 return __wait_on_bit(wq_head, &wq_entry, action, mode); in out_of_line_wait_on_bit()
70 unsigned mode, unsigned long timeout) in out_of_line_wait_on_bit_timeout() argument
77 return __wait_on_bit(wq_head, &wq_entry, action, mode); in out_of_line_wait_on_bit_timeout()
83 wait_bit_action_f *action, unsigned mode) in __wait_on_bit_lock() argument
88 prepare_to_wait_exclusive(wq_head, &wbq_entry->wq_entry, mode); in __wait_on_bit_lock()
89 if (test_bit(wbq_entry->key.bit_nr, wbq_entry->key.flags)) { in __wait_on_bit_lock()
90 ret = action(&wbq_entry->key, mode); in __wait_on_bit_lock()
93 * finish_wait() does not necessarily takes wwq_head->lock, in __wait_on_bit_lock()
98 finish_wait(wq_head, &wbq_entry->wq_entry); in __wait_on_bit_lock()
100 if (!test_and_set_bit(wbq_entry->key.bit_nr, wbq_entry->key.flags)) { in __wait_on_bit_lock()
102 finish_wait(wq_head, &wbq_entry->wq_entry); in __wait_on_bit_lock()
112 wait_bit_action_f *action, unsigned mode) in out_of_line_wait_on_bit_lock() argument
117 return __wait_on_bit_lock(wq_head, &wq_entry, action, mode); in out_of_line_wait_on_bit_lock()
131 * wake_up_bit - wake up waiters on a bit
138 * The wake-up is sent to tasks in a waitqueue selected by hash from a
147 * If the bit was cleared with a fully-ordered operation, no further
168 var_wake_function(struct wait_queue_entry *wq_entry, unsigned int mode, in var_wake_function() argument
169 int sync, void *arg) in var_wake_function() argument
175 if (wbq_entry->key.flags != key->flags || in var_wake_function()
176 wbq_entry->key.bit_nr != key->bit_nr) in var_wake_function()
179 return autoremove_wake_function(wq_entry, mode, sync, key); in var_wake_function()
187 .bit_nr = -1, in init_wait_var_entry()
193 .entry = LIST_HEAD_INIT(wbq_entry->wq_entry.entry), in init_wait_var_entry()
200 * wake_up_var - wake up waiters on a variable (kernel address)
210 * The wake-up is sent to tasks in a waitqueue selected by hash from a
220 * atomic_dec_and_test() then no extra barrier is required. Otherwise
231 __wake_up_bit(__var_waitqueue(var), var, -1); in wake_up_var()
235 __sched int bit_wait(struct wait_bit_key *word, int mode) in bit_wait() argument
238 if (signal_pending_state(mode, current)) in bit_wait()
239 return -EINTR; in bit_wait()
245 __sched int bit_wait_io(struct wait_bit_key *word, int mode) in bit_wait_io() argument
248 if (signal_pending_state(mode, current)) in bit_wait_io()
249 return -EINTR; in bit_wait_io()
255 __sched int bit_wait_timeout(struct wait_bit_key *word, int mode) in bit_wait_timeout() argument
259 if (time_after_eq(now, word->timeout)) in bit_wait_timeout()
260 return -EAGAIN; in bit_wait_timeout()
261 schedule_timeout(word->timeout - now); in bit_wait_timeout()
262 if (signal_pending_state(mode, current)) in bit_wait_timeout()
263 return -EINTR; in bit_wait_timeout()