Function report | 
Source Code:kernel\locking\lockdep.c | 
Create Date:2022-07-28 09:49:58 | 
| Last Modify:2020-03-17 14:16:01 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:print_unlock_imbalance_bug
Proto:static void print_unlock_imbalance_bug(struct task_struct *curr, struct lockdep_map *lock, unsigned long ip)
Type:void
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct task_struct * | curr | |
| struct lockdep_map * | lock | |
| unsigned long | ip | 
| 3987 | If Not Generic 'turn off all lock debugging' function: Then Return | 
| 3989 | 
If  The locking-testsuite uses | 
| 3992 | pr_warn("\n") | 
| 3993 | pr_warn("=====================================\n") | 
| 3994 | pr_warn("WARNING: bad unlock balance detected!\n") | 
| 3995 | print_kernel_ident() | 
| 3996 | pr_warn("-------------------------------------\n") | 
| 3997 | pr_warn("%s/%d is trying to release lock (", * executable name, excluding path. * - normally initialized setup_new_exec() * - access it with [gs]et_task_comm() * - lock it with task_lock(), task_pid_nr(curr)) | 
| 3999 | print_lockdep_cache(lock) | 
| 4001 | print_ip_sym(ip) | 
| 4002 | pr_warn("but there are no more locks to release!\n") | 
| 4003 | pr_warn("\nother info that might help us debug this:\n") | 
| 4004 | lockdep_print_held_locks(curr) | 
| 4006 | pr_warn("\nstack backtrace:\n") | 
| 4007 | dump_stack() | 
| Name | Describe | 
|---|---|
| __lock_set_class | |
| __lock_downgrade | |
| __lock_release | Remove the lock from the list of currently held locks - this gets* called on mutex_unlock()/spin_unlock*() (or on a failed* mutex_lock_interruptible()). | 
| 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  |