| /linux/drivers/md/dm-vdo/ |
| H 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()
|
| H A D | data-vio.c | 142 struct bio_list waiters; member 252 vdo_waitq_init(&lock->waiters); in initialize_lbn_lock() 472 vdo_waitq_enqueue_waiter(&lock_holder->logical.waiters, &data_vio->waiter); in attempt_logical_block_lock() 592 struct bio *bio = bio_list_pop(&limiter->waiters); in assign_discard_permit() 602 bio_list_merge_init(&limiter->waiters, &limiter->new_waiters); in get_waiters() 621 struct bio_list *waiters = &limiter->waiters; in update_limiter() local 629 for (; (limiter->release_count > 0) && !bio_list_empty(waiters); limiter->release_count--) in update_limiter() 638 for (; (available > 0) && !bio_list_empty(waiters); available--) in update_limiter() 670 if (bio_list_empty(&pool->discard_limiter.waiters)) { in reuse_or_release_resources() 708 struct bio *bio = bio_list_peek(&pool->limiter.waiters); in process_release_callback() [all …]
|
| H A D | dedupe.c | 269 struct vdo_wait_queue waiters; member 347 vdo_waitq_init(&lock->waiters); in return_hash_lock_to_pool() 426 return vdo_waiter_as_data_vio(vdo_waitq_dequeue_waiter(&lock->waiters)); in dequeue_lock_waiter() 542 vdo_waitq_enqueue_waiter(&lock->waiters, &data_vio->waiter); in wait_on_hash_lock() 608 vdo_waitq_notify_all_waiters(&lock->waiters, abort_waiter, NULL); in vdo_clean_failed_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() 965 vdo_waitq_notify_all_waiters(&old_lock->waiters, enter_forked_lock, new_lock); in fork_hash_lock() 1042 while (vdo_waitq_has_waiters(&lock->waiters)) in start_deduping() [all …]
|
| H A D | dump.c | 272 dump_vio_waiters(&data_vio->logical.waiters, "lbn"); in dump_data_vio()
|
| H A D | slab-depot.h | 287 struct vdo_wait_queue waiters; member
|
| /linux/drivers/gpu/drm/radeon/ |
| H 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()
|
| H 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/ |
| H 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/Documentation/locking/ |
| H 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.
|
| H 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 200 mutex has a rbtree to store these waiters by priority. This tree is protected 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. 358 the pi_waiters of a task holds an order by priority of all the top waiters 410 in the pi_waiters and waiters trees that the task is blocked on. This function 434 the task on the waiters tree of the mutex, and if need be, the pi_waiters [all …]
|
| H 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/ |
| H 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/kernel/futex/ |
| H A D | syscalls.c | 318 SYSCALL_DEFINE5(futex_waitv, struct futex_waitv __user *, waiters, in SYSCALL_DEFINE5() argument 330 if (!nr_futexes || nr_futexes > FUTEX_WAITV_MAX || !waiters) in SYSCALL_DEFINE5() 342 ret = futex_parse_waitv(futexv, waiters, nr_futexes, futex_wake_mark, in SYSCALL_DEFINE5() 443 struct futex_waitv __user *, waiters, in SYSCALL_DEFINE4() argument 455 if (!waiters) in SYSCALL_DEFINE4() 458 ret = futex_parse_waitv(futexes, waiters, 2, futex_wake_mark, NULL); in SYSCALL_DEFINE4()
|
| /linux/tools/testing/selftests/futex/include/ |
| H A D | futex2test.h | 66 static inline int futex_waitv(volatile struct futex_waitv *waiters, unsigned long nr_waiters, in futex_waitv() argument 74 return syscall(__NR_futex_waitv, waiters, nr_waiters, flags, &ts, clockid); in futex_waitv()
|
| /linux/Documentation/userspace-api/ |
| H 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/ |
| H A D | greybus_trace.h | 102 __field(int, waiters) 112 __entry->waiters = atomic_read(&operation->waiters); 118 __entry->active, __entry->waiters, __entry->errno)
|
| H A D | operation.c | 90 if (atomic_read(&operation->waiters)) in gb_operation_put_active() 555 atomic_set(&operation->waiters, 0); in gb_operation_create_common() 1083 atomic_inc(&operation->waiters); in gb_operation_cancel() 1086 atomic_dec(&operation->waiters); in gb_operation_cancel() 1110 atomic_inc(&operation->waiters); in gb_operation_cancel_incoming() 1113 atomic_dec(&operation->waiters); in gb_operation_cancel_incoming()
|
| /linux/drivers/tee/optee/ |
| H 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()
|
| /linux/Documentation/scheduler/ |
| H A D | completion.rst | 247 achieved calls complete() to signal exactly one of the waiters that it can 252 ... or calls complete_all() to signal all current and future waiters:: 262 of waiters to continue - each call to complete() will simply increment the 287 completions that were not yet consumed by waiters (implying that there are 288 waiters) and true otherwise::
|
| /linux/kernel/locking/ |
| H 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/include/linux/greybus/ |
| H A D | operation.h | 108 atomic_t waiters; member
|
| /linux/tools/testing/selftests/filesystems/epoll/ |
| H A D | epoll_wakeup_test.c | 3162 int waiters; member 3192 __atomic_fetch_add(&ctx->waiters, 1, __ATOMIC_ACQUIRE); in epoll60_wait_thread() 3206 __atomic_fetch_sub(&ctx->waiters, 1, __ATOMIC_RELEASE); in epoll60_wait_thread() 3226 return __atomic_load_n(&ctx->waiters, __ATOMIC_ACQUIRE); in count_waiters() 3232 pthread_t waiters[ARRAY_SIZE(ctx.evfd)]; in TEST() local 3252 for (i = 0; i < ARRAY_SIZE(waiters); i++) in TEST() 3253 ASSERT_EQ(pthread_create(&waiters[i], NULL, in TEST() 3290 for (i = 0; i < ARRAY_SIZE(waiters); i++) in TEST() 3291 ret = pthread_kill(waiters[i], SIGUSR1); in TEST() 3292 for (i = 0; i < ARRAY_SIZE(waiters); i++) in TEST() [all …]
|
| /linux/Documentation/translations/zh_CN/scheduler/ |
| H A D | completion.rst | 223 ... or calls complete_all() to signal all current and future waiters::
|
| /linux/include/trace/events/ |
| H A D | mmflags.h | 144 DEF_PAGEFLAG_NAME(waiters), \
|
| /linux/drivers/gpu/drm/imagination/ |
| H A D | pvr_device.h | 299 struct list_head waiters; member
|