Patch "perf hists browser: Fix dump to show correct callchain style" has been added to the 4.5-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
perf hists browser: Fix dump to show correct callchain style
to the 4.5-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
perf-hists-browser-fix-dump-to-show-correct-callchain-style.patch
and it can be found in the queue-4.5 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
0c841c6c16f320704f75970bbe6a9800c53e6cf5Mon Sep 17 00:00:00 2001
From: Namhyung Kim <[email protected]>
Date: Thu, 28 Jan 2016 00:40:54 +0900
Subject: perf hists browser: Fix dump to show correct callchain style
From: Namhyung Kim <[email protected]>
commit 0c841c6c16f320704f75970bbe6a9800c53e6cf5 upstream.
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 rename the existing function which prints graph-style callchain.
--- tools/perf/ui/browsers/hists.c | 73 +++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 32 deletions(-)
tools/perf/ui/browsers/hists.c +41 -32
@@ -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(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(stru --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, - 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, + printed +=hist_browser__show_callchain (browser, entry,1 , row, 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;
Patches currently in stable-queue which might be from [email protected] are
queue-4.5/perf-hists-fix-determination-of-a-callchain-node-s-childlessness.patch queue-4.5/perf-evlist-reference-count-the-cpu-and-thread-maps-at-set_maps.patch queue-4.5/perf-hists-browser-fix-dump-to-show-correct-callchain-style.patch queue-4.5/perf-hists-browser-only-offer-symbol-scripting-when-a-symbol-is-under-the-cursor.patch queue-4.5/perf-core-fix-time-tracking-bug-with-multiplexing.patch queue-4.5/perf-stat-document-detailed-option.patch queue-4.5/perf-tools-handle-spaces-in-file-names-obtained-from-proc-pid-maps.patch