diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/lockdep.c | 65 |
1 files changed, 24 insertions, 41 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 02e6e066d563..1b4ee3c0b789 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
| @@ -467,54 +467,37 @@ const char * __get_key_name(struct lockdep_subclass_key *key, char *str) | |||
| 467 | return kallsyms_lookup((unsigned long)key, NULL, NULL, NULL, str); | 467 | return kallsyms_lookup((unsigned long)key, NULL, NULL, NULL, str); |
| 468 | } | 468 | } |
| 469 | 469 | ||
| 470 | void | 470 | static inline unsigned long lock_flag(enum lock_usage_bit bit) |
| 471 | get_usage_chars(struct lock_class *class, char *c1, char *c2, char *c3, | ||
| 472 | char *c4, char *c5, char *c6) | ||
| 473 | { | 471 | { |
| 474 | *c1 = '.', *c2 = '.', *c3 = '.', *c4 = '.', *c5 = '.', *c6 = '.'; | 472 | return 1UL << bit; |
| 475 | 473 | } | |
| 476 | if (class->usage_mask & LOCKF_USED_IN_HARDIRQ) | ||
| 477 | *c1 = '+'; | ||
| 478 | else | ||
| 479 | if (class->usage_mask & LOCKF_ENABLED_HARDIRQ) | ||
| 480 | *c1 = '-'; | ||
| 481 | |||
| 482 | if (class->usage_mask & LOCKF_USED_IN_SOFTIRQ) | ||
| 483 | *c2 = '+'; | ||
| 484 | else | ||
| 485 | if (class->usage_mask & LOCKF_ENABLED_SOFTIRQ) | ||
| 486 | *c2 = '-'; | ||
| 487 | 474 | ||
| 488 | if (class->usage_mask & LOCKF_ENABLED_HARDIRQ_READ) | 475 | static char get_usage_char(struct lock_class *class, enum lock_usage_bit bit) |
| 489 | *c3 = '-'; | 476 | { |
| 490 | if (class->usage_mask & LOCKF_USED_IN_HARDIRQ_READ) { | 477 | char c = '.'; |
| 491 | *c3 = '+'; | ||
| 492 | if (class->usage_mask & LOCKF_ENABLED_HARDIRQ_READ) | ||
| 493 | *c3 = '?'; | ||
| 494 | } | ||
| 495 | 478 | ||
| 496 | if (class->usage_mask & LOCKF_ENABLED_SOFTIRQ_READ) | 479 | if (class->usage_mask & lock_flag(bit + 2)) |
| 497 | *c4 = '-'; | 480 | c = '+'; |
| 498 | if (class->usage_mask & LOCKF_USED_IN_SOFTIRQ_READ) { | 481 | if (class->usage_mask & lock_flag(bit)) { |
| 499 | *c4 = '+'; | 482 | c = '-'; |
| 500 | if (class->usage_mask & LOCKF_ENABLED_SOFTIRQ_READ) | 483 | if (class->usage_mask & lock_flag(bit + 2)) |
| 501 | *c4 = '?'; | 484 | c = '?'; |
| 502 | } | 485 | } |
| 503 | 486 | ||
| 504 | if (class->usage_mask & LOCKF_USED_IN_RECLAIM_FS) | 487 | return c; |
| 505 | *c5 = '+'; | 488 | } |
| 506 | else | ||
| 507 | if (class->usage_mask & LOCKF_ENABLED_RECLAIM_FS) | ||
| 508 | *c5 = '-'; | ||
| 509 | 489 | ||
| 510 | if (class->usage_mask & LOCKF_ENABLED_RECLAIM_FS_READ) | 490 | void |
| 511 | *c6 = '-'; | 491 | get_usage_chars(struct lock_class *class, char *c1, char *c2, char *c3, |
| 512 | if (class->usage_mask & LOCKF_USED_IN_RECLAIM_FS_READ) { | 492 | char *c4, char *c5, char *c6) |
| 513 | *c6 = '+'; | 493 | { |
| 514 | if (class->usage_mask & LOCKF_ENABLED_RECLAIM_FS_READ) | 494 | *c1 = get_usage_char(class, LOCK_USED_IN_HARDIRQ); |
| 515 | *c6 = '?'; | 495 | *c2 = get_usage_char(class, LOCK_USED_IN_SOFTITQ); |
| 516 | } | 496 | *c3 = get_usage_char(class, LOCK_USED_IN_HARDIRQ_READ); |
| 497 | *c4 = get_usage_char(class, LOCK_USED_IN_SOFTITQ_READ); | ||
| 517 | 498 | ||
| 499 | *c5 = get_usage_char(class, LOCK_USED_IN_RECLAIM_FS); | ||
| 500 | *c6 = get_usage_char(class, LOCK_USED_IN_RECLAIM_FS_READ); | ||
| 518 | } | 501 | } |
| 519 | 502 | ||
| 520 | static void print_lock_name(struct lock_class *class) | 503 | static void print_lock_name(struct lock_class *class) |
