lkml.org 
[lkml]   [2009]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateThu, 22 Jan 2009 18:37:06 +0100
FromPeter Zijlstra <>
Subject[RFC PATCH 05/19] lockdep: simplify mark_held_locks
remove the explicit state iteration

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
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
@@ -2077,11 +2077,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:
*/
@@ -2096,27 +2104,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();
}
--



\
 
 \ /
  Last update: 2009-01-22 18:49    [from the cache]
©2003-2010