Home
last modified time | relevance | path

Searched refs:waiter (Results 1 – 25 of 49) sorted by relevance

12

/Linux-v4.19/drivers/gpu/host1x/
Dintr.c47 static bool add_waiter_to_queue(struct host1x_waitlist *waiter, in add_waiter_to_queue() argument
51 u32 thresh = waiter->thresh; in add_waiter_to_queue()
55 list_add(&waiter->list, &pos->list); in add_waiter_to_queue()
59 list_add(&waiter->list, queue); in add_waiter_to_queue()
71 struct host1x_waitlist *waiter, *next, *prev; in remove_completed_waiters() local
73 list_for_each_entry_safe(waiter, next, head, list) { in remove_completed_waiters()
74 if ((s32)(waiter->thresh - sync) > 0) in remove_completed_waiters()
77 dest = completed + waiter->action; in remove_completed_waiters()
80 if (waiter->action == HOST1X_INTR_ACTION_SUBMIT_COMPLETE && in remove_completed_waiters()
84 if (prev->data == waiter->data) { in remove_completed_waiters()
[all …]
Dsyncpt.c221 struct host1x_waitlist *waiter; in host1x_syncpt_wait() local
251 waiter = kzalloc(sizeof(*waiter), GFP_KERNEL); in host1x_syncpt_wait()
252 if (!waiter) { in host1x_syncpt_wait()
260 &wq, waiter, &ref); in host1x_syncpt_wait()
/Linux-v4.19/kernel/locking/
Dmutex-debug.c30 void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_lock_common() argument
32 memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter)); in debug_mutex_lock_common()
33 waiter->magic = waiter; in debug_mutex_lock_common()
34 INIT_LIST_HEAD(&waiter->list); in debug_mutex_lock_common()
37 void debug_mutex_wake_waiter(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_wake_waiter() argument
41 DEBUG_LOCKS_WARN_ON(waiter->magic != waiter); in debug_mutex_wake_waiter()
42 DEBUG_LOCKS_WARN_ON(list_empty(&waiter->list)); in debug_mutex_wake_waiter()
45 void debug_mutex_free_waiter(struct mutex_waiter *waiter) in debug_mutex_free_waiter() argument
47 DEBUG_LOCKS_WARN_ON(!list_empty(&waiter->list)); in debug_mutex_free_waiter()
48 memset(waiter, MUTEX_DEBUG_FREE, sizeof(*waiter)); in debug_mutex_free_waiter()
[all …]
Drtmutex.c272 rt_mutex_enqueue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_enqueue() argument
282 if (rt_mutex_waiter_less(waiter, entry)) { in rt_mutex_enqueue()
290 rb_link_node(&waiter->tree_entry, parent, link); in rt_mutex_enqueue()
291 rb_insert_color_cached(&waiter->tree_entry, &lock->waiters, leftmost); in rt_mutex_enqueue()
295 rt_mutex_dequeue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_dequeue() argument
297 if (RB_EMPTY_NODE(&waiter->tree_entry)) in rt_mutex_dequeue()
300 rb_erase_cached(&waiter->tree_entry, &lock->waiters); in rt_mutex_dequeue()
301 RB_CLEAR_NODE(&waiter->tree_entry); in rt_mutex_dequeue()
305 rt_mutex_enqueue_pi(struct task_struct *task, struct rt_mutex_waiter *waiter) in rt_mutex_enqueue_pi() argument
315 if (rt_mutex_waiter_less(waiter, entry)) { in rt_mutex_enqueue_pi()
[all …]
Drwsem-spinlock.c69 struct rwsem_waiter *waiter; in __rwsem_do_wake() local
73 waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list); in __rwsem_do_wake()
75 if (waiter->type == RWSEM_WAITING_FOR_WRITE) { in __rwsem_do_wake()
79 wake_up_process(waiter->task); in __rwsem_do_wake()
86 struct list_head *next = waiter->list.next; in __rwsem_do_wake()
88 list_del(&waiter->list); in __rwsem_do_wake()
89 tsk = waiter->task; in __rwsem_do_wake()
98 waiter->task = NULL; in __rwsem_do_wake()
104 waiter = list_entry(next, struct rwsem_waiter, list); in __rwsem_do_wake()
105 } while (waiter->type != RWSEM_WAITING_FOR_WRITE); in __rwsem_do_wake()
[all …]
Drtmutex-debug.c87 void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter) in debug_rt_mutex_print_deadlock() argument
91 if (!waiter->deadlock_lock || !debug_locks) in debug_rt_mutex_print_deadlock()
95 task = pid_task(waiter->deadlock_task_pid, PIDTYPE_PID); in debug_rt_mutex_print_deadlock()
117 printk_lock(waiter->lock, 1); in debug_rt_mutex_print_deadlock()
121 printk_lock(waiter->deadlock_lock, 1); in debug_rt_mutex_print_deadlock()
158 void debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter) in debug_rt_mutex_init_waiter() argument
160 memset(waiter, 0x11, sizeof(*waiter)); in debug_rt_mutex_init_waiter()
161 waiter->deadlock_task_pid = NULL; in debug_rt_mutex_init_waiter()
164 void debug_rt_mutex_free_waiter(struct rt_mutex_waiter *waiter) in debug_rt_mutex_free_waiter() argument
166 put_pid(waiter->deadlock_task_pid); in debug_rt_mutex_free_waiter()
[all …]
Dmutex.c171 static inline bool __mutex_waiter_is_first(struct mutex *lock, struct mutex_waiter *waiter) in __mutex_waiter_is_first() argument
173 return list_first_entry(&lock->wait_list, struct mutex_waiter, list) == waiter; in __mutex_waiter_is_first()
181 __mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter, in __mutex_add_waiter() argument
184 debug_mutex_add_waiter(lock, waiter, current); in __mutex_add_waiter()
186 list_add_tail(&waiter->list, list); in __mutex_add_waiter()
187 if (__mutex_waiter_is_first(lock, waiter)) in __mutex_add_waiter()
340 __ww_mutex_die(struct mutex *lock, struct mutex_waiter *waiter, in __ww_mutex_die() argument
346 if (waiter->ww_ctx->acquired > 0 && in __ww_mutex_die()
347 __ww_ctx_stamp_after(waiter->ww_ctx, ww_ctx)) { in __ww_mutex_die()
348 debug_mutex_wake_waiter(lock, waiter); in __ww_mutex_die()
[all …]
Dmutex.h13 #define mutex_remove_waiter(lock, waiter, task) \ argument
14 __list_del((waiter)->list.prev, (waiter)->list.next)
16 #define debug_mutex_wake_waiter(lock, waiter) do { } while (0) argument
17 #define debug_mutex_free_waiter(waiter) do { } while (0) argument
18 #define debug_mutex_add_waiter(lock, waiter, ti) do { } while (0) argument
23 debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_lock_common() argument
Drwsem-xadd.c131 struct rwsem_waiter *waiter, *tmp; in __rwsem_mark_wake() local
138 waiter = list_first_entry(&sem->wait_list, struct rwsem_waiter, list); in __rwsem_mark_wake()
140 if (waiter->type == RWSEM_WAITING_FOR_WRITE) { in __rwsem_mark_wake()
149 wake_q_add(wake_q, waiter->task); in __rwsem_mark_wake()
192 list_for_each_entry_safe(waiter, tmp, &sem->wait_list, list) { in __rwsem_mark_wake()
195 if (waiter->type == RWSEM_WAITING_FOR_WRITE) in __rwsem_mark_wake()
199 tsk = waiter->task; in __rwsem_mark_wake()
202 list_del(&waiter->list); in __rwsem_mark_wake()
209 smp_store_release(&waiter->task, NULL); in __rwsem_mark_wake()
229 struct rwsem_waiter waiter; in __rwsem_down_read_failed_common() local
[all …]
Dsemaphore.c208 struct semaphore_waiter waiter; in __down_common() local
210 list_add_tail(&waiter.list, &sem->wait_list); in __down_common()
211 waiter.task = current; in __down_common()
212 waiter.up = false; in __down_common()
223 if (waiter.up) in __down_common()
228 list_del(&waiter.list); in __down_common()
232 list_del(&waiter.list); in __down_common()
258 struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list, in __up() local
260 list_del(&waiter->list); in __up()
261 waiter->up = true; in __up()
[all …]
Drtmutex-debug.h13 extern void debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter);
14 extern void debug_rt_mutex_free_waiter(struct rt_mutex_waiter *waiter);
22 struct rt_mutex_waiter *waiter,
24 extern void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter);
28 static inline bool debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *waiter, in debug_rt_mutex_detect_deadlock() argument
31 return (waiter != NULL); in debug_rt_mutex_detect_deadlock()
Dmutex-debug.h18 struct mutex_waiter *waiter);
20 struct mutex_waiter *waiter);
21 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
23 struct mutex_waiter *waiter,
25 extern void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
Drtmutex_common.h138 extern void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter);
140 struct rt_mutex_waiter *waiter,
143 struct rt_mutex_waiter *waiter,
147 struct rt_mutex_waiter *waiter);
149 struct rt_mutex_waiter *waiter);
/Linux-v4.19/drivers/tty/
Dtty_ldsem.c99 struct ldsem_waiter *waiter, *next; in __ldsem_wake_readers() local
117 list_for_each_entry_safe(waiter, next, &sem->read_wait, list) { in __ldsem_wake_readers()
118 tsk = waiter->task; in __ldsem_wake_readers()
120 waiter->task = NULL; in __ldsem_wake_readers()
145 struct ldsem_waiter *waiter; in __ldsem_wake_writer() local
147 waiter = list_entry(sem->write_wait.next, struct ldsem_waiter, list); in __ldsem_wake_writer()
148 wake_up_process(waiter->task); in __ldsem_wake_writer()
182 struct ldsem_waiter waiter; in down_read_failed() local
204 list_add_tail(&waiter.list, &sem->read_wait); in down_read_failed()
207 waiter.task = current; in down_read_failed()
[all …]
/Linux-v4.19/lib/
Dklist.c186 struct klist_waiter *waiter, *tmp; in klist_release() local
192 list_for_each_entry_safe(waiter, tmp, &klist_remove_waiters, list) { in klist_release()
193 if (waiter->node != n) in klist_release()
196 list_del(&waiter->list); in klist_release()
197 waiter->woken = 1; in klist_release()
199 wake_up_process(waiter->process); in klist_release()
241 struct klist_waiter waiter; in klist_remove() local
243 waiter.node = n; in klist_remove()
244 waiter.process = current; in klist_remove()
245 waiter.woken = 0; in klist_remove()
[all …]
/Linux-v4.19/tools/testing/selftests/futex/functional/
Dfutex_requeue_pi_signal_restart.c126 pthread_t waiter; in main() local
161 res = create_rt_thread(&waiter, waiterfn, NULL, SCHED_FIFO, 1); in main()
180 pthread_kill(waiter, SIGUSR1); in main()
211 pthread_kill(waiter, SIGUSR1); in main()
213 pthread_join(waiter, NULL); in main()
Dfutex_requeue_pi.c287 pthread_t waiter[THREAD_MAX], waker, blocker; in unit_test() local
324 if (create_rt_thread(&waiter[i], waiterfn, (void *)&args[i], in unit_test()
343 pthread_join(waiter[i], in unit_test()
/Linux-v4.19/drivers/gpu/drm/amd/amdkfd/
Dkfd_events.c240 struct kfd_event_waiter *waiter; in destroy_event() local
243 list_for_each_entry(waiter, &ev->wq.head, wait.entry) in destroy_event()
244 waiter->event = NULL; in destroy_event()
391 struct kfd_event_waiter *waiter; in set_event() local
400 list_for_each_entry(waiter, &ev->wq.head, wait.entry) in set_event()
401 waiter->activated = true; in set_event()
545 struct kfd_event_waiter *waiter, in init_event_waiter_get_status() argument
553 waiter->event = ev; in init_event_waiter_get_status()
554 waiter->activated = ev->signaled; in init_event_waiter_get_status()
560 static void init_event_waiter_add_to_waitlist(struct kfd_event_waiter *waiter) in init_event_waiter_add_to_waitlist() argument
[all …]
/Linux-v4.19/Documentation/
Dfutex-requeue-pi.txt20 implementation would wake the highest-priority waiter, and leave the
92 The requeue code cannot simply wake the waiter and leave it to
94 requeue call returning to user space and the waiter waking and
100 of the waiter and to enqueue the waiter on a contended rt_mutex.
104 FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait()
116 PI futex on behalf of the top waiter. If it can, this waiter is
120 task as a waiter on the underlying rt_mutex. It is possible that
122 waiter is woken to finish the acquisition of the lock.
/Linux-v4.19/drivers/staging/vc04_services/interface/vchiq_arm/
Dvchiq_arm.c279 struct bulk_waiter_node *waiter; in vchiq_shutdown() local
281 waiter = list_entry(pos, in vchiq_shutdown()
287 waiter, waiter->pid); in vchiq_shutdown()
288 kfree(waiter); in vchiq_shutdown()
467 struct bulk_waiter_node *waiter = NULL; in vchiq_blocking_bulk_transfer() local
482 waiter = list_entry(pos, in vchiq_blocking_bulk_transfer()
491 if (waiter) { in vchiq_blocking_bulk_transfer()
492 VCHIQ_BULK_T *bulk = waiter->bulk_waiter.bulk; in vchiq_blocking_bulk_transfer()
509 if (!waiter) { in vchiq_blocking_bulk_transfer()
510 waiter = kzalloc(sizeof(struct bulk_waiter_node), GFP_KERNEL); in vchiq_blocking_bulk_transfer()
[all …]
/Linux-v4.19/fs/
Dlocks.c647 static void locks_insert_global_blocked(struct file_lock *waiter) in locks_insert_global_blocked() argument
651 hash_add(blocked_hash, &waiter->fl_link, posix_owner_key(waiter)); in locks_insert_global_blocked()
654 static void locks_delete_global_blocked(struct file_lock *waiter) in locks_delete_global_blocked() argument
658 hash_del(&waiter->fl_link); in locks_delete_global_blocked()
666 static void __locks_delete_block(struct file_lock *waiter) in __locks_delete_block() argument
668 locks_delete_global_blocked(waiter); in __locks_delete_block()
669 list_del_init(&waiter->fl_block); in __locks_delete_block()
670 waiter->fl_next = NULL; in __locks_delete_block()
673 static void locks_delete_block(struct file_lock *waiter) in locks_delete_block() argument
676 __locks_delete_block(waiter); in locks_delete_block()
[all …]
/Linux-v4.19/Documentation/locking/
Drt-mutex-design.txt95 waiter - A waiter is a struct that is stored on the stack of a blocked
96 process. Since the scope of the waiter is within the code for
98 the waiter on the process's stack (local variable). This
104 waiter is sometimes used in reference to the task that is waiting
105 on a mutex. This is the same as waiter->task.
109 top waiter - The highest priority process waiting on a specific mutex.
111 top pi waiter - The highest priority process waiting on one of the mutexes
350 pi waiter to its own normal/deadline priority and take the higher one.
366 by the task, so we only need to compare the priority of that top pi waiter
384 check for deadlocking, the mutex that the task owns, a pointer to a waiter
[all …]
Drt-mutex.txt19 priority waiter until the rt-mutex is released. If the temporarily
31 The enqueueing of the waiters into the rtmutex waiter tree is done in
33 rtmutex, only the top priority waiter is enqueued into the owner's
35 the top priority waiter of a task changes (for example it timed out or
53 NULL 1 lock is free and has waiters and the top waiter
/Linux-v4.19/drivers/md/persistent-data/
Ddm-block-manager.c52 struct waiter { struct
121 static void __wait(struct waiter *w) in __wait()
135 static void __wake_waiter(struct waiter *w) in __wake_waiter()
151 struct waiter *w, *tmp; in __wake_many()
195 struct waiter w; in bl_down_read()
258 struct waiter w; in bl_down_write()
/Linux-v4.19/mm/
Dpage_io.c126 struct task_struct *waiter = bio->bi_private; in end_swap_bio_read() local
143 wake_up_process(waiter); in end_swap_bio_read()
144 put_task_struct(waiter); in end_swap_bio_read()

12