On Tue, Nov 03, 2015 at 04:18:29PM +0900, Namhyung Kim wrote: SNIP
> while (rb_node) { > - double percent; > - > chain = rb_entry(rb_node, struct callchain_node, rb_node); > - percent = chain->hit * 100.0 / total_samples; > > - ret = percent_color_fprintf(fp, " %6.2f%%\n", > percent); > + ret += fprintf(fp, " "); > + ret += callchain_node__fprintf_value(chain, fp, total_samples); > + ret += fprintf(fp, "\n"); > ret += __callchain__fprintf_flat(fp, chain, total_samples); > ret += fprintf(fp, "\n"); > if (++entries_printed == callchain_param.print_limit) > @@ -294,12 +294,11 @@ static size_t callchain__fprintf_folded(FILE *fp, > struct rb_root *tree, > struct rb_node *rb_node = rb_first(tree); > > while (rb_node) { > - double percent; > > chain = rb_entry(rb_node, struct callchain_node, rb_node); > - percent = chain->hit * 100.0 / total_samples; > > - ret += fprintf(fp, "%.2f%% ", percent); > + ret += callchain_node__fprintf_value(chain, fp, total_samples); > + ret += fprintf(fp, " "); hum, the callchain_node__fprintf_value gets hits as callchain_cumul_hits(node) which is 'node->hit + node->children_hit' while the replaced code took only 'chain->hit' not sure now which one we actualy want here.. jirka > ret += __callchain__fprintf_folded(fp, chain); > ret += fprintf(fp, "\n"); > if (++entries_printed == callchain_param.print_limit) > diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c > index 08cb220ba5ea..44184d198855 100644 > --- a/tools/perf/util/callchain.c > +++ b/tools/perf/util/callchain.c > @@ -805,6 +805,31 @@ char *callchain_list__sym_name(struct callchain_list *cl, > return bf; > } > > +char *callchain_node__sprintf_value(struct callchain_node *node, > + char *bf, size_t bfsize, u64 total) > +{ > + double percent = 0.0; > + u64 cumul = callchain_cumul_hits(node); > + > + if (total) > + percent = cumul * 100.0 / total; > + > + scnprintf(bf, bfsize, "%6.2f%%", percent); > + return bf; > +} > + > +int callchain_node__fprintf_value(struct callchain_node *node, > + FILE *fp, u64 total) > +{ > + double percent = 0.0; > + u64 cumul = callchain_cumul_hits(node); > + > + if (total) > + percent = cumul * 100.0 / total; > + > + return percent_color_fprintf(fp, "%.2f%%", percent); > +} SNIP -- 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/