diff options
Diffstat (limited to 'tools/perf/builtin-report.c')
-rw-r--r-- | tools/perf/builtin-report.c | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index f815de25d0fc..1f9f8695f055 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
@@ -267,6 +267,7 @@ static int __cmd_report(void) | |||
267 | int ret = -EINVAL; | 267 | int ret = -EINVAL; |
268 | struct perf_session *session; | 268 | struct perf_session *session; |
269 | struct rb_node *next; | 269 | struct rb_node *next; |
270 | const char *help = "For a higher level overview, try: perf report --sort comm,dso"; | ||
270 | 271 | ||
271 | session = perf_session__new(input_name, O_RDONLY, force); | 272 | session = perf_session__new(input_name, O_RDONLY, force); |
272 | if (session == NULL) | 273 | if (session == NULL) |
@@ -301,30 +302,38 @@ static int __cmd_report(void) | |||
301 | stats = rb_entry(next, struct event_stat_id, rb_node); | 302 | stats = rb_entry(next, struct event_stat_id, rb_node); |
302 | perf_session__collapse_resort(&stats->hists); | 303 | perf_session__collapse_resort(&stats->hists); |
303 | perf_session__output_resort(&stats->hists, stats->stats.total); | 304 | perf_session__output_resort(&stats->hists, stats->stats.total); |
304 | if (rb_first(&session->stats_by_id) == | ||
305 | rb_last(&session->stats_by_id)) | ||
306 | fprintf(stdout, "# Samples: %Ld\n#\n", | ||
307 | stats->stats.total); | ||
308 | else | ||
309 | fprintf(stdout, "# Samples: %Ld %s\n#\n", | ||
310 | stats->stats.total, | ||
311 | __event_name(stats->type, stats->config)); | ||
312 | 305 | ||
313 | perf_session__fprintf_hists(&stats->hists, NULL, false, stdout, | 306 | if (use_browser) |
307 | perf_session__browse_hists(&stats->hists, | ||
308 | stats->stats.total, help); | ||
309 | else { | ||
310 | if (rb_first(&session->stats_by_id) == | ||
311 | rb_last(&session->stats_by_id)) | ||
312 | fprintf(stdout, "# Samples: %Ld\n#\n", | ||
313 | stats->stats.total); | ||
314 | else | ||
315 | fprintf(stdout, "# Samples: %Ld %s\n#\n", | ||
316 | stats->stats.total, | ||
317 | __event_name(stats->type, stats->config)); | ||
318 | |||
319 | perf_session__fprintf_hists(&stats->hists, NULL, false, stdout, | ||
314 | stats->stats.total); | 320 | stats->stats.total); |
315 | fprintf(stdout, "\n\n"); | 321 | fprintf(stdout, "\n\n"); |
322 | } | ||
323 | |||
316 | next = rb_next(&stats->rb_node); | 324 | next = rb_next(&stats->rb_node); |
317 | } | 325 | } |
318 | 326 | ||
319 | if (sort_order == default_sort_order && | 327 | if (!use_browser && sort_order == default_sort_order && |
320 | parent_pattern == default_parent_pattern) | 328 | parent_pattern == default_parent_pattern) { |
321 | fprintf(stdout, "#\n# (For a higher level overview, try: perf report --sort comm,dso)\n#\n"); | 329 | fprintf(stdout, "#\n# (%s)\n#\n", help); |
322 | 330 | ||
323 | if (show_threads) { | 331 | if (show_threads) { |
324 | bool raw_printing_style = !strcmp(pretty_printing_style, "raw"); | 332 | bool style = !strcmp(pretty_printing_style, "raw"); |
325 | perf_read_values_display(stdout, &show_threads_values, | 333 | perf_read_values_display(stdout, &show_threads_values, |
326 | raw_printing_style); | 334 | style); |
327 | perf_read_values_destroy(&show_threads_values); | 335 | perf_read_values_destroy(&show_threads_values); |
336 | } | ||
328 | } | 337 | } |
329 | out_delete: | 338 | out_delete: |
330 | perf_session__delete(session); | 339 | perf_session__delete(session); |
@@ -447,7 +456,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __used) | |||
447 | { | 456 | { |
448 | argc = parse_options(argc, argv, options, report_usage, 0); | 457 | argc = parse_options(argc, argv, options, report_usage, 0); |
449 | 458 | ||
450 | setup_pager(); | 459 | setup_browser(); |
451 | 460 | ||
452 | if (symbol__init() < 0) | 461 | if (symbol__init() < 0) |
453 | return -1; | 462 | return -1; |