diff options
author | Tom Zanussi <tzanussi@gmail.com> | 2010-04-02 00:59:17 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-04-14 05:56:06 -0400 |
commit | 46656ac7fb3252f8a3db29b18638e0e8067849ba (patch) | |
tree | 327aeceb67f0dac1729e8a1eef2e567bdeba235b /tools/perf/builtin-report.c | |
parent | 529870e37473a9fc609078f03cc5b4148cf06a87 (diff) |
perf report: Introduce special handling for pipe input
Adds special treatment for stdin - if the user specifies '-i -'
to perf report, the intent is that the event stream be written
to stdin rather than from a disk file.
The actual handling of the '-' filename is done by the session;
this just adds a signal handler to stop reporting, and turns off
interference by the pager.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: fweisbec@gmail.com
Cc: rostedt@goodmis.org
Cc: k-keiichi@bx.jp.nec.com
Cc: acme@ghostprotocols.net
LKML-Reference: <1270184365-8281-4-git-send-email-tzanussi@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/builtin-report.c')
-rw-r--r-- | tools/perf/builtin-report.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index daee082ab42b..00b358ff135c 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
@@ -269,6 +269,13 @@ static struct perf_event_ops event_ops = { | |||
269 | .read = process_read_event, | 269 | .read = process_read_event, |
270 | }; | 270 | }; |
271 | 271 | ||
272 | extern volatile int session_done; | ||
273 | |||
274 | static void sig_handler(int sig __attribute__((__unused__))) | ||
275 | { | ||
276 | session_done = 1; | ||
277 | } | ||
278 | |||
272 | static int __cmd_report(void) | 279 | static int __cmd_report(void) |
273 | { | 280 | { |
274 | int ret = -EINVAL; | 281 | int ret = -EINVAL; |
@@ -276,6 +283,8 @@ static int __cmd_report(void) | |||
276 | struct rb_node *next; | 283 | struct rb_node *next; |
277 | const char *help = "For a higher level overview, try: perf report --sort comm,dso"; | 284 | const char *help = "For a higher level overview, try: perf report --sort comm,dso"; |
278 | 285 | ||
286 | signal(SIGINT, sig_handler); | ||
287 | |||
279 | session = perf_session__new(input_name, O_RDONLY, force); | 288 | session = perf_session__new(input_name, O_RDONLY, force); |
280 | if (session == NULL) | 289 | if (session == NULL) |
281 | return -ENOMEM; | 290 | return -ENOMEM; |
@@ -465,7 +474,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __used) | |||
465 | { | 474 | { |
466 | argc = parse_options(argc, argv, options, report_usage, 0); | 475 | argc = parse_options(argc, argv, options, report_usage, 0); |
467 | 476 | ||
468 | setup_browser(); | 477 | if (strcmp(input_name, "-") != 0) |
478 | setup_browser(); | ||
469 | 479 | ||
470 | if (symbol__init() < 0) | 480 | if (symbol__init() < 0) |
471 | return -1; | 481 | return -1; |