Home
last modified time | relevance | path

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

/linux-4.1.27/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.1.27/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.c167 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 …]
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.c510 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 …]
Drtmutex_common.h128 struct rt_mutex_waiter *waiter,
132 struct rt_mutex_waiter *waiter);
/linux-4.1.27/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.1.27/drivers/gpu/drm/omapdrm/
Domap_gem.c1042 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/
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.1.27/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.1.27/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.txt2287 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 …]
Drobust-futex-ABI.txt24 waiting on a particular futex, and waking up the next waiter on a
/linux-4.1.27/fs/
Dlocks.c588 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 …]
Ddirect-io.c126 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/
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.1.27/drivers/gpu/drm/i915/
Dintel_ringbuffer.c1127 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/
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.1.27/arch/x86/crypto/sha-mb/
Dsha1_mb.c436 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/
Dmcryptd.h56 struct list_head waiter; member
/linux-4.1.27/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.1.27/drivers/staging/lustre/lustre/obdclass/
Dlu_object.c539 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()
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.1.27/drivers/staging/lustre/lustre/lclient/
Dlcommon_cl.c1160 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/
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.1.27/include/linux/
Dpagemap.h534 extern void add_page_wait_queue(struct page *page, wait_queue_t *waiter);
Dfs.h1137 static inline int posix_unblock_lock(struct file_lock *waiter) in posix_unblock_lock() argument
/linux-4.1.27/drivers/block/
Dnvme-core.c2427 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/
Dfilemap.c720 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()