From: tip-bot for Adrian Hunter <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: acme@redhat.com, eranian@google.com, mingo@redhat.com,
mingo@kernel.org, a.p.zijlstra@chello.nl, efault@gmx.de,
jolsa@redhat.com, fweisbec@gmail.com, ak@linux.intel.com,
dsahern@gmail.com, tglx@linutronix.de, hpa@zytor.com,
paulus@samba.org, linux-kernel@vger.kernel.org,
namhyung@gmail.com, adrian.hunter@intel.com
Subject: [tip:perf/core] perf script: Do not call perf_event__preprocess_sample() twice)
Date: Tue, 10 Dec 2013 01:17:24 -0800 [thread overview]
Message-ID: <tip-a2cb3cf20e06ef119ae541c1a08dc1977f7f0fff@git.kernel.org> (raw)
In-Reply-To: <529F3944.9050007@intel.com>
Commit-ID: a2cb3cf20e06ef119ae541c1a08dc1977f7f0fff
Gitweb: http://git.kernel.org/tip/a2cb3cf20e06ef119ae541c1a08dc1977f7f0fff
Author: Adrian Hunter <adrian.hunter@intel.com>
AuthorDate: Wed, 4 Dec 2013 16:16:36 +0200
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 4 Dec 2013 15:09:53 -0300
perf script: Do not call perf_event__preprocess_sample() twice)
The perf_event__preprocess_sample() function is called in
process_sample_event(). Instead of calling it again in
perf_evsel__print_ip(), pass through the resultant addr_location.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/529F3944.9050007@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-script.c | 11 ++++++-----
tools/perf/util/session.c | 31 ++++++++++++++-----------------
tools/perf/util/session.h | 4 ++--
3 files changed, 22 insertions(+), 24 deletions(-)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 952dce9..c555bdd 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -414,7 +414,8 @@ static void print_sample_bts(union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
struct machine *machine,
- struct thread *thread)
+ struct thread *thread,
+ struct addr_location *al)
{
struct perf_event_attr *attr = &evsel->attr;
@@ -424,7 +425,7 @@ static void print_sample_bts(union perf_event *event,
printf(" ");
else
printf("\n");
- perf_evsel__print_ip(evsel, event, sample, machine,
+ perf_evsel__print_ip(evsel, sample, machine, al,
output[attr->type].print_ip_opts,
PERF_MAX_STACK_DEPTH);
}
@@ -443,7 +444,7 @@ static void print_sample_bts(union perf_event *event,
static void process_event(union perf_event *event, struct perf_sample *sample,
struct perf_evsel *evsel, struct machine *machine,
struct thread *thread,
- struct addr_location *al __maybe_unused)
+ struct addr_location *al)
{
struct perf_event_attr *attr = &evsel->attr;
@@ -458,7 +459,7 @@ static void process_event(union perf_event *event, struct perf_sample *sample,
}
if (is_bts_event(attr)) {
- print_sample_bts(event, sample, evsel, machine, thread);
+ print_sample_bts(event, sample, evsel, machine, thread, al);
return;
}
@@ -474,7 +475,7 @@ static void process_event(union perf_event *event, struct perf_sample *sample,
else
printf("\n");
- perf_evsel__print_ip(evsel, event, sample, machine,
+ perf_evsel__print_ip(evsel, sample, machine, al,
output[attr->type].print_ip_opts,
PERF_MAX_STACK_DEPTH);
}
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 4ce146b..8a7da6f 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -1487,11 +1487,10 @@ struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session,
return NULL;
}
-void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
- struct perf_sample *sample, struct machine *machine,
+void perf_evsel__print_ip(struct perf_evsel *evsel, struct perf_sample *sample,
+ struct machine *machine, struct addr_location *al,
unsigned int print_opts, unsigned int stack_depth)
{
- struct addr_location al;
struct callchain_cursor_node *node;
int print_ip = print_opts & PRINT_IP_OPT_IP;
int print_sym = print_opts & PRINT_IP_OPT_SYM;
@@ -1500,15 +1499,10 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
int print_oneline = print_opts & PRINT_IP_OPT_ONELINE;
char s = print_oneline ? ' ' : '\t';
- if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
- error("problem processing %d event, skipping it.\n",
- event->header.type);
- return;
- }
-
if (symbol_conf.use_callchain && sample->callchain) {
+ struct addr_location node_al;
- if (machine__resolve_callchain(machine, evsel, al.thread,
+ if (machine__resolve_callchain(machine, evsel, al->thread,
sample, NULL, NULL,
PERF_MAX_STACK_DEPTH) != 0) {
if (verbose)
@@ -1517,6 +1511,9 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
}
callchain_cursor_commit(&callchain_cursor);
+ if (print_symoffset)
+ node_al = *al;
+
while (stack_depth) {
node = callchain_cursor_current(&callchain_cursor);
if (!node)
@@ -1531,9 +1528,9 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
if (print_sym) {
printf(" ");
if (print_symoffset) {
- al.addr = node->ip;
- al.map = node->map;
- symbol__fprintf_symname_offs(node->sym, &al, stdout);
+ node_al.addr = node->ip;
+ node_al.map = node->map;
+ symbol__fprintf_symname_offs(node->sym, &node_al, stdout);
} else
symbol__fprintf_symname(node->sym, stdout);
}
@@ -1553,7 +1550,7 @@ next:
}
} else {
- if (al.sym && al.sym->ignore)
+ if (al->sym && al->sym->ignore)
return;
if (print_ip)
@@ -1562,15 +1559,15 @@ next:
if (print_sym) {
printf(" ");
if (print_symoffset)
- symbol__fprintf_symname_offs(al.sym, &al,
+ symbol__fprintf_symname_offs(al->sym, al,
stdout);
else
- symbol__fprintf_symname(al.sym, stdout);
+ symbol__fprintf_symname(al->sym, stdout);
}
if (print_dso) {
printf(" (");
- map__fprintf_dsoname(al.map, stdout);
+ map__fprintf_dsoname(al->map, stdout);
printf(")");
}
}
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h
index 50f6409..7e5d4398 100644
--- a/tools/perf/util/session.h
+++ b/tools/perf/util/session.h
@@ -105,8 +105,8 @@ size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp);
struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session,
unsigned int type);
-void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
- struct perf_sample *sample, struct machine *machine,
+void perf_evsel__print_ip(struct perf_evsel *evsel, struct perf_sample *sample,
+ struct machine *machine, struct addr_location *al,
unsigned int print_opts, unsigned int stack_depth);
int perf_session__cpu_bitmap(struct perf_session *session,
next prev parent reply other threads:[~2013-12-10 9:17 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-03 7:23 [PATCH 0/7] perf script: Add an option to print the source line number Adrian Hunter
2013-12-03 7:23 ` [PATCH 1/7] perf script: Do not call perf_event__preprocess_sample() twice) Adrian Hunter
2013-12-03 18:23 ` Arnaldo Carvalho de Melo
2013-12-04 14:09 ` Adrian Hunter
2013-12-04 14:16 ` [PATCH V2 " Adrian Hunter
2013-12-10 9:17 ` tip-bot for Adrian Hunter [this message]
2013-12-03 7:23 ` [PATCH 2/7] perf script: Add an option to print the source line number Adrian Hunter
2013-12-03 16:04 ` David Ahern
2013-12-03 16:07 ` David Ahern
2013-12-03 7:23 ` [PATCH 3/7] perf tools: Use asprintf instead of malloc plus snprintf Adrian Hunter
2013-12-10 9:15 ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-12-03 7:23 ` [PATCH 4/7] perf tools: Retain bfd reference to lookup source line numbers Adrian Hunter
2013-12-10 9:15 ` [tip:perf/core] perf symbols: " tip-bot for Adrian Hunter
2013-12-03 7:23 ` [PATCH 5/7] perf tools: Retain symbol source file name " Adrian Hunter
2013-12-10 9:15 ` [tip:perf/core] perf symbols: " tip-bot for Adrian Hunter
2013-12-03 7:23 ` [PATCH 6/7] perf tools: Do not need to read symbols for source line lookup Adrian Hunter
2013-12-03 20:24 ` Arnaldo Carvalho de Melo
2013-12-04 14:00 ` Adrian Hunter
2013-12-04 18:08 ` Arnaldo Carvalho de Melo
2013-12-03 7:23 ` [PATCH 7/7] perf tools: Do not disable source line lookup just because of 1 failure Adrian Hunter
2013-12-10 9:16 ` [tip:perf/core] " tip-bot for Adrian Hunter
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-a2cb3cf20e06ef119ae541c1a08dc1977f7f0fff@git.kernel.org \
--to=tipbot@zytor.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=dsahern@gmail.com \
--cc=efault@gmx.de \
--cc=eranian@google.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=mingo@redhat.com \
--cc=namhyung@gmail.com \
--cc=paulus@samba.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox