perf evsel: Introduce fprintf_callchain() method out of fprintf_sym()
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: ea4539652eccc87b14fbcbc90467ebcb87f02ddb Gitweb: http://git.kernel.org/tip/ea4539652eccc87b14fbcbc90467ebcb87f02ddb Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Mon, 11 Apr 2016 12:15:48 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 11 Apr 2016 22:18:18 -0300
perf evsel: Introduce fprintf_callchain() method out of fprintf_sym()
In 'perf trace' we're just interested in printing callchains, and we don't want to use the symbol_conf.use_callchain, so move the callchain part to a new method.
Cc Adrian Hunter <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Milian Wolff <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-trace.c | 4 ++-- tools/perf/util/evsel.h | 6 ++++++ tools/perf/util/session.c | 29 ++++++++++++++++++++++++----- 3 files changed, 32 insertions(+), 7 deletions(-)
tools/perf/builtin-trace.c +2 -2
@@ -2203,8 +2203,8 @@ signed_print: event->header.type); goto out_put; } -perf_evsel__fprintf_sym (evsel, sample, &al,38 , print_opts, - scripting_max_stack, trace->output); +perf_evsel__fprintf_callchain (evsel, sample, &al,38 , print_opts, + scripting_max_stack, trace->output); } out: ttrace->entry_pending = false;
tools/perf/util/evsel.h +6 -0
@@ -381,6 +381,12 @@ struct perf_attr_details {int perf_evsel__fprintf (struct perf_evsel *evsel,struct perf_attr_details *details,FILE *fp); +int perf_evsel__fprintf_callchain (struct perf_evsel *evsel, +struct perf_sample *sample, +struct addr_location *al,int left_alignment, +unsigned int print_opts, +unsigned int stack_depth,FILE *fp); +bool perf_evsel__fallback (struct perf_evsel *evsel,int err,char *msg,size_t msgsize); int perf_evsel__open_strerror(struct perf_evsel *evsel, struct target *target,
tools/perf/util/session.c +24 -5
@@ -1953,10 +1953,10 @@ struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session,return NULL ; } -int perf_evsel__fprintf_sym (struct perf_evsel *evsel,struct perf_sample *sample, -struct addr_location *al,int left_alignment, -unsigned int print_opts,unsigned int stack_depth, -FILE *fp) +int perf_evsel__fprintf_callchain (struct perf_evsel *evsel,struct perf_sample *sample, +struct addr_location *al,int left_alignment, +unsigned int print_opts,unsigned int stack_depth, +FILE *fp) {int printed =0 ;struct callchain_cursor_node *node;
@@ -1968,7 +1968,7 @@ int perf_evsel__fprintf_sym(struct perf_evsel *evsel, struct perf_sample *sampleint print_srcline = print_opts &PRINT_IP_OPT_SRCLINE ;char s = print_oneline ?' ' :'\t' ; -if (symbol_conf.use_callchain && sample->callchain) { +if (sample->callchain) {struct addr_location node_al; if (thread__resolve_callchain(al->thread, evsel,
@@ -2027,7 +2027,26 @@ int perf_evsel__fprintf_sym(struct perf_evsel *evsel, struct perf_sample *sample next:callchain_cursor_advance (&callchain_cursor); } + } + +return printed; +} + +int perf_evsel__fprintf_sym (struct perf_evsel *evsel,struct perf_sample *sample, +struct addr_location *al,int left_alignment, +unsigned int print_opts,unsigned int stack_depth, +FILE *fp) +{ +int printed =0 ; +int print_ip = print_opts &PRINT_IP_OPT_IP ; +int print_sym = print_opts &PRINT_IP_OPT_SYM ; +int print_dso = print_opts &PRINT_IP_OPT_DSO ; +int print_symoffset = print_opts &PRINT_IP_OPT_SYMOFFSET ; +int print_srcline = print_opts &PRINT_IP_OPT_SRCLINE ; +if (symbol_conf.use_callchain && sample->callchain) { + printed +=perf_evsel__fprintf_callchain (evsel, sample, al, left_alignment, + print_opts, stack_depth, fp); }else if (!(al->sym && al->sym->ignore)) { printed +=fprintf (fp,"%-*.*s" , left_alignment, left_alignment," " );