[PATCH 19/21] lockdep: simplify get_user_chars()

From: Peter Zijlstra
Date: Wed Jan 28 2009 - 09:00:37 EST


there's too much repetition of code..

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

Index: linux-2.6/kernel/lockdep.c
===================================================================
--- linux-2.6.orig/kernel/lockdep.c
+++ linux-2.6/kernel/lockdep.c
@@ -467,54 +467,37 @@ const char * __get_key_name(struct lockd
return kallsyms_lookup((unsigned long)key, NULL, NULL, NULL, str);
}

-void
-get_usage_chars(struct lock_class *class, char *c1, char *c2, char *c3,
- char *c4, char *c5, char *c6)
+static inline unsigned long lock_flag(enum lock_usage_bit bit)
{
- *c1 = '.', *c2 = '.', *c3 = '.', *c4 = '.', *c5 = '.', *c6 = '.';
-
- if (class->usage_mask & LOCKF_USED_IN_HARDIRQ)
- *c1 = '+';
- else
- if (class->usage_mask & LOCKF_ENABLED_HARDIRQ)
- *c1 = '-';
+ return 1UL << bit;
+}

- if (class->usage_mask & LOCKF_USED_IN_SOFTIRQ)
- *c2 = '+';
- else
- if (class->usage_mask & LOCKF_ENABLED_SOFTIRQ)
- *c2 = '-';
+static char get_usage_char(struct lock_class *class, enum lock_usage_bit bit)
+{
+ char c = '.';

- if (class->usage_mask & LOCKF_ENABLED_HARDIRQ_READ)
- *c3 = '-';
- if (class->usage_mask & LOCKF_USED_IN_HARDIRQ_READ) {
- *c3 = '+';
- if (class->usage_mask & LOCKF_ENABLED_HARDIRQ_READ)
- *c3 = '?';
- }
-
- if (class->usage_mask & LOCKF_ENABLED_SOFTIRQ_READ)
- *c4 = '-';
- if (class->usage_mask & LOCKF_USED_IN_SOFTIRQ_READ) {
- *c4 = '+';
- if (class->usage_mask & LOCKF_ENABLED_SOFTIRQ_READ)
- *c4 = '?';
+ if (class->usage_mask & lock_flag(bit + 2))
+ c = '+';
+ if (class->usage_mask & lock_flag(bit)) {
+ c = '-';
+ if (class->usage_mask & lock_flag(bit + 2))
+ c = '?';
}

- if (class->usage_mask & LOCKF_USED_IN_RECLAIM_FS)
- *c5 = '+';
- else
- if (class->usage_mask & LOCKF_ENABLED_RECLAIM_FS)
- *c5 = '-';
+ return c;
+}

- if (class->usage_mask & LOCKF_ENABLED_RECLAIM_FS_READ)
- *c6 = '-';
- if (class->usage_mask & LOCKF_USED_IN_RECLAIM_FS_READ) {
- *c6 = '+';
- if (class->usage_mask & LOCKF_ENABLED_RECLAIM_FS_READ)
- *c6 = '?';
- }
+void
+get_usage_chars(struct lock_class *class, char *c1, char *c2, char *c3,
+ char *c4, char *c5, char *c6)
+{
+ *c1 = get_usage_char(class, LOCK_USED_IN_HARDIRQ);
+ *c2 = get_usage_char(class, LOCK_USED_IN_SOFTITQ);
+ *c3 = get_usage_char(class, LOCK_USED_IN_HARDIRQ_READ);
+ *c4 = get_usage_char(class, LOCK_USED_IN_SOFTITQ_READ);

+ *c5 = get_usage_char(class, LOCK_USED_IN_RECLAIM_FS);
+ *c6 = get_usage_char(class, LOCK_USED_IN_RECLAIM_FS_READ);
}

static void print_lock_name(struct lock_class *class)

--

--
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/