perf annotate: Introduce constructor/destructor for annotated_source
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: ca39650309a7ce471ed6077267a27a0ac1f28941 Gitweb: https://git.kernel.org/tip/ca39650309a7ce471ed6077267a27a0ac1f28941 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 24 May 2018 16:01:31 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 4 Jun 2018 10:28:51 -0300
perf annotate: Introduce constructor/destructor for annotated_source
More stuff will go in there, all the parts that are not needed when a symbol had no samples and that were mistakenly added to 'struct annotation'.
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 | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-)
tools/perf/util/annotate.c +22 -3
@@ -678,6 +678,25 @@ static struct arch *arch__find(const char *name)return bsearch (name, architectures, nmemb,sizeof (struct arch ), arch__key_cmp); } +static struct annotated_source *annotated_source__new (void ) +{ +struct annotated_source *src =zalloc (sizeof (*src)); + +if (src !=NULL ) +INIT_LIST_HEAD (&src->source); + +return src; +} + +static void annotated_source__delete (struct annotated_source *src) +{ +if (src ==NULL ) +return ; +zfree (&src->histograms); +zfree (&src->cycles_hist); +free (src); +} +int symbol__alloc_hist (struct symbol *sym) {struct annotation *notes =symbol__annotation (sym);
@@ -704,17 +723,17 @@ int symbol__alloc_hist(struct symbol *sym)if (sizeof_sym_hist >SIZE_MAX / symbol_conf.nr_events)return -1 ; - notes->src =zalloc (sizeof (*notes->src)); + notes->src =annotated_source__new ();if (notes->src ==NULL )return -1 ; notes->src->histograms =calloc (symbol_conf.nr_events, sizeof_sym_hist);if (notes->src->histograms ==NULL ) { -zfree (¬es->src); +annotated_source__delete (notes->src); + notes->src =NULL ;return -1 ; } notes->src->sizeof_sym_hist = sizeof_sym_hist; notes->src->nr_histograms = symbol_conf.nr_events; -INIT_LIST_HEAD (¬es->src->source);return 0 ; }