diff options
Diffstat (limited to 'lib/debug_locks.c')
| -rw-r--r-- | lib/debug_locks.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/debug_locks.c b/lib/debug_locks.c new file mode 100644 index 000000000000..0ef01d14727c --- /dev/null +++ b/lib/debug_locks.c | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | /* | ||
| 2 | * lib/debug_locks.c | ||
| 3 | * | ||
| 4 | * Generic place for common debugging facilities for various locks: | ||
| 5 | * spinlocks, rwlocks, mutexes and rwsems. | ||
| 6 | * | ||
| 7 | * Started by Ingo Molnar: | ||
| 8 | * | ||
| 9 | * Copyright (C) 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> | ||
| 10 | */ | ||
| 11 | #include <linux/rwsem.h> | ||
| 12 | #include <linux/mutex.h> | ||
| 13 | #include <linux/module.h> | ||
| 14 | #include <linux/spinlock.h> | ||
| 15 | #include <linux/debug_locks.h> | ||
| 16 | |||
| 17 | /* | ||
| 18 | * We want to turn all lock-debugging facilities on/off at once, | ||
| 19 | * via a global flag. The reason is that once a single bug has been | ||
| 20 | * detected and reported, there might be cascade of followup bugs | ||
| 21 | * that would just muddy the log. So we report the first one and | ||
| 22 | * shut up after that. | ||
| 23 | */ | ||
| 24 | int debug_locks = 1; | ||
| 25 | |||
| 26 | /* | ||
| 27 | * The locking-testsuite uses <debug_locks_silent> to get a | ||
| 28 | * 'silent failure': nothing is printed to the console when | ||
| 29 | * a locking bug is detected. | ||
| 30 | */ | ||
| 31 | int debug_locks_silent; | ||
| 32 | |||
| 33 | /* | ||
| 34 | * Generic 'turn off all lock debugging' function: | ||
| 35 | */ | ||
| 36 | int debug_locks_off(void) | ||
| 37 | { | ||
| 38 | if (xchg(&debug_locks, 0)) { | ||
| 39 | if (!debug_locks_silent) { | ||
| 40 | console_verbose(); | ||
| 41 | return 1; | ||
| 42 | } | ||
| 43 | } | ||
| 44 | return 0; | ||
| 45 | } | ||
