summaryrefslogtreecommitdiff
path: root/kernel/lockdep.c
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2009-01-22 14:12:41 +0100
committerIngo Molnar <mingo@elte.hu>2009-02-14 23:27:56 +0100
commit36bfb9bb03db2002a8574600c6aeb4cdd1ba01a6 (patch)
tree6e824e262cb857eba106aecb449bdb3c5fc9cbdc /kernel/lockdep.c
parent9fe51abf7a1c787f918f66fa3cef9cd0cedb3791 (diff)
downloadlwn-36bfb9bb03db2002a8574600c6aeb4cdd1ba01a6.tar.gz
lwn-36bfb9bb03db2002a8574600c6aeb4cdd1ba01a6.zip
lockdep: simplify mark_held_locks
remove the explicit state iteration Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/lockdep.c')
-rw-r--r--kernel/lockdep.c38
1 files changed, 14 insertions, 24 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index dd4716c08325..18e0990148e6 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -2253,11 +2253,19 @@ static int mark_lock_irq(struct task_struct *curr, struct held_lock *this,
}
enum mark_type {
- HARDIRQ,
- SOFTIRQ,
- RECLAIM_FS,
+#define LOCKDEP_STATE(__STATE) __STATE,
+#include "lockdep_states.h"
+#undef LOCKDEP_STATE
};
+#define MARK_HELD_CASE(__STATE) \
+ case __STATE: \
+ if (hlock->read) \
+ usage_bit = LOCK_ENABLED_##__STATE##_READ; \
+ else \
+ usage_bit = LOCK_ENABLED_##__STATE; \
+ break;
+
/*
* Mark all held locks with a usage bit:
*/
@@ -2272,27 +2280,9 @@ mark_held_locks(struct task_struct *curr, enum mark_type mark)
hlock = curr->held_locks + i;
switch (mark) {
- case HARDIRQ:
- if (hlock->read)
- usage_bit = LOCK_ENABLED_HARDIRQ_READ;
- else
- usage_bit = LOCK_ENABLED_HARDIRQ;
- break;
-
- case SOFTIRQ:
- if (hlock->read)
- usage_bit = LOCK_ENABLED_SOFTIRQ_READ;
- else
- usage_bit = LOCK_ENABLED_SOFTIRQ;
- break;
-
- case RECLAIM_FS:
- if (hlock->read)
- usage_bit = LOCK_ENABLED_RECLAIM_FS_READ;
- else
- usage_bit = LOCK_ENABLED_RECLAIM_FS;
- break;
-
+#define LOCKDEP_STATE(__STATE) MARK_HELD_CASE(__STATE)
+#include "lockdep_states.h"
+#undef LOCKDEP_STATE
default:
BUG();
}