Lines Matching defs:waiter

181 static inline bool __mutex_waiter_is_first(struct mutex *lock, struct mutex_waiter *waiter)
183 return list_first_entry(&lock->wait_list, struct mutex_waiter, list) == waiter;
187 * Add @waiter to a given location in the lock wait_list and set the
188 * FLAG_WAITERS flag if it's the first waiter.
191 __mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter,
197 debug_mutex_add_waiter(lock, waiter, current);
199 list_add_tail(&waiter->list, list);
200 if (__mutex_waiter_is_first(lock, waiter))
205 __mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter)
207 list_del(&waiter->list);
211 debug_mutex_remove_waiter(lock, waiter, current);
297 struct mutex_waiter *waiter)
320 * lock from a waiter with an earlier stamp, since the
324 if (!waiter && (atomic_long_read(&lock->owner) & MUTEX_FLAG_WAITERS))
329 * first waiter.
331 if (waiter && !__mutex_waiter_is_first(lock, waiter))
345 struct ww_acquire_ctx *ww_ctx, struct mutex_waiter *waiter)
370 if (ww_ctx && !ww_mutex_spin_on_owner(lock, ww_ctx, waiter)) {
427 * The waiter flag is set to true if the spinner is a waiter in the wait
428 * queue. The waiter-spinner will spin on the lock directly and concurrently
434 struct mutex_waiter *waiter)
436 if (!waiter) {
440 * in case spinning isn't possible. As a waiter-spinner
468 if (!mutex_spin_on_owner(lock, owner, ww_ctx, waiter))
480 if (!waiter)
487 if (!waiter)
510 struct mutex_waiter *waiter)
571 struct mutex_waiter waiter;
627 debug_mutex_lock_common(lock, &waiter);
628 waiter.task = current;
630 waiter.ww_ctx = ww_ctx;
636 __mutex_add_waiter(lock, &waiter, &lock->wait_list);
642 ret = __ww_mutex_add_waiter(&waiter, lock, ww_ctx, &wake_q);
672 ret = __ww_mutex_check_kill(lock, &waiter, ww_ctx);
681 first = __mutex_waiter_is_first(lock, &waiter);
694 if (mutex_optimistic_spin(lock, ww_ctx, &waiter))
711 !__mutex_waiter_is_first(lock, &waiter))
715 __mutex_remove_waiter(lock, &waiter);
717 debug_mutex_free_waiter(&waiter);
733 __mutex_remove_waiter(lock, &waiter);
737 debug_mutex_free_waiter(&waiter);
916 * but instead set it to the top waiter.
938 struct mutex_waiter *waiter =
942 next = waiter->task;
944 debug_mutex_wake_waiter(lock, waiter);