From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Adrian Hunter <adrian.hunter@intel.com>,
David Ahern <dsahern@gmail.com>, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Wang Nan <wangnan0@huawei.com>
Subject: [PATCH 01/17] perf evsel: Introduce constructor for cycles event
Date: Wed, 3 Aug 2016 21:49:11 -0300 [thread overview]
Message-ID: <1470271767-27494-2-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1470271767-27494-1-git-send-email-acme@kernel.org>
From: Arnaldo Carvalho de Melo <acme@redhat.com>
That is the default used when no events is specified in tools, separate
it so that simpler tools that need no evlist can use it directly.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-67mwuthscwroz88x9pswcqyv@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/evlist.c | 22 ++--------------------
tools/perf/util/evsel.c | 28 ++++++++++++++++++++++++++++
tools/perf/util/evsel.h | 2 ++
3 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 2a40b8e1def7..097b3ed77fdd 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -239,31 +239,13 @@ void perf_event_attr__set_max_precise_ip(struct perf_event_attr *attr)
int perf_evlist__add_default(struct perf_evlist *evlist)
{
- struct perf_event_attr attr = {
- .type = PERF_TYPE_HARDWARE,
- .config = PERF_COUNT_HW_CPU_CYCLES,
- };
- struct perf_evsel *evsel;
-
- event_attr_init(&attr);
+ struct perf_evsel *evsel = perf_evsel__new_cycles();
- perf_event_attr__set_max_precise_ip(&attr);
-
- evsel = perf_evsel__new(&attr);
if (evsel == NULL)
- goto error;
-
- /* use asprintf() because free(evsel) assumes name is allocated */
- if (asprintf(&evsel->name, "cycles%.*s",
- attr.precise_ip ? attr.precise_ip + 1 : 0, ":ppp") < 0)
- goto error_free;
+ return -ENOMEM;
perf_evlist__add(evlist, evsel);
return 0;
-error_free:
- perf_evsel__delete(evsel);
-error:
- return -ENOMEM;
}
int perf_evlist__add_dummy(struct perf_evlist *evlist)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 8c54df61fe64..4c2b31dc4e4d 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -253,6 +253,34 @@ struct perf_evsel *perf_evsel__new_idx(struct perf_event_attr *attr, int idx)
return evsel;
}
+struct perf_evsel *perf_evsel__new_cycles(void)
+{
+ struct perf_event_attr attr = {
+ .type = PERF_TYPE_HARDWARE,
+ .config = PERF_COUNT_HW_CPU_CYCLES,
+ };
+ struct perf_evsel *evsel;
+
+ event_attr_init(&attr);
+
+ perf_event_attr__set_max_precise_ip(&attr);
+
+ evsel = perf_evsel__new(&attr);
+ if (evsel == NULL)
+ goto out;
+
+ /* use asprintf() because free(evsel) assumes name is allocated */
+ if (asprintf(&evsel->name, "cycles%.*s",
+ attr.precise_ip ? attr.precise_ip + 1 : 0, ":ppp") < 0)
+ goto error_free;
+out:
+ return evsel;
+error_free:
+ perf_evsel__delete(evsel);
+ evsel = NULL;
+ goto out;
+}
+
/*
* Returns pointer with encoded error via <linux/err.h> interface.
*/
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 8a4a6c9f1480..4d44129e050b 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -175,6 +175,8 @@ static inline struct perf_evsel *perf_evsel__newtp(const char *sys, const char *
return perf_evsel__newtp_idx(sys, name, 0);
}
+struct perf_evsel *perf_evsel__new_cycles(void);
+
struct event_format *event_format__new(const char *sys, const char *name);
void perf_evsel__init(struct perf_evsel *evsel,
--
2.7.4
next prev parent reply other threads:[~2016-08-04 0:52 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-04 0:49 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-08-04 0:49 ` Arnaldo Carvalho de Melo [this message]
2016-08-04 0:49 ` [PATCH 02/17] perf annotate: Use pipe + fork instead of popen Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 03/17] perf target: str_error_r() always returns the buffer it receives Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 04/17] perf annotate: Rename symbol__annotate() to symbol__disassemble() Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 05/17] perf annotate: Introduce strerror for handling symbol__disassemble() errors Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 06/17] perf annotate: Plug filename string leak Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 07/17] perf tools: Fix build failure on perl script context Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 08/17] tools lib traceevent: Ignore generated library files Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 09/17] tools lib: Add bitmap_alloc function Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 10/17] tools lib: Add bitmap_scnprintf function Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 11/17] tools lib: Add bitmap_and function Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 12/17] perf tests: Add test for bitmap_scnprintf function Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 13/17] perf tools: Move config/Makefile into Makefile.config Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 14/17] perf hists: Introduce output_resort_cb method Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 15/17] perf record: Add --sample-cpu option Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 16/17] perf tests: objdump output can contain multi byte chunks Arnaldo Carvalho de Melo
2016-08-04 0:49 ` [PATCH 17/17] perf tests bpf: Use SyS_epoll_wait alias for now missing sys_epoll_wait DWARF info Arnaldo Carvalho de Melo
2016-08-04 9:04 ` [GIT PULL 00/17] 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=1470271767-27494-2-git-send-email-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=wangnan0@huawei.com \
/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
Powered by JetHome