From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Jiri Olsa <jolsa@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
Andi Kleen <andi@firstfloor.org>, David Ahern <dsahern@gmail.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Wang Nan <wangnan0@huawei.com>
Subject: [PATCH 06/12] perf hists browser: Fix dump to show correct callchain style
Date: Sun, 24 Jan 2016 22:53:29 +0900 [thread overview]
Message-ID: <1453643615-1616-7-git-send-email-namhyung@kernel.org> (raw)
In-Reply-To: <1453643615-1616-1-git-send-email-namhyung@kernel.org>
The commit 8c430a348699 ("perf hists browser: Support folded
callchains") missed to update hist_browser__dump() so it always shows
graph-style callchains regardless of current setting.
To fix that, factor out callchain printing code and renamethe existing
function which prints graph-style callchain.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/ui/browsers/hists.c | 73 ++++++++++++++++++++++++------------------
1 file changed, 41 insertions(+), 32 deletions(-)
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 0affffeed89c..349c5de73287 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -844,7 +844,7 @@ next:
return row - first_row;
}
-static int hist_browser__show_callchain(struct hist_browser *browser,
+static int hist_browser__show_callchain_graph(struct hist_browser *browser,
struct rb_root *root, int level,
unsigned short row, u64 total,
print_callchain_entry_fn print,
@@ -898,7 +898,7 @@ static int hist_browser__show_callchain(struct hist_browser *browser,
else
new_total = total;
- row += hist_browser__show_callchain(browser, &child->rb_root,
+ row += hist_browser__show_callchain_graph(browser, &child->rb_root,
new_level, row, new_total,
print, arg, is_output_full);
}
@@ -910,6 +910,43 @@ out:
return row - first_row;
}
+static int hist_browser__show_callchain(struct hist_browser *browser,
+ struct hist_entry *entry, int level,
+ unsigned short row,
+ print_callchain_entry_fn print,
+ struct callchain_print_arg *arg,
+ check_output_full_fn is_output_full)
+{
+ u64 total = hists__total_period(entry->hists);
+ int printed;
+
+ if (callchain_param.mode == CHAIN_GRAPH_REL) {
+ if (symbol_conf.cumulate_callchain)
+ total = entry->stat_acc->period;
+ else
+ total = entry->stat.period;
+ }
+
+ if (callchain_param.mode == CHAIN_FLAT) {
+ printed = hist_browser__show_callchain_flat(browser,
+ &entry->sorted_chain, row, total,
+ print, arg, is_output_full);
+ } else if (callchain_param.mode == CHAIN_FOLDED) {
+ printed = hist_browser__show_callchain_folded(browser,
+ &entry->sorted_chain, row, total,
+ print, arg, is_output_full);
+ } else {
+ printed = hist_browser__show_callchain_graph(browser,
+ &entry->sorted_chain, level, row, total,
+ print, arg, is_output_full);
+ }
+
+ if (arg->is_current_entry)
+ browser->he_selection = entry;
+
+ return printed;
+}
+
struct hpp_arg {
struct ui_browser *b;
char folded_sign;
@@ -1084,38 +1121,14 @@ static int hist_browser__show_entry(struct hist_browser *browser,
--row_offset;
if (folded_sign == '-' && row != browser->b.rows) {
- u64 total = hists__total_period(entry->hists);
struct callchain_print_arg arg = {
.row_offset = row_offset,
.is_current_entry = current_entry,
};
- if (callchain_param.mode == CHAIN_GRAPH_REL) {
- if (symbol_conf.cumulate_callchain)
- total = entry->stat_acc->period;
- else
- total = entry->stat.period;
- }
-
- if (callchain_param.mode == CHAIN_FLAT) {
- printed += hist_browser__show_callchain_flat(browser,
- &entry->sorted_chain, row, total,
+ printed += hist_browser__show_callchain(browser, entry, 1, row,
hist_browser__show_callchain_entry, &arg,
hist_browser__check_output_full);
- } else if (callchain_param.mode == CHAIN_FOLDED) {
- printed += hist_browser__show_callchain_folded(browser,
- &entry->sorted_chain, row, total,
- hist_browser__show_callchain_entry, &arg,
- hist_browser__check_output_full);
- } else {
- printed += hist_browser__show_callchain(browser,
- &entry->sorted_chain, 1, row, total,
- hist_browser__show_callchain_entry, &arg,
- hist_browser__check_output_full);
- }
-
- if (arg.is_current_entry)
- browser->he_selection = entry;
}
return printed;
@@ -1380,15 +1393,11 @@ do_offset:
static int hist_browser__fprintf_callchain(struct hist_browser *browser,
struct hist_entry *he, FILE *fp)
{
- u64 total = hists__total_period(he->hists);
struct callchain_print_arg arg = {
.fp = fp,
};
- if (symbol_conf.cumulate_callchain)
- total = he->stat_acc->period;
-
- hist_browser__show_callchain(browser, &he->sorted_chain, 1, 0, total,
+ hist_browser__show_callchain(browser, he, 1, 0,
hist_browser__fprintf_callchain_entry, &arg,
hist_browser__check_dump_full);
return arg.printed;
--
2.6.4
next prev parent reply other threads:[~2016-01-24 13:55 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-24 13:53 [PATCHSET 00/12] perf tools: Apply percent-limit to callchains Namhyung Kim
2016-01-24 13:53 ` [PATCH 01/12] perf report: Apply --percent-limit to callchains also Namhyung Kim
2016-01-24 13:53 ` [PATCH 02/12] perf report: Apply callchain percent limit on --stdio Namhyung Kim
2016-01-24 13:53 ` [PATCH 03/12] perf report: Get rid of hist_entry__callchain_fprintf() Namhyung Kim
2016-01-24 13:53 ` [PATCH 04/12] perf report: Fix percent calculation on --stdio Namhyung Kim
2016-01-24 13:53 ` [PATCH 05/12] perf report: Hide output pipe for percent-limited callchains on stdio Namhyung Kim
2016-01-24 13:53 ` Namhyung Kim [this message]
2016-01-24 13:53 ` [PATCH 07/12] perf hists browser: Fix callchain_node__count_rows() Namhyung Kim
2016-01-26 11:46 ` Jiri Olsa
2016-01-26 12:32 ` Namhyung Kim
2016-01-24 13:53 ` [PATCH 08/12] perf hists browser: Apply callchain percent limit Namhyung Kim
2016-01-24 13:53 ` [PATCH 09/12] perf hists browser: Fix callchain counting when press ENTER key Namhyung Kim
2016-01-24 13:53 ` [PATCH 10/12] perf hists browser: Fix counting callchains when expand/collapse all Namhyung Kim
2016-01-24 13:53 ` [PATCH 11/12] perf hists browser: Update percent base for fractal callchain mode Namhyung Kim
2016-01-24 13:53 ` [PATCH 12/12] perf report: Fix callchain percent limit on --gtk Namhyung Kim
2016-01-25 2:16 ` [PATCHSET 00/12] perf tools: Apply percent-limit to callchains Andi Kleen
2016-01-26 12:14 ` Jiri Olsa
2016-01-26 12:51 ` Namhyung Kim
2016-01-26 13:27 ` Jiri Olsa
2016-01-26 14:10 ` Namhyung Kim
2016-01-26 14:41 ` Jiri Olsa
2016-01-26 14:49 ` Namhyung Kim
2016-01-26 15:18 ` Jiri Olsa
2016-01-26 15:30 ` Arnaldo Carvalho de Melo
2016-01-26 15:41 ` Jiri Olsa
2016-01-26 15:54 ` Namhyung Kim
2016-01-26 16:15 ` Jiri Olsa
2016-01-27 13:21 ` Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1453643615-1616-7-git-send-email-namhyung@kernel.org \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=andi@firstfloor.org \
--cc=dsahern@gmail.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®