From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965533AbcKOAqA (ORCPT ); Mon, 14 Nov 2016 19:46:00 -0500 Received: from mga11.intel.com ([192.55.52.93]:32253 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S938975AbcKOAp6 (ORCPT ); Mon, 14 Nov 2016 19:45:58 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,640,1473145200"; d="scan'208";a="31316986" Subject: Re: [PATCH v4 4/6] perf report: Show branch info in callchain entry for stdio mode To: Arnaldo Carvalho de Melo References: <1477876794-30749-1-git-send-email-yao.jin@linux.intel.com> <1477876794-30749-5-git-send-email-yao.jin@linux.intel.com> <20161114163448.GE26543@kernel.org> Cc: jolsa@kernel.org, Linux-kernel@vger.kernel.org, ak@linux.intel.com, kan.liang@intel.com From: "Jin, Yao" Message-ID: <8b24da20-d7d4-68ee-819a-1e3051768f97@linux.intel.com> Date: Tue, 15 Nov 2016 08:45:55 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <20161114163448.GE26543@kernel.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Sorry, spelling mistake. It should be "predicted" and "is hidden". Thanks for correcting on that. Thanks Jin Yao On 11/15/2016 12:34 AM, Arnaldo Carvalho de Melo wrote: > 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 >> --- >> 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