All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
	Milian Wolff <milian.wolff@kdab.com>,
	Jiri Olsa <jolsa@kernel.org>
Subject: [PATCH 08/19] perf evsel: Allow specifying a file to output in perf_evsel__print_ip
Date: Mon, 11 Apr 2016 22:53:39 -0300	[thread overview]
Message-ID: <1460426030-27319-9-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1460426030-27319-1-git-send-email-acme@kernel.org>

From: Milian Wolff <milian.wolff@kdab.com>

As this function will be used in 'perf trace'.

Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/n/tip-8x297v9utnxq77onikevvlse@git.kernel.org
[ Split from a larger patch ]
Signed-off-by: Milian Wolff <milian.wolff@kdab.com>
---
 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(-)

diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 8f6ab2ac855a..dbf208f0cdc2 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -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))
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index ef370557fb9a..bbac0efbc10c 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -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);
 	}
 }
 
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h
index f96fc9e8c52e..0ee3d9dbc099 100644
--- a/tools/perf/util/session.h
+++ b/tools/perf/util/session.h
@@ -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);
-- 
2.5.5

  parent reply	other threads:[~2016-04-12  2:00 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-12  1:53 [GIT PULL 00/19] perf/core improvements Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 01/19] perf script: Use readdir() instead of deprecated readdir_r() Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 02/19] perf thread_map: " Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 03/19] perf tools: " Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 04/19] " Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 05/19] perf dwarf: Guard !x86_64 definitions under #ifdef else clause Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 06/19] perf bpf: Clone bpf stdout events in multiple bpf scripts Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 07/19] perf bpf: Automatically create bpf-output event __bpf_stdout__ Arnaldo Carvalho de Melo
2016-04-12  1:53 ` Arnaldo Carvalho de Melo [this message]
2016-04-12  1:53 ` [PATCH 09/19] perf evsel: Allow passing a left alignment when printing a symbol Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 10/19] perf trace: Add support for printing call chains on sys_exit events Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 11/19] perf evsel: Rename print_ip() to fprintf_sym() Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 12/19] perf evsel: Introduce fprintf_callchain() method out of fprintf_sym() Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 13/19] perf trace: Exclude the kernel part of the callchain leading to a syscall Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 14/19] perf evsel: Do not use globals in config() Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 15/19] perf evlist: Add (reset,set)_sample_bit methods Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 16/19] perf evsel: Rename config_callgraph() to config_callchain() and make it public Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 17/19] perf trace: Make "--call-graph" affect just "raw_syscalls:sys_exit" Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 18/19] perf evsel: Allow unresolved symbol names to be printed as addresses Arnaldo Carvalho de Melo
2016-04-12  1:53 ` [PATCH 19/19] perf trace: Print unresolved symbol names " Arnaldo Carvalho de Melo
2016-04-13  7:03 ` [GIT PULL 00/19] perf/core improvements Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1460426030-27319-9-git-send-email-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=milian.wolff@kdab.com \
    --cc=mingo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.