diff options
-rw-r--r-- | kernel/trace/trace_functions_graph.c | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c index 32b7fb9a19df..af60eef4cbcc 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c | |||
@@ -570,11 +570,36 @@ print_graph_function(struct trace_iterator *iter) | |||
570 | } | 570 | } |
571 | } | 571 | } |
572 | 572 | ||
573 | static void print_graph_headers(struct seq_file *s) | ||
574 | { | ||
575 | /* 1st line */ | ||
576 | seq_printf(s, "# "); | ||
577 | if (tracer_flags.val & TRACE_GRAPH_PRINT_CPU) | ||
578 | seq_printf(s, "CPU "); | ||
579 | if (tracer_flags.val & TRACE_GRAPH_PRINT_PROC) | ||
580 | seq_printf(s, "TASK/PID "); | ||
581 | if (tracer_flags.val & TRACE_GRAPH_PRINT_OVERHEAD) | ||
582 | seq_printf(s, "OVERHEAD/"); | ||
583 | seq_printf(s, "DURATION FUNCTION CALLS\n"); | ||
584 | |||
585 | /* 2nd line */ | ||
586 | seq_printf(s, "# "); | ||
587 | if (tracer_flags.val & TRACE_GRAPH_PRINT_CPU) | ||
588 | seq_printf(s, "| "); | ||
589 | if (tracer_flags.val & TRACE_GRAPH_PRINT_PROC) | ||
590 | seq_printf(s, "| | "); | ||
591 | if (tracer_flags.val & TRACE_GRAPH_PRINT_OVERHEAD) { | ||
592 | seq_printf(s, "| "); | ||
593 | seq_printf(s, "| | | | |\n"); | ||
594 | } else | ||
595 | seq_printf(s, " | | | | |\n"); | ||
596 | } | ||
573 | static struct tracer graph_trace __read_mostly = { | 597 | static struct tracer graph_trace __read_mostly = { |
574 | .name = "function_graph", | 598 | .name = "function_graph", |
575 | .init = graph_trace_init, | 599 | .init = graph_trace_init, |
576 | .reset = graph_trace_reset, | 600 | .reset = graph_trace_reset, |
577 | .print_line = print_graph_function, | 601 | .print_line = print_graph_function, |
602 | .print_header = print_graph_headers, | ||
578 | .flags = &tracer_flags, | 603 | .flags = &tracer_flags, |
579 | }; | 604 | }; |
580 | 605 | ||