diff options
Diffstat (limited to 'kernel/trace')
-rw-r--r-- | kernel/trace/trace.h | 1 | ||||
-rw-r--r-- | kernel/trace/trace_functions_graph.c | 9 |
2 files changed, 7 insertions, 3 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 68050633255e..217207ad60b3 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -725,6 +725,7 @@ extern unsigned long trace_flags; | |||
725 | #define TRACE_GRAPH_PRINT_DURATION 0x10 | 725 | #define TRACE_GRAPH_PRINT_DURATION 0x10 |
726 | #define TRACE_GRAPH_PRINT_ABS_TIME 0x20 | 726 | #define TRACE_GRAPH_PRINT_ABS_TIME 0x20 |
727 | #define TRACE_GRAPH_PRINT_IRQS 0x40 | 727 | #define TRACE_GRAPH_PRINT_IRQS 0x40 |
728 | #define TRACE_GRAPH_PRINT_TAIL 0x80 | ||
728 | #define TRACE_GRAPH_PRINT_FILL_SHIFT 28 | 729 | #define TRACE_GRAPH_PRINT_FILL_SHIFT 28 |
729 | #define TRACE_GRAPH_PRINT_FILL_MASK (0x3 << TRACE_GRAPH_PRINT_FILL_SHIFT) | 730 | #define TRACE_GRAPH_PRINT_FILL_MASK (0x3 << TRACE_GRAPH_PRINT_FILL_SHIFT) |
730 | 731 | ||
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c index af08dd531cb8..4de3e57f723c 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c | |||
@@ -55,11 +55,13 @@ static struct tracer_opt trace_opts[] = { | |||
55 | { TRACER_OPT(funcgraph-abstime, TRACE_GRAPH_PRINT_ABS_TIME) }, | 55 | { TRACER_OPT(funcgraph-abstime, TRACE_GRAPH_PRINT_ABS_TIME) }, |
56 | /* Display interrupts */ | 56 | /* Display interrupts */ |
57 | { TRACER_OPT(funcgraph-irqs, TRACE_GRAPH_PRINT_IRQS) }, | 57 | { TRACER_OPT(funcgraph-irqs, TRACE_GRAPH_PRINT_IRQS) }, |
58 | /* Display function name after trailing } */ | ||
59 | { TRACER_OPT(funcgraph-tail, TRACE_GRAPH_PRINT_TAIL) }, | ||
58 | { } /* Empty entry */ | 60 | { } /* Empty entry */ |
59 | }; | 61 | }; |
60 | 62 | ||
61 | static struct tracer_flags tracer_flags = { | 63 | static struct tracer_flags tracer_flags = { |
62 | /* Don't display overruns and proc by default */ | 64 | /* Don't display overruns, proc, or tail by default */ |
63 | .val = TRACE_GRAPH_PRINT_CPU | TRACE_GRAPH_PRINT_OVERHEAD | | 65 | .val = TRACE_GRAPH_PRINT_CPU | TRACE_GRAPH_PRINT_OVERHEAD | |
64 | TRACE_GRAPH_PRINT_DURATION | TRACE_GRAPH_PRINT_IRQS, | 66 | TRACE_GRAPH_PRINT_DURATION | TRACE_GRAPH_PRINT_IRQS, |
65 | .opts = trace_opts | 67 | .opts = trace_opts |
@@ -1167,9 +1169,10 @@ print_graph_return(struct ftrace_graph_ret *trace, struct trace_seq *s, | |||
1167 | * If the return function does not have a matching entry, | 1169 | * If the return function does not have a matching entry, |
1168 | * then the entry was lost. Instead of just printing | 1170 | * then the entry was lost. Instead of just printing |
1169 | * the '}' and letting the user guess what function this | 1171 | * the '}' and letting the user guess what function this |
1170 | * belongs to, write out the function name. | 1172 | * belongs to, write out the function name. Always do |
1173 | * that if the funcgraph-tail option is enabled. | ||
1171 | */ | 1174 | */ |
1172 | if (func_match) { | 1175 | if (func_match && !(flags & TRACE_GRAPH_PRINT_TAIL)) { |
1173 | ret = trace_seq_puts(s, "}\n"); | 1176 | ret = trace_seq_puts(s, "}\n"); |
1174 | if (!ret) | 1177 | if (!ret) |
1175 | return TRACE_TYPE_PARTIAL_LINE; | 1178 | return TRACE_TYPE_PARTIAL_LINE; |