diff options
author | Namhyung Kim <namhyung@kernel.org> | 2016-09-13 03:45:49 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-09-13 15:41:21 -0400 |
commit | 9a6ad25b5a2026ba1399abc879ec623957867e79 (patch) | |
tree | ac9b24f55cbc6416343064cf34c7330d1abb312d /tools/perf/ui | |
parent | d2580c7a5b4e78bffda1e53cfd583e7a2c7383a5 (diff) |
perf ui/stdio: Always reset output width for hierarchy
When the --hierarchy option is used, each entry has its own hpp_list to
show the result. But it is not updating the width of each column for
perf-top. The perf-report command has no problem since it resets it
during header display.
$ sudo perf top --hierarchy --stdio
PerfTop: 160 irqs/sec kernel:38.8% exact: 100.0%
[4000Hz cycles:pp], (all, 12 CPUs)
----------------------------------------------------------------------
52.32% perf
24.74% [.] __symbols__insert
5.62% [.] rb_next
5.14% [.] dso__load_sym
Move the code into hists__fprintf() so that it can be called always.
Also it'd be better to put similar code together.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Fixes: 1b2dbbf41a0f ("perf hists: Use own hpp_list for hierarchy mode")
Link: http://lkml.kernel.org/r/20160913074552.13284-5-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/ui')
-rw-r--r-- | tools/perf/ui/stdio/hist.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c index 9b65f4a6b35a..18b4fd9342cd 100644 --- a/tools/perf/ui/stdio/hist.c +++ b/tools/perf/ui/stdio/hist.c | |||
@@ -628,14 +628,6 @@ hists__fprintf_hierarchy_headers(struct hists *hists, | |||
628 | struct perf_hpp *hpp, | 628 | struct perf_hpp *hpp, |
629 | FILE *fp) | 629 | FILE *fp) |
630 | { | 630 | { |
631 | struct perf_hpp_list_node *fmt_node; | ||
632 | struct perf_hpp_fmt *fmt; | ||
633 | |||
634 | list_for_each_entry(fmt_node, &hists->hpp_formats, list) { | ||
635 | perf_hpp_list__for_each_format(&fmt_node->hpp, fmt) | ||
636 | perf_hpp__reset_width(fmt, hists); | ||
637 | } | ||
638 | |||
639 | return print_hierarchy_header(hists, hpp, symbol_conf.field_sep, fp); | 631 | return print_hierarchy_header(hists, hpp, symbol_conf.field_sep, fp); |
640 | } | 632 | } |
641 | 633 | ||
@@ -733,6 +725,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows, | |||
733 | bool use_callchain) | 725 | bool use_callchain) |
734 | { | 726 | { |
735 | struct perf_hpp_fmt *fmt; | 727 | struct perf_hpp_fmt *fmt; |
728 | struct perf_hpp_list_node *node; | ||
736 | struct rb_node *nd; | 729 | struct rb_node *nd; |
737 | size_t ret = 0; | 730 | size_t ret = 0; |
738 | const char *sep = symbol_conf.field_sep; | 731 | const char *sep = symbol_conf.field_sep; |
@@ -745,6 +738,11 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows, | |||
745 | 738 | ||
746 | hists__for_each_format(hists, fmt) | 739 | hists__for_each_format(hists, fmt) |
747 | perf_hpp__reset_width(fmt, hists); | 740 | perf_hpp__reset_width(fmt, hists); |
741 | /* hierarchy entries have their own hpp list */ | ||
742 | list_for_each_entry(node, &hists->hpp_formats, list) { | ||
743 | perf_hpp_list__for_each_format(&node->hpp, fmt) | ||
744 | perf_hpp__reset_width(fmt, hists); | ||
745 | } | ||
748 | 746 | ||
749 | if (symbol_conf.col_width_list_str) | 747 | if (symbol_conf.col_width_list_str) |
750 | perf_hpp__set_user_width(symbol_conf.col_width_list_str); | 748 | perf_hpp__set_user_width(symbol_conf.col_width_list_str); |