Em Mon, Oct 31, 2016 at 09:19:52AM +0800, Jin Yao escreveu: > If the branch is 100% predicated then the "predicated" is hide.
"predicated"? Changing this to "predicted". Also changing "is hide" to "is hidden". - Arnaldo > Similarly, if there is no branch tsx abort, the "abort" is hide. > There is only cycles shown (cycle is supported on skylake platform, > older platform would be 0). > > If no iterations, the "iterations" is hide. > > For example: > > |--29.93%--main div.c:39 (predicted:50.6%, cycles:1, iterations:18) > | main div.c:44 (predicted:50.6%, cycles:1) > | | > | --22.69%--main div.c:42 (cycles:2, iterations:17) > | compute_flag div.c:28 (cycles:2) > | | > | --10.52%--compute_flag div.c:27 (cycles:1) > | rand rand.c:28 (cycles:1) > | rand rand.c:28 (cycles:1) > | __random random.c:298 (cycles:1) > | __random random.c:297 (cycles:1) > | __random random.c:295 (cycles:1) > | __random random.c:295 (cycles:1) > | __random random.c:295 (cycles:1) > | __random random.c:295 (cycles:6) > > Signed-off-by: Jin Yao <yao....@linux.intel.com> > --- > tools/perf/ui/stdio/hist.c | 35 +++++++++++++++++++++++++++++++---- > 1 file changed, 31 insertions(+), 4 deletions(-) > > diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c > index 89d8441..668f4ae 100644 > --- a/tools/perf/ui/stdio/hist.c > +++ b/tools/perf/ui/stdio/hist.c > @@ -41,7 +41,9 @@ static size_t ipchain__fprintf_graph(FILE *fp, struct > callchain_node *node, > { > int i; > size_t ret = 0; > - char bf[1024]; > + char bf[1024], *alloc_str = NULL; > + char buf[64]; > + const char *str; > > ret += callchain__fprintf_left_margin(fp, left_margin); > for (i = 0; i < depth; i++) { > @@ -56,8 +58,26 @@ static size_t ipchain__fprintf_graph(FILE *fp, struct > callchain_node *node, > } else > ret += fprintf(fp, "%s", " "); > } > - fputs(callchain_list__sym_name(chain, bf, sizeof(bf), false), fp); > + > + str = callchain_list__sym_name(chain, bf, sizeof(bf), false); > + > + if (symbol_conf.show_branchflag_count) { > + if (!period) > + callchain_list_counts__printf_value(node, chain, NULL, > + buf, sizeof(buf)); > + else > + callchain_list_counts__printf_value(NULL, chain, NULL, > + buf, sizeof(buf)); > + > + if (asprintf(&alloc_str, "%s%s", str, buf) < 0) > + str = "Not enough memory!"; > + else > + str = alloc_str; > + } > + > + fputs(str, fp); q> fputc('\n', fp); > + free(alloc_str); > return ret; > } > > @@ -219,8 +239,15 @@ static size_t callchain__fprintf_graph(FILE *fp, struct > rb_root *root, > } else > ret += callchain__fprintf_left_margin(fp, > left_margin); > > - ret += fprintf(fp, "%s\n", > callchain_list__sym_name(chain, bf, sizeof(bf), > - false)); > + ret += fprintf(fp, "%s", > + callchain_list__sym_name(chain, bf, > + sizeof(bf), > + false)); > + > + if (symbol_conf.show_branchflag_count) > + ret += callchain_list_counts__printf_value( > + NULL, chain, fp, NULL, 0); > + ret += fprintf(fp, "\n"); > > if (++entries_printed == callchain_param.print_limit) > break; > -- > 2.7.4