From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Andi Kleen <ak@linux.intel.com>,
Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 06/16] perf callchain: Factor out adding new call chain entries
Date: Wed, 19 Nov 2014 13:03:26 -0300 [thread overview]
Message-ID: <1416413016-19110-7-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1416413016-19110-1-git-send-email-acme@kernel.org>
From: Andi Kleen <ak@linux.intel.com>
Move the code to resolve and add a new callchain entry into a new
add_callchain_ip function. This will be used in the next patches to add
LBRs too.
No change in behavior.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1415844328-4884-2-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/machine.c | 51 +++++++++++++++++++++++++++++------------------
1 file changed, 32 insertions(+), 19 deletions(-)
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 52e94902afb1..84390eecab06 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -1381,6 +1381,34 @@ struct mem_info *sample__resolve_mem(struct perf_sample *sample,
return mi;
}
+static int add_callchain_ip(struct thread *thread,
+ struct symbol **parent,
+ struct addr_location *root_al,
+ int cpumode,
+ u64 ip)
+{
+ struct addr_location al;
+
+ al.filtered = 0;
+ al.sym = NULL;
+ thread__find_addr_location(thread, cpumode, MAP__FUNCTION,
+ ip, &al);
+ if (al.sym != NULL) {
+ if (sort__has_parent && !*parent &&
+ symbol__match_regex(al.sym, &parent_regex))
+ *parent = al.sym;
+ else if (have_ignore_callees && root_al &&
+ symbol__match_regex(al.sym, &ignore_callees_regex)) {
+ /* Treat this symbol as the root,
+ forgetting its callees. */
+ *root_al = al;
+ callchain_cursor_reset(&callchain_cursor);
+ }
+ }
+
+ return callchain_cursor_append(&callchain_cursor, ip, al.map, al.sym);
+}
+
struct branch_info *sample__resolve_bstack(struct perf_sample *sample,
struct addr_location *al)
{
@@ -1427,7 +1455,6 @@ static int thread__resolve_callchain_sample(struct thread *thread,
for (i = 0; i < chain_nr; i++) {
u64 ip;
- struct addr_location al;
if (callchain_param.order == ORDER_CALLEE)
j = i;
@@ -1464,24 +1491,10 @@ static int thread__resolve_callchain_sample(struct thread *thread,
continue;
}
- al.filtered = 0;
- thread__find_addr_location(thread, cpumode,
- MAP__FUNCTION, ip, &al);
- if (al.sym != NULL) {
- if (sort__has_parent && !*parent &&
- symbol__match_regex(al.sym, &parent_regex))
- *parent = al.sym;
- else if (have_ignore_callees && root_al &&
- symbol__match_regex(al.sym, &ignore_callees_regex)) {
- /* Treat this symbol as the root,
- forgetting its callees. */
- *root_al = al;
- callchain_cursor_reset(&callchain_cursor);
- }
- }
-
- err = callchain_cursor_append(&callchain_cursor,
- ip, al.map, al.sym);
+ err = add_callchain_ip(thread, parent, root_al,
+ cpumode, ip);
+ if (err == -EINVAL)
+ break;
if (err)
return err;
}
--
1.9.3
next prev parent reply other threads:[~2014-11-19 16:04 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-19 16:03 [GIT PULL 00/16] perf/core improvements and fixes Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 01/16] perf build-id: Move disable_buildid_cache() to util/build-id.c Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 02/16] perf tools: Clean up libelf feature support code Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 03/16] perf symbols: Fallback to kallsyms when using the minimal 'ELF' loader Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 04/16] perf test: fix typo in python test Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 05/16] perf tools: Fix annotation with kcore Arnaldo Carvalho de Melo
2014-11-19 16:03 ` Arnaldo Carvalho de Melo [this message]
2014-11-19 16:03 ` [PATCH 07/16] perf callchain: Use al.addr to set up call chain Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 08/16] perf callchain: Use a common function to resolve symbol or name Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 09/16] perf tools: Only print base source file for srcline Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 10/16] perf annotate: Support source line numbers in annotate Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 11/16] perf hists: Fix up srcline histogram key formatting Arnaldo Carvalho de Melo
2014-11-19 16:16 ` Andi Kleen
2014-11-19 16:03 ` [PATCH 12/16] perf diff: Add missing handler for PERF_RECORD_MMAP2 events Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 13/16] perf evsel: Fix ftrace:function event recording Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 14/16] perf evlist: Do not poll events that use the system_wide flag Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 15/16] perf tools: Add perf-read-vdso32 and perf-read-vdsox32 to .gitignore Arnaldo Carvalho de Melo
2014-11-19 16:03 ` [PATCH 16/16] perf tools: Only override the default :tid comm entry Arnaldo Carvalho de Melo
2014-11-20 7:33 ` [GIT PULL 00/16] perf/core improvements and fixes Ingo Molnar
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=1416413016-19110-7-git-send-email-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=ak@linux.intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).