diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-12-15 10:29:06 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-12-15 10:29:06 +0100 |
commit | 709334c87dbdb44150ce436b3d13c814db0dcae9 (patch) | |
tree | 5861a45f70c1f283720337abd864498f5afb3dbe /lib/kernel_lock.c | |
parent | 0d64b568fcd48b133721c1d322e7c51d85eb12df (diff) | |
parent | f74890277a196949e4004fe2955e1d4fb3930f98 (diff) | |
download | kernel-crypto-709334c87dbdb44150ce436b3d13c814db0dcae9.tar.gz kernel-crypto-709334c87dbdb44150ce436b3d13c814db0dcae9.tar.xz kernel-crypto-709334c87dbdb44150ce436b3d13c814db0dcae9.zip |
Merge branch 'fixes' of git://git.alsa-project.org/alsa-kernel into for-linus
Diffstat (limited to 'lib/kernel_lock.c')
-rw-r--r-- | lib/kernel_lock.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/lib/kernel_lock.c b/lib/kernel_lock.c index 39f1029e352..5526b46aba9 100644 --- a/lib/kernel_lock.c +++ b/lib/kernel_lock.c @@ -5,10 +5,13 @@ * relegated to obsolescence, but used by various less * important (or lazy) subsystems. */ -#include <linux/smp_lock.h> #include <linux/module.h> #include <linux/kallsyms.h> #include <linux/semaphore.h> +#include <linux/smp_lock.h> + +#define CREATE_TRACE_POINTS +#include <trace/events/bkl.h> /* * The 'big kernel lock' @@ -113,21 +116,28 @@ static inline void __unlock_kernel(void) * This cannot happen asynchronously, so we only need to * worry about other CPU's. */ -void __lockfunc lock_kernel(void) +void __lockfunc _lock_kernel(const char *func, const char *file, int line) { - int depth = current->lock_depth+1; - if (likely(!depth)) + int depth = current->lock_depth + 1; + + trace_lock_kernel(func, file, line); + + if (likely(!depth)) { + might_sleep(); __lock_kernel(); + } current->lock_depth = depth; } -void __lockfunc unlock_kernel(void) +void __lockfunc _unlock_kernel(const char *func, const char *file, int line) { BUG_ON(current->lock_depth < 0); if (likely(--current->lock_depth < 0)) __unlock_kernel(); + + trace_unlock_kernel(func, file, line); } -EXPORT_SYMBOL(lock_kernel); -EXPORT_SYMBOL(unlock_kernel); +EXPORT_SYMBOL(_lock_kernel); +EXPORT_SYMBOL(_unlock_kernel); |