Inter-revision diff: patch 13

Comparing v14 (message) to v17 (message)

--- v14
+++ v17
@@ -1,139 +1,107 @@
-Implement support in jevents to parse long descriptions for events
-that may have them in the JSON files. A follow on patch will make this
-long description available to user through the 'perf list' command.
+Allow assigning categories "Topics" field to the PMU events  i.e.
+process the topic field from the JSON file and add a corresponding
+topic field to the generated C events tables.
 
 Signed-off-by: Andi Kleen <ak@linux.intel.com>
 Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
+Acked-by: Jiri Olsa <jolsa@redhat.com>
+---
 
 Changelog[v14]
-	- [Jiri Olsa] Break up independent parts of the patch into
-	  separate patches.
+	[Jiri Olsa] Move this independent code off into a separate patch.
 ---
- tools/perf/pmu-events/jevents.c    |   31 +++++++++++++++++++++++--------
- tools/perf/pmu-events/jevents.h    |    3 ++-
- tools/perf/pmu-events/pmu-events.h |    1 +
- 3 files changed, 26 insertions(+), 9 deletions(-)
+ tools/perf/pmu-events/jevents.c    | 12 +++++++++---
+ tools/perf/pmu-events/jevents.h    |  2 +-
+ tools/perf/pmu-events/pmu-events.h |  1 +
+ 3 files changed, 11 insertions(+), 4 deletions(-)
 
 diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
-index 5f7603b..a8507c9 100644
+index a8507c9..ea3474b 100644
 --- a/tools/perf/pmu-events/jevents.c
 +++ b/tools/perf/pmu-events/jevents.c
 @@ -203,7 +203,7 @@ static void print_events_table_prefix(FILE *fp, const char *tblname)
  }
  
  static int print_events_table_entry(void *data, char *name, char *event,
--				    char *desc)
-+				    char *desc, char *long_desc)
+-				    char *desc, char *long_desc)
++				    char *desc, char *long_desc, char *topic)
  {
  	FILE *outfp = data;
  	/*
-@@ -215,6 +215,8 @@ static int print_events_table_entry(void *data, char *name, char *event,
- 	fprintf(outfp, "\t.name = \"%s\",\n", name);
- 	fprintf(outfp, "\t.event = \"%s\",\n", event);
+@@ -217,6 +217,8 @@ static int print_events_table_entry(void *data, char *name, char *event,
  	fprintf(outfp, "\t.desc = \"%s\",\n", desc);
-+	if (long_desc && long_desc[0])
-+		fprintf(outfp, "\t.long_desc = \"%s\",\n", long_desc);
+ 	if (long_desc && long_desc[0])
+ 		fprintf(outfp, "\t.long_desc = \"%s\",\n", long_desc);
++	if (topic)
++		fprintf(outfp, "\t.topic = \"%s\",\n", topic);
  
  	fprintf(outfp, "},\n");
  
-@@ -235,7 +237,8 @@ static void print_events_table_suffix(FILE *outfp)
- 
+@@ -238,7 +240,7 @@ static void print_events_table_suffix(FILE *outfp)
  /* Call func with each event in the json file */
  int json_events(const char *fn,
--	  int (*func)(void *data, char *name, char *event, char *desc),
-+	  int (*func)(void *data, char *name, char *event, char *desc,
-+		      char *long_desc),
+ 	  int (*func)(void *data, char *name, char *event, char *desc,
+-		      char *long_desc),
++		      char *long_desc, char *topic),
  	  void *data)
  {
  	int err = -EIO;
-@@ -254,6 +257,8 @@ int json_events(const char *fn,
- 	tok = tokens + 1;
- 	for (i = 0; i < tokens->size; i++) {
+@@ -259,6 +261,7 @@ int json_events(const char *fn,
  		char *event = NULL, *desc = NULL, *name = NULL;
-+		char *long_desc = NULL;
-+		char *extra_desc = NULL;
+ 		char *long_desc = NULL;
+ 		char *extra_desc = NULL;
++		char *topic = NULL;
  		struct msrmap *msr = NULL;
  		jsmntok_t *msrval = NULL;
  		jsmntok_t *precise = NULL;
-@@ -279,6 +284,9 @@ int json_events(const char *fn,
- 			} else if (json_streq(map, field, "BriefDescription")) {
- 				addfield(map, &desc, "", "", val);
- 				fixdesc(desc);
-+			} else if (json_streq(map, field, "PublicDescription")) {
-+				addfield(map, &long_desc, "", "", val);
-+				fixdesc(long_desc);
- 			} else if (json_streq(map, field, "PEBS") && nz) {
- 				precise = val;
- 			} else if (json_streq(map, field, "MSRIndex") && nz) {
-@@ -287,10 +295,10 @@ int json_events(const char *fn,
- 				msrval = val;
- 			} else if (json_streq(map, field, "Errata") &&
+@@ -297,6 +300,8 @@ int json_events(const char *fn,
  				   !json_streq(map, val, "null")) {
--				addfield(map, &desc, ". ",
-+				addfield(map, &extra_desc, ". ",
+ 				addfield(map, &extra_desc, ". ",
  					" Spec update: ", val);
++			} else if (json_streq(map, field, "Topic")) {
++				addfield(map, &topic, "", "", val);
  			} else if (json_streq(map, field, "Data_LA") && nz) {
--				addfield(map, &desc, ". ",
-+				addfield(map, &extra_desc, ". ",
+ 				addfield(map, &extra_desc, ". ",
  					" Supports address when precise",
- 					NULL);
- 			}
-@@ -298,19 +306,26 @@ int json_events(const char *fn,
- 		}
- 		if (precise && !strstr(desc, "(Precise Event)")) {
- 			if (json_streq(map, precise, "2"))
--				addfield(map, &desc, " ", "(Must be precise)",
--						NULL);
-+				addfield(map, &extra_desc, " ",
-+						"(Must be precise)", NULL);
- 			else
--				addfield(map, &desc, " ",
-+				addfield(map, &extra_desc, " ",
- 						"(Precise event)", NULL);
- 		}
-+		if (desc && extra_desc)
-+			addfield(map, &desc, " ", extra_desc, NULL);
-+		if (long_desc && extra_desc)
-+			addfield(map, &long_desc, " ", extra_desc, NULL);
- 		if (msr != NULL)
+@@ -320,12 +325,13 @@ int json_events(const char *fn,
  			addfield(map, &event, ",", msr->pname, msrval);
  		fixname(name);
--		err = func(data, name, event, desc);
-+
-+		err = func(data, name, event, desc, long_desc);
+ 
+-		err = func(data, name, event, desc, long_desc);
++		err = func(data, name, event, desc, long_desc, topic);
  		free(event);
  		free(desc);
  		free(name);
-+		free(long_desc);
-+		free(extra_desc);
+ 		free(long_desc);
+ 		free(extra_desc);
++		free(topic);
  		if (err)
  			break;
  		tok += j;
 diff --git a/tools/perf/pmu-events/jevents.h b/tools/perf/pmu-events/jevents.h
-index 996601f..b0eb274 100644
+index b0eb274..9ffcb89 100644
 --- a/tools/perf/pmu-events/jevents.h
 +++ b/tools/perf/pmu-events/jevents.h
-@@ -2,7 +2,8 @@
- #define JEVENTS_H 1
+@@ -3,7 +3,7 @@
  
  int json_events(const char *fn,
--		int (*func)(void *data, char *name, char *event, char *desc),
-+		int (*func)(void *data, char *name, char *event, char *desc,
-+				char *long_desc),
+ 		int (*func)(void *data, char *name, char *event, char *desc,
+-				char *long_desc),
++				char *long_desc, char *topic),
  		void *data);
  char *get_cpu_str(void);
  
 diff --git a/tools/perf/pmu-events/pmu-events.h b/tools/perf/pmu-events/pmu-events.h
-index 39fec04..711f049 100644
+index 711f049..6b69f4b 100644
 --- a/tools/perf/pmu-events/pmu-events.h
 +++ b/tools/perf/pmu-events/pmu-events.h
-@@ -8,6 +8,7 @@ struct pmu_event {
- 	const char *name;
+@@ -9,6 +9,7 @@ struct pmu_event {
  	const char *event;
  	const char *desc;
-+	const char *long_desc;
+ 	const char *long_desc;
++	const char *topic;
  };
  
  /*
 -- 
-1.7.9.5
+2.5.3
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help