From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
Adrian Hunter <adrian.hunter@intel.com>,
David Ahern <dsahern@gmail.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@gmail.com>,
Paul Mackerras <paulus@samba.org>,
Peter Zijlstra <peterz@infradead.org>,
Stephane Eranian <eranian@google.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 03/18] perf tools: Add branch type to db export
Date: Thu, 6 Nov 2014 18:04:24 -0300 [thread overview]
Message-ID: <1415307879-912-4-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1415307879-912-1-git-send-email-acme@kernel.org>
From: Adrian Hunter <adrian.hunter@intel.com>
Add the ability to export branch types through the database export
facility.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1414678188-14946-3-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/db-export.c | 48 +++++++++++++++++++++++++++++++++++++++++++++
tools/perf/util/db-export.h | 6 ++++++
2 files changed, 54 insertions(+)
diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c
index be128b075a32..bccb83120971 100644
--- a/tools/perf/util/db-export.c
+++ b/tools/perf/util/db-export.c
@@ -208,6 +208,15 @@ static int db_ids_from_al(struct db_export *dbe, struct addr_location *al,
return 0;
}
+int db_export__branch_type(struct db_export *dbe, u32 branch_type,
+ const char *name)
+{
+ if (dbe->export_branch_type)
+ return dbe->export_branch_type(dbe, branch_type, name);
+
+ return 0;
+}
+
int db_export__sample(struct db_export *dbe, union perf_event *event,
struct perf_sample *sample, struct perf_evsel *evsel,
struct thread *thread, struct addr_location *al)
@@ -268,3 +277,42 @@ int db_export__sample(struct db_export *dbe, union perf_event *event,
return 0;
}
+
+static struct {
+ u32 branch_type;
+ const char *name;
+} branch_types[] = {
+ {0, "no branch"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_CALL, "call"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_RETURN, "return"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_CONDITIONAL, "conditional jump"},
+ {PERF_IP_FLAG_BRANCH, "unconditional jump"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_CALL | PERF_IP_FLAG_INTERRUPT,
+ "software interrupt"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_RETURN | PERF_IP_FLAG_INTERRUPT,
+ "return from interrupt"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_CALL | PERF_IP_FLAG_SYSCALLRET,
+ "system call"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_RETURN | PERF_IP_FLAG_SYSCALLRET,
+ "return from system call"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_ASYNC, "asynchronous branch"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_CALL | PERF_IP_FLAG_ASYNC |
+ PERF_IP_FLAG_INTERRUPT, "hardware interrupt"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_TX_ABORT, "transaction abort"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_TRACE_BEGIN, "trace begin"},
+ {PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_TRACE_END, "trace end"},
+ {0, NULL}
+};
+
+int db_export__branch_types(struct db_export *dbe)
+{
+ int i, err = 0;
+
+ for (i = 0; branch_types[i].name ; i++) {
+ err = db_export__branch_type(dbe, branch_types[i].branch_type,
+ branch_types[i].name);
+ if (err)
+ break;
+ }
+ return err;
+}
diff --git a/tools/perf/util/db-export.h b/tools/perf/util/db-export.h
index b3643e8e5750..e4baa45ead70 100644
--- a/tools/perf/util/db-export.h
+++ b/tools/perf/util/db-export.h
@@ -54,6 +54,8 @@ struct db_export {
struct machine *machine);
int (*export_symbol)(struct db_export *dbe, struct symbol *sym,
struct dso *dso);
+ int (*export_branch_type)(struct db_export *dbe, u32 branch_type,
+ const char *name);
int (*export_sample)(struct db_export *dbe, struct export_sample *es);
u64 evsel_last_db_id;
u64 machine_last_db_id;
@@ -79,8 +81,12 @@ int db_export__dso(struct db_export *dbe, struct dso *dso,
struct machine *machine);
int db_export__symbol(struct db_export *dbe, struct symbol *sym,
struct dso *dso);
+int db_export__branch_type(struct db_export *dbe, u32 branch_type,
+ const char *name);
int db_export__sample(struct db_export *dbe, union perf_event *event,
struct perf_sample *sample, struct perf_evsel *evsel,
struct thread *thread, struct addr_location *al);
+int db_export__branch_types(struct db_export *dbe);
+
#endif
--
1.9.3
next prev parent reply other threads:[~2014-11-06 21:09 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-06 21:04 [GIT PULL 00/18] perf/core improvements and fixes Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 01/18] perf tools: Add a thread stack for synthesizing call chains Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 02/18] perf tools: Enhance the thread stack to output call/return data Arnaldo Carvalho de Melo
2014-11-06 21:04 ` Arnaldo Carvalho de Melo [this message]
2014-11-06 21:04 ` [PATCH 04/18] perf tools: Add branch_type and in_tx to Python export Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 05/18] perf tools: Add call information to the database export API Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 06/18] perf tools: Add call information to Python export Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 07/18] perf tools: Defer export of comms that were not 'set' Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 08/18] perf symbols: Preparation for compressed kernel module support Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 09/18] perf tools: Add gzip decompression support for kernel module Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 10/18] perf build-id: Rename dsos__write_buildid_table() Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 11/18] perf build-id: Move build-id related functions to util/build-id.c Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 12/18] perf record: Do not save pathname in ./debug/.build-id directory for vmlinux Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 13/18] perf tools: Fix build-id matching on vmlinux Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 14/18] perf tools: Make vmlinux short name more like kallsyms short name Arnaldo Carvalho de Melo
2014-11-09 7:51 ` Jiri Olsa
2014-11-10 6:13 ` Namhyung Kim
2014-11-10 15:29 ` Jiri Olsa
2014-11-06 21:04 ` [PATCH 15/18] perf tools: Add test_and_set_bit function Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 16/18] perf script perl: Removing event cache as it's no longer needed Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 17/18] perf script python: " Arnaldo Carvalho de Melo
2014-11-06 21:04 ` [PATCH 18/18] perf evsel: Do not call pevent_free_format when deleting tracepoint Arnaldo Carvalho de Melo
2014-11-07 5:24 ` [GIT PULL 00/18] 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=1415307879-912-4-git-send-email-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=dsahern@gmail.com \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@gmail.com \
--cc=paulus@samba.org \
--cc=peterz@infradead.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 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.