perf annotate: Pass a 'map_symbol' in places receiving a pair of 'map' and 'symbol' pointers
A message that is not in the archive (sent off-list or not yet received): [email protected]
The following commit has been merged into the perf/core branch of tip:
Commit-ID: 2975489458c59ce2e348b1b3aef5d8d2acb5cc8d Gitweb: https://git.kernel.org/tip/2975489458c59ce2e348b1b3aef5d8d2acb5cc8d Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Mon, 04 Nov 2019 11:10:00 -03:00 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitterDate: Tue, 12 Nov 2019 08:20:53 -03:00
perf annotate: Pass a 'map_symbol' in places receiving a pair of 'map' and 'symbol' pointers
We are already passing things like:
symbol__annotate(ms->sym, ms->map, ...)
So shorten the signature of such functions to receive the 'map_symbol' pointer.
This also paves the way to having the 'struct map_groups' pointer in the 'struct map_symbol' so that we can get rid of 'struct map'->groups.
Cc Adrian Hunter <[email protected]>
Cc Andi Kleen <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-annotate.c | 4 +- tools/perf/builtin-report.c | 2 +- tools/perf/builtin-top.c | 6 +-- tools/perf/ui/browsers/annotate.c | 24 +++++-------- tools/perf/ui/gtk/annotate.c | 27 +++++++------- tools/perf/util/annotate.c | 56 ++++++++++++++---------------- tools/perf/util/annotate.h | 22 ++++-------- 7 files changed, 66 insertions(+), 75 deletions(-)
tools/perf/builtin-annotate.c +2 -2
@@ -301,9 +301,9 @@ static int hist_entry__tty_annotate(struct hist_entry *he, struct perf_annotate *ann) {if (!ann->use_stdio2) -return symbol__tty_annotate (he->ms.sym, he->ms.map, evsel, &ann->opts); +return symbol__tty_annotate (&he->ms, evsel, &ann->opts); -return symbol__tty_annotate2 (he->ms.sym, he->ms.map, evsel, &ann->opts); +return symbol__tty_annotate2 (&he->ms, evsel, &ann->opts); } static void hists__find_annotations(struct hists *hists,
tools/perf/builtin-report.c +1 -1
@@ -680,7 +680,7 @@ static int hists__resort_cb(struct hist_entry *he, void *arg)if (rep->symbol_ipc && sym && !sym->annotate2) {struct evsel *evsel =hists_to_evsel (he->hists); -symbol__annotate2 (sym, he->ms.map, evsel, +symbol__annotate2 (&he->ms, evsel, &annotation__default_options,NULL ); }
tools/perf/builtin-top.c +3 -3
@@ -143,12 +143,12 @@ static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)return err; } - err =symbol__annotate (sym, map, evsel,0 , &top->annotation_opts,NULL ); + err =symbol__annotate (&he->ms, evsel,0 , &top->annotation_opts,NULL );if (err ==0 ) { top->sym_filter_entry = he; }else {char msg[BUFSIZ ]; -symbol__strerror_disassemble (sym, map, err, msg,sizeof (msg)); +symbol__strerror_disassemble (&he->ms, err, msg,sizeof (msg));pr_err ("Couldn't annotate %s: %s\n" , sym->name, msg); }
@@ -257,7 +257,7 @@ static void perf_top__show_details(struct perf_top *top)printf ("Showing %s for %s\n" ,perf_evsel__name (top->sym_evsel), symbol->name);printf (" Events Pcnt (>=%d%%)\n" , top->annotation_opts.min_pcnt); - more =symbol__annotate_printf (symbol, he->ms.map, top->sym_evsel, &top->annotation_opts); + more =symbol__annotate_printf (&he->ms, top->sym_evsel, &top->annotation_opts);if (top->evlist->enabled) {if (top->zero)
tools/perf/ui/browsers/annotate.c +11 -13
@@ -410,7 +410,7 @@ static bool annotate_browser__callq(struct annotate_browser *browser,struct evsel *evsel, struct hist_browser_timer *hbt) { - struct map_symbol *ms = browser->b.priv; + struct map_symbol *ms = browser->b.priv, target_ms;struct disasm_line *dl =disasm_line (browser->selection);struct annotation *notes;char title[SYM_TITLE_MAX_SIZE ];
@@ -430,8 +430,10 @@ static bool annotate_browser__callq(struct annotate_browser *browser,return true; } + target_ms.map = ms->map; + target_ms.sym = dl->ops.target.sym;pthread_mutex_unlock (¬es->lock); -symbol__tui_annotate (dl->ops.target.sym, ms->map, evsel, hbt, browser->opts); +symbol__tui_annotate (&target_ms, evsel, hbt, browser->opts);sym_title (ms->sym, ms->map, title,sizeof (title), browser->opts->percent_type);ui_browser__show_title (&browser->b, title);return true;
@@ -874,7 +876,7 @@ int map_symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,struct hist_browser_timer *hbt, struct annotation_options *opts) { - return symbol__tui_annotate(ms->sym, ms->map, evsel, hbt, opts); + return symbol__tui_annotate(ms, evsel, hbt, opts); } int hist_entry__tui_annotate(struct hist_entry *he, struct evsel *evsel,
@@ -888,16 +890,12 @@ int hist_entry__tui_annotate(struct hist_entry *he, struct evsel *evsel,return map_symbol__tui_annotate (&he->ms, evsel, hbt, opts); } -int symbol__tui_annotate (struct symbol *sym,struct map *map, -struct evsel *evsel, +int symbol__tui_annotate (struct map_symbol *ms,struct evsel *evsel,struct hist_browser_timer *hbt,struct annotation_options *opts) { +struct symbol *sym = ms->sym;struct annotation *notes =symbol__annotation (sym); -struct map_symbol ms = { - .map = map, - .sym = sym, - };struct annotate_browser browser = { .b = { .refresh = annotate_browser__refresh,
@@ -905,7 +903,7 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map, .write = annotate_browser__write, .filter = disasm_line__filter, .extra_title_lines = 1, /* for hists__scnprintf_title() */ - .priv = &ms, + .priv = ms, .use_navkeypressed = true, }, .opts = opts,
@@ -915,13 +913,13 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map,if (sym ==NULL )return -1 ; -if (map->dso->annotate_warned) +if (ms->map->dso->annotate_warned)return -1 ; - err =symbol__annotate2 (sym, map, evsel, opts, &browser.arch); + err =symbol__annotate2 (ms, evsel, opts, &browser.arch);if (err) {char msg[BUFSIZ ]; -symbol__strerror_disassemble (sym, map, err, msg,sizeof (msg)); +symbol__strerror_disassemble (ms, err, msg,sizeof (msg));ui__error ("Couldn't annotate %s:\n%s" , sym->name, msg); goto out_free_offsets; }
tools/perf/ui/gtk/annotate.c +14 -13
@@ -54,10 +54,10 @@ static int perf_gtk__get_percent(char *buf, size_t size, struct symbol *sym,return ret; } -static int perf_gtk__get_offset (char *buf,size_t size,struct symbol *sym, -struct map *map,struct disasm_line *dl) +static int perf_gtk__get_offset (char *buf,size_t size,struct map_symbol *ms, +struct disasm_line *dl) { -u64 start =map__rip_2objdump (map, sym->start); +u64 start =map__rip_2objdump (ms->map, ms->sym->start);strcpy (buf,"" );
@@ -91,10 +91,11 @@ static int perf_gtk__get_line(char *buf, size_t size, struct disasm_line *dl)return ret; } -static int perf_gtk__annotate_symbol (GtkWidget *window,struct symbol *sym, -struct map *map,struct evsel *evsel, +static int perf_gtk__annotate_symbol (GtkWidget *window,struct map_symbol *ms, +struct evsel *evsel,struct hist_browser_timer *hbt__maybe_unused ) { +struct symbol *sym = ms->sym;struct disasm_line *pos, *n;struct annotation *notes;GType col_types[MAX_ANN_COLS ];
@@ -144,7 +145,7 @@ static int perf_gtk__annotate_symbol(GtkWidget *window, struct symbol *sym,if (ret)gtk_list_store_set (store, &iter,ANN_COL__PERCENT , s,-1 ); -if (perf_gtk__get_offset (s,sizeof (s), sym, map, pos)) +if (perf_gtk__get_offset (s,sizeof (s), ms, pos))gtk_list_store_set (store, &iter,ANN_COL__OFFSET , s,-1 );if (perf_gtk__get_line (s,sizeof (s), pos))gtk_list_store_set (store, &iter,ANN_COL__LINE , s,-1 );
@@ -160,23 +161,23 @@ static int perf_gtk__annotate_symbol(GtkWidget *window, struct symbol *sym,return 0 ; } -static int symbol__gtk_annotate (struct symbol *sym,struct map *map, -struct evsel *evsel, +static int symbol__gtk_annotate (struct map_symbol *ms,struct evsel *evsel,struct hist_browser_timer *hbt) { +struct symbol *sym = ms->sym;GtkWidget *window;GtkWidget *notebook;GtkWidget *scrolled_window;GtkWidget *tab_label;int err; -if (map->dso->annotate_warned) +if (ms->map->dso->annotate_warned)return -1 ; - err =symbol__annotate (sym, map, evsel,0 , &annotation__default_options,NULL ); + err =symbol__annotate (ms, evsel,0 , &annotation__default_options,NULL );if (err) {char msg[BUFSIZ ]; -symbol__strerror_disassemble (sym, map, err, msg,sizeof (msg)); +symbol__strerror_disassemble (ms, err, msg,sizeof (msg));ui__error ("Couldn't annotate %s: %s\n" , sym->name, msg);return -1 ; }
@@ -234,7 +235,7 @@ static int symbol__gtk_annotate(struct symbol *sym, struct map *map,gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolled_window, tab_label); -perf_gtk__annotate_symbol (scrolled_window, sym, map, evsel, hbt); +perf_gtk__annotate_symbol (scrolled_window, ms, evsel, hbt);return 0 ; }
@@ -242,7 +243,7 @@ int hist_entry__gtk_annotate(struct hist_entry *he,struct evsel *evsel, struct hist_browser_timer *hbt) { - return symbol__gtk_annotate(he->ms.sym, he->ms.map, evsel, hbt); + return symbol__gtk_annotate(&he->ms, evsel, hbt); }void perf_gtk__show_annotations (void )
tools/perf/util/annotate.c +27 -29
138 lines not on this page · raw message
tools/perf/util/annotate.h +8 -14
@@ -349,11 +349,11 @@ int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sampstruct annotated_source *symbol__hists (struct symbol *sym,int nr_hists);void symbol__annotate_zero_histograms (struct symbol *sym); -int symbol__annotate (struct symbol *sym,struct map *map, +int symbol__annotate (struct map_symbol *ms,struct evsel *evsel,size_t privsize,struct annotation_options *options,struct arch **parch); -int symbol__annotate2 (struct symbol *sym,struct map *map, +int symbol__annotate2 (struct map_symbol *ms,struct evsel *evsel,struct annotation_options *options,struct arch **parch);
@@ -380,11 +380,9 @@ enum symbol_disassemble_errno { __SYMBOL_ANNOTATE_ERRNO__END, }; -int symbol__strerror_disassemble (struct symbol *sym,struct map *map, -int errnum,char *buf,size_t buflen); +int symbol__strerror_disassemble (struct map_symbol *ms,int errnum,char *buf,size_t buflen); -int symbol__annotate_printf (struct symbol *sym,struct map *map, -struct evsel *evsel, +int symbol__annotate_printf (struct map_symbol *ms,struct evsel *evsel,struct annotation_options *options);void symbol__annotate_zero_histogram (struct symbol *sym,int evidx);void symbol__annotate_decay_histogram (struct symbol *sym,int evidx);
@@ -395,20 +393,16 @@ int map_symbol__annotation_dump(struct map_symbol *ms, struct evsel *evsel,bool ui__has_annotation (void ); -int symbol__tty_annotate (struct symbol *sym,struct map *map, -struct evsel *evsel,struct annotation_options *opts); +int symbol__tty_annotate (struct map_symbol *ms,struct evsel *evsel,struct annotation_options *opts); -int symbol__tty_annotate2 (struct symbol *sym,struct map *map, -struct evsel *evsel,struct annotation_options *opts); +int symbol__tty_annotate2 (struct map_symbol *ms,struct evsel *evsel,struct annotation_options *opts);#ifdef HAVE_SLANG_SUPPORT -int symbol__tui_annotate (struct symbol *sym,struct map *map, -struct evsel *evsel, +int symbol__tui_annotate (struct map_symbol *ms,struct evsel *evsel,struct hist_browser_timer *hbt,struct annotation_options *opts);#else -static inline int symbol__tui_annotate (struct symbol *sym__maybe_unused , -struct map *map__maybe_unused , +static inline int symbol__tui_annotate (struct map_symbol *ms__maybe_unused ,struct evsel *evsel__maybe_unused ,struct hist_browser_timer *hbt__maybe_unused ,struct annotation_options *opts__maybe_unused )