Searched refs:waiter (Results 1 - 25 of 56) sorted by relevance

123

/linux-master/kernel/locking/
H A Dmutex-debug.c28 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 Dmutex.h25 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 Drtmutex_common.h22 * 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 Drtmutex.c35 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 Dmutex.c64 * 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 Drtmutex_api.c163 * @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 Dsemaphore.c212 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 Drwsem.c370 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 Dww_mutex.h53 __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 Dwait-queue.c15 * 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 Dadmin-state.c191 * 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 Dwait-queue.h49 * 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 Dadmin-state.h57 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 Dflush.h21 struct vdo_waiter waiter; member in struct:vdo_flush
H A Ddump.c154 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 Dtty_ldsem.c8 * 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 Dklist.c185 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 Dfutex_requeue.c36 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 Dfutex_wait.c43 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 Dfutex_requeue_pi_signal_restart.c9 * 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 Depoll_wakeup_test.c23 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 Dkfd_events.c263 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 Dvchiq_dev.c290 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 Dvchiq_arm.c716 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 Di915_scheduler_types.h74 struct i915_sched_node *waiter; member in struct:i915_dependency

Completed in 262 milliseconds

123