| /OK3568_Linux_fs/kernel/drivers/gpu/host1x/ |
| H A D | intr.c | 36 static bool add_waiter_to_queue(struct host1x_waitlist *waiter, in add_waiter_to_queue() argument 40 u32 thresh = waiter->thresh; in add_waiter_to_queue() 44 list_add(&waiter->list, &pos->list); in add_waiter_to_queue() 48 list_add(&waiter->list, queue); in add_waiter_to_queue() 60 struct host1x_waitlist *waiter, *next, *prev; in remove_completed_waiters() local 62 list_for_each_entry_safe(waiter, next, head, list) { in remove_completed_waiters() 63 if ((s32)(waiter->thresh - sync) > 0) in remove_completed_waiters() 66 dest = completed + waiter->action; in remove_completed_waiters() 69 if (waiter->action == HOST1X_INTR_ACTION_SUBMIT_COMPLETE && in remove_completed_waiters() 73 if (prev->data == waiter->data) { in remove_completed_waiters() [all …]
|
| /OK3568_Linux_fs/kernel/kernel/locking/ |
| H A D | rtmutex.c | 272 rt_mutex_enqueue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_enqueue() argument 282 if (rt_mutex_waiter_less(waiter, entry)) { in rt_mutex_enqueue() 290 rb_link_node(&waiter->tree_entry, parent, link); in rt_mutex_enqueue() 291 rb_insert_color_cached(&waiter->tree_entry, &lock->waiters, leftmost); in rt_mutex_enqueue() 295 rt_mutex_dequeue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter) in rt_mutex_dequeue() argument 297 if (RB_EMPTY_NODE(&waiter->tree_entry)) in rt_mutex_dequeue() 300 rb_erase_cached(&waiter->tree_entry, &lock->waiters); in rt_mutex_dequeue() 301 RB_CLEAR_NODE(&waiter->tree_entry); in rt_mutex_dequeue() 305 rt_mutex_enqueue_pi(struct task_struct *task, struct rt_mutex_waiter *waiter) in rt_mutex_enqueue_pi() argument 315 if (rt_mutex_waiter_less(waiter, entry)) { in rt_mutex_enqueue_pi() [all …]
|
| H A D | mutex-debug.c | 30 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 …]
|
| H A D | mutex.c | 202 static inline bool __mutex_waiter_is_first(struct mutex *lock, struct mutex_waiter *waiter) in __mutex_waiter_is_first() argument 204 return list_first_entry(&lock->wait_list, struct mutex_waiter, list) == waiter; in __mutex_waiter_is_first() 212 __mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter, in __mutex_add_waiter() argument 216 debug_mutex_add_waiter(lock, waiter, current); in __mutex_add_waiter() 218 trace_android_vh_alter_mutex_list_add(lock, waiter, list, &already_on_list); in __mutex_add_waiter() 220 list_add_tail(&waiter->list, list); in __mutex_add_waiter() 221 if (__mutex_waiter_is_first(lock, waiter)) in __mutex_add_waiter() 226 __mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter) in __mutex_remove_waiter() argument 228 list_del(&waiter->list); in __mutex_remove_waiter() 232 debug_mutex_remove_waiter(lock, waiter, current); in __mutex_remove_waiter() [all …]
|
| H A D | rtmutex-debug.c | 87 void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter) in debug_rt_mutex_print_deadlock() argument 91 if (!waiter->deadlock_lock || !debug_locks) in debug_rt_mutex_print_deadlock() 95 task = pid_task(waiter->deadlock_task_pid, PIDTYPE_PID); in debug_rt_mutex_print_deadlock() 117 printk_lock(waiter->lock, 1); in debug_rt_mutex_print_deadlock() 121 printk_lock(waiter->deadlock_lock, 1); in debug_rt_mutex_print_deadlock() 158 void debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter) in debug_rt_mutex_init_waiter() argument 160 memset(waiter, 0x11, sizeof(*waiter)); in debug_rt_mutex_init_waiter() 161 waiter->deadlock_task_pid = NULL; in debug_rt_mutex_init_waiter() 164 void debug_rt_mutex_free_waiter(struct rt_mutex_waiter *waiter) in debug_rt_mutex_free_waiter() argument 166 put_pid(waiter->deadlock_task_pid); in debug_rt_mutex_free_waiter() [all …]
|
| H A D | semaphore.c | 207 struct semaphore_waiter waiter; in __down_common() local 209 list_add_tail(&waiter.list, &sem->wait_list); in __down_common() 210 waiter.task = current; in __down_common() 211 waiter.up = false; in __down_common() 222 if (waiter.up) in __down_common() 227 list_del(&waiter.list); in __down_common() 231 list_del(&waiter.list); in __down_common() 257 struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list, in __up() local 259 list_del(&waiter->list); in __up() 260 waiter->up = true; in __up() [all …]
|
| H A D | rwsem.c | 401 struct rwsem_waiter *waiter, *tmp; in rwsem_mark_wake() local 411 waiter = rwsem_first_waiter(sem); in rwsem_mark_wake() 413 if (waiter->type == RWSEM_WAITING_FOR_WRITE) { in rwsem_mark_wake() 422 wake_q_add(wake_q, waiter->task); in rwsem_mark_wake() 452 time_after(jiffies, waiter->timeout)) { in rwsem_mark_wake() 466 owner = waiter->task; in rwsem_mark_wake() 467 if (waiter->last_rowner & RWSEM_RD_NONSPINNABLE) { in rwsem_mark_wake() 498 list_for_each_entry_safe(waiter, tmp, &sem->wait_list, list) { in rwsem_mark_wake() 499 if (waiter->type == RWSEM_WAITING_FOR_WRITE) in rwsem_mark_wake() 503 list_move_tail(&waiter->list, &wlist); in rwsem_mark_wake() [all …]
|
| H A D | rtmutex-debug.h | 13 extern void debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter); 14 extern void debug_rt_mutex_free_waiter(struct rt_mutex_waiter *waiter); 22 struct rt_mutex_waiter *waiter, 24 extern void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter); 28 static inline bool debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *waiter, in debug_rt_mutex_detect_deadlock() argument 31 return (waiter != NULL); in debug_rt_mutex_detect_deadlock()
|
| H A D | mutex.h | 13 #define debug_mutex_wake_waiter(lock, waiter) do { } while (0) argument 14 #define debug_mutex_free_waiter(waiter) do { } while (0) argument 15 #define debug_mutex_add_waiter(lock, waiter, ti) do { } while (0) argument 16 #define debug_mutex_remove_waiter(lock, waiter, ti) do { } while (0) argument 21 debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_lock_common() argument
|
| H A D | mutex-debug.h | 18 struct mutex_waiter *waiter); 20 struct mutex_waiter *waiter); 21 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter); 23 struct mutex_waiter *waiter, 25 extern void debug_mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
|
| H A D | rtmutex_common.h | 137 extern void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter); 139 struct rt_mutex_waiter *waiter, 142 struct rt_mutex_waiter *waiter, 146 struct rt_mutex_waiter *waiter); 148 struct rt_mutex_waiter *waiter);
|
| /OK3568_Linux_fs/kernel/drivers/gpu/arm/mali400/mali/common/ |
| H A D | mali_timeline.c | 39 struct mali_timeline_waiter *waiter); 436 struct mali_timeline_waiter *waiter = timeline->waiter_tail; in mali_timeline_update_oldest_point() local 439 waiter_time_relative = waiter->point - timeline->point_oldest; in mali_timeline_update_oldest_point() 447 if (NULL != waiter->timeline_next) { in mali_timeline_update_oldest_point() 448 waiter->timeline_next->timeline_prev = NULL; in mali_timeline_update_oldest_point() 453 timeline->waiter_tail = waiter->timeline_next; in mali_timeline_update_oldest_point() 457 schedule_mask |= mali_timeline_system_release_waiter(timeline->system, waiter); in mali_timeline_update_oldest_point() 466 struct mali_timeline_waiter *waiter; in mali_timeline_release_with_depended_point() local 481 waiter = timeline->waiter_tail; in mali_timeline_release_with_depended_point() 482 while (NULL != waiter) { in mali_timeline_release_with_depended_point() [all …]
|
| /OK3568_Linux_fs/kernel/drivers/tty/ |
| H A D | tty_ldsem.c | 76 struct ldsem_waiter *waiter, *next; in __ldsem_wake_readers() local 94 list_for_each_entry_safe(waiter, next, &sem->read_wait, list) { in __ldsem_wake_readers() 95 tsk = waiter->task; in __ldsem_wake_readers() 96 smp_store_release(&waiter->task, NULL); in __ldsem_wake_readers() 121 struct ldsem_waiter *waiter; in __ldsem_wake_writer() local 123 waiter = list_entry(sem->write_wait.next, struct ldsem_waiter, list); in __ldsem_wake_writer() 124 wake_up_process(waiter->task); in __ldsem_wake_writer() 158 struct ldsem_waiter waiter; in down_read_failed() local 180 list_add_tail(&waiter.list, &sem->read_wait); in down_read_failed() 183 waiter.task = current; in down_read_failed() [all …]
|
| /OK3568_Linux_fs/kernel/drivers/gpu/arm/mali400/mali/linux/ |
| H A D | mali_internal_sync.c | 77 struct mali_internal_sync_fence_waiter *waiter; in mali_internal_fence_check_cb_func() 87 waiter = container_of(cb, struct mali_internal_sync_fence_waiter, cb); in mali_internal_fence_check_cb_func() 88 sync_fence = (struct mali_internal_sync_fence *)waiter->work.private; in mali_internal_fence_check_cb_func() 514 void mali_internal_sync_fence_waiter_init(struct mali_internal_sync_fence_waiter *waiter, in mali_internal_sync_fence_waiter_init() argument 517 MALI_DEBUG_ASSERT_POINTER(waiter); in mali_internal_sync_fence_waiter_init() 521 INIT_LIST_HEAD(&waiter->work.entry); in mali_internal_sync_fence_waiter_init() 523 INIT_LIST_HEAD(&waiter->work.task_list); in mali_internal_sync_fence_waiter_init() 525 waiter->callback = callback; in mali_internal_sync_fence_waiter_init() 529 struct mali_internal_sync_fence_waiter *waiter) in mali_internal_sync_fence_wait_async() argument 535 MALI_DEBUG_ASSERT_POINTER(waiter); in mali_internal_sync_fence_wait_async() [all …]
|
| H A D | mali_internal_sync.h | 117 struct mali_internal_sync_fence_waiter *waiter); 181 void mali_internal_sync_fence_waiter_init(struct mali_internal_sync_fence_waiter *waiter, 185 struct mali_internal_sync_fence_waiter *waiter); 188 struct mali_internal_sync_fence_waiter *waiter);
|
| /OK3568_Linux_fs/kernel/drivers/video/rockchip/rve/ |
| H A D | rve_fence.c | 109 struct rve_fence_waiter *waiter; in rve_add_dma_fence_callback() local 112 waiter = kmalloc(sizeof(*waiter), GFP_KERNEL); in rve_add_dma_fence_callback() 113 if (!waiter) { in rve_add_dma_fence_callback() 118 waiter->job = job; in rve_add_dma_fence_callback() 120 ret = dma_fence_add_callback(in_fence, &waiter->waiter, func); in rve_add_dma_fence_callback() 134 kfree(waiter); in rve_add_dma_fence_callback()
|
| /OK3568_Linux_fs/kernel/drivers/video/rockchip/rga3/ |
| H A D | rga_fence.c | 122 struct rga_fence_waiter *waiter = NULL; in rga_dma_fence_add_callback() local 124 waiter = kmalloc(sizeof(*waiter), GFP_KERNEL); in rga_dma_fence_add_callback() 125 if (!waiter) { in rga_dma_fence_add_callback() 130 waiter->private = private; in rga_dma_fence_add_callback() 132 ret = dma_fence_add_callback(fence, &waiter->waiter, func); in rga_dma_fence_add_callback() 144 kfree(waiter); in rga_dma_fence_add_callback()
|
| /OK3568_Linux_fs/kernel/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 …]
|
| /OK3568_Linux_fs/kernel/tools/testing/selftests/filesystems/epoll/ |
| H A D | epoll_wakeup_test.c | 21 pthread_t waiter; member 32 pthread_kill(ctx->waiter, SIGUSR1); in kill_timeout() 474 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST() 480 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST() 517 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST() 523 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST() 564 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry2a, &ctx), 0); in TEST() 570 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST() 613 ASSERT_EQ(pthread_create(&ctx.waiter, NULL, waiter_entry1a, &ctx), 0); in TEST() 619 ASSERT_EQ(pthread_join(ctx.waiter, NULL), 0); in TEST() [all …]
|
| /OK3568_Linux_fs/kernel/drivers/gpu/drm/amd/amdkfd/ |
| H A D | kfd_events.c | 240 struct kfd_event_waiter *waiter; in destroy_event() local 243 list_for_each_entry(waiter, &ev->wq.head, wait.entry) in destroy_event() 244 waiter->event = NULL; in destroy_event() 390 struct kfd_event_waiter *waiter; in set_event() local 399 list_for_each_entry(waiter, &ev->wq.head, wait.entry) in set_event() 400 waiter->activated = true; in set_event() 546 struct kfd_event_waiter *waiter, in init_event_waiter_get_status() argument 554 waiter->event = ev; in init_event_waiter_get_status() 555 waiter->activated = ev->signaled; in init_event_waiter_get_status() 561 static void init_event_waiter_add_to_waitlist(struct kfd_event_waiter *waiter) in init_event_waiter_add_to_waitlist() argument [all …]
|
| /OK3568_Linux_fs/kernel/drivers/staging/vc04_services/interface/vchiq_arm/ |
| H A D | vchiq_arm.c | 223 struct bulk_waiter_node *waiter, *next; in vchiq_shutdown() local 225 list_for_each_entry_safe(waiter, next, in vchiq_shutdown() 227 list_del(&waiter->list); in vchiq_shutdown() 230 waiter, waiter->pid); in vchiq_shutdown() 231 kfree(waiter); in vchiq_shutdown() 434 struct bulk_waiter_node *waiter = NULL; in vchiq_blocking_bulk_transfer() local 446 list_for_each_entry(waiter, &instance->bulk_waiter_list, list) { in vchiq_blocking_bulk_transfer() 447 if (waiter->pid == current->pid) { in vchiq_blocking_bulk_transfer() 448 list_del(&waiter->list); in vchiq_blocking_bulk_transfer() 456 struct vchiq_bulk *bulk = waiter->bulk_waiter.bulk; in vchiq_blocking_bulk_transfer() [all …]
|
| /OK3568_Linux_fs/kernel/include/trace/hooks/ |
| H A D | rwsem.h | 30 TP_PROTO(struct rwsem_waiter *waiter, 33 TP_ARGS(waiter, sem, already_on_list)); 50 TP_PROTO(struct rw_semaphore *sem, struct rwsem_waiter *waiter), 51 TP_ARGS(sem, waiter));
|
| /OK3568_Linux_fs/kernel/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.
|
| /OK3568_Linux_fs/kernel/tools/testing/selftests/futex/functional/ |
| H A D | futex_requeue_pi_signal_restart.c | 122 pthread_t waiter; in main() local 158 res = create_rt_thread(&waiter, waiterfn, NULL, SCHED_FIFO, 1); in main() 177 pthread_kill(waiter, SIGUSR1); in main() 208 pthread_kill(waiter, SIGUSR1); in main() 210 pthread_join(waiter, NULL); in main()
|
| /OK3568_Linux_fs/kernel/fs/ |
| H A D | locks.c | 705 static void locks_insert_global_blocked(struct file_lock *waiter) in locks_insert_global_blocked() argument 709 hash_add(blocked_hash, &waiter->fl_link, posix_owner_key(waiter)); in locks_insert_global_blocked() 712 static void locks_delete_global_blocked(struct file_lock *waiter) in locks_delete_global_blocked() argument 716 hash_del(&waiter->fl_link); in locks_delete_global_blocked() 724 static void __locks_delete_block(struct file_lock *waiter) in __locks_delete_block() argument 726 locks_delete_global_blocked(waiter); in __locks_delete_block() 727 list_del_init(&waiter->fl_blocked_member); in __locks_delete_block() 733 struct file_lock *waiter; in __locks_wake_up_blocks() local 735 waiter = list_first_entry(&blocker->fl_blocked_requests, in __locks_wake_up_blocks() 737 __locks_delete_block(waiter); in __locks_wake_up_blocks() [all …]
|