Home
last modified time | relevance | path

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

/kernel/
Dmutex-debug.c34 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 …]
Drtmutex.c163 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 …]
Drtmutex-debug.c138 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 …]
Dmutex.h16 #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
Dsemaphore.c208 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 …]
Dmutex.c131 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 …]
Drtmutex-debug.h15 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()
Dmutex-debug.h25 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,
Dfutex.c100 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()
Dmodule.c584 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/
Dtrace.h230 struct task_struct *waiter; member
Dtrace.c3213 iter->tr->waiter = current;
3222 iter->tr->waiter = NULL;