| /linux/drivers/md/dm-vdo/ |
| A D | wait-queue.c | 90 struct vdo_wait_queue waiters; in vdo_waitq_notify_all_waiters() local 92 vdo_waitq_init(&waiters); in vdo_waitq_notify_all_waiters() 93 vdo_waitq_transfer_all_waiters(waitq, &waiters); in vdo_waitq_notify_all_waiters() 96 while (vdo_waitq_has_waiters(&waiters)) in vdo_waitq_notify_all_waiters() 97 vdo_waitq_notify_next_waiter(&waiters, callback, context); in vdo_waitq_notify_all_waiters()
|
| A D | data-vio.c | 141 struct bio_list waiters; member 250 vdo_waitq_init(&lock->waiters); in initialize_lbn_lock() 598 struct bio *bio = bio_list_pop(&limiter->waiters); in assign_discard_permit() 627 struct bio_list *waiters = &limiter->waiters; in update_limiter() local 675 if (bio_list_empty(&pool->discard_limiter.waiters)) { in reuse_or_release_resources() 713 struct bio *bio = bio_list_peek(&pool->limiter.waiters); in process_release_callback() 859 pool->limiter.permitted_waiters = &pool->limiter.waiters; in make_data_vio_pool() 1030 ((bio_list_empty(&limiter->waiters) && in dump_limiter() 1203 vdo_waitq_transfer_all_waiters(&lock->waiters, in transfer_lock() 1204 &next_lock_holder->logical.waiters); in transfer_lock() [all …]
|
| A D | dedupe.c | 269 struct vdo_wait_queue waiters; member 347 vdo_waitq_init(&lock->waiters); in return_hash_lock_to_pool() 542 vdo_waitq_enqueue_waiter(&lock->waiters, &data_vio->waiter); in wait_on_hash_lock() 656 if (vdo_waitq_has_waiters(&lock->waiters)) { in finish_unlocking() 757 if (vdo_waitq_has_waiters(&lock->waiters)) { in finish_updating() 819 VDO_ASSERT_LOG_ONLY(!vdo_waitq_has_waiters(&lock->waiters), in finish_deduping() 1040 while (vdo_waitq_has_waiters(&lock->waiters)) in start_deduping() 1460 if (vdo_waitq_has_waiters(&lock->waiters)) { in finish_writing() 1583 if (vdo_waitq_has_waiters(&lock->waiters)) in start_writing() 1937 VDO_ASSERT_LOG_ONLY(!vdo_waitq_has_waiters(&lock->waiters), in vdo_release_hash_lock() [all …]
|
| /linux/drivers/gpu/drm/radeon/ |
| A D | radeon_semaphore.c | 50 (*semaphore)->waiters = 0; in radeon_semaphore_create() 66 --semaphore->waiters; in radeon_semaphore_emit_signal() 83 ++semaphore->waiters; in radeon_semaphore_emit_wait() 99 if ((*semaphore)->waiters > 0) { in radeon_semaphore_free()
|
| A D | radeon_trace.h | 176 __field(signed, waiters) 182 __entry->waiters = sem->waiters; 187 __entry->waiters, __entry->gpu_addr)
|
| /linux/Documentation/translations/zh_CN/userspace-api/ |
| A D | futex2.rst | 30 futex_waitv(struct futex_waitv *waiters, unsigned int nr_futexes, 43 ``waiters`` 传递。如果 ``waiters`` 或任何的 ``uaddr`` 地址无效,将返回 ``-EFAULT`` 。 52 对于每个 ``waiters`` 数组中的项,在 ``uaddr`` 的当前值会和 ``val`` 比较。如果
|
| /linux/kernel/locking/ |
| A D | percpu-rwsem.c | 23 init_waitqueue_head(&sem->waiters); in __percpu_init_rwsem() 146 spin_lock_irq(&sem->waiters.lock); in percpu_rwsem_wait() 154 __add_wait_queue_entry_tail(&sem->waiters, &wq_entry); in percpu_rwsem_wait() 156 spin_unlock_irq(&sem->waiters.lock); in percpu_rwsem_wait() 278 __wake_up(&sem->waiters, TASK_NORMAL, 1, sem); in percpu_up_write()
|
| A D | rtmutex_common.h | 112 return !RB_EMPTY_ROOT(&lock->waiters.rb_root); in rt_mutex_has_waiters() 123 struct rb_node *leftmost = rb_first_cached(&lock->waiters); in rt_mutex_waiter_is_top_waiter() 130 struct rb_node *leftmost = rb_first_cached(&lock->waiters); in rt_mutex_top_waiter() 182 lock->waiters = RB_ROOT_CACHED; in __rt_mutex_base_init()
|
| A D | ww_mutex.h | 96 struct rb_node *n = rb_first(&lock->rtmutex.waiters.rb_root); in __ww_waiter_first() 123 struct rb_node *n = rb_last(&lock->rtmutex.waiters.rb_root); in __ww_waiter_last()
|
| /linux/Documentation/locking/ |
| A D | rt-mutex.rst | 32 The enqueueing of the waiters into the rtmutex waiter tree is done in 35 priority waiters tree. This tree too queues in priority order. Whenever 42 without waiters. The optimized fastpath operations require cmpxchg 50 keep track of the "lock has waiters" state: 56 NULL 1 lock is free and has waiters and the top waiter 59 taskpointer 1 lock is held and has waiters [2]_ 71 waiters. This can happen when grabbing the lock in the slow path.
|
| A D | rt-mutex-design.rst | 107 place the task in the waiters rbtree of a mutex as well as the 113 waiters 199 Every mutex keeps track of all the waiters that are blocked on itself. The 209 a tree of all top waiters of the mutexes that are owned by the process. 210 Note that this tree only holds the top waiters and not all waiters that are 309 flag. It's set whenever there are waiters on a mutex. 434 the task on the waiters tree of the mutex, and if need be, the pi_waiters 456 waiters of the lock 459 owner of the lock, and if the lock still has waiters, the top_waiter 500 does, then it will take itself off the waiters tree and set itself back [all …]
|
| A D | futex-requeue-pi.rst | 7 left without an owner if it has waiters; doing so would break the PI 48 has waiters. Note that pthread_cond_wait() attempts to lock the 50 underlying rt_mutex with waiters, and no owner, breaking the 89 In order to ensure the rt_mutex has an owner if it has waiters, it
|
| /linux/drivers/md/persistent-data/ |
| A D | dm-block-manager.c | 47 struct list_head waiters; member 155 list_for_each_entry_safe(w, tmp, &lock->waiters, list) { in __wake_many() 181 INIT_LIST_HEAD(&lock->waiters); in bl_init() 190 list_empty(&lock->waiters); in __available_for_read() 216 list_add_tail(&w.list, &lock->waiters); in bl_down_read() 251 if (!list_empty(&lock->waiters)) in bl_up_read() 268 if (lock->count == 0 && list_empty(&lock->waiters)) { in bl_down_write() 283 list_add(&w.list, &lock->waiters); in bl_down_write() 297 if (!list_empty(&lock->waiters)) in bl_up_write()
|
| /linux/tools/testing/selftests/futex/include/ |
| A D | futex2test.h | 18 static inline int futex_waitv(volatile struct futex_waitv *waiters, unsigned long nr_waiters, in futex_waitv() argument 21 return syscall(__NR_futex_waitv, waiters, nr_waiters, flags, timo, clockid); in futex_waitv()
|
| /linux/include/linux/ |
| A D | percpu-rwsem.h | 16 wait_queue_head_t waiters; member 35 .waiters = __WAIT_QUEUE_HEAD_INITIALIZER(name.waiters), \
|
| A D | rtmutex.h | 25 struct rb_root_cached waiters; member 32 .waiters = RB_ROOT_CACHED, \
|
| /linux/drivers/gpu/host1x/ |
| A D | debug.c | 94 unsigned int waiters = 0; in show_syncpts() local 98 waiters++; in show_syncpts() 104 if (!show_all && !min && !max && !waiters) in show_syncpts() 109 i, m->syncpt[i].name, min, max, waiters); in show_syncpts()
|
| /linux/kernel/futex/ |
| A D | syscalls.c | 290 SYSCALL_DEFINE5(futex_waitv, struct futex_waitv __user *, waiters, in SYSCALL_DEFINE5() argument 302 if (!nr_futexes || nr_futexes > FUTEX_WAITV_MAX || !waiters) in SYSCALL_DEFINE5() 314 ret = futex_parse_waitv(futexv, waiters, nr_futexes, futex_wake_mark, in SYSCALL_DEFINE5() 415 struct futex_waitv __user *, waiters, in SYSCALL_DEFINE4() argument 427 if (!waiters) in SYSCALL_DEFINE4() 430 ret = futex_parse_waitv(futexes, waiters, 2, futex_wake_mark, NULL); in SYSCALL_DEFINE4()
|
| A D | futex.h | 116 atomic_t waiters; member 265 atomic_inc(&hb->waiters); in futex_hb_waiters_inc() 280 atomic_dec(&hb->waiters); in futex_hb_waiters_dec() 291 return atomic_read(&hb->waiters); in futex_hb_waiters_pending()
|
| /linux/Documentation/userspace-api/ |
| A D | futex2.rst | 25 futex_waitv(struct futex_waitv *waiters, unsigned int nr_futexes, 39 pointer for the first item of the array is passed as ``waiters``. An invalid 40 address for ``waiters`` or for any ``uaddr`` returns ``-EFAULT``. 52 For each entry in ``waiters`` array, the current value at ``uaddr`` is compared
|
| /linux/drivers/greybus/ |
| A D | greybus_trace.h | 102 __field(int, waiters) 112 __entry->waiters = atomic_read(&operation->waiters); 118 __entry->active, __entry->waiters, __entry->errno)
|
| A D | operation.c | 90 if (atomic_read(&operation->waiters)) in gb_operation_put_active() 554 atomic_set(&operation->waiters, 0); in gb_operation_create_common() 1082 atomic_inc(&operation->waiters); in gb_operation_cancel() 1085 atomic_dec(&operation->waiters); in gb_operation_cancel() 1109 atomic_inc(&operation->waiters); in gb_operation_cancel_incoming() 1112 atomic_dec(&operation->waiters); in gb_operation_cancel_incoming()
|
| /linux/drivers/gpu/drm/amd/amdkfd/ |
| A D | kfd_events.c | 920 static void free_waiters(uint32_t num_events, struct kfd_event_waiter *waiters, in free_waiters() argument 926 if (waiters[i].event) { in free_waiters() 927 spin_lock(&waiters[i].event->lock); in free_waiters() 928 remove_wait_queue(&waiters[i].event->wq, in free_waiters() 929 &waiters[i].wait); in free_waiters() 930 if (undo_auto_reset && waiters[i].activated && in free_waiters() 931 waiters[i].event && waiters[i].event->auto_reset) in free_waiters() 932 set_event(waiters[i].event); in free_waiters() 933 spin_unlock(&waiters[i].event->lock); in free_waiters() 936 kfree(waiters); in free_waiters()
|
| /linux/drivers/gpu/drm/imagination/ |
| A D | pvr_ccb.c | 487 list_for_each_entry_safe(fence, tmp_fence, &pvr_dev->kccb.waiters, node) { in pvr_kccb_wake_up_waiters() 509 WARN_ON(!list_empty(&pvr_dev->kccb.waiters)); in pvr_kccb_fini() 525 INIT_LIST_HEAD(&pvr_dev->kccb.waiters); in pvr_kccb_init() 603 list_add_tail(&fence->node, &pvr_dev->kccb.waiters); in pvr_kccb_reserve_slot()
|
| /linux/drivers/tee/optee/ |
| A D | call.c | 45 INIT_LIST_HEAD(&cq->waiters); in optee_cq_init() 82 list_add_tail(&w->list_node, &cq->waiters); in optee_cq_wait_init() 127 list_add_tail(&w->list_node, &cq->waiters); in optee_cq_wait_for_completion() 137 list_for_each_entry(w, &cq->waiters, list_node) { in optee_cq_complete_one() 144 list_for_each_entry(w, &cq->waiters, list_node) { in optee_cq_complete_one()
|