diff options
| author | Linus Torvalds <[email protected]> | 2018-04-15 12:36:31 -0700 | 
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2018-04-15 12:36:31 -0700 | 
| commit | 174e719439b8224d7cedfbdd9529de396cac01ff (patch) | |
| tree | a1729ca869e7dedaa47199d0818b2297521076a5 /tools/perf/ui/browsers/annotate.c | |
| parent | 19ca90de49c3269874722148edf07083182e23ec (diff) | |
| parent | 32e6e967fb36bf77ed99221ae3ce1909f045d8f9 (diff) | |
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull more perf updates from Thomas Gleixner:
 "A rather large set of perf updates:
  Kernel:
   - Fix various initialization issues
   - Prevent creating [ku]probes for not CAP_SYS_ADMIN users
  Tooling:
   - Show only failing syscalls with 'perf trace --failure' (Arnaldo
     Carvalho de Melo)
            e.g: See what 'openat' syscalls are failing:
        # perf trace --failure -e openat
         762.323 ( 0.007 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video2) = -1 ENOENT No such file or directory
         <SNIP N /dev/videoN open attempts... sigh, where is that improvised camera lid?!? >
         790.228 ( 0.008 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video63) = -1 ENOENT No such file or directory
        ^C#
   - Show information about the event (freq, nr_samples, total
     period/nr_events) in the annotate --tui and --stdio2 'perf
     annotate' output, similar to the first line in the 'perf report
     --tui', but just for the samples for a the annotated symbol
     (Arnaldo Carvalho de Melo)
   - Introduce 'perf version --build-options' to show what features were
     linked, aliased as well as a shorter 'perf -vv' (Jin Yao)
   - Add a "dso_size" sort order (Kim Phillips)
   - Remove redundant ')' in the tracepoint output in 'perf trace'
     (Changbin Du)
   - Synchronize x86's cpufeatures.h, no effect on toolss (Arnaldo
     Carvalho de Melo)
   - Show group details on the title line in the annotate browser and
     'perf annotate --stdio2' output, so that the per-event columns can
     have headers (Arnaldo Carvalho de Melo)
   - Fixup vertical line separating metrics from instructions and
     cleaning unused lines at the bottom, both in the annotate TUI
     browser (Arnaldo Carvalho de Melo)
   - Remove duplicated 'samples' in lost samples warning in
     'perf report' (Arnaldo Carvalho de Melo)
   - Synchronize i915_drm.h, silencing the perf build process,
     automagically adding support for the new DRM_I915_QUERY ioctl
     (Arnaldo Carvalho de Melo)
   - Make auxtrace_queues__add_buffer() allocate struct buffer, from a
     patchkit already applied (Adrian Hunter)
   - Fix the --stdio2/TUI annotate output to include group details, be
     it for a recorded '{a,b,f}' explicit event group or when forcing
     group display using 'perf report --group' for a set of events not
     recorded as a group (Arnaldo Carvalho de Melo)
   - Fix display artifacts in the ui browser (base class for the
     annotate and main report/top TUI browser) related to the extra
     title lines work (Arnaldo Carvalho de Melo)
   - perf auxtrace refactorings, leftovers from a previously partially
     processed patchset (Adrian Hunter)
   - Fix the builtin clang build (Sandipan Das, Arnaldo Carvalho de
     Melo)
   - Synchronize i915_drm.h, silencing a perf build warning and in the
     process automagically adding support for a new ioctl command
     (Arnaldo Carvalho de Melo)
   - Fix a strncpy issue in uprobe tracing"
* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
  perf/core: Need CAP_SYS_ADMIN to create k/uprobe with perf_event_open()
  tracing/uprobe_event: Fix strncpy corner case
  perf/core: Fix perf_uprobe_init()
  perf/core: Fix perf_kprobe_init()
  perf/core: Fix use-after-free in uprobe_perf_close()
  perf tests clang: Fix function name for clang IR test
  perf clang: Add support for recent clang versions
  perf tools: Fix perf builds with clang support
  perf tools: No need to include namespaces.h in util.h
  perf hists browser: Remove leftover from row returned from refresh
  perf hists browser: Show extra_title_lines in the 'D' debug hotkey
  perf auxtrace: Make auxtrace_queues__add_buffer() do CPU filtering
  tools headers uapi: Synchronize i915_drm.h
  perf report: Remove duplicated 'samples' in lost samples warning
  perf ui browser: Fixup cleaning unused lines at the bottom
  perf annotate browser: Fixup vertical line separating metrics from instructions
  perf annotate: Show group details on the title line
  perf auxtrace: Make auxtrace_queues__add_buffer() allocate struct buffer
  perf/x86/intel: Move regs->flags EXACT bit init
  perf trace: Remove redundant ')'
  ...
Diffstat (limited to 'tools/perf/ui/browsers/annotate.c')
| -rw-r--r-- | tools/perf/ui/browsers/annotate.c | 33 | 
1 files changed, 28 insertions, 5 deletions
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index c02fb437ac8e..12c099a87f8b 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -218,7 +218,7 @@ static unsigned int annotate_browser__refresh(struct ui_browser *browser)  		annotate_browser__draw_current_jump(browser);  	ui_browser__set_color(browser, HE_COLORSET_NORMAL); -	__ui_browser__vline(browser, pcnt_width, 0, browser->height - 1); +	__ui_browser__vline(browser, pcnt_width, 0, browser->rows - 1);  	return ret;  } @@ -592,21 +592,40 @@ bool annotate_browser__continue_search_reverse(struct annotate_browser *browser,  	return __annotate_browser__search_reverse(browser);  } +static int annotate_browser__show(struct ui_browser *browser, char *title, const char *help) +{ +	struct map_symbol *ms = browser->priv; +	struct symbol *sym = ms->sym; +	char symbol_dso[SYM_TITLE_MAX_SIZE]; + +	if (ui_browser__show(browser, title, help) < 0) +		return -1; + +	sym_title(sym, ms->map, symbol_dso, sizeof(symbol_dso)); + +	ui_browser__gotorc_title(browser, 0, 0); +	ui_browser__set_color(browser, HE_COLORSET_ROOT); +	ui_browser__write_nstring(browser, symbol_dso, browser->width + 1); +	return 0; +} +  static int annotate_browser__run(struct annotate_browser *browser,  				 struct perf_evsel *evsel,  				 struct hist_browser_timer *hbt)  {  	struct rb_node *nd = NULL; +	struct hists *hists = evsel__hists(evsel);  	struct map_symbol *ms = browser->b.priv;  	struct symbol *sym = ms->sym;  	struct annotation *notes = symbol__annotation(ms->sym);  	const char *help = "Press 'h' for help on key bindings";  	int delay_secs = hbt ? hbt->refresh : 0; +	char title[256];  	int key; -	char title[SYM_TITLE_MAX_SIZE]; -	sym_title(sym, ms->map, title, sizeof(title)); -	if (ui_browser__show(&browser->b, title, help) < 0) +	annotation__scnprintf_samples_period(notes, title, sizeof(title), evsel); + +	if (annotate_browser__show(&browser->b, title, help) < 0)  		return -1;  	annotate_browser__calc_percent(browser, evsel); @@ -637,8 +656,11 @@ static int annotate_browser__run(struct annotate_browser *browser,  			if (hbt)  				hbt->timer(hbt->arg); -			if (delay_secs != 0) +			if (delay_secs != 0) {  				symbol__annotate_decay_histogram(sym, evsel->idx); +				hists__scnprintf_title(hists, title, sizeof(title)); +				annotate_browser__show(&browser->b, title, help); +			}  			continue;  		case K_TAB:  			if (nd != NULL) { @@ -812,6 +834,7 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map,  			.seek	 = ui_browser__list_head_seek,  			.write	 = annotate_browser__write,  			.filter  = disasm_line__filter, +			.extra_title_lines = 1, /* for hists__scnprintf_title() */  			.priv	 = &ms,  			.use_navkeypressed = true,  		},  |