/Linux-v4.19/drivers/gpu/host1x/ |
D | intr.c | 47 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 …]
|
D | syncpt.c | 221 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/ |
D | mutex-debug.c | 30 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 …]
|
D | rtmutex.c | 272 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 …]
|
D | rwsem-spinlock.c | 69 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 …]
|
D | rtmutex-debug.c | 87 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 …]
|
D | mutex.c | 171 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 …]
|
D | mutex.h | 13 #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
|
D | rwsem-xadd.c | 131 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 …]
|
D | semaphore.c | 208 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 …]
|
D | rtmutex-debug.h | 13 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()
|
D | mutex-debug.h | 18 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,
|
D | rtmutex_common.h | 138 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/ |
D | tty_ldsem.c | 99 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/ |
D | klist.c | 186 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/ |
D | futex_requeue_pi_signal_restart.c | 126 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()
|
D | futex_requeue_pi.c | 287 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/ |
D | kfd_events.c | 240 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/ |
D | futex-requeue-pi.txt | 20 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/ |
D | vchiq_arm.c | 279 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/ |
D | locks.c | 647 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/ |
D | rt-mutex-design.txt | 95 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 …]
|
D | rt-mutex.txt | 19 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/ |
D | dm-block-manager.c | 52 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/ |
D | page_io.c | 126 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()
|