All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Namhyung Kim <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: acme@redhat.com, linux-kernel@vger.kernel.org, paulus@samba.org,
	hpa@zytor.com, mingo@kernel.org, andi@firstfloor.org,
	a.p.zijlstra@chello.nl, namhyung.kim@lge.com,
	rodrigo@sdfg.com.ar, namhyung@kernel.org, jolsa@redhat.com,
	fweisbec@gmail.com, tglx@linutronix.de, asharma@fb.com
Subject: [tip:perf/core] perf tools: Factor out sample__resolve_callchain( )
Date: Thu, 16 Jan 2014 05:38:44 -0800	[thread overview]
Message-ID: <tip-2dc9fb1a7bf013ce24dd34bc25283b60b966f015@git.kernel.org> (raw)
In-Reply-To: <1389677157-30513-3-git-send-email-namhyung@kernel.org>

Commit-ID:  2dc9fb1a7bf013ce24dd34bc25283b60b966f015
Gitweb:     http://git.kernel.org/tip/2dc9fb1a7bf013ce24dd34bc25283b60b966f015
Author:     Namhyung Kim <namhyung@kernel.org>
AuthorDate: Tue, 14 Jan 2014 14:25:35 +0900
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 15 Jan 2014 15:32:43 -0300

perf tools: Factor out sample__resolve_callchain()

The report__resolve_callchain() can be shared with perf top code as it
doesn't really depend on the perf report code.  Factor it out as
sample__resolve_callchain().  The same goes to the hist_entry__append_
callchain() too.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Arun Sharma <asharma@fb.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Rodrigo Campos <rodrigo@sdfg.com.ar>
Link: http://lkml.kernel.org/r/1389677157-30513-3-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-report.c | 24 +++---------------------
 tools/perf/builtin-top.c    | 22 +++++++---------------
 tools/perf/util/callchain.c | 23 +++++++++++++++++++++++
 tools/perf/util/callchain.h |  6 ++++++
 4 files changed, 39 insertions(+), 36 deletions(-)

diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 46864dd..3c53ec2 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -75,24 +75,6 @@ static int report__config(const char *var, const char *value, void *cb)
 	return perf_default_config(var, value, cb);
 }
 
-static int report__resolve_callchain(struct report *rep, struct symbol **parent,
-				     struct perf_evsel *evsel, struct addr_location *al,
-				     struct perf_sample *sample)
-{
-	if ((sort__has_parent || symbol_conf.use_callchain) && sample->callchain) {
-		return machine__resolve_callchain(al->machine, evsel, al->thread, sample,
-						  parent, al, rep->max_stack);
-	}
-	return 0;
-}
-
-static int hist_entry__append_callchain(struct hist_entry *he, struct perf_sample *sample)
-{
-	if (!symbol_conf.use_callchain)
-		return 0;
-	return callchain_append(he->callchain, &callchain_cursor, sample->period);
-}
-
 static int report__add_mem_hist_entry(struct perf_tool *tool, struct addr_location *al,
 				      struct perf_sample *sample, struct perf_evsel *evsel,
 				      union perf_event *event)
@@ -103,7 +85,7 @@ static int report__add_mem_hist_entry(struct perf_tool *tool, struct addr_locati
 	struct hist_entry *he;
 	struct mem_info *mi, *mx;
 	uint64_t cost;
-	int err = report__resolve_callchain(rep, &parent, evsel, al, sample);
+	int err = sample__resolve_callchain(sample, &parent, evsel, al, rep->max_stack);
 
 	if (err)
 		return err;
@@ -155,7 +137,7 @@ static int report__add_branch_hist_entry(struct perf_tool *tool, struct addr_loc
 	unsigned i;
 	struct hist_entry *he;
 	struct branch_info *bi, *bx;
-	int err = report__resolve_callchain(rep, &parent, evsel, al, sample);
+	int err = sample__resolve_callchain(sample, &parent, evsel, al, rep->max_stack);
 
 	if (err)
 		return err;
@@ -208,7 +190,7 @@ static int report__add_hist_entry(struct perf_tool *tool, struct perf_evsel *evs
 	struct report *rep = container_of(tool, struct report, tool);
 	struct symbol *parent = NULL;
 	struct hist_entry *he;
-	int err = report__resolve_callchain(rep, &parent, evsel, al, sample);
+	int err = sample__resolve_callchain(sample, &parent, evsel, al, rep->max_stack);
 
 	if (err)
 		return err;
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 569dd87..76cd510 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -743,15 +743,10 @@ static void perf_event__process_sample(struct perf_tool *tool,
 	if (al.sym == NULL || !al.sym->ignore) {
 		struct hist_entry *he;
 
-		if ((sort__has_parent || symbol_conf.use_callchain) &&
-		    sample->callchain) {
-			err = machine__resolve_callchain(machine, evsel,
-							 al.thread, sample,
-							 &parent, &al,
-							 top->max_stack);
-			if (err)
-				return;
-		}
+		err = sample__resolve_callchain(sample, &parent, evsel, &al,
+						top->max_stack);
+		if (err)
+			return;
 
 		he = perf_evsel__add_hist_entry(evsel, &al, sample);
 		if (he == NULL) {
@@ -759,12 +754,9 @@ static void perf_event__process_sample(struct perf_tool *tool,
 			return;
 		}
 
-		if (symbol_conf.use_callchain) {
-			err = callchain_append(he->callchain, &callchain_cursor,
-					       sample->period);
-			if (err)
-				return;
-		}
+		err = hist_entry__append_callchain(he, sample);
+		if (err)
+			return;
 
 		if (sort__has_sym)
 			perf_top__record_precise_ip(top, he, evsel->idx, ip);
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
index e3970e3..9eb4f57 100644
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -17,6 +17,8 @@
 
 #include "hist.h"
 #include "util.h"
+#include "sort.h"
+#include "machine.h"
 #include "callchain.h"
 
 __thread struct callchain_cursor callchain_cursor;
@@ -531,3 +533,24 @@ int callchain_cursor_append(struct callchain_cursor *cursor,
 
 	return 0;
 }
+
+int sample__resolve_callchain(struct perf_sample *sample, struct symbol **parent,
+			      struct perf_evsel *evsel, struct addr_location *al,
+			      int max_stack)
+{
+	if (sample->callchain == NULL)
+		return 0;
+
+	if (symbol_conf.use_callchain || sort__has_parent) {
+		return machine__resolve_callchain(al->machine, evsel, al->thread,
+						  sample, parent, al, max_stack);
+	}
+	return 0;
+}
+
+int hist_entry__append_callchain(struct hist_entry *he, struct perf_sample *sample)
+{
+	if (!symbol_conf.use_callchain)
+		return 0;
+	return callchain_append(he->callchain, &callchain_cursor, sample->period);
+}
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
index 08b25af..8ad97e9 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -145,10 +145,16 @@ static inline void callchain_cursor_advance(struct callchain_cursor *cursor)
 }
 
 struct option;
+struct hist_entry;
 
 int record_parse_callchain(const char *arg, struct record_opts *opts);
 int record_parse_callchain_opt(const struct option *opt, const char *arg, int unset);
 int record_callchain_opt(const struct option *opt, const char *arg, int unset);
 
+int sample__resolve_callchain(struct perf_sample *sample, struct symbol **parent,
+			      struct perf_evsel *evsel, struct addr_location *al,
+			      int max_stack);
+int hist_entry__append_callchain(struct hist_entry *he, struct perf_sample *sample);
+
 extern const char record_callchain_help[];
 #endif	/* __PERF_CALLCHAIN_H */

  reply	other threads:[~2014-01-16 13:39 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-14  5:25 [PATCHSET 00/24] perf tools: Add support to accumulate hist periods (v6) Namhyung Kim
2014-01-14  5:25 ` [PATCH 01/24] perf tools: Remove symbol_conf.use_callchain check Namhyung Kim
2014-01-16 13:38   ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-01-14  5:25 ` [PATCH 02/24] perf tools: Factor out sample__resolve_callchain() Namhyung Kim
2014-01-16 13:38   ` tip-bot for Namhyung Kim [this message]
2014-01-14  5:25 ` [PATCH 03/24] perf tools: Introduce struct hist_entry_iter Namhyung Kim
2014-01-14  5:25 ` [PATCH 04/24] perf hists: Convert hist entry functions to use struct he_stat Namhyung Kim
2014-01-16 13:38   ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-01-14  5:25 ` [PATCH 05/24] perf hists: Add support for accumulated stat of hist entry Namhyung Kim
2014-01-14  5:25 ` [PATCH 06/24] perf hists: Check if accumulated when adding a " Namhyung Kim
2014-01-14  5:25 ` [PATCH 07/24] perf hists: Accumulate hist entry stat based on the callchain Namhyung Kim
2014-01-14  5:25 ` [PATCH 08/24] perf tools: Update cpumode for each cumulative entry Namhyung Kim
2014-01-14  5:25 ` [PATCH 09/24] perf report: Cache cumulative callchains Namhyung Kim
2014-01-14  5:25 ` [PATCH 10/24] perf callchain: Add callchain_cursor_snapshot() Namhyung Kim
2014-01-14  5:25 ` [PATCH 11/24] perf tools: Save callchain info for each cumulative entry Namhyung Kim
2014-01-14  5:25 ` [PATCH 12/24] perf hists: Sort hist entries by accumulated period Namhyung Kim
2014-01-14  5:25 ` [PATCH 13/24] perf ui/hist: Add support to accumulated hist stat Namhyung Kim
2014-01-14  5:25 ` [PATCH 14/24] perf ui/browser: " Namhyung Kim
2014-01-14  5:25 ` [PATCH 15/24] perf ui/gtk: " Namhyung Kim
2014-01-14  5:25 ` [PATCH 16/24] perf tools: Apply percent-limit to cumulative percentage Namhyung Kim
2014-01-14  5:25 ` [PATCH 17/24] perf tools: Add more hpp helper functions Namhyung Kim
2014-01-14  5:25 ` [PATCH 18/24] perf report: Add --children option Namhyung Kim
2014-01-14  5:25 ` [PATCH 19/24] perf report: Add report.children config option Namhyung Kim
2014-01-14  5:25 ` [PATCH 20/24] perf tools: Add callback function to hist_entry_iter Namhyung Kim
2014-01-14  5:25 ` [PATCH 21/24] perf top: Convert " Namhyung Kim
2014-01-14  5:25 ` [PATCH 22/24] perf top: Add --children option Namhyung Kim
2014-01-14  5:25 ` [PATCH 23/24] perf top: Add top.children config option Namhyung Kim
2014-01-14  5:25 ` [PATCH 24/24] perf tools: Enable --children option by default Namhyung Kim
2014-01-22 13:20 ` [PATCHSET 00/24] perf tools: Add support to accumulate hist periods (v6) Jiri Olsa
2014-01-22 18:03   ` Arun Sharma
2014-01-22 23:46     ` Namhyung Kim
2014-01-22 23:44   ` Namhyung Kim
2014-01-23 12:50     ` Jiri Olsa
2014-01-23 13:00       ` Arnaldo Carvalho de Melo

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=tip-2dc9fb1a7bf013ce24dd34bc25283b60b966f015@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=andi@firstfloor.org \
    --cc=asharma@fb.com \
    --cc=fweisbec@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung.kim@lge.com \
    --cc=namhyung@kernel.org \
    --cc=paulus@samba.org \
    --cc=rodrigo@sdfg.com.ar \
    --cc=tglx@linutronix.de \
    /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 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.