lockstat: better class name representation
Peter Zijlstra [Thu, 19 Jul 2007 08:49:01 +0000 (01:49 -0700)]
optionally add class->name_version and class->subclass to the class name

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

kernel/lockdep_proc.c

index 7ff8013..9f17af4 100644 (file)
@@ -421,8 +421,30 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)
        class = data->class;
        stats = &data->stats;
 
-       snprintf(name, 38, "%s", class->name);
+       namelen = 38;
+       if (class->name_version > 1)
+               namelen -= 2; /* XXX truncates versions > 9 */
+       if (class->subclass)
+               namelen -= 2;
+
+       if (!class->name) {
+               char str[KSYM_NAME_LEN];
+               const char *key_name;
+
+               key_name = __get_key_name(class->key, str);
+               snprintf(name, namelen, "%s", key_name);
+       } else {
+               snprintf(name, namelen, "%s", class->name);
+       }
        namelen = strlen(name);
+       if (class->name_version > 1) {
+               snprintf(name+namelen, 3, "#%d", class->name_version);
+               namelen += 2;
+       }
+       if (class->subclass) {
+               snprintf(name+namelen, 3, "/%d", class->subclass);
+               namelen += 2;
+       }
 
        if (stats->write_holdtime.nr) {
                if (stats->read_holdtime.nr)