Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a6ad25b authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo
Browse files

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: default avatarNamhyung Kim <namhyung@kernel.org>
Tested-by: default avatarArnaldo 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: 1b2dbbf4 ("perf hists: Use own hpp_list for hierarchy mode")
Link: http://lkml.kernel.org/r/20160913074552.13284-5-namhyung@kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent d2580c7a
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -628,14 +628,6 @@ hists__fprintf_hierarchy_headers(struct hists *hists,
				 struct perf_hpp *hpp,
				 FILE *fp)
{
	struct perf_hpp_list_node *fmt_node;
	struct perf_hpp_fmt *fmt;

	list_for_each_entry(fmt_node, &hists->hpp_formats, list) {
		perf_hpp_list__for_each_format(&fmt_node->hpp, fmt)
			perf_hpp__reset_width(fmt, hists);
	}

	return print_hierarchy_header(hists, hpp, symbol_conf.field_sep, fp);
}

@@ -733,6 +725,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
		      bool use_callchain)
{
	struct perf_hpp_fmt *fmt;
	struct perf_hpp_list_node *node;
	struct rb_node *nd;
	size_t ret = 0;
	const char *sep = symbol_conf.field_sep;
@@ -745,6 +738,11 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,

	hists__for_each_format(hists, fmt)
		perf_hpp__reset_width(fmt, hists);
	/* hierarchy entries have their own hpp list */
	list_for_each_entry(node, &hists->hpp_formats, list) {
		perf_hpp_list__for_each_format(&node->hpp, fmt)
			perf_hpp__reset_width(fmt, hists);
	}

	if (symbol_conf.col_width_list_str)
		perf_hpp__set_user_width(symbol_conf.col_width_list_str);