perf tools tui: Display columns headers
Jiri Olsa
reviewerv4 cover perf tools tui: Display columns headers
hi,
adding the way to display columns headers in perf TUI on 'H' press.
v4 changes:
- split hist_browser__refresh_dimensions change into separated patch, plus dimension update change (Arnaldo)
v3 changes:
- changed report.show-headers to ui.show-headers and fix default value setting for it (Namhyung)
- ommited v2 patch 1
- v2 patches 2 and 3 already in
v2 changes:
- fixed resize/popup issues (Namhyung)
- display headers by default (Namhyung)
- add 'show-headers' config file option to setup the headers displaying
Also reachable in here:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/core_headers
thanks,
jirka
---
Jiri Olsa (3):
perf tools tui: Remove width setting from hist_browser__refresh_dimensions perf tools tui: Display columns header text on 'H' press
perf tools: Add ui.show-headers config file option
tools/perf/ui/browsers/hists.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/perf/util/config.c | 13 +++++++++++++ tools/perf/util/symbol.c | 1 + tools/perf/util/symbol.h | 3 ++- 4 files changed, 93 insertions(+), 4 deletions(-)
Jiri Olsa
reviewerPATCH v4 1/3 perf tools tui: Remove width setting from hist_browser__refresh_dimensions
We always use the full width of the screen, so just use the detected width. Calling ui_browser__refresh_dimensions to get the current terminal screen scale.
--- tools/perf/ui/browsers/hists.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
tools/perf/ui/browsers/hists.c +1 -3
@@ -58,9 +58,7 @@ static u32 hist_browser__nr_entries(struct hist_browser *hb)static void hist_browser__refresh_dimensions (struct hist_browser *browser) { -/* 3 == +/- toggle symbol before actual hist_entry rendering */ - browser->b.width =3 + (hists__sort_list_width (browser->hists) + -sizeof ("[k]" )); +ui_browser__refresh_dimensions (&browser->b); }static void hist_browser__reset (struct hist_browser *browser)
Signature · 1 line
1.8.3.1
Jiri Olsa
reviewerPATCH v4 2/3 perf tools tui: Display columns header text on 'H' press
In reply to Jiri OlsaDisplaying columns header text whenever 'H' is pressed, and hiding it on on another press. Displaying headers by default.
--- tools/perf/ui/browsers/hists.c | 76 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+)
tools/perf/ui/browsers/hists.c +76 -0
@@ -26,6 +26,7 @@ struct hist_browser {struct map_symbol *selection;int print_seq;bool show_dso; +bool show_headers;float min_pcnt;u64 nr_non_filtered_entries;u64 nr_callchain_rows;
@@ -58,7 +59,13 @@ static u32 hist_browser__nr_entries(struct hist_browser *hb)static void hist_browser__refresh_dimensions (struct hist_browser *browser) { +u16 header = browser->show_headers ?1 :0 ; +ui_browser__refresh_dimensions (&browser->b); + +/* shrink view size if there are headers displayed */ + browser->b.height -= header; + browser->b.y += header; }static void hist_browser__reset (struct hist_browser *browser)
@@ -407,6 +414,9 @@ static int hist_browser__run(struct hist_browser *browser,/* Expand the whole world. */ hist_browser__set_folding (browser, true);break ; +case 'H' : + browser->show_headers = !browser->show_headers; +continue ;case K_ENTER :if (hist_browser__toggle_fold (browser))break ;
@@ -785,6 +795,65 @@ static int hist_browser__show_entry(struct hist_browser *browser,return printed; } +static int advance_hpp_check (struct perf_hpp *hpp,int inc) +{ +advance_hpp (hpp, inc); +return hpp->size <=0 ; +} + +static int hists__scnprintf_headers (char *buf,size_t size,struct hists *hists) +{ +struct perf_hpp dummy_hpp = { + .buf = buf, + .size = size, + }; +struct perf_hpp_fmt *fmt; +size_t ret =0 ; + +if (symbol_conf.use_callchain) { + ret =scnprintf (buf, size," " ); +if (advance_hpp_check (&dummy_hpp, ret)) +return ret; + } + +perf_hpp__for_each_format (fmt) { +if (perf_hpp__should_skip (fmt)) +continue ; + +/* We need to add the length of the columns header. */ +perf_hpp__reset_width (fmt, hists); + + ret = fmt->header (fmt, &dummy_hpp,hists_to_evsel (hists)); +if (advance_hpp_check (&dummy_hpp, ret)) +break ; + + ret =scnprintf (dummy_hpp.buf, dummy_hpp.size," " ); +if (advance_hpp_check (&dummy_hpp, ret)) +break ; + } + +return ret; +} + +static void ui_browser__show_headers (struct ui_browser *b,char *headers) +{ +SLsmg_gotorc (1 ,0 ); +ui_browser__set_color (b,HE_COLORSET_ROOT ); +slsmg_write_nstring (headers, b->width +1 ); +} + +static void hist_browser__show_headers (struct hist_browser *hb) +{ +static char buf[1024 ], *headers; + +if (!headers) { +hists__scnprintf_headers (buf,sizeof (buf), hb->hists); + headers = buf; + } + +ui_browser__show_headers (&hb->b, headers); +} +static void ui_browser__hists_init_top (struct ui_browser *browser) {if (browser->top ==NULL ) {
@@ -801,6 +870,11 @@ static unsigned int hist_browser__refresh(struct ui_browser *browser)struct rb_node *nd; struct hist_browser *hb = container_of(browser, struct hist_browser, b); +hist_browser__refresh_dimensions (hb); + +if (hb->show_headers) +hist_browser__show_headers (hb); +ui_browser__hists_init_top (browser);for (nd = browser->top; nd; nd =rb_next (nd)) {
@@ -1190,6 +1264,7 @@ static struct hist_browser *hist_browser__new(struct hists *hists) browser->b.refresh = hist_browser__refresh; browser->b.seek = ui_browser__hists_seek; browser->b.use_navkeypressed = true; + browser->show_headers = true; }return browser;
@@ -1419,6 +1494,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,"d Zoom into current DSO\n" \"E Expand all callchains\n" \"F Toggle percentage of filtered entries\n" \ +"H Display column headers\n" \/* help messages are sorted by lexical order of the hotkey */ const char report_help[] = HIST_BROWSER_HELP_COMMON
Signature · 1 line
1.8.3.1
Jiri Olsa
reviewerPATCH v4 3/3 perf tools: Add ui.show-headers config file option
In reply to Jiri OlsaAdding report.show-headers config file option to setup the appearance of the columns headers.
Currently columns headers are displayed by default, following lines in ~/.perfconfig file will disable that:
[ui]
show-headers = true
--- tools/perf/ui/browsers/hists.c | 2 +- tools/perf/util/config.c | 13 +++++++++++++ tools/perf/util/symbol.c | 1 + tools/perf/util/symbol.h | 3 ++- 4 files changed, 17 insertions(+), 2 deletions(-)
tools/perf/ui/browsers/hists.c +1 -1
@@ -1264,7 +1264,7 @@ static struct hist_browser *hist_browser__new(struct hists *hists) browser->b.refresh = hist_browser__refresh; browser->b.seek = ui_browser__hists_seek; browser->b.use_navkeypressed = true; - browser->show_headers = true; + browser->show_headers = symbol_conf.show_headers; }return browser;
tools/perf/util/config.c +13 -0
@@ -350,6 +350,16 @@ static int perf_default_core_config(const char *var __maybe_unused,return 0 ; } +static int perf_ui_config (const char *var,const char *value) +{ +/* Add other config variables here. */ +if (!strcmp (var,"ui.show-headers" )) { + symbol_conf.show_headers =perf_config_bool (var, value); +return 0 ; + } +return 0 ; +} +int perf_default_config (const char *var,const char *value,void *dummy__maybe_unused ) {
@@ -359,6 +369,9 @@ int perf_default_config(const char *var, const char *value,if (!prefixcmp (var,"hist." ))return perf_hist_config (var, value); +if (!prefixcmp (var,"ui." )) +return perf_ui_config (var, value); +/* Add other config variables here. */ return 0 ; }
tools/perf/util/symbol.c +1 -0
@@ -34,6 +34,7 @@ struct symbol_conf symbol_conf = { .annotate_src = true, .demangle = true, .cumulate_callchain = true, + .show_headers = true, .symfs = "", };
tools/perf/util/symbol.h +2 -1
@@ -118,7 +118,8 @@ struct symbol_conf { annotate_src, event_group, demangle, - filter_relative; + filter_relative, + show_headers;const char *vmlinux_name, *kallsyms_name, *source_prefix,
Signature · 1 line
1.8.3.1
Re: [PATCH 3/3] perf tools: Add ui.show-headers config file option
Hi Jiri,
2014-06-27 (금), 18:26 +0200, Jiri Olsa:
Quoted 8 lines
Adding report.show-headers config file option to setup the appearance of the columns headers.
Currently columns headers are displayed by default, following lines in ~/.perfconfig file will disable that:
[ui]
show-headers = true
s/true/false/ :)
I'm afraid that we might need to add some code to show/hide column headers for stdio and GTK too..
Quoted 9 lines
Cc Arnaldo Carvalho de Melo <[email protected]>Cc Corey Ashford <[email protected]>Cc David Ahern <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ingo Molnar <[email protected]>Cc Paul Mackerras <[email protected]>Cc Peter Zijlstra <[email protected]>Signed-off-by Jiri Olsa <[email protected]>
Anyway, with above typo fixed, patches look good!
Thanks,
Namhyung
Re: [PATCH 3/3] perf tools: Add ui.show-headers config file option
Quoted 6 lines · Namhyung Kim
Hi Jiri,
2014-06-27 (금), 18:26 +0200, Jiri Olsa:
Quoted 3 lines
Adding report.show-headers config file option to setup the appearance of the columns headers.
Quoted 7 lines
Quoted 5 lines
Currently columns headers are displayed by default, following lines in ~/.perfconfig file will disable that:
[ui]
show-headers = trues/true/false/ :)
ouch ;-)
Quoted 15 lines
I'm afraid that we might need to add some code to show/hide column headers for stdio and GTK too..
Quoted 9 lines
Cc Arnaldo Carvalho de Melo <[email protected]>Cc Corey Ashford <[email protected]>Cc David Ahern <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ingo Molnar <[email protected]>Cc Paul Mackerras <[email protected]>Cc Peter Zijlstra <[email protected]>Signed-off-by Jiri Olsa <[email protected]>
Quoted 3 lines
Anyway, with above typo fixed, patches look good!
Acked-by Namhyung Kim <[email protected]>
thanks,
jirka
tip-bot for Jiri Olsa
merge bot[tip:perf/core] perf hists browser: Add ui.show-headers config file option
In reply to Jiri Olsaperf hists browser: Add ui.show-headers config file option
Commit-ID: c83023676dc34f1b4422b842e1e2dc5c21bfc4dc Gitweb: http://git.kernel.org/tip/c83023676dc34f1b4422b842e1e2dc5c21bfc4dc Author: Jiri Olsa <[email protected]> AuthorDate: Fri, 27 Jun 2014 18:26:58 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 7 Jul 2014 15:23:31 -0300
perf hists browser: Add ui.show-headers config file option
Adding ui.show-headers config file option to define if the histogram entries headers will start visible or not.
Currently columns headers are displayed by default, following lines in ~/.perfconfig file will disable that:
[ui]
show-headers = false
--- tools/perf/ui/browsers/hists.c | 2 +- tools/perf/util/config.c | 13 +++++++++++++ tools/perf/util/symbol.c | 1 + tools/perf/util/symbol.h | 3 ++- 4 files changed, 17 insertions(+), 2 deletions(-)
tools/perf/ui/browsers/hists.c +1 -1
@@ -1284,7 +1284,7 @@ static struct hist_browser *hist_browser__new(struct hists *hists) browser->b.refresh_dimensions = hist_browser__refresh_dimensions; browser->b.seek = ui_browser__hists_seek; browser->b.use_navkeypressed = true; - browser->show_headers = true; + browser->show_headers = symbol_conf.show_hist_headers; }return browser;
tools/perf/util/config.c +13 -0
@@ -350,6 +350,16 @@ static int perf_default_core_config(const char *var __maybe_unused,return 0 ; } +static int perf_ui_config (const char *var,const char *value) +{ +/* Add other config variables here. */ +if (!strcmp (var,"ui.show-headers" )) { + symbol_conf.show_hist_headers =perf_config_bool (var, value); +return 0 ; + } +return 0 ; +} +int perf_default_config (const char *var,const char *value,void *dummy__maybe_unused ) {
@@ -359,6 +369,9 @@ int perf_default_config(const char *var, const char *value,if (!prefixcmp (var,"hist." ))return perf_hist_config (var, value); +if (!prefixcmp (var,"ui." )) +return perf_ui_config (var, value); +/* Add other config variables here. */ return 0 ; }
tools/perf/util/symbol.c +1 -0
@@ -34,6 +34,7 @@ struct symbol_conf symbol_conf = { .annotate_src = true, .demangle = true, .cumulate_callchain = true, + .show_hist_headers = true, .symfs = "", };
tools/perf/util/symbol.h +2 -1
@@ -118,7 +118,8 @@ struct symbol_conf { annotate_src, event_group, demangle, - filter_relative; + filter_relative, + show_hist_headers;const char *vmlinux_name, *kallsyms_name, *source_prefix,