Function report |
Source Code:kernel\locking\rtmutex-debug.c |
Create Date:2022-07-28 09:52:50 |
Last Modify:2020-03-17 14:29:42 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:debug_rt_mutex_print_deadlock
Proto:void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter)
Type:void
Parameter:
Type | Parameter | Name |
---|---|---|
struct rt_mutex_waiter * | waiter |
95 | task = pid_task(deadlock_task_pid, PIDTYPE_PID) |
96 | If Not task Then |
101 | If Not Generic 'turn off all lock debugging' function: Then |
106 | pr_warn("\n") |
107 | pr_warn("============================================\n") |
108 | pr_warn("WARNING: circular locking deadlock detected!\n") |
110 | pr_warn("--------------------------------------------\n") |
111 | printk("%s/%d is deadlocking current task %s/%d\n\n", * executable name, excluding path. * - normally initialized setup_new_exec() * - access it with [gs]et_task_comm() * - lock it with task_lock(), task_pid_nr(task), comm, task_pid_nr(current process)) |
115 | printk("\n1) %s/%d is trying to acquire this lock:\n", comm, task_pid_nr(current process)) |
117 | printk_lock(lock, 1) |
119 | printk("\n2) %s/%d is blocked on this lock:\n", * executable name, excluding path. * - normally initialized setup_new_exec() * - access it with [gs]et_task_comm() * - lock it with task_lock(), task_pid_nr(task)) |
121 | printk_lock(deadlock_lock, 1) |
126 | printk("\n%s/%d's [blocked] stackdump:\n\n", * executable name, excluding path. * - normally initialized setup_new_exec() * - access it with [gs]et_task_comm() * - lock it with task_lock(), task_pid_nr(task)) |
128 | show_stack(task, NULL) |
129 | printk("\n%s/%d's [current] stackdump:\n\n", comm, task_pid_nr(current process)) |
131 | dump_stack() |
132 | debug_show_all_locks() |
135 | printk("[ turning off deadlock detection.Please report this trace. ]\n\n") |
Name | Describe |
---|---|
__rt_mutex_slowlock | __rt_mutex_slowlock() - Perform the wait-wake-try-to-take loop*@lock: the rt_mutex to take*@state: the state the task should block in (TASK_INTERRUPTIBLE* or TASK_UNINTERRUPTIBLE)*@timeout: the pre-initialized and started timer, or NULL for none*@waiter: |
__rt_mutex_start_proxy_lock | __rt_mutex_start_proxy_lock() - Start lock acquisition for another task*@lock: the rt_mutex to take*@waiter: the pre-initialized rt_mutex_waiter*@task: the task to prepare* Starts the rt_mutex acquire; it enqueues the @waiter and does deadlock* detection |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |