All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf ui/tui: Fix a small callchain display bug
@ 2014-08-13  6:02 Namhyung Kim
  2014-08-13  8:19 ` Ingo Molnar
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Namhyung Kim @ 2014-08-13  6:02 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Peter Zijlstra, Ingo Molnar, Paul Mackerras, Namhyung Kim,
	Namhyung Kim, LKML, Jiri Olsa, Andi Kleen, Frederic Weisbecker

The currently when perf TUI report shows callchain, the first level
chains have bogus '+' sign even though only the last one has children.

Since they are on a single line of the chain, toggling intermediate
entries has no effect.  Fix it to show '+' sign at the last entry
only.  Note that non-first level callchain entries don't have this
problem.

Before:

  Children      Self  Command  Shared Object      Symbols
---------------------------------------------------------------------------
-   40.70%     0.00%  swapper  [kernel.kallsyms]  [k] cpuidle_wrap_enter
   + cpuidle_wrap_enter
   + cpuidle_enter_tk
   + cpuidle_idle_call
   + cpu_idle

After:

  Children      Self  Command  Shared Object      Symbols
---------------------------------------------------------------------------
-   40.70%     0.00%  swapper  [kernel.kallsyms]  [k] cpuidle_wrap_enter
     cpuidle_wrap_enter
     cpuidle_enter_tk
     cpuidle_idle_call
   + cpu_idle

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/ui/browsers/hists.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 045c1e16ac59..1818d1275d02 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -228,8 +228,10 @@ static void callchain_node__init_have_children(struct callchain_node *node)
 {
 	struct callchain_list *chain;
 
-	list_for_each_entry(chain, &node->val, list)
+	if (!list_empty(&node->val)) {
+		chain = list_entry(node->val.prev, struct callchain_list, list);
 		chain->ms.has_children = !RB_EMPTY_ROOT(&node->rb_root);
+	}
 
 	callchain_node__init_have_children_rb_tree(node);
 }
-- 
2.0.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-08-14  8:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-13  6:02 [PATCH] perf ui/tui: Fix a small callchain display bug Namhyung Kim
2014-08-13  8:19 ` Ingo Molnar
2014-08-13 20:12   ` Arnaldo Carvalho de Melo
2014-08-13 20:06 ` Arnaldo Carvalho de Melo
2014-08-14  8:48 ` [tip:perf/core] perf hists browser: " tip-bot for Namhyung Kim

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.