On Tue, Dec 24, 2013 at 05:22:09PM +0900, Namhyung Kim wrote: > From: Namhyung Kim <namhyung....@lge.com> > > Maintain accumulated stat information in hist_entry->stat_acc if > symbol_conf.cumulate_callchain is set. Fields in ->stat_acc have same > vaules initially, and will be updated as callchain is processed later. > > Cc: Arun Sharma <asha...@fb.com> > Cc: Frederic Weisbecker <fweis...@gmail.com> > Signed-off-by: Namhyung Kim <namhy...@kernel.org> > --- > tools/perf/util/hist.c | 18 ++++++++++++++++++ > tools/perf/util/sort.h | 1 + > tools/perf/util/symbol.h | 1 + > 3 files changed, 20 insertions(+) > > diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c > index 283aa1972b4f..b61e2fa42412 100644 > --- a/tools/perf/util/hist.c > +++ b/tools/perf/util/hist.c > @@ -237,6 +237,8 @@ static bool hists__decay_entry(struct hists *hists, > struct hist_entry *he) > return true; > > he_stat__decay(&he->stat); > + if (symbol_conf.cumulate_callchain) > + he_stat__decay(he->stat_acc); > > if (!he->filtered) > hists->stats.total_period -= prev_period - he->stat.period; > @@ -284,6 +286,15 @@ static struct hist_entry *hist_entry__new(struct > hist_entry *template) > if (he != NULL) { > *he = *template; > > + if (symbol_conf.cumulate_callchain) { > + he->stat_acc = malloc(sizeof(he->stat)); > + if (he->stat_acc == NULL) { > + free(he); > + return NULL; > + } > + memcpy(he->stat_acc, &he->stat, sizeof(he->stat)); > + } > + > if (he->ms.map) > he->ms.map->referenced = true; > > @@ -295,6 +306,7 @@ static struct hist_entry *hist_entry__new(struct > hist_entry *template) > */ > he->branch_info = malloc(sizeof(*he->branch_info)); > if (he->branch_info == NULL) { > + free(he->stat_acc); > free(he); > return NULL;
hum, he->stat_acc should get freed in hist_entry__free jirka -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/