Commit 21e8c810 authored by Alexis Berlemont's avatar Alexis Berlemont Committed by Arnaldo Carvalho de Melo

perf hists browser: Dynamically change verbosity level

Here is a small patch which tries to fulfill a point in the perf todo
list:

* Make pressing 'V' multiple times to go on cycling thru various
  verbosity levels in 'perf top', so that info that is present in
  'perf top -v' can be obtained without having to restart the tool
  (acme).

After a small grep in the code, the max verbosity level seems 3; so,
we cycle at 4; I did not dare define a MAX_VERBOSE_LEVEL constant.
Signed-off-by: default avatarAlexis Berlemont <alexis.berlemont@gmail.com>
Suggested-and-Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20161012214823.14324-2-alexis.berlemont@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 042cfb5f
...@@ -2807,7 +2807,10 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, ...@@ -2807,7 +2807,10 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
do_zoom_dso(browser, actions); do_zoom_dso(browser, actions);
continue; continue;
case 'V': case 'V':
browser->show_dso = !browser->show_dso; verbose = (verbose + 1) % 4;
browser->show_dso = verbose > 0;
ui_helpline__fpush("Verbosity level set to %d\n",
verbose);
continue; continue;
case 't': case 't':
actions->thread = thread; actions->thread = thread;
......
...@@ -682,9 +682,16 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp ...@@ -682,9 +682,16 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
continue; continue;
if (verbose >= 2) { if (verbose >= 2) {
fputs("overlapping maps:\n", fp);
map__fprintf(map, fp); if (use_browser) {
map__fprintf(pos, fp); pr_warning("overlapping maps in %s "
"(disable tui for more info)\n",
map->dso->name);
} else {
fputs("overlapping maps:\n", fp);
map__fprintf(map, fp);
map__fprintf(pos, fp);
}
} }
rb_erase_init(&pos->rb_node, root); rb_erase_init(&pos->rb_node, root);
...@@ -702,7 +709,7 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp ...@@ -702,7 +709,7 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
before->end = map->start; before->end = map->start;
__map_groups__insert(pos->groups, before); __map_groups__insert(pos->groups, before);
if (verbose >= 2) if (verbose >= 2 && !use_browser)
map__fprintf(before, fp); map__fprintf(before, fp);
map__put(before); map__put(before);
} }
...@@ -717,7 +724,7 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp ...@@ -717,7 +724,7 @@ static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp
after->start = map->end; after->start = map->end;
__map_groups__insert(pos->groups, after); __map_groups__insert(pos->groups, after);
if (verbose >= 2) if (verbose >= 2 && !use_browser)
map__fprintf(after, fp); map__fprintf(after, fp);
map__put(after); map__put(after);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment