/linux-master/kernel/locking/ |
H A D | mutex-debug.c | 28 void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) argument 30 memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter)); 31 waiter->magic = waiter; 32 INIT_LIST_HEAD(&waiter->list); 33 waiter->ww_ctx = MUTEX_POISON_WW_CTX; 36 void debug_mutex_wake_waiter(struct mutex *lock, struct mutex_waiter *waiter) argument 40 DEBUG_LOCKS_WARN_ON(waiter->magic != waiter); 44 debug_mutex_free_waiter(struct mutex_waiter *waiter) argument 50 debug_mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter, struct task_struct *task) argument 59 debug_mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter, struct task_struct *task) argument [all...] |
H A D | mutex.h | 25 struct mutex_waiter *waiter); 27 struct mutex_waiter *waiter); 28 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter); 30 struct mutex_waiter *waiter, 32 extern void debug_mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter, 38 # define debug_mutex_lock_common(lock, waiter) do { } while (0) 39 # define debug_mutex_wake_waiter(lock, waiter) do { } while (0) 40 # define debug_mutex_free_waiter(waiter) do { } while (0) 41 # define debug_mutex_add_waiter(lock, waiter, ti) do { } while (0) 42 # define debug_mutex_remove_waiter(lock, waiter, t [all...] |
H A D | rtmutex_common.h | 22 * This is a helper for the struct rt_mutex_waiter below. A waiter goes in two 27 * @prio: Priority of the waiter 28 * @deadline: Deadline of the waiter if applicable 45 * @lock: Pointer to the rt_mutex on which the waiter blocks 85 struct rt_mutex_waiter *waiter, 88 struct rt_mutex_waiter *waiter, 92 struct rt_mutex_waiter *waiter); 94 struct rt_mutex_waiter *waiter); 116 * Lockless speculative check whether @waiter is still the top waiter o 120 rt_mutex_waiter_is_top_waiter(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter) argument 199 debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter) argument 205 debug_rt_mutex_free_waiter(struct rt_mutex_waiter *waiter) argument 211 rt_mutex_init_waiter(struct rt_mutex_waiter *waiter) argument 220 rt_mutex_init_rtlock_waiter(struct rt_mutex_waiter *waiter) argument [all...] |
H A D | rtmutex.c | 35 static inline int __ww_mutex_add_waiter(struct rt_mutex_waiter *waiter, argument 53 struct rt_mutex_waiter *waiter, 73 * NULL 1 lock is free and has waiters and the top waiter 183 * With the check for the waiter bit in place T3 on CPU2 will not 271 * If a new waiter comes in between the unlock and the cmpxchg 289 * wake waiter(); 357 * Update the waiter->tree copy of the sort keys. 360 waiter_update_prio(struct rt_mutex_waiter *waiter, struct task_struct *task) argument 362 lockdep_assert_held(&waiter->lock->wait_lock); 363 lockdep_assert(RB_EMPTY_NODE(&waiter 52 __ww_mutex_check_kill(struct rt_mutex *lock, struct rt_mutex_waiter *waiter, struct ww_acquire_ctx *ww_ctx) argument 373 waiter_clone_prio(struct rt_mutex_waiter *waiter, struct task_struct *task) argument 427 rt_mutex_steal(struct rt_mutex_waiter *waiter, struct rt_mutex_waiter *top_waiter) argument 477 rt_mutex_enqueue(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter) argument 485 rt_mutex_dequeue(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter) argument 505 rt_mutex_enqueue_pi(struct task_struct *task, struct rt_mutex_waiter *waiter) argument 513 rt_mutex_dequeue_pi(struct task_struct *task, struct rt_mutex_waiter *waiter) argument 589 rt_mutex_cond_detect_deadlock(struct rt_mutex_waiter *waiter, enum rtmutex_chainwalk chwalk) argument 682 struct rt_mutex_waiter *waiter, *top_waiter = orig_waiter; local 1084 try_to_take_rt_mutex(struct rt_mutex_base *lock, struct task_struct *task, struct rt_mutex_waiter *waiter) argument 1200 task_blocks_on_rt_mutex(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter, struct task_struct *task, struct ww_acquire_ctx *ww_ctx, enum rtmutex_chainwalk chwalk) argument 1311 struct rt_mutex_waiter *waiter; local 1477 rtmutex_spin_on_owner(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter, struct task_struct *owner) argument 1514 rtmutex_spin_on_owner(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter, struct task_struct *owner) argument 1535 remove_waiter(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter) argument 1599 rt_mutex_slowlock_block(struct rt_mutex_base *lock, struct ww_acquire_ctx *ww_ctx, unsigned int state, struct hrtimer_sleeper *timeout, struct rt_mutex_waiter *waiter) argument 1677 __rt_mutex_slowlock(struct rt_mutex_base *lock, struct ww_acquire_ctx *ww_ctx, unsigned int state, enum rtmutex_chainwalk chwalk, struct rt_mutex_waiter *waiter) argument 1734 struct rt_mutex_waiter waiter; local 1808 struct rt_mutex_waiter waiter; local [all...] |
H A D | mutex.c | 64 * Bit0 indicates a non-empty waiter list; unlock must issue a wakeup. 65 * Bit1 indicates unlock needs to hand the lock to the top-waiter 195 static inline bool __mutex_waiter_is_first(struct mutex *lock, struct mutex_waiter *waiter) argument 197 return list_first_entry(&lock->wait_list, struct mutex_waiter, list) == waiter; 201 * Add @waiter to a given location in the lock wait_list and set the 202 * FLAG_WAITERS flag if it's the first waiter. 205 __mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter, argument 208 debug_mutex_add_waiter(lock, waiter, current); 210 list_add_tail(&waiter->list, list); 211 if (__mutex_waiter_is_first(lock, waiter)) 216 __mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter) argument 304 ww_mutex_spin_on_owner(struct mutex *lock, struct ww_acquire_ctx *ww_ctx, struct mutex_waiter *waiter) argument 352 mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner, struct ww_acquire_ctx *ww_ctx, struct mutex_waiter *waiter) argument 441 mutex_optimistic_spin(struct mutex *lock, struct ww_acquire_ctx *ww_ctx, struct mutex_waiter *waiter) argument 517 mutex_optimistic_spin(struct mutex *lock, struct ww_acquire_ctx *ww_ctx, struct mutex_waiter *waiter) argument 578 struct mutex_waiter waiter; local 941 struct mutex_waiter *waiter = local [all...] |
H A D | rtmutex_api.c | 163 * @wqh: The wake queue head from which to get the next lock waiter 276 * @waiter: the pre-initialized rt_mutex_waiter 279 * Starts the rt_mutex acquire; it enqueues the @waiter and does deadlock 282 * NOTE: does _NOT_ remove the @waiter on failure; must either call 293 struct rt_mutex_waiter *waiter, 304 ret = task_blocks_on_rt_mutex(lock, waiter, task, NULL, 312 * pi chain. Let the waiter sort it out. 323 * @waiter: the pre-initialized rt_mutex_waiter 326 * Starts the rt_mutex acquire; it enqueues the @waiter and does deadlock 329 * NOTE: unlike __rt_mutex_start_proxy_lock this _DOES_ remove the @waiter 292 __rt_mutex_start_proxy_lock(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter, struct task_struct *task) argument 339 rt_mutex_start_proxy_lock(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter, struct task_struct *task) argument 371 rt_mutex_wait_proxy_lock(struct rt_mutex_base *lock, struct hrtimer_sleeper *to, struct rt_mutex_waiter *waiter) argument 411 rt_mutex_cleanup_proxy_lock(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter) argument 455 struct rt_mutex_waiter *waiter; local [all...] |
H A D | semaphore.c | 212 struct semaphore_waiter waiter; local 214 list_add_tail(&waiter.list, &sem->wait_list); 215 waiter.task = current; 216 waiter.up = false; 227 if (waiter.up) 232 list_del(&waiter.list); 236 list_del(&waiter.list); 274 struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list, local 276 list_del(&waiter->list); 277 waiter [all...] |
H A D | rwsem.c | 370 rwsem_add_waiter(struct rw_semaphore *sem, struct rwsem_waiter *waiter) argument 373 list_add_tail(&waiter->list, &sem->wait_list); 378 * Remove a waiter from the wait_list and clear flags. 386 rwsem_del_waiter(struct rw_semaphore *sem, struct rwsem_waiter *waiter) argument 389 list_del(&waiter->list); 415 struct rwsem_waiter *waiter, *tmp; local 422 * Take a peek at the queue head waiter such that we can determine 425 waiter = rwsem_first_waiter(sem); 427 if (waiter->type == RWSEM_WAITING_FOR_WRITE) { 436 wake_q_add(wake_q, waiter 604 rwsem_try_write_lock(struct rw_semaphore *sem, struct rwsem_waiter *waiter) argument 1000 struct rwsem_waiter waiter; local 1109 struct rwsem_waiter waiter; local [all...] |
H A D | ww_mutex.h | 53 __ww_waiter_add(struct mutex *lock, struct mutex_waiter *waiter, struct mutex_waiter *pos) argument 58 __mutex_add_waiter(lock, waiter, p); 130 __ww_waiter_add(struct rt_mutex *lock, struct rt_mutex_waiter *waiter, struct rt_mutex_waiter *pos) argument 132 /* RT unconditionally adds the waiter first and then removes it on error */ 232 * so the wait_list ordering will go wobbly. rt_mutex re-queues the waiter and 269 * Wait-Die; wake a lesser waiter context (when locks held) such that it can 277 __ww_mutex_die(struct MUTEX *lock, struct MUTEX_WAITER *waiter, argument 283 if (waiter->ww_ctx->acquired > 0 && __ww_ctx_less(waiter->ww_ctx, ww_ctx)) { 285 debug_mutex_wake_waiter(lock, waiter); 441 __ww_mutex_check_kill(struct MUTEX *lock, struct MUTEX_WAITER *waiter, struct ww_acquire_ctx *ctx) argument 489 __ww_mutex_add_waiter(struct MUTEX_WAITER *waiter, struct MUTEX *lock, struct ww_acquire_ctx *ww_ctx) argument [all...] |
/linux-master/drivers/md/dm-vdo/ |
H A D | wait-queue.c | 15 * vdo_waitq_enqueue_waiter() - Add a waiter to the tail end of a waitq. 16 * @waitq: The vdo_wait_queue to which to add the waiter. 17 * @waiter: The waiter to add to the waitq. 19 * The waiter must not already be waiting in a waitq. 21 void vdo_waitq_enqueue_waiter(struct vdo_wait_queue *waitq, struct vdo_waiter *waiter) argument 23 BUG_ON(waiter->next_waiter != NULL); 28 * initial waiter. 30 waiter->next_waiter = waiter; 138 struct vdo_waiter *waiter = vdo_waitq_dequeue_waiter(&iteration_waitq); local 195 struct vdo_waiter *waiter = vdo_waitq_dequeue_waiter(waitq); local [all...] |
H A D | admin-state.c | 191 * Will notify the operation waiter if there is one. This method should be used for operations 203 if (state->waiter != NULL) 204 vdo_set_completion_result(state->waiter, result); 208 if (state->waiter != NULL) 209 vdo_launch_completion(vdo_forget(state->waiter)); 217 * @waiter A completion to notify when the operation is complete; may be NULL. 224 struct vdo_completion *waiter, 235 } else if (state->waiter != NULL) { 237 "Can't start %s with extant waiter", 240 state->waiter 222 begin_operation(struct admin_state *state, const struct admin_state_code *operation, struct vdo_completion *waiter, vdo_admin_initiator_fn initiator) argument 267 start_operation(struct admin_state *state, const struct admin_state_code *operation, struct vdo_completion *waiter, vdo_admin_initiator_fn initiator) argument 286 check_code(bool valid, const struct admin_state_code *code, const char *what, struct vdo_completion *waiter) argument 308 assert_vdo_drain_operation(const struct admin_state_code *operation, struct vdo_completion *waiter) argument 322 vdo_start_draining(struct admin_state *state, const struct admin_state_code *operation, struct vdo_completion *waiter, vdo_admin_initiator_fn initiator) argument 372 vdo_assert_load_operation(const struct admin_state_code *operation, struct vdo_completion *waiter) argument 386 vdo_start_loading(struct admin_state *state, const struct admin_state_code *operation, struct vdo_completion *waiter, vdo_admin_initiator_fn initiator) argument 421 assert_vdo_resume_operation(const struct admin_state_code *operation, struct vdo_completion *waiter) argument 436 vdo_start_resuming(struct admin_state *state, const struct admin_state_code *operation, struct vdo_completion *waiter, vdo_admin_initiator_fn initiator) argument 498 vdo_start_operation_with_waiter(struct admin_state *state, const struct admin_state_code *operation, struct vdo_completion *waiter, vdo_admin_initiator_fn initiator) argument [all...] |
H A D | wait-queue.h | 49 * of a waiter after it has been removed from its wait queue. 51 typedef void (*vdo_waiter_callback_fn)(struct vdo_waiter *waiter, void *context); 54 * vdo_waiter_match_fn - Method type for waiter matching methods. 56 * Returns false if the waiter does not match. 58 typedef bool (*vdo_waiter_match_fn)(struct vdo_waiter *waiter, void *context); 63 * The next waiter in the waitq. If this entry is the last waiter, then this 68 /* Optional waiter-specific callback to invoke when dequeuing this waiter. */ 73 * vdo_waiter_is_waiting() - Check whether a waiter i 78 vdo_waiter_is_waiting(struct vdo_waiter *waiter) argument [all...] |
H A D | admin-state.h | 57 struct vdo_completion *waiter; member in struct:admin_state 140 struct vdo_completion *waiter); 144 struct vdo_completion *waiter, vdo_admin_initiator_fn initiator); 152 struct vdo_completion *waiter, vdo_admin_initiator_fn initiator); 162 struct vdo_completion *waiter, vdo_admin_initiator_fn initiator); 173 struct vdo_completion *waiter,
|
H A D | flush.h | 21 struct vdo_waiter waiter; member in struct:vdo_flush
|
H A D | dump.c | 154 struct vdo_waiter *waiter, *first = vdo_waitq_get_first_waiter(waitq); local 166 for (waiter = first->next_waiter; waiter != first; waiter = waiter->next_waiter) { 167 data_vio = vdo_waiter_as_data_vio(waiter); 195 if (data_vio->waiter.next_waiter != NULL)
|
/linux-master/drivers/tty/ |
H A D | tty_ldsem.c | 8 * 2) Write waiter has priority 76 struct ldsem_waiter *waiter, *next; local 94 list_for_each_entry_safe(waiter, next, &sem->read_wait, list) { 95 tsk = waiter->task; 96 smp_store_release(&waiter->task, NULL); 121 struct ldsem_waiter *waiter; local 123 waiter = list_entry(sem->write_wait.next, struct ldsem_waiter, list); 124 wake_up_process(waiter->task); 158 struct ldsem_waiter waiter; local 180 list_add_tail(&waiter 232 struct ldsem_waiter waiter; local [all...] |
/linux-master/lib/ |
H A D | klist.c | 185 struct klist_waiter *waiter, *tmp; local 191 list_for_each_entry_safe(waiter, tmp, &klist_remove_waiters, list) { 192 if (waiter->node != n) 195 list_del(&waiter->list); 196 waiter->woken = 1; 198 wake_up_process(waiter->process); 240 struct klist_waiter waiter; local 242 waiter.node = n; 243 waiter.process = current; 244 waiter [all...] |
/linux-master/tools/testing/selftests/futex/functional/ |
H A D | futex_requeue.c | 36 printf("waiter failed errno %d\n", errno); 43 pthread_t waiter[10]; local 74 * Requeue a waiter from f1 to f2, and wake f2. 76 if (pthread_create(&waiter[0], NULL, waiterfn, NULL)) 108 if (pthread_create(&waiter[i], NULL, waiterfn, NULL))
|
H A D | futex_wait.c | 43 printf("waiter failed errno %d\n", errno); 53 pthread_t waiter; local 81 if (pthread_create(&waiter, NULL, waiterfn, (void *) &flags)) 109 if (pthread_create(&waiter, NULL, waiterfn, NULL)) 148 if (pthread_create(&waiter, NULL, waiterfn, NULL))
|
H A D | futex_requeue_pi_signal_restart.c | 9 * kernel. The latter should return EWOULDBLOCK to the waiter. 122 pthread_t waiter; local 157 info("Creating waiter\n"); 158 res = create_rt_thread(&waiter, waiterfn, NULL, SCHED_FIFO, 1); 172 * signal the waiter before requeue, waiter should automatically 174 * waiter to block on f1 again. 176 info("Issuing SIGUSR1 to waiter\n"); 177 pthread_kill(waiter, SIGUSR1); 180 info("Requeueing waiter vi [all...] |
/linux-master/tools/testing/selftests/filesystems/epoll/ |
H A D | epoll_wakeup_test.c | 23 pthread_t waiter; member in struct:epoll_mtcontext 47 pthread_kill(ctx->waiter, SIGUSR1); 489 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); 495 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); 532 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); 538 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); 579 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry2a, &ctx), 0); 585 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); 628 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); 634 ASSERT_EQ(pthread_join(ctx.waiter, NUL 3461 pthread_t waiter[2]; local [all...] |
/linux-master/drivers/gpu/drm/amd/amdkfd/ |
H A D | kfd_events.c | 263 struct kfd_event_waiter *waiter; local 267 list_for_each_entry(waiter, &ev->wq.head, wait.entry) 268 WRITE_ONCE(waiter->event, NULL); 625 struct kfd_event_waiter *waiter; local 639 list_for_each_entry(waiter, &ev->wq.head, wait.entry) 640 WRITE_ONCE(waiter->activated, true); 799 struct kfd_event_waiter *waiter, 808 waiter->event = ev; 809 waiter->activated = ev->signaled; 813 if (waiter 798 init_event_waiter(struct kfd_process *p, struct kfd_event_waiter *waiter, struct kfd_event_data *event_data) argument 869 struct kfd_event_waiter *waiter; local [all...] |
/linux-master/drivers/staging/vc04_services/interface/vchiq_arm/ |
H A D | vchiq_dev.c | 290 struct bulk_waiter_node *waiter = NULL, *iter; local 300 waiter = kzalloc(sizeof(*waiter), GFP_KERNEL); 301 if (!waiter) { 306 userdata = &waiter->bulk_waiter; 313 waiter = iter; 318 if (!waiter) { 325 waiter, current->pid); 326 userdata = &waiter->bulk_waiter; 334 if (!waiter) { [all...] |
H A D | vchiq_arm.c | 716 struct bulk_waiter_node *waiter, *next; local 718 list_for_each_entry_safe(waiter, next, 720 list_del(&waiter->list); 723 waiter, waiter->pid); 724 kfree(waiter); 923 struct bulk_waiter_node *waiter = NULL, *iter; local 935 waiter = iter; 941 if (waiter) { 942 struct vchiq_bulk *bulk = waiter [all...] |
/linux-master/drivers/gpu/drm/i915/ |
H A D | i915_scheduler_types.h | 74 struct i915_sched_node *waiter; member in struct:i915_dependency
|