perf evsel: Allow specifying a file to output in perf_evsel__print_ip
tip-bot for Milian Wolff
merge botCommit-ID: 6186de9a491af030889b372193fc9f38c248e69a Gitweb: http://git.kernel.org/tip/6186de9a491af030889b372193fc9f38c248e69a Author: Milian Wolff <[email protected]> AuthorDate: Mon, 11 Apr 2016 10:18:11 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 11 Apr 2016 22:18:14 -0300
perf evsel: Allow specifying a file to output in perf_evsel__print_ip
As this function will be used in 'perf trace'.
Cc Jiri Olsa <[email protected]>
[ Split from a larger patch ]
Signed-off-by Milian Wolff <[email protected]>
--- tools/perf/builtin-script.c | 4 ++-- tools/perf/util/session.c | 39 +++++++++++++++++++++------------------ tools/perf/util/session.h | 3 ++- 3 files changed, 25 insertions(+), 21 deletions(-)
tools/perf/builtin-script.c +2 -2
@@ -580,7 +580,7 @@ static void print_sample_bts(struct perf_sample *sample, } }perf_evsel__print_ip (evsel, sample, al, print_opts, - scripting_max_stack); + scripting_max_stack, stdout); }/* print branch_to information */
@@ -790,7 +790,7 @@ static void process_event(struct perf_script *script,perf_evsel__print_ip (evsel, sample, al, output[attr->type].print_ip_opts, - scripting_max_stack); + scripting_max_stack, stdout); }if (PRINT_FIELD (IREGS ))
tools/perf/util/session.c +21 -18
@@ -1955,7 +1955,8 @@ struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session,void perf_evsel__print_ip (struct perf_evsel *evsel,struct perf_sample *sample,struct addr_location *al, -unsigned int print_opts,unsigned int stack_depth) +unsigned int print_opts,unsigned int stack_depth, +FILE *fp) {struct callchain_cursor_node *node;int print_ip = print_opts &PRINT_IP_OPT_IP ;
@@ -1992,33 +1993,35 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, struct perf_sample *sample, goto next;if (print_ip) -printf ("%c%16" PRIx64, s, node->ip); +fprintf (fp,"%c%16" PRIx64, s, node->ip);if (node->map) addr = node->map->map_ip (node->map, node->ip);if (print_sym) { -printf (" " ); +fprintf (fp," " );if (print_symoffset) { node_al.addr = addr; node_al.map = node->map; -symbol__fprintf_symname_offs (node->sym, &node_al, stdout); +symbol__fprintf_symname_offs (node->sym, + &node_al, + fp); }else -symbol__fprintf_symname (node->sym, stdout); +symbol__fprintf_symname (node->sym, fp); }if (print_dso) { -printf (" (" ); -map__fprintf_dsoname (node->map, stdout); -printf (")" ); +fprintf (fp," (" ); +map__fprintf_dsoname (node->map, fp); +fprintf (fp,")" ); }if (print_srcline)map__fprintf_srcline (node->map, addr,"\n " , - stdout); + fp);if (!print_oneline) -printf ("\n" ); +fprintf (fp,"\n" ); stack_depth--; next:
@@ -2030,25 +2033,25 @@ next:return ;if (print_ip) -printf ("%16" PRIx64, sample->ip); +fprintf (fp,"%16" PRIx64, sample->ip);if (print_sym) { -printf (" " ); +fprintf (fp," " );if (print_symoffset)symbol__fprintf_symname_offs (al->sym, al, - stdout); + fp);else -symbol__fprintf_symname (al->sym, stdout); +symbol__fprintf_symname (al->sym, fp); }if (print_dso) { -printf (" (" ); -map__fprintf_dsoname (al->map, stdout); -printf (")" ); +fprintf (fp," (" ); +map__fprintf_dsoname (al->map, fp); +fprintf (fp,")" ); }if (print_srcline) -map__fprintf_srcline (al->map, al->addr,"\n " , stdout); +map__fprintf_srcline (al->map, al->addr,"\n " , fp); } }
tools/perf/util/session.h +2 -1
@@ -106,7 +106,8 @@ struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session,void perf_evsel__print_ip (struct perf_evsel *evsel,struct perf_sample *sample,struct addr_location *al, -unsigned int print_opts,unsigned int stack_depth); +unsigned int print_opts,unsigned int stack_depth, +FILE *fp);int perf_session__cpu_bitmap (struct perf_session *session,const char *cpu_list,unsigned long *cpu_bitmap);