| /linux/drivers/md/dm-vdo/ |
| H A D | admin-state.c | 206 if (state->waiter != NULL) in vdo_finish_operation() 207 vdo_set_completion_result(state->waiter, result); in vdo_finish_operation() 211 if (state->waiter != NULL) in vdo_finish_operation() 212 vdo_launch_completion(vdo_forget(state->waiter)); in vdo_finish_operation() 229 struct vdo_completion *waiter, in begin_operation() argument 240 } else if (state->waiter != NULL) { in begin_operation() 245 state->waiter = waiter; in begin_operation() 259 if (waiter != NULL) in begin_operation() 260 vdo_continue_completion(waiter, result); in begin_operation() 276 struct vdo_completion *waiter, in start_operation() argument [all …]
|
| H A D | wait-queue.c | 21 void vdo_waitq_enqueue_waiter(struct vdo_wait_queue *waitq, struct vdo_waiter *waiter) in vdo_waitq_enqueue_waiter() argument 23 BUG_ON(waiter->next_waiter != NULL); in vdo_waitq_enqueue_waiter() 30 waiter->next_waiter = waiter; in vdo_waitq_enqueue_waiter() 33 waiter->next_waiter = waitq->last_waiter->next_waiter; in vdo_waitq_enqueue_waiter() 34 waitq->last_waiter->next_waiter = waiter; in vdo_waitq_enqueue_waiter() 38 waitq->last_waiter = waiter; in vdo_waitq_enqueue_waiter() 138 struct vdo_waiter *waiter = vdo_waitq_dequeue_waiter(&iteration_waitq); in vdo_waitq_dequeue_matching_waiters() local 140 vdo_waitq_enqueue_waiter((waiter_match(waiter, match_context) ? in vdo_waitq_dequeue_matching_waiters() 141 matched_waitq : waitq), waiter); in vdo_waitq_dequeue_matching_waiters() 195 struct vdo_waiter *waiter = vdo_waitq_dequeue_waiter(waitq); in vdo_waitq_notify_next_waiter() local [all …]
|
| H A D | wait-queue.h | 51 typedef void (*vdo_waiter_callback_fn)(struct vdo_waiter *waiter, void *context); 58 typedef bool (*vdo_waiter_match_fn)(struct vdo_waiter *waiter, void *context); 78 static inline bool vdo_waiter_is_waiting(struct vdo_waiter *waiter) in vdo_waiter_is_waiting() argument 80 return (waiter->next_waiter != NULL); in vdo_waiter_is_waiting() 107 struct vdo_waiter *waiter);
|
| H A D | admin-state.h | 57 struct vdo_completion *waiter; member 140 struct vdo_completion *waiter); 144 struct vdo_completion *waiter, vdo_admin_initiator_fn initiator); 152 struct vdo_completion *waiter, vdo_admin_initiator_fn initiator); 162 struct vdo_completion *waiter, vdo_admin_initiator_fn initiator); 173 struct vdo_completion *waiter,
|
| H A D | dump.c | 154 struct vdo_waiter *waiter, *first = vdo_waitq_get_first_waiter(waitq); in dump_vio_waiters() local 166 for (waiter = first->next_waiter; waiter != first; waiter = waiter->next_waiter) { in dump_vio_waiters() 167 data_vio = vdo_waiter_as_data_vio(waiter); in dump_vio_waiters() 195 if (data_vio->waiter.next_waiter != NULL) in encode_vio_dump_flags()
|
| H A D | flush.h | 21 struct vdo_waiter waiter; member
|
| H A D | vdo.c | 1213 if (notifier->waiter != NULL) { in vdo_wait_until_not_entering_read_only_mode() 1220 notifier->waiter = parent; in vdo_wait_until_not_entering_read_only_mode() 1225 if (notifier->waiter == NULL) { in vdo_wait_until_not_entering_read_only_mode() 1261 if (notifier->waiter != NULL) in finish_entering_read_only_mode() 1262 vdo_continue_completion(vdo_forget(notifier->waiter), in finish_entering_read_only_mode() 1341 if (notifier->waiter != NULL) { in vdo_allow_read_only_mode_entry() 1352 notifier->waiter = parent; in vdo_allow_read_only_mode_entry() 1357 if (notifier->waiter == NULL) { in vdo_allow_read_only_mode_entry()
|
| /linux/fs/netfs/ |
| H A D | locking.c | 14 struct task_struct *waiter; /* Waiter task; cleared when lock granted */ member 217 struct netfs_wb_waiter waiter = {}; in netfs_wb_begin_wait() local 225 waiter.waiter = tsk; in netfs_wb_begin_wait() 226 list_add_tail(&waiter.link, &ictx->wb_queue); in netfs_wb_begin_wait() 236 if (smp_load_acquire(&waiter.waiter) == NULL) in netfs_wb_begin_wait() 279 struct netfs_wb_waiter *waiter; in netfs_wb_end() local 286 waiter = list_first_entry_or_null(&ictx->wb_queue, struct netfs_wb_waiter, link); in netfs_wb_end() 287 if (waiter) { in netfs_wb_end() 288 list_del(&waiter->link); in netfs_wb_end() 289 tsk = waiter->waiter; in netfs_wb_end() [all …]
|
| /linux/lib/ |
| H A D | klist.c | 185 struct klist_waiter *waiter, *tmp; in klist_release() local 191 list_for_each_entry_safe(waiter, tmp, &klist_remove_waiters, list) { in klist_release() 192 if (waiter->node != n) in klist_release() 195 list_del(&waiter->list); in klist_release() 196 waiter->woken = 1; in klist_release() 198 wake_up_process(waiter->process); in klist_release() 240 struct klist_waiter waiter; in klist_remove() local 242 waiter.node = n; in klist_remove() 243 waiter.process = current; in klist_remove() 244 waiter.woken = 0; in klist_remove() [all …]
|
| /linux/tools/testing/selftests/futex/functional/ |
| H A D | futex_wait.c | 41 TH_LOG("waiter failed errno %d: %s", errno, strerror(errno)); in TEST() 52 pthread_t waiter; in TEST() 61 ASSERT_EQ(pthread_create(&waiter, NULL, waiterfn, args), 0) in TEST() 71 pthread_join(waiter, NULL); in TEST() 78 pthread_t waiter; in TEST() 106 ASSERT_EQ(pthread_create(&waiter, NULL, waiterfn, args), 0) in TEST() local 118 pthread_join(waiter, NULL); in TEST() 126 pthread_t waiter; in TEST() 161 ASSERT_EQ(pthread_create(&waiter, NULL, waiterfn, args), 0) 173 pthread_join(waiter, NUL 43 pthread_t waiter; TEST() local 68 pthread_t waiter; TEST() local [all...] |
| H A D | futex_requeue_pi_signal_restart.c | 9 * kernel. The latter should return EWOULDBLOCK to the waiter. 103 pthread_t waiter; in TEST() 113 TH_LOG("Creating waiter"); in TEST() 114 create_rt_thread(_metadata, &waiter, waiterfn, _metadata, SCHED_FIFO, 1); in TEST() 123 * signal the waiter before requeue, waiter should automatically in TEST() 125 * waiter to block on f1 again. in TEST() 127 TH_LOG("Issuing SIGUSR1 to waiter"); in TEST() 128 pthread_kill(waiter, SIGUSR1); in TEST() 131 TH_LOG("Requeueing waiter vi in TEST() 102 pthread_t waiter; TEST() local [all...] |
| H A D | futex_requeue.c | 36 TH_LOG("waiter failed errno %d: %s", errno, strerror(errno)); in TEST() local 45 struct futex_thread waiter; in TEST() 52 * Requeue a waiter from f1 to f2, and wake f2. in TEST() 54 ASSERT_EQ(futex_thread_create(&waiter, waiterfn, &wargs), 0) in TEST() 57 ASSERT_EQ(futex_wait_for_thread(&waiter, _metadata), 0) in TEST() 63 EXPECT_EQ(futex_thread_destroy(&waiter), 0); in TEST() 69 struct futex_thread waiter[10]; in TEST() 80 ASSERT_EQ(futex_thread_create(&waiter[i], waiterfn, &wargs), 0) in TEST() 81 TH_LOG("pthread_create failed for waiter %d", i); in TEST() 85 ASSERT_EQ(futex_wait_for_thread(&waiter[ in TEST() 71 pthread_t waiter[10]; TEST() local [all...] |
| H A D | futex_waitv.c | 55 pthread_t waiter; in TEST() 69 ASSERT_EQ(pthread_create(&waiter, NULL, waiterfn, _metadata), 0) in TEST() 81 pthread_t waiter; in TEST() local 107 ASSERT_EQ(pthread_create(&waiter, NULL, waiterfn, _metadata), 0) in TEST() 128 /* Testing a waiter without FUTEX_32 flag */ in TEST() 154 /* Testing a waiter with an unaligned address */ in TEST() 53 pthread_t waiter; TEST() local
|
| H A D | futex_requeue_pi.c | 172 TH_LOG("waiter %ld woke with %d %s", args->id, args->ret, in waiterfn() 330 pthread_t waiter[THREAD_MAX], waker, blocker; in TEST_F() 371 create_rt_thread(_metadata, &waiter[i], waiterfn, (void *)&args[i], in TEST_F() 382 pthread_join(waiter[i], *waiter_ret ? NULL : (void **)&waiter_ret); in TEST_F() 323 pthread_t waiter[THREAD_MAX], waker, blocker; TEST_F() local
|
| /linux/tools/testing/selftests/filesystems/epoll/ |
| H A D | epoll_wakeup_test.c | 23 pthread_t waiter; member 47 pthread_kill(ctx->waiter, SIGUSR1); in kill_timeout() 489 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST() 495 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST() 532 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST() 538 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST() 579 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry2a, &ctx), 0); in TEST() 585 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST() 628 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST() 634 ASSERT_EQ(pthread_join(ctx.waiter, NUL in TEST() 3461 pthread_t waiter[2]; TEST() local [all...] |
| /linux/Documentation/locking/ |
| H A D | futex-requeue-pi.rst | 20 implementation would wake the highest-priority waiter, and leave the 92 The requeue code cannot simply wake the waiter and leave it to 94 requeue call returning to user space and the waiter waking and 100 of the waiter and to enqueue the waiter on a contended rt_mutex. 104 FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait() 116 PI futex on behalf of the top waiter. If it can, this waiter is 120 task as a waiter on the underlying rt_mutex. It is possible that 122 waiter is woken to finish the acquisition of the lock.
|
| H A D | rt-mutex-design.rst | 100 waiter 101 - A waiter is a struct that is stored on the stack of a blocked 102 process. Since the scope of the waiter is within the code for 104 the waiter on the process's stack (local variable). This 110 waiter is sometimes used in reference to the task that is waiting 111 on a mutex. This is the same as waiter->task. 116 top waiter 119 top pi waiter 360 pi waiter to its own normal/deadline priority and take the higher one. 377 by the task, so we only need to compare the priority of that top pi waiter [all …]
|
| H A D | rt-mutex.rst | 20 priority waiter until the rt-mutex is released. If the temporarily 32 The enqueueing of the waiters into the rtmutex waiter tree is done in 34 rtmutex, only the top priority waiter is enqueued into the owner's 36 the top priority waiter of a task changes (for example it timed out or 56 NULL 1 lock is free and has waiters and the top waiter
|
| /linux/drivers/platform/raspberrypi/vchiq-interface/ |
| H A D | vchiq_arm.c | 385 struct bulk_waiter_node *waiter, *next; in free_bulk_waiter() local 387 list_for_each_entry_safe(waiter, next, in free_bulk_waiter() 389 list_del(&waiter->list); in free_bulk_waiter() 392 waiter, waiter->pid); in free_bulk_waiter() 393 kfree(waiter); in free_bulk_waiter() 584 struct bulk_waiter_node *waiter = NULL, *iter; in vchiq_blocking_bulk_transfer() local 597 waiter = iter; in vchiq_blocking_bulk_transfer() 603 if (waiter) { in vchiq_blocking_bulk_transfer() 604 struct vchiq_bulk *bulk = waiter->bulk_waiter.bulk; in vchiq_blocking_bulk_transfer() 616 bulk->waiter = NULL; in vchiq_blocking_bulk_transfer() [all …]
|
| H A D | vchiq_dev.c | 291 struct bulk_waiter_node *waiter = NULL, *iter; in vchiq_irq_queue_bulk_tx_rx() local 301 waiter = kzalloc_obj(*waiter); in vchiq_irq_queue_bulk_tx_rx() 302 if (!waiter) { in vchiq_irq_queue_bulk_tx_rx() 311 bulk_params.waiter = &waiter->bulk_waiter; in vchiq_irq_queue_bulk_tx_rx() 321 waiter = iter; in vchiq_irq_queue_bulk_tx_rx() 326 if (!waiter) { in vchiq_irq_queue_bulk_tx_rx() 333 waiter, current->pid); in vchiq_irq_queue_bulk_tx_rx() 336 &waiter->bulk_waiter); in vchiq_irq_queue_bulk_tx_rx() 348 if (!waiter) { in vchiq_irq_queue_bulk_tx_rx() 354 !waiter->bulk_waiter.bulk) { in vchiq_irq_queue_bulk_tx_rx() [all …]
|
| /linux/drivers/md/persistent-data/ |
| H A D | dm-block-manager.c | 55 struct waiter { struct 122 static void __wait(struct waiter *w) in __wait() 136 static void __wake_waiter(struct waiter *w) in __wake_waiter() 152 struct waiter *w, *tmp; in __wake_many() 196 struct waiter w; in bl_down_read() 259 struct waiter w; in bl_down_write()
|
| /linux/fs/iomap/ |
| H A D | direct-io.c | 45 struct task_struct *waiter; member 193 struct task_struct *waiter = dio->submit.waiter; in iomap_dio_done() local 195 WRITE_ONCE(dio->submit.waiter, NULL); in iomap_dio_done() 196 blk_wake_io_task(waiter); in iomap_dio_done() 727 dio->submit.waiter = current; in __iomap_dio_rw() 885 if (!READ_ONCE(dio->submit.waiter)) in __iomap_dio_rw()
|
| /linux/block/ |
| H A D | fops.c | 121 struct task_struct *waiter; member 160 struct task_struct *waiter = dio->waiter; in blkdev_bio_end_io() local 162 WRITE_ONCE(dio->waiter, NULL); in blkdev_bio_end_io() 163 blk_wake_io_task(waiter); in blkdev_bio_end_io() 199 dio->waiter = current; in __blkdev_direct_IO() 273 if (!READ_ONCE(dio->waiter)) in __blkdev_direct_IO()
|
| /linux/drivers/gpu/drm/i915/ |
| H A D | i915_scheduler_types.h | 74 struct i915_sched_node *waiter; member
|
| /linux/tools/testing/kunit/ |
| H A D | kunit_kernel.py | 382 waiter = threading.Thread(target=_wait_proc) 383 waiter.start() 401 waiter.join()
|