path: root/Documentation/lockdep-design.txt
diff options
authorJim Cromie <jim.cromie@gmail.com>2006-09-30 23:27:40 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-01 00:39:21 -0700
commitfd7bcea35e7efb108c34ee2b3840942a3749cadb (patch)
tree683c4d261c71b76de5e1f927be759f18208ef718 /Documentation/lockdep-design.txt
parentce584f913870bbad8779a1130d4be48698560bf0 (diff)
[PATCH] Doc/lockdep-design: explain display of {state-bits}
Signed-off-by: Jim Cromie <jim.cromie@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'Documentation/lockdep-design.txt')
1 files changed, 22 insertions, 0 deletions
diff --git a/Documentation/lockdep-design.txt b/Documentation/lockdep-design.txt
index 00d93605bfd..55a7e4fa8cc 100644
--- a/Documentation/lockdep-design.txt
+++ b/Documentation/lockdep-design.txt
@@ -36,6 +36,28 @@ The validator tracks lock-class usage history into 5 separate state bits:
- 'ever used' [ == !unused ]
+When locking rules are violated, these 4 state bits are presented in the
+locking error messages, inside curlies. A contrived example:
+ modprobe/2287 is trying to acquire lock:
+ (&sio_locks[i].lock){--..}, at: [<c02867fd>] mutex_lock+0x21/0x24
+ but task is already holding lock:
+ (&sio_locks[i].lock){--..}, at: [<c02867fd>] mutex_lock+0x21/0x24
+The bit position indicates hardirq, softirq, hardirq-read,
+softirq-read respectively, and the character displayed in each
+ '.' acquired while irqs enabled
+ '+' acquired in irq context
+ '-' acquired in process context with irqs disabled
+ '?' read-acquired both with irqs enabled and in irq context
+Unused mutexes cannot be part of the cause of an error.
Single-lock state rules: