]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
perf hist browser: Fix hierarchy column counts
authorNamhyung Kim <namhyung@kernel.org>
Mon, 24 Oct 2016 16:21:10 +0000 (01:21 +0900)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 9 Nov 2016 14:19:28 +0000 (11:19 -0300)
The perf report/top on TUI supports horizontal scrolling using LEFT and
RIGHT keys.

But it calculate the number of columns incorrectly when hierarchy mode
is enabled so that keep pressing RIGHT key can make the output
disappeared.

In the hierarchy mode, all sort keys are collapsed into a single column,
so it needs to be applied when calculating column numbers.

Reported-and-Tested-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20161024162110.17918-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/ui/browsers/hists.c

index 4ffff7be92993e02f37fd4be8d79c23b11be9d85..5adedc1a09d335ee10f3bdd4adc7a6ca2f644d57 100644 (file)
@@ -2076,8 +2076,21 @@ void hist_browser__init(struct hist_browser *browser,
        browser->b.use_navkeypressed    = true;
        browser->show_headers           = symbol_conf.show_hist_headers;
 
-       hists__for_each_format(hists, fmt)
+       if (symbol_conf.report_hierarchy) {
+               struct perf_hpp_list_node *fmt_node;
+
+               /* count overhead columns (in the first node) */
+               fmt_node = list_first_entry(&hists->hpp_formats,
+                                           struct perf_hpp_list_node, list);
+               perf_hpp_list__for_each_format(&fmt_node->hpp, fmt)
+                       ++browser->b.columns;
+
+               /* add a single column for whole hierarchy sort keys*/
                ++browser->b.columns;
+       } else {
+               hists__for_each_format(hists, fmt)
+                       ++browser->b.columns;
+       }
 
        hists__reset_column_width(hists);
 }