aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/lockdep_proc.c
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-02-20 14:13:30 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-02-20 14:13:30 -0500
commit5a84d159061d914c8dd4aa372ac6e9529c2be453 (patch)
tree9b08af78085334af44414adafe0096276f8fe0ff /kernel/lockdep_proc.c
parente80a0e6e7ccdf64575d4384cb4172860422f5b81 (diff)
parent7d477a04a619e90ee08724e8f2d8803c6bdfcef8 (diff)
Merge ARM fixes
Diffstat (limited to 'kernel/lockdep_proc.c')
-rw-r--r--kernel/lockdep_proc.c44
1 files changed, 30 insertions, 14 deletions
diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c
index b554b40a4aa6..58f35e586ee3 100644
--- a/kernel/lockdep_proc.c
+++ b/kernel/lockdep_proc.c
@@ -10,7 +10,6 @@
10 * Code for /proc/lockdep and /proc/lockdep_stats: 10 * Code for /proc/lockdep and /proc/lockdep_stats:
11 * 11 *
12 */ 12 */
13#include <linux/sched.h>
14#include <linux/module.h> 13#include <linux/module.h>
15#include <linux/proc_fs.h> 14#include <linux/proc_fs.h>
16#include <linux/seq_file.h> 15#include <linux/seq_file.h>
@@ -77,12 +76,29 @@ static unsigned long count_backward_deps(struct lock_class *class)
77 return ret; 76 return ret;
78} 77}
79 78
79static void print_name(struct seq_file *m, struct lock_class *class)
80{
81 char str[128];
82 const char *name = class->name;
83
84 if (!name) {
85 name = __get_key_name(class->key, str);
86 seq_printf(m, "%s", name);
87 } else{
88 seq_printf(m, "%s", name);
89 if (class->name_version > 1)
90 seq_printf(m, "#%d", class->name_version);
91 if (class->subclass)
92 seq_printf(m, "/%d", class->subclass);
93 }
94}
95
80static int l_show(struct seq_file *m, void *v) 96static int l_show(struct seq_file *m, void *v)
81{ 97{
82 unsigned long nr_forward_deps, nr_backward_deps; 98 unsigned long nr_forward_deps, nr_backward_deps;
83 struct lock_class *class = m->private; 99 struct lock_class *class = m->private;
84 char str[128], c1, c2, c3, c4; 100 struct lock_list *entry;
85 const char *name; 101 char c1, c2, c3, c4;
86 102
87 seq_printf(m, "%p", class->key); 103 seq_printf(m, "%p", class->key);
88#ifdef CONFIG_DEBUG_LOCKDEP 104#ifdef CONFIG_DEBUG_LOCKDEP
@@ -97,16 +113,16 @@ static int l_show(struct seq_file *m, void *v)
97 get_usage_chars(class, &c1, &c2, &c3, &c4); 113 get_usage_chars(class, &c1, &c2, &c3, &c4);
98 seq_printf(m, " %c%c%c%c", c1, c2, c3, c4); 114 seq_printf(m, " %c%c%c%c", c1, c2, c3, c4);
99 115
100 name = class->name; 116 seq_printf(m, ": ");
101 if (!name) { 117 print_name(m, class);
102 name = __get_key_name(class->key, str); 118 seq_puts(m, "\n");
103 seq_printf(m, ": %s", name); 119
104 } else{ 120 list_for_each_entry(entry, &class->locks_after, entry) {
105 seq_printf(m, ": %s", name); 121 if (entry->distance == 1) {
106 if (class->name_version > 1) 122 seq_printf(m, " -> [%p] ", entry->class);
107 seq_printf(m, "#%d", class->name_version); 123 print_name(m, entry->class);
108 if (class->subclass) 124 seq_puts(m, "\n");
109 seq_printf(m, "/%d", class->subclass); 125 }
110 } 126 }
111 seq_puts(m, "\n"); 127 seq_puts(m, "\n");
112 128
@@ -227,7 +243,7 @@ static int lockdep_stats_show(struct seq_file *m, void *v)
227 243
228 sum_forward_deps += count_forward_deps(class); 244 sum_forward_deps += count_forward_deps(class);
229 } 245 }
230#ifdef CONFIG_LOCKDEP_DEBUG 246#ifdef CONFIG_DEBUG_LOCKDEP
231 DEBUG_LOCKS_WARN_ON(debug_atomic_read(&nr_unused_locks) != nr_unused); 247 DEBUG_LOCKS_WARN_ON(debug_atomic_read(&nr_unused_locks) != nr_unused);
232#endif 248#endif
233 seq_printf(m, " lock-classes: %11lu [max: %lu]\n", 249 seq_printf(m, " lock-classes: %11lu [max: %lu]\n",