linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andi Kleen <andi@firstfloor.org>
To: acme@kernel.org
Cc: jolsa@kernel.org, linux-kernel@vger.kernel.org, mingo@kernel.org,
	Andi Kleen <ak@linux.intel.com>
Subject: [PATCH 02/11] perf, tools: Parse eventcode as number in jevents
Date: Tue,  3 Jan 2017 07:08:24 -0800	[thread overview]
Message-ID: <20170103150833.6694-3-andi@firstfloor.org> (raw)
In-Reply-To: <20170103150833.6694-1-andi@firstfloor.org>

From: Andi Kleen <ak@linux.intel.com>

The next patch needs to modify event code. Previously eventcode was just
passed through as a string. Now parse it as a number.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
 tools/perf/pmu-events/jevents.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
index 41611d7f9873..ee5eeeaed378 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -135,7 +135,6 @@ static struct field {
 	const char *field;
 	const char *kernel;
 } fields[] = {
-	{ "EventCode",	"event=" },
 	{ "UMask",	"umask=" },
 	{ "CounterMask", "cmask=" },
 	{ "Invert",	"inv=" },
@@ -164,6 +163,10 @@ static int match_field(char *map, jsmntok_t *field, int nz,
 
 	for (f = fields; f->field; f++)
 		if (json_streq(map, field, f->field) && nz) {
+			/* Handle all variations of 0 encounted in JSON */
+			if (json_streq(map, val, "0x00") ||
+			     json_streq(map, val, "0x0"))
+				return 1;
 			cut_comma(map, &newval);
 			addfield(map, event, ",", f->kernel, &newval);
 			return 1;
@@ -343,6 +346,7 @@ int json_events(const char *fn,
 	jsmntok_t *tokens, *tok;
 	int i, j, len;
 	char *map;
+	char buf[128];
 
 	if (!fn)
 		return -ENOENT;
@@ -356,6 +360,7 @@ int json_events(const char *fn,
 		char *event = NULL, *desc = NULL, *name = NULL;
 		char *long_desc = NULL;
 		char *extra_desc = NULL;
+		unsigned long long eventcode = 0;
 		struct msrmap *msr = NULL;
 		jsmntok_t *msrval = NULL;
 		jsmntok_t *precise = NULL;
@@ -376,6 +381,11 @@ int json_events(const char *fn,
 			nz = !json_streq(map, val, "0");
 			if (match_field(map, field, nz, &event, val)) {
 				/* ok */
+			} else if (json_streq(map, field, "EventCode")) {
+				char *code = NULL;
+				addfield(map, &code, "", "", val);
+				eventcode |= strtoul(code, NULL, 0);
+				free(code);
 			} else if (json_streq(map, field, "EventName")) {
 				addfield(map, &name, "", "", val);
 			} else if (json_streq(map, field, "BriefDescription")) {
@@ -410,6 +420,8 @@ int json_events(const char *fn,
 				addfield(map, &extra_desc, " ",
 						"(Precise event)", NULL);
 		}
+		snprintf(buf, sizeof buf, "event=%#llx", eventcode);
+		addfield(map, &event, ",", buf, NULL);
 		if (desc && extra_desc)
 			addfield(map, &desc, " ", extra_desc, NULL);
 		if (long_desc && extra_desc)
-- 
2.9.3

  parent reply	other threads:[~2017-01-03 15:11 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-03 15:08 Support Intel uncore event lists v4 Andi Kleen
2017-01-03 15:08 ` [PATCH 01/11] perf, tools: Factor out scale conversion code Andi Kleen
2017-01-08 18:57   ` Jiri Olsa
2017-01-08 18:57   ` Jiri Olsa
2017-01-12 13:31     ` Arnaldo Carvalho de Melo
2017-01-12 18:07       ` Arnaldo Carvalho de Melo
2017-01-18  9:19   ` [tip:perf/core] perf pmu: " tip-bot for Andi Kleen
2017-01-03 15:08 ` Andi Kleen [this message]
2017-01-08 18:57   ` [PATCH 02/11] perf, tools: Parse eventcode as number in jevents Jiri Olsa
2017-01-10  1:10     ` Andi Kleen
2017-01-18 11:56       ` Jiri Olsa
2017-01-03 15:08 ` [PATCH 03/11] perf, tools: Add support for parsing uncore json files Andi Kleen
2017-01-08 18:58   ` Jiri Olsa
2017-01-12 13:32     ` Arnaldo Carvalho de Melo
2017-01-08 19:00   ` Jiri Olsa
2017-01-03 15:08 ` [PATCH 04/11] perf, tools: Support per pmu json aliases Andi Kleen
2017-01-18 11:58   ` Jiri Olsa
2017-01-19  0:17     ` Andi Kleen
2017-01-19 10:42       ` Jiri Olsa
2017-01-03 15:08 ` [PATCH 05/11] perf, tools: Support event aliases for non cpu// pmus Andi Kleen
2017-01-18 12:10   ` Jiri Olsa
2017-01-03 15:08 ` [PATCH 06/11] perf, tools: Add debug support for outputing alias string Andi Kleen
2017-01-18 12:16   ` Jiri Olsa
2017-01-18 15:45     ` Andi Kleen
2017-01-18 16:18       ` Jiri Olsa
2017-01-18 12:16   ` Jiri Olsa
2017-01-03 15:08 ` [PATCH 07/11] perf, tools: Collapse identically named events in perf stat Andi Kleen
2017-01-18 12:44   ` Jiri Olsa
2017-01-18 16:31     ` Andi Kleen
2017-01-18 16:56       ` Jiri Olsa
2017-01-18 17:28         ` Andi Kleen
2017-01-03 15:08 ` [PATCH 08/11] perf, tools: Expand PMU events by prefix match Andi Kleen
2017-01-03 15:08 ` [PATCH 09/11] perf, tools: Add a simple expression parser for JSON Andi Kleen
2017-01-03 15:08 ` [PATCH 10/11] perf, tools: Support MetricExpr header in JSON event list Andi Kleen
2017-01-03 15:08 ` [PATCH 11/11] perf, tools, stat: Output JSON MetricExpr metric Andi Kleen
2017-01-10  1:33 Support Intel uncore event lists v4 Andi Kleen
2017-01-10  1:33 ` [PATCH 02/11] perf, tools: Parse eventcode as number in jevents Andi Kleen

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=20170103150833.6694-3-andi@firstfloor.org \
    --to=andi@firstfloor.org \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --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 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).