All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] perf hists: Add more helper functions for the hierarchy mode
@ 2016-02-26 12:13 Namhyung Kim
  2016-02-26 12:13 ` [PATCH 2/5] perf report: Show message for percent limit on stdio Namhyung Kim
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Namhyung Kim @ 2016-02-26 12:13 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern,
	Andi Kleen, Stephane Eranian, Wang Nan

The hists__overhead_width() is to calculate width occupied by the
overhead (and others) columns before the sort columns.

The hist_entry__has_hiearchy_children() is to check whether an entry has
lower entries (children) in the hierarchy to be shown in the output.
This means the children should not be filtered out and above the percent
limit.

These two functions will be used to show information when all children
of an entry is omitted by the percent limit (or filter).

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/ui/hist.c   | 22 ++++++++++++++++++++++
 tools/perf/util/hist.c | 25 +++++++++++++++++++++++++
 tools/perf/util/hist.h |  3 +++
 3 files changed, 50 insertions(+)

diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index edbf854e8e1c..7c0585c146e1 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -643,6 +643,28 @@ unsigned int hists__sort_list_width(struct hists *hists)
 	return ret;
 }
 
+unsigned int hists__overhead_width(struct hists *hists)
+{
+	struct perf_hpp_fmt *fmt;
+	int ret = 0;
+	bool first = true;
+	struct perf_hpp dummy_hpp;
+
+	hists__for_each_format(hists, fmt) {
+		if (perf_hpp__is_sort_entry(fmt) || perf_hpp__is_dynamic_entry(fmt))
+			break;
+
+		if (first)
+			first = false;
+		else
+			ret += 2;
+
+		ret += fmt->width(fmt, &dummy_hpp, hists_to_evsel(hists));
+	}
+
+	return ret;
+}
+
 void perf_hpp__reset_width(struct perf_hpp_fmt *fmt, struct hists *hists)
 {
 	if (perf_hpp__is_sort_entry(fmt))
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 1c530428e087..e71691977a95 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -1582,6 +1582,31 @@ struct rb_node *rb_hierarchy_prev(struct rb_node *node)
 	return &he->rb_node;
 }
 
+bool hist_entry__has_hierarchy_children(struct hist_entry *he, float limit)
+{
+	struct rb_node *node;
+	struct hist_entry *child;
+	float percent;
+
+	if (he->leaf)
+		return false;
+
+	node = rb_first(&he->hroot_out);
+	child = rb_entry(node, struct hist_entry, rb_node);
+
+	while (node && child->filtered) {
+		node = rb_next(node);
+		child = rb_entry(node, struct hist_entry, rb_node);
+	}
+
+	if (node)
+		percent = hist_entry__get_percent_limit(child);
+	else
+		percent = 0;
+
+	return node && percent >= limit;
+}
+
 static void hists__remove_entry_filter(struct hists *hists, struct hist_entry *h,
 				       enum hist_filter filter)
 {
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 722aa447f705..da3e7b6e4615 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -410,6 +410,7 @@ static inline int script_browse(const char *script_opt __maybe_unused)
 #endif
 
 unsigned int hists__sort_list_width(struct hists *hists);
+unsigned int hists__overhead_width(struct hists *hists);
 
 void hist__account_cycles(struct branch_stack *bs, struct addr_location *al,
 			  struct perf_sample *sample, bool nonany_branch_mode);
@@ -439,4 +440,6 @@ static inline struct rb_node *rb_hierarchy_next(struct rb_node *node)
 
 #define HIERARCHY_INDENT  3
 
+bool hist_entry__has_hierarchy_children(struct hist_entry *he, float limit);
+
 #endif	/* __PERF_HIST_H */
-- 
2.7.1

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

end of thread, other threads:[~2016-03-30 16:12 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-26 12:13 [PATCH 1/5] perf hists: Add more helper functions for the hierarchy mode Namhyung Kim
2016-02-26 12:13 ` [PATCH 2/5] perf report: Show message for percent limit on stdio Namhyung Kim
2016-02-26 14:15   ` Arnaldo Carvalho de Melo
2016-02-27  9:41   ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-03-30 14:12   ` [PATCH 2/5] " Arnaldo Carvalho de Melo
2016-03-30 16:12     ` Namhyung Kim
2016-02-26 12:13 ` [PATCH 3/5] perf hists browser: Cleanup hist_browser__update_percent_limit() Namhyung Kim
2016-02-27  9:42   ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-02-26 12:13 ` [PATCH 4/5] perf hists browser: Show message for percent limit Namhyung Kim
2016-02-27  9:42   ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-02-26 12:13 ` [PATCH 5/5] perf report: Show message for percent limit on gtk Namhyung Kim
2016-02-27  9:42   ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-02-27  9:41 ` [tip:perf/core] perf hists: Add more helper functions for the hierarchy mode 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.