/kernel/ |
D | mutex-debug.c | 34 void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_lock_common() argument 36 memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter)); in debug_mutex_lock_common() 37 waiter->magic = waiter; in debug_mutex_lock_common() 38 INIT_LIST_HEAD(&waiter->list); in debug_mutex_lock_common() 41 void debug_mutex_wake_waiter(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_wake_waiter() argument 45 DEBUG_LOCKS_WARN_ON(waiter->magic != waiter); in debug_mutex_wake_waiter() 46 DEBUG_LOCKS_WARN_ON(list_empty(&waiter->list)); in debug_mutex_wake_waiter() 49 void debug_mutex_free_waiter(struct mutex_waiter *waiter) in debug_mutex_free_waiter() argument 51 DEBUG_LOCKS_WARN_ON(!list_empty(&waiter->list)); in debug_mutex_free_waiter() 52 memset(waiter, MUTEX_DEBUG_FREE, sizeof(*waiter)); in debug_mutex_free_waiter() [all …]
|
D | rtmutex.c | 163 struct rt_mutex_waiter *waiter, *top_waiter = orig_waiter; in rt_mutex_adjust_prio_chain() local 200 waiter = task->pi_blocked_on; in rt_mutex_adjust_prio_chain() 206 if (!waiter || !waiter->task) in rt_mutex_adjust_prio_chain() 230 if (!detect_deadlock && waiter->list_entry.prio == task->prio) in rt_mutex_adjust_prio_chain() 233 lock = waiter->lock; in rt_mutex_adjust_prio_chain() 251 plist_del(&waiter->list_entry, &lock->wait_list); in rt_mutex_adjust_prio_chain() 252 waiter->list_entry.prio = task->prio; in rt_mutex_adjust_prio_chain() 253 plist_add(&waiter->list_entry, &lock->wait_list); in rt_mutex_adjust_prio_chain() 264 if (waiter == rt_mutex_top_waiter(lock)) { in rt_mutex_adjust_prio_chain() 267 waiter->pi_list_entry.prio = waiter->list_entry.prio; in rt_mutex_adjust_prio_chain() [all …]
|
D | rtmutex-debug.c | 138 void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter) in debug_rt_mutex_print_deadlock() argument 142 if (!waiter->deadlock_lock || !rt_trace_on) in debug_rt_mutex_print_deadlock() 146 task = pid_task(waiter->deadlock_task_pid, PIDTYPE_PID); in debug_rt_mutex_print_deadlock() 163 printk_lock(waiter->lock, 1); in debug_rt_mutex_print_deadlock() 167 printk_lock(waiter->deadlock_lock, 1); in debug_rt_mutex_print_deadlock() 205 void debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter) in debug_rt_mutex_init_waiter() argument 207 memset(waiter, 0x11, sizeof(*waiter)); in debug_rt_mutex_init_waiter() 208 plist_node_init(&waiter->list_entry, MAX_PRIO); in debug_rt_mutex_init_waiter() 209 plist_node_init(&waiter->pi_list_entry, MAX_PRIO); in debug_rt_mutex_init_waiter() 210 waiter->deadlock_task_pid = NULL; in debug_rt_mutex_init_waiter() [all …]
|
D | mutex.h | 16 #define mutex_remove_waiter(lock, waiter, ti) \ argument 17 __list_del((waiter)->list.prev, (waiter)->list.next) 21 #define debug_mutex_wake_waiter(lock, waiter) do { } while (0) argument 22 #define debug_mutex_free_waiter(waiter) do { } while (0) argument 23 #define debug_mutex_add_waiter(lock, waiter, ti) do { } while (0) argument 28 debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_lock_common() argument
|
D | semaphore.c | 208 struct semaphore_waiter waiter; in __down_common() local 210 list_add_tail(&waiter.list, &sem->wait_list); in __down_common() 211 waiter.task = task; in __down_common() 212 waiter.up = 0; in __down_common() 223 if (waiter.up) in __down_common() 228 list_del(&waiter.list); in __down_common() 232 list_del(&waiter.list); in __down_common() 258 struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list, in __up() local 260 list_del(&waiter->list); in __up() 261 waiter->up = 1; in __up() [all …]
|
D | mutex.c | 131 struct mutex_waiter waiter; in __mutex_lock_common() local 137 debug_mutex_lock_common(lock, &waiter); in __mutex_lock_common() 139 debug_mutex_add_waiter(lock, &waiter, task_thread_info(task)); in __mutex_lock_common() 142 list_add_tail(&waiter.list, &lock->wait_list); in __mutex_lock_common() 143 waiter.task = task; in __mutex_lock_common() 170 mutex_remove_waiter(lock, &waiter, in __mutex_lock_common() 175 debug_mutex_free_waiter(&waiter); in __mutex_lock_common() 189 mutex_remove_waiter(lock, &waiter, task_thread_info(task)); in __mutex_lock_common() 198 debug_mutex_free_waiter(&waiter); in __mutex_lock_common() 254 struct mutex_waiter *waiter = in __mutex_unlock_common_slowpath() local [all …]
|
D | rtmutex-debug.h | 15 extern void debug_rt_mutex_init_waiter(struct rt_mutex_waiter *waiter); 16 extern void debug_rt_mutex_free_waiter(struct rt_mutex_waiter *waiter); 23 extern void debug_rt_mutex_deadlock(int detect, struct rt_mutex_waiter *waiter, 25 extern void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter); 29 static inline int debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *waiter, in debug_rt_mutex_detect_deadlock() argument 32 return (waiter != NULL); in debug_rt_mutex_detect_deadlock()
|
D | mutex-debug.h | 25 struct mutex_waiter *waiter); 27 struct mutex_waiter *waiter); 28 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter); 30 struct mutex_waiter *waiter, 32 extern void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
|
D | futex.c | 100 wait_queue_head_t waiter; member 619 wake_up(&q->waiter); in wake_futex() 979 init_waitqueue_head(&q->waiter); in queue_lock() 1274 add_wait_queue(&q.waiter, &wait); in futex_wait()
|
D | module.c | 584 mod->waiter = current; in module_unload_init() 804 mod->waiter = current; in SYSCALL_DEFINE2() 901 wake_up_process(module->waiter); in module_put()
|
/kernel/trace/ |
D | trace.h | 230 struct task_struct *waiter; member
|
D | trace.c | 3213 iter->tr->waiter = current; 3222 iter->tr->waiter = NULL;
|