aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung@kernel.org>2014-03-19 22:18:54 -0400
committerJiri Olsa <jolsa@kernel.org>2014-05-21 05:45:36 -0400
commit678a500d076ec873b8809041c6b718653db2a75f (patch)
treed4a999436440d5edabc51fc1a7d7236e2d2d7ab6 /tools/perf
parente67d49a72df9aa50841ad400f7a99405e4980ee4 (diff)
perf hists: Reset width of output fields with header length
Some fields missed to set default column length so it broke align in --stdio output. Add perf_hpp__reset_width() to set it to a sane default value. Note that this change will ignore -w/--column-widths option for now. Before: $ perf report -F cpu,comm,overhead --stdio ... # CPU Command Overhead # ............... ........ # 0 firefox 2.65% 0 kworker/0:0 1.45% 0 swapper 5.52% 0 synergys 0.92% 1 firefox 4.54% After: # CPU Command Overhead # ... ............... ........ # 0 firefox 2.65% 0 kworker/0:0 1.45% 0 swapper 5.52% 0 synergys 0.92% 1 firefox 4.54% Signed-off-by: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/r/1400480762-22852-17-git-send-email-namhyung@kernel.org Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/ui/stdio/hist.c21
-rw-r--r--tools/perf/util/hist.h1
-rw-r--r--tools/perf/util/sort.c12
3 files changed, 16 insertions, 18 deletions
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index e3fdf4e869fc..cfcd3f6fd1c5 100644
--- a/tools/perf/ui/stdio/hist.c
+++ b/tools/perf/ui/stdio/hist.c
@@ -369,12 +369,10 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
369 int max_cols, float min_pcnt, FILE *fp) 369 int max_cols, float min_pcnt, FILE *fp)
370{ 370{
371 struct perf_hpp_fmt *fmt; 371 struct perf_hpp_fmt *fmt;
372 struct sort_entry *se;
373 struct rb_node *nd; 372 struct rb_node *nd;
374 size_t ret = 0; 373 size_t ret = 0;
375 unsigned int width; 374 unsigned int width;
376 const char *sep = symbol_conf.field_sep; 375 const char *sep = symbol_conf.field_sep;
377 const char *col_width = symbol_conf.col_width_list_str;
378 int nr_rows = 0; 376 int nr_rows = 0;
379 char bf[96]; 377 char bf[96];
380 struct perf_hpp dummy_hpp = { 378 struct perf_hpp dummy_hpp = {
@@ -387,22 +385,9 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
387 385
388 init_rem_hits(); 386 init_rem_hits();
389 387
390 list_for_each_entry(se, &hist_entry__sort_list, list) { 388
391 if (se->elide) 389 perf_hpp__for_each_format(fmt)
392 continue; 390 perf_hpp__reset_width(fmt, hists);
393 width = strlen(se->se_header);
394 if (symbol_conf.col_width_list_str) {
395 if (col_width) {
396 hists__set_col_len(hists, se->se_width_idx,
397 atoi(col_width));
398 col_width = strchr(col_width, ',');
399 if (col_width)
400 ++col_width;
401 }
402 }
403 if (!hists__new_col_len(hists, se->se_width_idx, width))
404 width = hists__col_len(hists, se->se_width_idx);
405 }
406 391
407 if (!show_header) 392 if (!show_header)
408 goto print_entries; 393 goto print_entries;
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index f67feb432a44..034db761630e 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -202,6 +202,7 @@ void perf_hpp__append_sort_keys(void);
202bool perf_hpp__is_sort_entry(struct perf_hpp_fmt *format); 202bool perf_hpp__is_sort_entry(struct perf_hpp_fmt *format);
203bool perf_hpp__same_sort_entry(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b); 203bool perf_hpp__same_sort_entry(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b);
204bool perf_hpp__should_skip(struct perf_hpp_fmt *format); 204bool perf_hpp__should_skip(struct perf_hpp_fmt *format);
205void perf_hpp__reset_width(struct perf_hpp_fmt *fmt, struct hists *hists);
205 206
206typedef u64 (*hpp_field_fn)(struct hist_entry *he); 207typedef u64 (*hpp_field_fn)(struct hist_entry *he);
207typedef int (*hpp_callback_fn)(struct perf_hpp *hpp, bool front); 208typedef int (*hpp_callback_fn)(struct perf_hpp *hpp, bool front);
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 0fe7cbe47ea3..9bee7288465f 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1089,6 +1089,18 @@ bool perf_hpp__same_sort_entry(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
1089 return hse_a->se == hse_b->se; 1089 return hse_a->se == hse_b->se;
1090} 1090}
1091 1091
1092void perf_hpp__reset_width(struct perf_hpp_fmt *fmt, struct hists *hists)
1093{
1094 struct hpp_sort_entry *hse;
1095
1096 if (!perf_hpp__is_sort_entry(fmt))
1097 return;
1098
1099 hse = container_of(fmt, struct hpp_sort_entry, hpp);
1100 hists__new_col_len(hists, hse->se->se_width_idx,
1101 strlen(hse->se->se_header));
1102}
1103
1092static int __sort__hpp_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, 1104static int __sort__hpp_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
1093 struct perf_evsel *evsel) 1105 struct perf_evsel *evsel)
1094{ 1106{