[PATCH 05/21] lockdep: simplify mark_held_locks

From: Peter Zijlstra
Date: Wed Jan 28 2009 - 08:58:41 EST


remove the explicit state iteration

Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
---
kernel/lockdep.c | 38 ++++++++++++++------------------------
1 file changed, 14 insertions(+), 24 deletions(-)

Index: linux-2.6/kernel/lockdep.c
===================================================================
--- linux-2.6.orig/kernel/lockdep.c
+++ linux-2.6/kernel/lockdep.c
@@ -2253,11 +2253,19 @@ static int mark_lock_irq(struct task_str
}

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
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();
}

--

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/