On Mon, Nov 20, 2017 at 10:43:38PM +0800, Jin Yao wrote: SNIP
> +static void init_saved_rblist(struct rblist *rblist) > +{ > + rblist__init(rblist); > + rblist->node_cmp = saved_value_cmp; > + rblist->node_new = saved_value_new; > + rblist->node_delete = saved_value_delete; > +} > + > +static void free_saved_rblist(struct rblist *rblist) > +{ > + rblist__reset(rblist); > +} > + > +void perf_stat__init_runtime_stat(struct runtime_stat *stat) > +{ > + memset(stat, 0, sizeof(struct runtime_stat)); > + init_saved_rblist(&stat->value_list); > +} > + > +void perf_stat__free_runtime_stat(struct runtime_stat *stat) > +{ > + free_saved_rblist(&stat->value_list); > +} > + > void perf_stat__init_shadow_stats(void) > { > have_frontend_stalled = pmu_have_event("cpu", > "stalled-cycles-frontend"); > - rblist__init(&runtime_saved_values); > - runtime_saved_values.node_cmp = saved_value_cmp; > - runtime_saved_values.node_new = saved_value_new; > - /* No delete for now */ > + memset(&walltime_nsecs_stats, 0, sizeof(walltime_nsecs_stats)); why do you zero walltime_nsecs_stats in here? jirka