Home
last modified time | relevance | path

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

12

/Linux-v5.10/drivers/gpu/host1x/
Dintr.c36 static bool add_waiter_to_queue(struct host1x_waitlist *waiter, in add_waiter_to_queue() argument
40 u32 thresh = waiter->thresh; in add_waiter_to_queue()
44 list_add(&waiter->list, &pos->list); in add_waiter_to_queue()
48 list_add(&waiter->list, queue); in add_waiter_to_queue()
60 struct host1x_waitlist *waiter, *next, *prev; in remove_completed_waiters() local
62 list_for_each_entry_safe(waiter, next, head, list) { in remove_completed_waiters()
63 if ((s32)(waiter->thresh - sync) > 0) in remove_completed_waiters()
66 dest = completed + waiter->action; in remove_completed_waiters()
69 if (waiter->action == HOST1X_INTR_ACTION_SUBMIT_COMPLETE && in remove_completed_waiters()
73 if (prev->data == waiter->data) { in remove_completed_waiters()
[all …]
Dsyncpt.c210 struct host1x_waitlist *waiter; in host1x_syncpt_wait() local
240 waiter = kzalloc(sizeof(*waiter), GFP_KERNEL); in host1x_syncpt_wait()
241 if (!waiter) { in host1x_syncpt_wait()
249 &wq, waiter, &ref); in host1x_syncpt_wait()
/Linux-v5.10/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.c271 rt_mutex_enqueue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_enqueue() argument
281 if (rt_mutex_waiter_less(waiter, entry)) { in rt_mutex_enqueue()
289 rb_link_node(&waiter->tree_entry, parent, link); in rt_mutex_enqueue()
290 rb_insert_color_cached(&waiter->tree_entry, &lock->waiters, leftmost); in rt_mutex_enqueue()
294 rt_mutex_dequeue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_dequeue() argument
296 if (RB_EMPTY_NODE(&waiter->tree_entry)) in rt_mutex_dequeue()
299 rb_erase_cached(&waiter->tree_entry, &lock->waiters); in rt_mutex_dequeue()
300 RB_CLEAR_NODE(&waiter->tree_entry); in rt_mutex_dequeue()
304 rt_mutex_enqueue_pi(struct task_struct *task, struct rt_mutex_waiter *waiter) in rt_mutex_enqueue_pi() argument
314 if (rt_mutex_waiter_less(waiter, entry)) { in rt_mutex_enqueue_pi()
[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.c198 static inline bool __mutex_waiter_is_first(struct mutex *lock, struct mutex_waiter *waiter) in __mutex_waiter_is_first() argument
200 return list_first_entry(&lock->wait_list, struct mutex_waiter, list) == waiter; in __mutex_waiter_is_first()
208 __mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter, in __mutex_add_waiter() argument
211 debug_mutex_add_waiter(lock, waiter, current); in __mutex_add_waiter()
213 list_add_tail(&waiter->list, list); in __mutex_add_waiter()
214 if (__mutex_waiter_is_first(lock, waiter)) in __mutex_add_waiter()
367 __ww_mutex_die(struct mutex *lock, struct mutex_waiter *waiter, in __ww_mutex_die() argument
373 if (waiter->ww_ctx->acquired > 0 && in __ww_mutex_die()
374 __ww_ctx_stamp_after(waiter->ww_ctx, ww_ctx)) { in __ww_mutex_die()
375 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
Dsemaphore.c207 struct semaphore_waiter waiter; in __down_common() local
209 list_add_tail(&waiter.list, &sem->wait_list); in __down_common()
210 waiter.task = current; in __down_common()
211 waiter.up = false; in __down_common()
222 if (waiter.up) in __down_common()
227 list_del(&waiter.list); in __down_common()
231 list_del(&waiter.list); in __down_common()
257 struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list, in __up() local
259 list_del(&waiter->list); in __up()
260 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,
Drwsem.c404 struct rwsem_waiter *waiter, *tmp; in rwsem_mark_wake() local
414 waiter = rwsem_first_waiter(sem); in rwsem_mark_wake()
416 if (waiter->type == RWSEM_WAITING_FOR_WRITE) { in rwsem_mark_wake()
425 wake_q_add(wake_q, waiter->task); in rwsem_mark_wake()
455 time_after(jiffies, waiter->timeout)) { in rwsem_mark_wake()
469 owner = waiter->task; in rwsem_mark_wake()
470 if (waiter->last_rowner & RWSEM_RD_NONSPINNABLE) { in rwsem_mark_wake()
501 list_for_each_entry_safe(waiter, tmp, &sem->wait_list, list) { in rwsem_mark_wake()
502 if (waiter->type == RWSEM_WAITING_FOR_WRITE) in rwsem_mark_wake()
506 list_move_tail(&waiter->list, &wlist); in rwsem_mark_wake()
[all …]
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-v5.10/drivers/tty/
Dtty_ldsem.c76 struct ldsem_waiter *waiter, *next; in __ldsem_wake_readers() local
94 list_for_each_entry_safe(waiter, next, &sem->read_wait, list) { in __ldsem_wake_readers()
95 tsk = waiter->task; in __ldsem_wake_readers()
96 smp_store_release(&waiter->task, NULL); in __ldsem_wake_readers()
121 struct ldsem_waiter *waiter; in __ldsem_wake_writer() local
123 waiter = list_entry(sem->write_wait.next, struct ldsem_waiter, list); in __ldsem_wake_writer()
124 wake_up_process(waiter->task); in __ldsem_wake_writer()
158 struct ldsem_waiter waiter; in down_read_failed() local
180 list_add_tail(&waiter.list, &sem->read_wait); in down_read_failed()
183 waiter.task = current; in down_read_failed()
[all …]
/Linux-v5.10/lib/
Dklist.c185 struct klist_waiter *waiter, *tmp; in klist_release() local
191 list_for_each_entry_safe(waiter, tmp, &klist_remove_waiters, list) { in klist_release()
192 if (waiter->node != n) in klist_release()
195 list_del(&waiter->list); in klist_release()
196 waiter->woken = 1; in klist_release()
198 wake_up_process(waiter->process); in klist_release()
240 struct klist_waiter waiter; in klist_remove() local
242 waiter.node = n; in klist_remove()
243 waiter.process = current; in klist_remove()
244 waiter.woken = 0; in klist_remove()
[all …]
/Linux-v5.10/tools/testing/selftests/filesystems/epoll/
Depoll_wakeup_test.c21 pthread_t waiter; member
32 pthread_kill(ctx->waiter, SIGUSR1); in kill_timeout()
474 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST()
480 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST()
517 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST()
523 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST()
564 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry2a, &ctx), 0); in TEST()
570 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST()
613 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST()
619 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST()
[all …]
/Linux-v5.10/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()
390 struct kfd_event_waiter *waiter; in set_event() local
399 list_for_each_entry(waiter, &ev->wq.head, wait.entry) in set_event()
400 waiter->activated = true; in set_event()
544 struct kfd_event_waiter *waiter, in init_event_waiter_get_status() argument
552 waiter->event = ev; in init_event_waiter_get_status()
553 waiter->activated = ev->signaled; in init_event_waiter_get_status()
559 static void init_event_waiter_add_to_waitlist(struct kfd_event_waiter *waiter) in init_event_waiter_add_to_waitlist() argument
[all …]
/Linux-v5.10/tools/testing/selftests/futex/functional/
Dfutex_requeue_pi_signal_restart.c122 pthread_t waiter; in main() local
158 res = create_rt_thread(&waiter, waiterfn, NULL, SCHED_FIFO, 1); in main()
177 pthread_kill(waiter, SIGUSR1); in main()
208 pthread_kill(waiter, SIGUSR1); in main()
210 pthread_join(waiter, NULL); in main()
/Linux-v5.10/Documentation/locking/
Dfutex-requeue-pi.rst20 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.
Drt-mutex-design.rst100 waiter
101 - A waiter is a struct that is stored on the stack of a blocked
102 process. Since the scope of the waiter is within the code for
104 the waiter on the process's stack (local variable). This
110 waiter is sometimes used in reference to the task that is waiting
111 on a mutex. This is the same as waiter->task.
116 top waiter
119 top pi waiter
360 pi waiter to its own normal/deadline priority and take the higher one.
377 by the task, so we only need to compare the priority of that top pi waiter
[all …]
Drt-mutex.rst20 priority waiter until the rt-mutex is released. If the temporarily
32 The enqueueing of the waiters into the rtmutex waiter tree is done in
34 rtmutex, only the top priority waiter is enqueued into the owner's
36 the top priority waiter of a task changes (for example it timed out or
56 NULL 1 lock is free and has waiters and the top waiter
/Linux-v5.10/drivers/staging/vc04_services/interface/vchiq_arm/
Dvchiq_arm.c223 struct bulk_waiter_node *waiter, *next; in vchiq_shutdown() local
225 list_for_each_entry_safe(waiter, next, in vchiq_shutdown()
227 list_del(&waiter->list); in vchiq_shutdown()
230 waiter, waiter->pid); in vchiq_shutdown()
231 kfree(waiter); in vchiq_shutdown()
434 struct bulk_waiter_node *waiter = NULL; in vchiq_blocking_bulk_transfer() local
446 list_for_each_entry(waiter, &instance->bulk_waiter_list, list) { in vchiq_blocking_bulk_transfer()
447 if (waiter->pid == current->pid) { in vchiq_blocking_bulk_transfer()
448 list_del(&waiter->list); in vchiq_blocking_bulk_transfer()
456 struct vchiq_bulk *bulk = waiter->bulk_waiter.bulk; in vchiq_blocking_bulk_transfer()
[all …]
/Linux-v5.10/fs/
Dlocks.c705 static void locks_insert_global_blocked(struct file_lock *waiter) in locks_insert_global_blocked() argument
709 hash_add(blocked_hash, &waiter->fl_link, posix_owner_key(waiter)); in locks_insert_global_blocked()
712 static void locks_delete_global_blocked(struct file_lock *waiter) in locks_delete_global_blocked() argument
716 hash_del(&waiter->fl_link); in locks_delete_global_blocked()
724 static void __locks_delete_block(struct file_lock *waiter) in __locks_delete_block() argument
726 locks_delete_global_blocked(waiter); in __locks_delete_block()
727 list_del_init(&waiter->fl_blocked_member); in __locks_delete_block()
733 struct file_lock *waiter; in __locks_wake_up_blocks() local
735 waiter = list_first_entry(&blocker->fl_blocked_requests, in __locks_wake_up_blocks()
737 __locks_delete_block(waiter); in __locks_wake_up_blocks()
[all …]
/Linux-v5.10/fs/iomap/
Ddirect-io.c40 struct task_struct *waiter; member
163 struct task_struct *waiter = dio->submit.waiter; in iomap_dio_bio_end_io() local
164 WRITE_ONCE(dio->submit.waiter, NULL); in iomap_dio_bio_end_io()
165 blk_wake_io_task(waiter); in iomap_dio_bio_end_io()
453 dio->submit.waiter = current; in __iomap_dio_rw()
576 if (!READ_ONCE(dio->submit.waiter)) in __iomap_dio_rw()
/Linux-v5.10/drivers/md/persistent-data/
Ddm-block-manager.c54 struct waiter { struct
120 static void __wait(struct waiter *w) in __wait()
134 static void __wake_waiter(struct waiter *w) in __wake_waiter()
150 struct waiter *w, *tmp; in __wake_many()
194 struct waiter w; in bl_down_read()
257 struct waiter w; in bl_down_write()
/Linux-v5.10/mm/
Dpage_io.c123 struct task_struct *waiter = bio->bi_private; in end_swap_bio_read() local
140 if (waiter) { in end_swap_bio_read()
141 blk_wake_io_task(waiter); in end_swap_bio_read()
142 put_task_struct(waiter); in end_swap_bio_read()

12