perf annotate: Introduce symbol__hists()
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: e8ea922a7e077b491c6363755e3ac94d350ea253 Gitweb: https://git.kernel.org/tip/e8ea922a7e077b491c6363755e3ac94d350ea253 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 24 May 2018 16:37:53 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 4 Jun 2018 10:28:51 -0300
perf annotate: Introduce symbol__hists()
In this case we're wanting just notes->src->histograms, allocating it if needed.
Cc Adrian Hunter <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/annotate.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-)
tools/perf/util/annotate.c +24 -4
@@ -863,18 +863,38 @@ static struct annotation *symbol__get_annotation(struct symbol *sym, bool cyclesreturn notes; } +static struct annotated_source *symbol__hists (struct symbol *sym) +{ +struct annotation *notes =symbol__annotation (sym); + +if (notes->src ==NULL ) { + notes->src =annotated_source__new (); +if (notes->src ==NULL ) +return NULL ; + goto alloc_histograms; + } + +if (notes->src->histograms ==NULL ) { +alloc_histograms: +annotated_source__alloc_histograms (notes->src,symbol__size (sym), + symbol_conf.nr_events); + } + +return notes->src; +} +static int symbol__inc_addr_samples (struct symbol *sym,struct map *map,struct perf_evsel *evsel,u64 addr,struct perf_sample *sample) { -struct annotation *notes; +struct annotated_source *src;if (sym ==NULL )return 0 ; - notes =symbol__get_annotation (sym, false); -if (notes ==NULL ) + src =symbol__hists (sym); +if (src ==NULL )return -ENOMEM ; -return __symbol__inc_addr_samples (sym, map, notes->src, evsel->idx, addr, sample); +return __symbol__inc_addr_samples (sym, map, src, evsel->idx, addr, sample); } static int symbol__account_cycles(u64 addr, u64 start,