diff options
| author | Jiri Olsa <jolsa@redhat.com> | 2010-04-02 19:01:22 +0200 | 
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2010-04-27 12:36:53 -0400 | 
| commit | 62b915f1060996a8e1f69be50e3b8e9e43b710cb (patch) | |
| tree | 26741f065b30b67022d680c3bc2afbda319638e1 /kernel/trace/trace.c | |
| parent | d7a8d9e907cc294ec7a4a7046d1886375fbcc82e (diff) | |
| download | olio-linux-3.10-62b915f1060996a8e1f69be50e3b8e9e43b710cb.tar.xz olio-linux-3.10-62b915f1060996a8e1f69be50e3b8e9e43b710cb.zip  | |
tracing: Add graph output support for irqsoff tracer
Add function graph output to irqsoff tracer.
The graph output is enabled by setting new 'display-graph' trace option.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
LKML-Reference: <1270227683-14631-4-git-send-email-jolsa@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.c')
| -rw-r--r-- | kernel/trace/trace.c | 35 | 
1 files changed, 22 insertions, 13 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 7b516c7ef9a..8b9ba41ec14 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -1808,7 +1808,7 @@ static void print_func_help_header(struct seq_file *m)  } -static void +void  print_trace_header(struct seq_file *m, struct trace_iterator *iter)  {  	unsigned long sym_flags = (trace_flags & TRACE_ITER_SYM_MASK); @@ -2017,7 +2017,7 @@ static enum print_line_t print_bin_fmt(struct trace_iterator *iter)  	return event ? event->binary(iter, 0) : TRACE_TYPE_HANDLED;  } -static int trace_empty(struct trace_iterator *iter) +int trace_empty(struct trace_iterator *iter)  {  	int cpu; @@ -2084,6 +2084,23 @@ static enum print_line_t print_trace_line(struct trace_iterator *iter)  	return print_trace_fmt(iter);  } +void trace_default_header(struct seq_file *m) +{ +	struct trace_iterator *iter = m->private; + +	if (iter->iter_flags & TRACE_FILE_LAT_FMT) { +		/* print nothing if the buffers are empty */ +		if (trace_empty(iter)) +			return; +		print_trace_header(m, iter); +		if (!(trace_flags & TRACE_ITER_VERBOSE)) +			print_lat_help_header(m); +	} else { +		if (!(trace_flags & TRACE_ITER_VERBOSE)) +			print_func_help_header(m); +	} +} +  static int s_show(struct seq_file *m, void *v)  {  	struct trace_iterator *iter = v; @@ -2096,17 +2113,9 @@ static int s_show(struct seq_file *m, void *v)  		}  		if (iter->trace && iter->trace->print_header)  			iter->trace->print_header(m); -		else if (iter->iter_flags & TRACE_FILE_LAT_FMT) { -			/* print nothing if the buffers are empty */ -			if (trace_empty(iter)) -				return 0; -			print_trace_header(m, iter); -			if (!(trace_flags & TRACE_ITER_VERBOSE)) -				print_lat_help_header(m); -		} else { -			if (!(trace_flags & TRACE_ITER_VERBOSE)) -				print_func_help_header(m); -		} +		else +			trace_default_header(m); +  	} else if (iter->leftover) {  		/*  		 * If we filled the seq_file buffer earlier, we  |