diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-09-11 13:55:35 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2009-09-11 13:55:35 -0400 |
commit | 637e7e864103a7a68c1ce43ada27dfc25c0d113f (patch) | |
tree | 7ef0eadf41d79b07bc19f62b1355f7c824d781fd /kernel/trace/trace.c | |
parent | 48659d31195bb76d688e99dabd816c5472fb1656 (diff) |
tracing: add lock depth to entries
This patch adds the lock depth of the big kernel lock to the generic
entry header. This way we can see the depth of the lock and help
in removing the BKL.
Example:
# _------=> CPU#
# / _-----=> irqs-off
# | / _----=> need-resched
# || / _---=> hardirq/softirq
# ||| / _--=> preempt-depth
# |||| /_--=> lock-depth
# |||||/ delay
# cmd pid |||||| time | caller
# \ / |||||| \ | /
<idle>-0 2.N..3 5902255250us+: lock_acquire: read rcu_read_lock
<idle>-0 2.N..3 5902255253us+: lock_release: rcu_read_lock
<idle>-0 2dN..3 5902255257us+: lock_acquire: xtime_lock
<idle>-0 2dN..4 5902255259us : lock_acquire: clocksource_lock
<idle>-0 2dN..4 5902255261us+: lock_release: clocksource_lock
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r-- | kernel/trace/trace.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 1a37da2e8534..3b918283cf94 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -886,6 +886,7 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, | |||
886 | 886 | ||
887 | entry->preempt_count = pc & 0xff; | 887 | entry->preempt_count = pc & 0xff; |
888 | entry->pid = (tsk) ? tsk->pid : 0; | 888 | entry->pid = (tsk) ? tsk->pid : 0; |
889 | entry->lock_depth = (tsk) ? tsk->lock_depth : 0; | ||
889 | entry->flags = | 890 | entry->flags = |
890 | #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT | 891 | #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT |
891 | (irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) | | 892 | (irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) | |
@@ -1530,10 +1531,10 @@ static void print_lat_help_header(struct seq_file *m) | |||
1530 | seq_puts(m, "# | / _----=> need-resched \n"); | 1531 | seq_puts(m, "# | / _----=> need-resched \n"); |
1531 | seq_puts(m, "# || / _---=> hardirq/softirq \n"); | 1532 | seq_puts(m, "# || / _---=> hardirq/softirq \n"); |
1532 | seq_puts(m, "# ||| / _--=> preempt-depth \n"); | 1533 | seq_puts(m, "# ||| / _--=> preempt-depth \n"); |
1533 | seq_puts(m, "# |||| / \n"); | 1534 | seq_puts(m, "# |||| /_--=> lock-depth \n"); |
1534 | seq_puts(m, "# ||||| delay \n"); | 1535 | seq_puts(m, "# |||||/ delay \n"); |
1535 | seq_puts(m, "# cmd pid ||||| time | caller \n"); | 1536 | seq_puts(m, "# cmd pid |||||| time | caller \n"); |
1536 | seq_puts(m, "# \\ / ||||| \\ | / \n"); | 1537 | seq_puts(m, "# \\ / |||||| \\ | / \n"); |
1537 | } | 1538 | } |
1538 | 1539 | ||
1539 | static void print_func_help_header(struct seq_file *m) | 1540 | static void print_func_help_header(struct seq_file *m) |