Home
last modified time | relevance | path

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

/linux-4.4.14/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.c193 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()
Dintr.h80 struct host1x_waitlist *waiter, void **ref);
/linux-4.4.14/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.c180 rt_mutex_enqueue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_enqueue() argument
190 if (rt_mutex_waiter_less(waiter, entry)) { in rt_mutex_enqueue()
199 lock->waiters_leftmost = &waiter->tree_entry; in rt_mutex_enqueue()
201 rb_link_node(&waiter->tree_entry, parent, link); in rt_mutex_enqueue()
202 rb_insert_color(&waiter->tree_entry, &lock->waiters); in rt_mutex_enqueue()
206 rt_mutex_dequeue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_dequeue() argument
208 if (RB_EMPTY_NODE(&waiter->tree_entry)) in rt_mutex_dequeue()
211 if (lock->waiters_leftmost == &waiter->tree_entry) in rt_mutex_dequeue()
212 lock->waiters_leftmost = rb_next(&waiter->tree_entry); in rt_mutex_dequeue()
214 rb_erase(&waiter->tree_entry, &lock->waiters); in rt_mutex_dequeue()
[all …]
Drwsem-spinlock.c67 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 …]
Drwsem-xadd.c124 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 …]
Drtmutex-debug.c85 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 …]
Dmutex.h16 #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
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 = 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 …]
Drtmutex-debug.h15 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()
Dmutex-debug.h17 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,
Dmutex.c513 struct mutex_waiter waiter; in __mutex_lock_common() local
536 debug_mutex_lock_common(lock, &waiter); in __mutex_lock_common()
537 debug_mutex_add_waiter(lock, &waiter, task_thread_info(task)); in __mutex_lock_common()
540 list_add_tail(&waiter.list, &lock->wait_list); in __mutex_lock_common()
541 waiter.task = task; in __mutex_lock_common()
584 mutex_remove_waiter(lock, &waiter, current_thread_info()); in __mutex_lock_common()
588 debug_mutex_free_waiter(&waiter); in __mutex_lock_common()
605 mutex_remove_waiter(lock, &waiter, task_thread_info(task)); in __mutex_lock_common()
607 debug_mutex_free_waiter(&waiter); in __mutex_lock_common()
741 struct mutex_waiter *waiter = in __mutex_unlock_common_slowpath() local
[all …]
Drtmutex_common.h106 struct rt_mutex_waiter *waiter,
110 struct rt_mutex_waiter *waiter);
/linux-4.4.14/drivers/tty/
Dtty_ldsem.c121 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.4.14/drivers/gpu/drm/omapdrm/
Domap_gem.c1040 static inline bool is_waiting(struct omap_gem_sync_waiter *waiter) in is_waiting() argument
1042 struct omap_gem_object *omap_obj = waiter->omap_obj; in is_waiting()
1043 if ((waiter->op & OMAP_GEM_READ) && in is_waiting()
1044 (omap_obj->sync->write_complete < waiter->write_target)) in is_waiting()
1046 if ((waiter->op & OMAP_GEM_WRITE) && in is_waiting()
1047 (omap_obj->sync->read_complete < waiter->read_target)) in is_waiting()
1062 struct omap_gem_sync_waiter *waiter, *n; in sync_op_update() local
1063 list_for_each_entry_safe(waiter, n, &waiters, list) { in sync_op_update()
1064 if (!is_waiting(waiter)) { in sync_op_update()
1065 list_del(&waiter->list); in sync_op_update()
[all …]
/linux-4.4.14/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-4.4.14/drivers/staging/android/
Dsync.h171 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);
Dsync_debug.c165 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()
Dsync.c328 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.4.14/tools/testing/selftests/futex/functional/
Dfutex_requeue_pi_signal_restart.c125 pthread_t waiter; in main() local
159 res = create_rt_thread(&waiter, waiterfn, NULL, SCHED_FIFO, 1); in main()
178 pthread_kill(waiter, SIGUSR1); in main()
209 pthread_kill(waiter, SIGUSR1); in main()
211 pthread_join(waiter, NULL); in main()
Dfutex_requeue_pi.c286 pthread_t waiter[THREAD_MAX], waker, blocker; in unit_test() local
323 if (create_rt_thread(&waiter[i], waiterfn, (void *)&args[i], in unit_test()
342 pthread_join(waiter[i], in unit_test()
/linux-4.4.14/drivers/gpu/drm/amd/amdkfd/
Dkfd_events.c479 struct kfd_event_waiter *waiter; in set_event() local
485 list_for_each_entry_safe(waiter, next, &ev->waiters, waiters) { in set_event()
486 waiter->activated = true; in set_event()
489 list_del_init(&waiter->waiters); in set_event()
491 wake_up_process(waiter->sleeping_task); in set_event()
621 struct kfd_event_waiter *waiter, in init_event_waiter() argument
630 waiter->event = ev; in init_event_waiter()
631 waiter->input_index = input_index; in init_event_waiter()
632 waiter->activated = ev->signaled; in init_event_waiter()
635 list_add(&waiter->waiters, &ev->waiters); in init_event_waiter()
[all …]
/linux-4.4.14/Documentation/
Dfutex-requeue-pi.txt19 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.
Drobust-futexes.txt14 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
Dmemory-barriers.txt2242 To wake up a particular waiter, the up_read() or up_write() functions have to:
2244 (1) read the next pointer from this waiter's record to know as to where the
2245 next waiter record is;
2247 (2) read the pointer to the waiter's task structure;
2249 (3) clear the task pointer to tell the waiter it has been given the semaphore;
2253 (5) release the reference held on the waiter's task struct.
2257 LOAD waiter->list.next;
2258 LOAD waiter->task;
2259 STORE waiter->task;
2266 Once it has queued itself and dropped the semaphore lock, the waiter does not
[all …]
Drobust-futex-ABI.txt24 waiting on a particular futex, and waking up the next waiter on a
/linux-4.4.14/fs/
Dlocks.c592 static void locks_insert_global_blocked(struct file_lock *waiter) in locks_insert_global_blocked() argument
596 hash_add(blocked_hash, &waiter->fl_link, posix_owner_key(waiter)); in locks_insert_global_blocked()
599 static void locks_delete_global_blocked(struct file_lock *waiter) in locks_delete_global_blocked() argument
603 hash_del(&waiter->fl_link); in locks_delete_global_blocked()
611 static void __locks_delete_block(struct file_lock *waiter) in __locks_delete_block() argument
613 locks_delete_global_blocked(waiter); in __locks_delete_block()
614 list_del_init(&waiter->fl_block); in __locks_delete_block()
615 waiter->fl_next = NULL; in __locks_delete_block()
618 static void locks_delete_block(struct file_lock *waiter) in locks_delete_block() argument
621 __locks_delete_block(waiter); in locks_delete_block()
[all …]
Ddirect-io.c129 struct task_struct *waiter; /* waiting task (NULL if none) */ member
302 if (remaining == 1 && dio->waiter) in dio_bio_end_aio()
303 wake_up_process(dio->waiter); in dio_bio_end_aio()
332 if (--dio->refcount == 1 && dio->waiter) in dio_bio_end_io()
333 wake_up_process(dio->waiter); in dio_bio_end_io()
446 dio->waiter = current; in dio_await_one()
452 dio->waiter = NULL; in dio_await_one()
/linux-4.4.14/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
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 …]
Drt-mutex.txt19 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.4.14/drivers/md/persistent-data/
Ddm-block-manager.c49 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.4.14/drivers/gpu/drm/i915/
Dintel_ringbuffer.c1232 struct intel_engine_cs *waiter; in gen8_rcs_signal() local
1243 for_each_ring(waiter, dev_priv, i) { in gen8_rcs_signal()
1259 MI_SEMAPHORE_TARGET(waiter->id)); in gen8_rcs_signal()
1273 struct intel_engine_cs *waiter; in gen8_xcs_signal() local
1284 for_each_ring(waiter, dev_priv, i) { in gen8_xcs_signal()
1298 MI_SEMAPHORE_TARGET(waiter->id)); in gen8_xcs_signal()
1391 struct intel_engine_cs *waiter = waiter_req->ring; in gen8_ring_sync() local
1392 struct drm_i915_private *dev_priv = waiter->dev->dev_private; in gen8_ring_sync()
1399 intel_ring_emit(waiter, MI_SEMAPHORE_WAIT | in gen8_ring_sync()
1403 intel_ring_emit(waiter, seqno); in gen8_ring_sync()
[all …]
/linux-4.4.14/arch/x86/crypto/sha-mb/
Dsha1_mb.c433 list_del(&rctx->waiter); in sha_complete_job()
451 list_del(&req_ctx->waiter); in sha_complete_job()
482 list_add_tail(&rctx->waiter, &cstate->work_list); in sha1_mb_add_list()
830 struct mcryptd_hash_request_ctx, waiter); in sha1_mb_flusher()
847 struct mcryptd_hash_request_ctx, waiter); in sha1_mb_flusher()
/linux-4.4.14/include/crypto/
Dmcryptd.h56 struct list_head waiter; member
/linux-4.4.14/Documentation/DocBook/
Dkernel-locking.xml.db12 API-futex-top-waiter
/linux-4.4.14/drivers/staging/lustre/lustre/lov/
Dlov_object.c298 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.4.14/drivers/staging/lustre/lustre/obdclass/
Dlu_object.c524 wait_queue_t *waiter, in htable_lookup() argument
563 init_waitqueue_entry(waiter, current); in htable_lookup()
564 add_wait_queue(&bkt->lsb_marche_funebre, waiter); in htable_lookup()
610 wait_queue_t *waiter) in lu_object_find_try() argument
645 o = htable_lookup(s, &bd, f, waiter, &version); in lu_object_find_try()
662 shadow = htable_lookup(s, &bd, f, waiter, &version); in lu_object_find_try()
Dcl_lock.c925 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.4.14/drivers/staging/lustre/lustre/lclient/
Dlcommon_cl.c1079 wait_queue_t waiter; in cl_object_put_last() local
1087 init_waitqueue_entry(&waiter, current); in cl_object_put_last()
1088 add_wait_queue(&bkt->lsb_marche_funebre, &waiter); in cl_object_put_last()
1098 remove_wait_queue(&bkt->lsb_marche_funebre, &waiter); in cl_object_put_last()
/linux-4.4.14/Documentation/scheduler/
Dcompletion.txt53 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.4.14/include/linux/
Dpagemap.h541 extern void add_page_wait_queue(struct page *page, wait_queue_t *waiter);
Dfs.h1146 static inline int posix_unblock_lock(struct file_lock *waiter) in posix_unblock_lock() argument
/linux-4.4.14/drivers/nvme/host/
Dpci.c2767 struct task_struct *waiter; member
2774 dq->waiter = current; in nvme_wait_dq()
2804 if (dq->waiter) in nvme_put_dq()
2805 wake_up_process(dq->waiter); in nvme_put_dq()
2893 dq.waiter = NULL; in nvme_disable_io_queues()
/linux-4.4.14/mm/
Dfilemap.c787 void add_page_wait_queue(struct page *page, wait_queue_t *waiter) in add_page_wait_queue() argument
793 __add_wait_queue(q, waiter); in add_page_wait_queue()