From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Linux Weekly News <lwn@lwn.net>,
Andi Kleen <ak@linux.intel.com>, Jiri Olsa <jolsa@kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 04/27] perf list: Add support for listing only json events
Date: Thu, 13 Oct 2016 13:21:17 -0300 [thread overview]
Message-ID: <1476375700-8896-5-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1476375700-8896-1-git-send-email-acme@kernel.org>
From: Andi Kleen <ak@linux.intel.com>
Add an argument to only list json events. To be used for the command
line completion script. This requires adding a new flag to the alias
structure.
Committer notes:
Using it:
$ perf list json
Cache:
l1d.replacement
[L1D data line replacements]
l1d_pend_miss.fb_full
[Cycles a demand request was blocked due to Fill Buffers inavailability]
l1d_pend_miss.pending
[L1D miss oustandings duration in cycles]
l1d_pend_miss.pending_cycles
[Cycles with L1D load Misses outstanding]
<SNIP>
page_walker_loads.itlb_l1
[Number of ITLB page walker hits in the L1+FB]
page_walker_loads.itlb_l2
[Number of ITLB page walker hits in the L2]
page_walker_loads.itlb_l3
[Number of ITLB page walker hits in the L3 + XSNP]
tlb_flush.dtlb_thread
[DTLB flush attempts of the thread-specific entries]
tlb_flush.stlb_any
[STLB flush attempts]
$
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Suggested-and-Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/1475781807-6034-1-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-list.txt | 2 +-
tools/perf/builtin-list.c | 9 ++++++---
tools/perf/util/parse-events.c | 2 +-
tools/perf/util/pmu.c | 14 ++++++++++----
tools/perf/util/pmu.h | 3 ++-
5 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt
index 41857cce5e86..50a35b27a64d 100644
--- a/tools/perf/Documentation/perf-list.txt
+++ b/tools/perf/Documentation/perf-list.txt
@@ -8,7 +8,7 @@ perf-list - List all symbolic event types
SYNOPSIS
--------
[verse]
-'perf list' [--no-desc] [--long-desc] [hw|sw|cache|tracepoint|pmu|event_glob]
+'perf list' [--no-desc] [--long-desc] [hw|sw|cache|tracepoint|pmu|json|sdt|event_glob]
DESCRIPTION
-----------
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index ba9322ff858b..b9ccdc7ec733 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -32,7 +32,7 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
OPT_END()
};
const char * const list_usage[] = {
- "perf list [<options>] [hw|sw|cache|tracepoint|pmu|sdt|event_glob]",
+ "perf list [<options>] [hw|sw|cache|tracepoint|pmu|sdt|json|event_glob]",
NULL
};
@@ -69,9 +69,12 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
print_hwcache_events(NULL, raw_dump);
else if (strcmp(argv[i], "pmu") == 0)
print_pmu_events(NULL, raw_dump, !desc_flag,
- long_desc_flag);
+ long_desc_flag, false);
else if (strcmp(argv[i], "sdt") == 0)
print_sdt_events(NULL, NULL, raw_dump);
+ else if (strcmp(argv[i], "json") == 0)
+ print_pmu_events(NULL, raw_dump, !desc_flag,
+ long_desc_flag, true);
else if ((sep = strchr(argv[i], ':')) != NULL) {
int sep_idx;
@@ -100,7 +103,7 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
event_symbols_sw, PERF_COUNT_SW_MAX, raw_dump);
print_hwcache_events(s, raw_dump);
print_pmu_events(s, raw_dump, !desc_flag,
- long_desc_flag);
+ long_desc_flag, false);
print_tracepoint_events(NULL, s, raw_dump);
print_sdt_events(NULL, s, raw_dump);
free(s);
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 4e778eae1510..948ef84e4c6a 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -2275,7 +2275,7 @@ void print_events(const char *event_glob, bool name_only, bool quiet_flag,
print_hwcache_events(event_glob, name_only);
- print_pmu_events(event_glob, name_only, quiet_flag, long_desc);
+ print_pmu_events(event_glob, name_only, quiet_flag, long_desc, false);
if (event_glob != NULL)
return;
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index b1474dcadfa2..d8d7d4c0319c 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -224,7 +224,7 @@ static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias,
static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
char *desc, char *val, char *long_desc,
- char *topic)
+ char *topic, bool json)
{
struct perf_pmu_alias *alias;
int ret;
@@ -238,6 +238,7 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
alias->unit[0] = '\0';
alias->per_pkg = false;
alias->snapshot = false;
+ alias->json = json;
ret = parse_events_terms(&alias->terms, val);
if (ret) {
@@ -278,7 +279,7 @@ static int perf_pmu__new_alias(struct list_head *list, char *dir, char *name, FI
buf[ret] = 0;
- return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL);
+ return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL, false);
}
static inline bool pmu_alias_info_file(char *name)
@@ -537,7 +538,8 @@ static void pmu_add_cpu_aliases(struct list_head *head)
/* need type casts to override 'const' */
__perf_pmu__new_alias(head, NULL, (char *)pe->name,
(char *)pe->desc, (char *)pe->event,
- (char *)pe->long_desc, (char *)pe->topic);
+ (char *)pe->long_desc, (char *)pe->topic,
+ true);
}
out:
@@ -1103,7 +1105,7 @@ static void wordwrap(char *s, int start, int max, int corr)
}
void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
- bool long_desc)
+ bool long_desc, bool json_only)
{
struct perf_pmu *pmu;
struct perf_pmu_alias *alias;
@@ -1134,6 +1136,9 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
format_alias(buf, sizeof(buf), pmu, alias);
bool is_cpu = !strcmp(pmu->name, "cpu");
+ if (json_only && !alias->json)
+ continue;
+
if (event_glob != NULL &&
!(strglobmatch(name, event_glob) ||
(!is_cpu && strglobmatch(alias->name,
@@ -1158,6 +1163,7 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
j++;
}
if (pmu->selectable &&
+ !json_only &&
(event_glob == NULL || strglobmatch(pmu->name, event_glob))) {
char *s;
if (asprintf(&s, "%s//", pmu->name) < 0)
diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
index 25712034c815..19fa2e19dbe9 100644
--- a/tools/perf/util/pmu.h
+++ b/tools/perf/util/pmu.h
@@ -49,6 +49,7 @@ struct perf_pmu_alias {
double scale;
bool per_pkg;
bool snapshot;
+ bool json;
};
struct perf_pmu *perf_pmu__find(const char *name);
@@ -75,7 +76,7 @@ int perf_pmu__format_parse(char *dir, struct list_head *head);
struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu);
void print_pmu_events(const char *event_glob, bool name_only, bool quiet,
- bool long_desc);
+ bool long_desc, bool json_only);
bool pmu_have_event(const char *pname, const char *name);
int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char *fmt,
--
2.7.4
next prev parent reply other threads:[~2016-10-13 16:29 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-13 16:21 [GIT PULL 00/27] perf/urgent fixes and JSON events files Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 01/27] perf top: Fix refreshing hierarchy entries on TUI Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 02/27] perf header: Set nr_numa_nodes only when we parsed all the data Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 03/27] perf jevents: Handle events including .c and .o Arnaldo Carvalho de Melo
2016-10-13 16:21 ` Arnaldo Carvalho de Melo [this message]
2016-10-16 6:53 ` [PATCH 04/27] perf list: Add support for listing only json events Ingo Molnar
2016-10-17 13:57 ` Andi Kleen
2016-10-17 14:28 ` [GIT PULL] " Arnaldo Carvalho de Melo
2016-10-17 14:49 ` Ingo Molnar
2016-10-13 16:21 ` [PATCH 05/27] perf tools: Handle completion of upper case events Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 06/27] perf jevents: Add BroadwellDE V5 event file Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 07/27] perf jevents: Add Broadwell V17 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 08/27] perf jevents: Add BroadwellX V10 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 09/27] perf jevents: Add Bonnell V4 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 10/27] perf jevents: Add Goldmont V8 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 11/27] perf jevents: Add Haswell V24 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 12/27] perf jevents: Add HaswellX V17 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 13/27] perf jevents: Add IvyBridge V18 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 14/27] perf jevents: Add IvyTown V19 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 15/27] perf jevents: Add Jaketown V20 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 16/27] perf jevents: Add KnightsLanding V9 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 17/27] perf jevents: Add NehalemEP V2 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 18/27] perf jevents: Add NehalemEX " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 19/27] perf jevents: Add Skylake V24 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 20/27] perf jevents: Add Silvermont V13 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 21/27] perf jevents: Add SandyBridge V15 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 22/27] perf jevents: Add WestmereEP-DP V2 " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 23/27] perf jevents: Add WestmereEP-SP " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 24/27] perf jevents: Add WestmereEX " Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 25/27] perf jevents: Add power8 PMU events Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 26/27] perf jevents: Support couple more POWER8 PVRs in mapfile Arnaldo Carvalho de Melo
2016-10-13 16:21 ` [PATCH 27/27] perf jit: Fix build issue on Ubuntu 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=1476375700-8896-5-git-send-email-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=ak@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lwn@lwn.net \
--cc=mingo@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 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.