perf annotate: Pass hist_entry to annotate functions

It's a prepartion to support code annotation and data type
annotation at the same time.  Data type annotation needs more
information in the hist_entry so it needs to be passed deeper.

Also rename a function with the same name in the builtin-annotate.c
to hist_entry__stdio_annotate since it matches better to the command
line option.  And change the condition inside to be simpler.

Reviewed-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250310224925.799005-5-namhyung@kernel.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
Namhyung Kim 2025-03-10 15:49:22 -07:00
parent 9aa3cbbffb
commit fe8da6692a
4 changed files with 16 additions and 14 deletions

View File

@ -321,14 +321,14 @@ static int process_feature_event(struct perf_session *session,
return 0;
}
static int hist_entry__tty_annotate(struct hist_entry *he,
static int hist_entry__stdio_annotate(struct hist_entry *he,
struct evsel *evsel,
struct perf_annotate *ann)
{
if (!ann->use_stdio2)
return symbol__tty_annotate(&he->ms, evsel);
if (ann->use_stdio2)
return hist_entry__tty_annotate2(he, evsel);
return symbol__tty_annotate2(&he->ms, evsel);
return hist_entry__tty_annotate(he, evsel);
}
static void print_annotate_data_stat(struct annotated_data_stat *s)
@ -541,7 +541,7 @@ static void hists__find_annotations(struct hists *hists,
if (next != NULL)
nd = next;
} else {
hist_entry__tty_annotate(he, evsel, ann);
hist_entry__stdio_annotate(he, evsel, ann);
nd = rb_next(nd);
}
}

View File

@ -263,7 +263,7 @@ static void perf_top__show_details(struct perf_top *top)
printf("Showing %s for %s\n", evsel__name(top->sym_evsel), symbol->name);
printf(" Events Pcnt (>=%d%%)\n", annotate_opts.min_pcnt);
more = symbol__annotate_printf(&he->ms, top->sym_evsel);
more = hist_entry__annotate_printf(he, top->sym_evsel);
if (top->evlist->enabled) {
if (top->zero)

View File

@ -1174,8 +1174,9 @@ static int annotated_source__addr_fmt_width(struct list_head *lines, u64 start)
return 0;
}
int symbol__annotate_printf(struct map_symbol *ms, struct evsel *evsel)
int hist_entry__annotate_printf(struct hist_entry *he, struct evsel *evsel)
{
struct map_symbol *ms = &he->ms;
struct map *map = ms->map;
struct symbol *sym = ms->sym;
struct dso *dso = map__dso(map);
@ -1600,8 +1601,9 @@ static void symbol__calc_lines(struct map_symbol *ms, struct rb_root *root)
annotation__calc_lines(notes, ms, root);
}
int symbol__tty_annotate2(struct map_symbol *ms, struct evsel *evsel)
int hist_entry__tty_annotate2(struct hist_entry *he, struct evsel *evsel)
{
struct map_symbol *ms = &he->ms;
struct dso *dso = map__dso(ms->map);
struct symbol *sym = ms->sym;
struct rb_root source_line = RB_ROOT;
@ -1635,8 +1637,9 @@ int symbol__tty_annotate2(struct map_symbol *ms, struct evsel *evsel)
return 0;
}
int symbol__tty_annotate(struct map_symbol *ms, struct evsel *evsel)
int hist_entry__tty_annotate(struct hist_entry *he, struct evsel *evsel)
{
struct map_symbol *ms = &he->ms;
struct dso *dso = map__dso(ms->map);
struct symbol *sym = ms->sym;
struct rb_root source_line = RB_ROOT;
@ -1660,7 +1663,7 @@ int symbol__tty_annotate(struct map_symbol *ms, struct evsel *evsel)
print_summary(&source_line, dso__long_name(dso));
}
symbol__annotate_printf(ms, evsel);
hist_entry__annotate_printf(he, evsel);
annotated_source__purge(symbol__annotation(sym)->src);

View File

@ -456,7 +456,6 @@ enum symbol_disassemble_errno {
int symbol__strerror_disassemble(struct map_symbol *ms, int errnum, char *buf, size_t buflen);
int symbol__annotate_printf(struct map_symbol *ms, struct evsel *evsel);
void symbol__annotate_zero_histogram(struct symbol *sym, struct evsel *evsel);
void symbol__annotate_decay_histogram(struct symbol *sym, struct evsel *evsel);
void annotated_source__purge(struct annotated_source *as);
@ -465,9 +464,9 @@ int map_symbol__annotation_dump(struct map_symbol *ms, struct evsel *evsel);
bool ui__has_annotation(void);
int symbol__tty_annotate(struct map_symbol *ms, struct evsel *evsel);
int symbol__tty_annotate2(struct map_symbol *ms, struct evsel *evsel);
int hist_entry__annotate_printf(struct hist_entry *he, struct evsel *evsel);
int hist_entry__tty_annotate(struct hist_entry *he, struct evsel *evsel);
int hist_entry__tty_annotate2(struct hist_entry *he, struct evsel *evsel);
#ifdef HAVE_SLANG_SUPPORT
int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,