Home
last modified time | relevance | path

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

12

/linux/drivers/md/dm-vdo/
H A Dadmin-state.c206 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 Dwait-queue.c21 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 Dwait-queue.h51 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 Dadmin-state.h57 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 Ddump.c154 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 Dflush.h21 struct vdo_waiter waiter; member
H A Dvdo.c1213 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 Dlocking.c14 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 Dklist.c185 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 Dfutex_wait.c41 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 Dfutex_requeue_pi_signal_restart.c9 * 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 Dfutex_requeue.c36 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 Dfutex_waitv.c55 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 Dfutex_requeue_pi.c172 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 Depoll_wakeup_test.c23 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 Dfutex-requeue-pi.rst20 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 Drt-mutex-design.rst100 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 Drt-mutex.rst20 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 Dvchiq_arm.c385 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 Dvchiq_dev.c291 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 Ddm-block-manager.c55 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 Ddirect-io.c45 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 Dfops.c121 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 Di915_scheduler_types.h74 struct i915_sched_node *waiter; member
/linux/tools/testing/kunit/
H A Dkunit_kernel.py382 waiter = threading.Thread(target=_wait_proc)
383 waiter.start()
401 waiter.join()

12