/linux-4.1.27/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 | 193 struct host1x_waitlist *waiter; in host1x_syncpt_wait() local 221 waiter = kzalloc(sizeof(*waiter), GFP_KERNEL); in host1x_syncpt_wait() 222 if (!waiter) { in host1x_syncpt_wait() 230 &wq, waiter, &ref); in host1x_syncpt_wait()
|
D | intr.h | 80 struct host1x_waitlist *waiter, void **ref);
|
/linux-4.1.27/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 | 167 rt_mutex_enqueue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_enqueue() argument 177 if (rt_mutex_waiter_less(waiter, entry)) { in rt_mutex_enqueue() 186 lock->waiters_leftmost = &waiter->tree_entry; in rt_mutex_enqueue() 188 rb_link_node(&waiter->tree_entry, parent, link); in rt_mutex_enqueue() 189 rb_insert_color(&waiter->tree_entry, &lock->waiters); in rt_mutex_enqueue() 193 rt_mutex_dequeue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_dequeue() argument 195 if (RB_EMPTY_NODE(&waiter->tree_entry)) in rt_mutex_dequeue() 198 if (lock->waiters_leftmost == &waiter->tree_entry) in rt_mutex_dequeue() 199 lock->waiters_leftmost = rb_next(&waiter->tree_entry); in rt_mutex_dequeue() 201 rb_erase(&waiter->tree_entry, &lock->waiters); in rt_mutex_dequeue() [all …]
|
D | rwsem-spinlock.c | 67 struct rwsem_waiter *waiter; in __rwsem_do_wake() local 71 waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list); in __rwsem_do_wake() 73 if (waiter->type == RWSEM_WAITING_FOR_WRITE) { in __rwsem_do_wake() 77 wake_up_process(waiter->task); in __rwsem_do_wake() 84 struct list_head *next = waiter->list.next; in __rwsem_do_wake() 86 list_del(&waiter->list); in __rwsem_do_wake() 87 tsk = waiter->task; in __rwsem_do_wake() 96 waiter->task = NULL; in __rwsem_do_wake() 102 waiter = list_entry(next, struct rwsem_waiter, list); in __rwsem_do_wake() 103 } while (waiter->type != RWSEM_WAITING_FOR_WRITE); in __rwsem_do_wake() [all …]
|
D | rwsem-xadd.c | 124 struct rwsem_waiter *waiter; in __rwsem_do_wake() local 129 waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list); in __rwsem_do_wake() 130 if (waiter->type == RWSEM_WAITING_FOR_WRITE) { in __rwsem_do_wake() 137 wake_up_process(waiter->task); in __rwsem_do_wake() 168 if (waiter->list.next == &sem->wait_list) in __rwsem_do_wake() 171 waiter = list_entry(waiter->list.next, in __rwsem_do_wake() 174 } while (waiter->type != RWSEM_WAITING_FOR_WRITE); in __rwsem_do_wake() 177 if (waiter->type != RWSEM_WAITING_FOR_WRITE) in __rwsem_do_wake() 187 waiter = list_entry(next, struct rwsem_waiter, list); in __rwsem_do_wake() 188 next = waiter->list.next; in __rwsem_do_wake() [all …]
|
D | rtmutex-debug.c | 85 void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter) in debug_rt_mutex_print_deadlock() argument 89 if (!waiter->deadlock_lock || !debug_locks) in debug_rt_mutex_print_deadlock() 93 task = pid_task(waiter->deadlock_task_pid, PIDTYPE_PID); in debug_rt_mutex_print_deadlock() 114 printk_lock(waiter->lock, 1); in debug_rt_mutex_print_deadlock() 118 printk_lock(waiter->deadlock_lock, 1); in debug_rt_mutex_print_deadlock() 155 void debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter) in debug_rt_mutex_init_waiter() argument 157 memset(waiter, 0x11, sizeof(*waiter)); in debug_rt_mutex_init_waiter() 158 waiter->deadlock_task_pid = NULL; in debug_rt_mutex_init_waiter() 161 void debug_rt_mutex_free_waiter(struct rt_mutex_waiter *waiter) in debug_rt_mutex_free_waiter() argument 163 put_pid(waiter->deadlock_task_pid); in debug_rt_mutex_free_waiter() [all …]
|
D | mutex.h | 16 #define mutex_remove_waiter(lock, waiter, ti) \ argument 17 __list_del((waiter)->list.prev, (waiter)->list.next) 39 #define debug_mutex_wake_waiter(lock, waiter) do { } while (0) argument 40 #define debug_mutex_free_waiter(waiter) do { } while (0) argument 41 #define debug_mutex_add_waiter(lock, waiter, ti) do { } while (0) argument 46 debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_lock_common() argument
|
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 = task; 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 | 15 extern void debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter); 16 extern void debug_rt_mutex_free_waiter(struct rt_mutex_waiter *waiter); 24 struct rt_mutex_waiter *waiter, 26 extern void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter); 30 static inline bool debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *waiter, in debug_rt_mutex_detect_deadlock() argument 33 return (waiter != NULL); in debug_rt_mutex_detect_deadlock()
|
D | mutex-debug.h | 17 struct mutex_waiter *waiter); 19 struct mutex_waiter *waiter); 20 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter); 22 struct mutex_waiter *waiter, 24 extern void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
|
D | mutex.c | 510 struct mutex_waiter waiter; in __mutex_lock_common() local 538 debug_mutex_lock_common(lock, &waiter); in __mutex_lock_common() 539 debug_mutex_add_waiter(lock, &waiter, task_thread_info(task)); in __mutex_lock_common() 542 list_add_tail(&waiter.list, &lock->wait_list); in __mutex_lock_common() 543 waiter.task = task; in __mutex_lock_common() 586 mutex_remove_waiter(lock, &waiter, current_thread_info()); in __mutex_lock_common() 590 debug_mutex_free_waiter(&waiter); in __mutex_lock_common() 607 mutex_remove_waiter(lock, &waiter, task_thread_info(task)); in __mutex_lock_common() 609 debug_mutex_free_waiter(&waiter); in __mutex_lock_common() 743 struct mutex_waiter *waiter = in __mutex_unlock_common_slowpath() local [all …]
|
D | rtmutex_common.h | 128 struct rt_mutex_waiter *waiter, 132 struct rt_mutex_waiter *waiter);
|
/linux-4.1.27/drivers/tty/ |
D | tty_ldsem.c | 121 struct ldsem_waiter *waiter, *next; in __ldsem_wake_readers() local 138 list_for_each_entry_safe(waiter, next, &sem->read_wait, list) { in __ldsem_wake_readers() 139 tsk = waiter->task; in __ldsem_wake_readers() 141 waiter->task = NULL; in __ldsem_wake_readers() 165 struct ldsem_waiter *waiter; in __ldsem_wake_writer() local 167 waiter = list_entry(sem->write_wait.next, struct ldsem_waiter, list); in __ldsem_wake_writer() 168 wake_up_process(waiter->task); in __ldsem_wake_writer() 202 struct ldsem_waiter waiter; in down_read_failed() local 221 list_add_tail(&waiter.list, &sem->read_wait); in down_read_failed() 224 waiter.task = tsk; in down_read_failed() [all …]
|
/linux-4.1.27/drivers/gpu/drm/omapdrm/ |
D | omap_gem.c | 1042 static inline bool is_waiting(struct omap_gem_sync_waiter *waiter) in is_waiting() argument 1044 struct omap_gem_object *omap_obj = waiter->omap_obj; in is_waiting() 1045 if ((waiter->op & OMAP_GEM_READ) && in is_waiting() 1046 (omap_obj->sync->write_complete < waiter->write_target)) in is_waiting() 1048 if ((waiter->op & OMAP_GEM_WRITE) && in is_waiting() 1049 (omap_obj->sync->read_complete < waiter->read_target)) in is_waiting() 1064 struct omap_gem_sync_waiter *waiter, *n; in sync_op_update() local 1065 list_for_each_entry_safe(waiter, n, &waiters, list) { in sync_op_update() 1066 if (!is_waiting(waiter)) { in sync_op_update() 1067 list_del(&waiter->list); in sync_op_update() [all …]
|
/linux-4.1.27/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-4.1.27/drivers/staging/android/ |
D | sync.h | 171 struct sync_fence_waiter *waiter); 184 static inline void sync_fence_waiter_init(struct sync_fence_waiter *waiter, in sync_fence_waiter_init() argument 187 INIT_LIST_HEAD(&waiter->work.task_list); in sync_fence_waiter_init() 188 waiter->callback = callback; in sync_fence_waiter_init() 312 struct sync_fence_waiter *waiter); 326 struct sync_fence_waiter *waiter);
|
D | sync_debug.c | 165 struct sync_fence_waiter *waiter; in sync_print_fence() local 170 waiter = container_of(pos, struct sync_fence_waiter, work); in sync_print_fence() 172 seq_printf(s, "waiter %pF\n", waiter->callback); in sync_print_fence()
|
D | sync.c | 328 struct sync_fence_waiter *waiter) in sync_fence_wait_async() argument 339 init_waitqueue_func_entry(&waiter->work, sync_fence_wake_up_wq); in sync_fence_wait_async() 340 waiter->work.private = fence; in sync_fence_wait_async() 345 __add_wait_queue_tail(&fence->wq, &waiter->work); in sync_fence_wait_async() 356 struct sync_fence_waiter *waiter) in sync_fence_cancel_async() argument 362 if (!list_empty(&waiter->work.task_list)) in sync_fence_cancel_async() 363 list_del_init(&waiter->work.task_list); in sync_fence_cancel_async()
|
/linux-4.1.27/Documentation/ |
D | futex-requeue-pi.txt | 19 implementation would wake the highest-priority waiter, and leave the 91 The requeue code cannot simply wake the waiter and leave it to 93 requeue call returning to user space and the waiter waking and 99 of the waiter and to enqueue the waiter on a contended rt_mutex. 103 FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait() 115 PI futex on behalf of the top waiter. If it can, this waiter is 119 task as a waiter on the underlying rt_mutex. It is possible that 121 waiter is woken to finish the acquisition of the lock.
|
D | robust-futexes.txt | 14 that says "there's a waiter pending", and the sys_futex(FUTEX_WAIT) 17 waiter with the waker - without them having to know about each other. 19 value) that there were waiter(s) pending, and does the 98 this thread with the FUTEX_OWNER_DIED bit, and wakes up one waiter (if 192 and wakes up the next futex waiter (if any). User-space does the rest of
|
D | memory-barriers.txt | 2287 To wake up a particular waiter, the up_read() or up_write() functions have to: 2289 (1) read the next pointer from this waiter's record to know as to where the 2290 next waiter record is; 2292 (2) read the pointer to the waiter's task structure; 2294 (3) clear the task pointer to tell the waiter it has been given the semaphore; 2298 (5) release the reference held on the waiter's task struct. 2302 LOAD waiter->list.next; 2303 LOAD waiter->task; 2304 STORE waiter->task; 2311 Once it has queued itself and dropped the semaphore lock, the waiter does not [all …]
|
D | robust-futex-ABI.txt | 24 waiting on a particular futex, and waking up the next waiter on a
|
/linux-4.1.27/fs/ |
D | locks.c | 588 static void locks_insert_global_blocked(struct file_lock *waiter) in locks_insert_global_blocked() argument 592 hash_add(blocked_hash, &waiter->fl_link, posix_owner_key(waiter)); in locks_insert_global_blocked() 595 static void locks_delete_global_blocked(struct file_lock *waiter) in locks_delete_global_blocked() argument 599 hash_del(&waiter->fl_link); in locks_delete_global_blocked() 607 static void __locks_delete_block(struct file_lock *waiter) in __locks_delete_block() argument 609 locks_delete_global_blocked(waiter); in __locks_delete_block() 610 list_del_init(&waiter->fl_block); in __locks_delete_block() 611 waiter->fl_next = NULL; in __locks_delete_block() 614 static void locks_delete_block(struct file_lock *waiter) in locks_delete_block() argument 617 __locks_delete_block(waiter); in locks_delete_block() [all …]
|
D | direct-io.c | 126 struct task_struct *waiter; /* waiting task (NULL if none) */ member 299 if (remaining == 1 && dio->waiter) in dio_bio_end_aio() 300 wake_up_process(dio->waiter); in dio_bio_end_aio() 329 if (--dio->refcount == 1 && dio->waiter) in dio_bio_end_io() 330 wake_up_process(dio->waiter); in dio_bio_end_io() 440 dio->waiter = current; in dio_await_one() 445 dio->waiter = NULL; in dio_await_one()
|
/linux-4.1.27/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 210 wait_lock. Since the modification of the waiter list is never done in 376 to compare the top pi waiter to its own normal priority, and return the higher 397 by the task, so we only need to compare the priority of that top pi 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 list 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 64 pending-ownership is assigned to the first (highest priority) waiter of
|
/linux-4.1.27/drivers/gpu/drm/i915/ |
D | intel_ringbuffer.c | 1127 struct intel_engine_cs *waiter; in gen8_rcs_signal() local 1138 for_each_ring(waiter, dev_priv, i) { in gen8_rcs_signal() 1155 MI_SEMAPHORE_TARGET(waiter->id)); in gen8_rcs_signal() 1168 struct intel_engine_cs *waiter; in gen8_xcs_signal() local 1179 for_each_ring(waiter, dev_priv, i) { in gen8_xcs_signal() 1194 MI_SEMAPHORE_TARGET(waiter->id)); in gen8_xcs_signal() 1284 gen8_ring_sync(struct intel_engine_cs *waiter, in gen8_ring_sync() argument 1288 struct drm_i915_private *dev_priv = waiter->dev->dev_private; in gen8_ring_sync() 1291 ret = intel_ring_begin(waiter, 4); in gen8_ring_sync() 1295 intel_ring_emit(waiter, MI_SEMAPHORE_WAIT | in gen8_ring_sync() [all …]
|
/linux-4.1.27/drivers/md/persistent-data/ |
D | dm-block-manager.c | 49 struct waiter { struct 127 static void __wait(struct waiter *w) in __wait() 141 static void __wake_waiter(struct waiter *w) in __wake_waiter() 157 struct waiter *w, *tmp; in __wake_many() 201 struct waiter w; in bl_down_read() 264 struct waiter w; in bl_down_write()
|
/linux-4.1.27/arch/x86/crypto/sha-mb/ |
D | sha1_mb.c | 436 list_del(&rctx->waiter); in sha_complete_job() 454 list_del(&req_ctx->waiter); in sha_complete_job() 485 list_add_tail(&rctx->waiter, &cstate->work_list); in sha1_mb_add_list() 833 struct mcryptd_hash_request_ctx, waiter); in sha1_mb_flusher() 850 struct mcryptd_hash_request_ctx, waiter); in sha1_mb_flusher()
|
/linux-4.1.27/include/crypto/ |
D | mcryptd.h | 56 struct list_head waiter; member
|
/linux-4.1.27/drivers/staging/lustre/lustre/lov/ |
D | lov_object.c | 298 wait_queue_t *waiter; in lov_subobject_kill() local 315 waiter = &lov_env_info(env)->lti_waiter; in lov_subobject_kill() 316 init_waitqueue_entry(waiter, current); in lov_subobject_kill() 317 add_wait_queue(&bkt->lsb_marche_funebre, waiter); in lov_subobject_kill() 333 remove_wait_queue(&bkt->lsb_marche_funebre, waiter); in lov_subobject_kill()
|
/linux-4.1.27/drivers/staging/lustre/lustre/obdclass/ |
D | lu_object.c | 539 wait_queue_t *waiter, in htable_lookup() argument 574 init_waitqueue_entry(waiter, current); in htable_lookup() 575 add_wait_queue(&bkt->lsb_marche_funebre, waiter); in htable_lookup() 624 wait_queue_t *waiter) in lu_object_find_try() argument 659 o = htable_lookup(s, &bd, f, waiter, &version); in lu_object_find_try() 676 shadow = htable_lookup(s, &bd, f, waiter, &version); in lu_object_find_try() 2078 wait_queue_t waiter; in lu_object_assign_fid() local 2087 shadow = htable_lookup(s, &bd, fid, &waiter, &version); in lu_object_assign_fid()
|
D | cl_lock.c | 925 wait_queue_t waiter; in cl_lock_state_wait() local 942 init_waitqueue_entry(&waiter, current); in cl_lock_state_wait() 943 add_wait_queue(&lock->cll_wq, &waiter); in cl_lock_state_wait() 960 remove_wait_queue(&lock->cll_wq, &waiter); in cl_lock_state_wait()
|
/linux-4.1.27/drivers/staging/lustre/lustre/lclient/ |
D | lcommon_cl.c | 1160 wait_queue_t waiter; in cl_object_put_last() local 1168 init_waitqueue_entry(&waiter, current); in cl_object_put_last() 1169 add_wait_queue(&bkt->lsb_marche_funebre, &waiter); in cl_object_put_last() 1179 remove_wait_queue(&bkt->lsb_marche_funebre, &waiter); in cl_object_put_last()
|
/linux-4.1.27/Documentation/scheduler/ |
D | completion.txt | 53 Completions should be named to convey the intent of the waiter. A good 213 a thread starts waiting. This is achieved by the waiter "consuming"
|
/linux-4.1.27/include/linux/ |
D | pagemap.h | 534 extern void add_page_wait_queue(struct page *page, wait_queue_t *waiter);
|
D | fs.h | 1137 static inline int posix_unblock_lock(struct file_lock *waiter) in posix_unblock_lock() argument
|
/linux-4.1.27/drivers/block/ |
D | nvme-core.c | 2427 struct task_struct *waiter; member 2434 dq->waiter = current; in nvme_wait_dq() 2464 if (dq->waiter) in nvme_put_dq() 2465 wake_up_process(dq->waiter); in nvme_put_dq() 2549 dq.waiter = NULL; in nvme_disable_io_queues()
|
/linux-4.1.27/mm/ |
D | filemap.c | 720 void add_page_wait_queue(struct page *page, wait_queue_t *waiter) in add_page_wait_queue() argument 726 __add_wait_queue(q, waiter); in add_page_wait_queue()
|