From 6dcd57e8ae2080bca776d55e6e2b3d529677cae5 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Thu, 15 Mar 2018 15:20:12 -0300 Subject: [PATCH] perf annotate: Move nr_jumps to struct annotation This is another information that will be useful for the --stdio2 mode, to provide symbol statistics, so move it from the TUI and change the mark_jump_targets() method to struct annotation. Cc: Adrian Hunter Cc: Andi Kleen Cc: David Ahern Cc: Jin Yao Cc: Jiri Olsa Cc: Namhyung Kim Cc: Wang Nan Link: https://lkml.kernel.org/n/tip-kpgle1qxe7thajvrqleuvi80@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/ui/browsers/annotate.c | 13 ++++--------- tools/perf/util/annotate.h | 1 + 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index 6e2eea09a9b0..d05a2f991207 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -44,7 +44,6 @@ struct annotate_browser { u64 start; int nr_asm_entries; int nr_entries; - int nr_jumps; bool searching_backwards; u8 addr_width; u8 jumps_width; @@ -965,13 +964,9 @@ int hist_entry__tui_annotate(struct hist_entry *he, struct perf_evsel *evsel, return map_symbol__tui_annotate(&he->ms, evsel, hbt); } -static void annotate_browser__mark_jump_targets(struct annotate_browser *browser, - size_t size) +static void annotation__mark_jump_targets(struct annotation *notes, struct symbol *sym) { - u64 offset; - struct map_symbol *ms = browser->b.priv; - struct symbol *sym = ms->sym; - struct annotation *notes = symbol__annotation(sym); + u64 offset, size = symbol__size(sym); /* PLT symbols contain external offsets */ if (strstr(sym->name, "@plt")) @@ -1000,7 +995,7 @@ static void annotate_browser__mark_jump_targets(struct annotate_browser *browser if (++blt->jump_sources > notes->max_jump_sources) notes->max_jump_sources = blt->jump_sources; - ++browser->nr_jumps; + ++notes->nr_jumps; } } @@ -1093,7 +1088,7 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map, bpos->idx_asm = -1; } - annotate_browser__mark_jump_targets(&browser, size); + annotation__mark_jump_targets(notes, sym); annotation__compute_ipc(notes, size); browser.addr_width = browser.target_width = browser.min_addr_width = hex_width(size); diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h index b8aca936ed55..897a84712ab4 100644 --- a/tools/perf/util/annotate.h +++ b/tools/perf/util/annotate.h @@ -167,6 +167,7 @@ struct annotation { struct annotation_options *options; struct annotation_line **offsets; int nr_events; + int nr_jumps; int max_jump_sources; bool have_cycles; struct annotated_source *src;