diff options
Diffstat (limited to 'kernel/lockdep_proc.c')
| -rw-r--r-- | kernel/lockdep_proc.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/kernel/lockdep_proc.c b/kernel/lockdep_proc.c index 20dbcbf9c7dd..13716b813896 100644 --- a/kernel/lockdep_proc.c +++ b/kernel/lockdep_proc.c | |||
| @@ -470,11 +470,12 @@ static void seq_line(struct seq_file *m, char c, int offset, int length) | |||
| 470 | 470 | ||
| 471 | static void snprint_time(char *buf, size_t bufsiz, s64 nr) | 471 | static void snprint_time(char *buf, size_t bufsiz, s64 nr) |
| 472 | { | 472 | { |
| 473 | unsigned long rem; | 473 | s64 div; |
| 474 | s32 rem; | ||
| 474 | 475 | ||
| 475 | nr += 5; /* for display rounding */ | 476 | nr += 5; /* for display rounding */ |
| 476 | rem = do_div(nr, 1000); /* XXX: do_div_signed */ | 477 | div = div_s64_rem(nr, 1000, &rem); |
| 477 | snprintf(buf, bufsiz, "%lld.%02d", (long long)nr, (int)rem/10); | 478 | snprintf(buf, bufsiz, "%lld.%02d", (long long)div, (int)rem/10); |
| 478 | } | 479 | } |
| 479 | 480 | ||
| 480 | static void seq_time(struct seq_file *m, s64 time) | 481 | static void seq_time(struct seq_file *m, s64 time) |
| @@ -556,7 +557,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) | |||
| 556 | if (stats->read_holdtime.nr) | 557 | if (stats->read_holdtime.nr) |
| 557 | namelen += 2; | 558 | namelen += 2; |
| 558 | 559 | ||
| 559 | for (i = 0; i < ARRAY_SIZE(class->contention_point); i++) { | 560 | for (i = 0; i < LOCKSTAT_POINTS; i++) { |
| 560 | char sym[KSYM_SYMBOL_LEN]; | 561 | char sym[KSYM_SYMBOL_LEN]; |
| 561 | char ip[32]; | 562 | char ip[32]; |
| 562 | 563 | ||
| @@ -573,6 +574,23 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) | |||
| 573 | stats->contention_point[i], | 574 | stats->contention_point[i], |
| 574 | ip, sym); | 575 | ip, sym); |
| 575 | } | 576 | } |
| 577 | for (i = 0; i < LOCKSTAT_POINTS; i++) { | ||
| 578 | char sym[KSYM_SYMBOL_LEN]; | ||
| 579 | char ip[32]; | ||
| 580 | |||
| 581 | if (class->contending_point[i] == 0) | ||
| 582 | break; | ||
| 583 | |||
| 584 | if (!i) | ||
| 585 | seq_line(m, '-', 40-namelen, namelen); | ||
| 586 | |||
| 587 | sprint_symbol(sym, class->contending_point[i]); | ||
| 588 | snprintf(ip, sizeof(ip), "[<%p>]", | ||
| 589 | (void *)class->contending_point[i]); | ||
| 590 | seq_printf(m, "%40s %14lu %29s %s\n", name, | ||
| 591 | stats->contending_point[i], | ||
| 592 | ip, sym); | ||
| 593 | } | ||
| 576 | if (i) { | 594 | if (i) { |
| 577 | seq_puts(m, "\n"); | 595 | seq_puts(m, "\n"); |
| 578 | seq_line(m, '.', 0, 40 + 1 + 10 * (14 + 1)); | 596 | seq_line(m, '.', 0, 40 + 1 + 10 * (14 + 1)); |
| @@ -582,7 +600,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) | |||
| 582 | 600 | ||
| 583 | static void seq_header(struct seq_file *m) | 601 | static void seq_header(struct seq_file *m) |
| 584 | { | 602 | { |
| 585 | seq_printf(m, "lock_stat version 0.2\n"); | 603 | seq_printf(m, "lock_stat version 0.3\n"); |
| 586 | seq_line(m, '-', 0, 40 + 1 + 10 * (14 + 1)); | 604 | seq_line(m, '-', 0, 40 + 1 + 10 * (14 + 1)); |
| 587 | seq_printf(m, "%40s %14s %14s %14s %14s %14s %14s %14s %14s " | 605 | seq_printf(m, "%40s %14s %14s %14s %14s %14s %14s %14s %14s " |
| 588 | "%14s %14s\n", | 606 | "%14s %14s\n", |
