All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf sched replay: fix event lookup
@ 2012-06-09  9:05 Dmitry Antipov
  2012-06-11  5:46 ` Namhyung Kim
  2012-06-25 18:02 ` [PATCH] perf sched replay: fix event lookup Arnaldo Carvalho de Melo
  0 siblings, 2 replies; 10+ messages in thread
From: Dmitry Antipov @ 2012-06-09  9:05 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Ingo Molnar, Paul Mackerras,
	Peter Zijlstra
  Cc: linux-kernel, linaro-dev, patches, Dmitry Antipov

Use new function trace_find_event_by_name to lookup events before
looking through /sys files. This helps 'perf sched replay' to map
event names to IDs correctly when processing perf.data recorded
on another machine.

Signed-off-by: Dmitry Antipov <dmitry.antipov@linaro.org>
---
 tools/perf/util/evlist.c            |   18 ++++++++++++++++--
 tools/perf/util/trace-event-parse.c |    4 ++++
 tools/perf/util/trace-event.h       |    1 +
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 4ac5f5a..7ebb9c5 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -17,6 +17,7 @@
 #include <unistd.h>
 
 #include "parse-events.h"
+#include "trace-event.h"
 
 #include <sys/mman.h>
 
@@ -231,12 +232,25 @@ int perf_evlist__set_tracepoints_handlers(struct perf_evlist *evlist,
 					  const struct perf_evsel_str_handler *assocs,
 					  size_t nr_assocs)
 {
+	struct event_format *event;
 	struct perf_evsel *evsel;
+	char *p, *sys, *name;
 	int err;
-	size_t i;
+	size_t i, off;
 
 	for (i = 0; i < nr_assocs; i++) {
-		err = trace_event__id(assocs[i].name);
+		err = -ENOENT;
+		p = strchr(assocs[i].name, ':');
+		if (!p)
+			goto out;
+		off = p - assocs[i].name;
+		sys = malloc(off + 1);
+		memcpy(sys, assocs[i].name, off);
+		sys[off] = '\0';
+		name = p + 1;
+		event = trace_find_event_by_name(sys, name);
+		err = event ? event->id : trace_event__id(assocs[i].name);
+		free(sys);
 		if (err < 0)
 			goto out;
 
diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
index df2fddb..44cbb40 100644
--- a/tools/perf/util/trace-event-parse.c
+++ b/tools/perf/util/trace-event-parse.c
@@ -176,6 +176,10 @@ struct event_format *trace_find_event(int type)
 	return pevent_find_event(pevent, type);
 }
 
+struct event_format *trace_find_event_by_name(const char *sys, const char *name)
+{
+	return pevent_find_event_by_name(pevent, sys, name);
+}
 
 void print_trace_event(int cpu, void *data, int size)
 {
diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h
index 639852a..66f83a0 100644
--- a/tools/perf/util/trace-event.h
+++ b/tools/perf/util/trace-event.h
@@ -40,6 +40,7 @@ int parse_event_file(char *buf, unsigned long size, char *sys);
 
 struct pevent_record *trace_peek_data(int cpu);
 struct event_format *trace_find_event(int type);
+struct event_format *trace_find_event_by_name(const char *sys, const char *name);
 
 unsigned long long
 raw_field_value(struct event_format *event, const char *name, void *data);
-- 
1.7.7.6


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2012-06-29 16:18 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-09  9:05 [PATCH] perf sched replay: fix event lookup Dmitry Antipov
2012-06-11  5:46 ` Namhyung Kim
2012-06-11 14:08   ` Arnaldo Carvalho de Melo
2012-06-12  6:01     ` Namhyung Kim
2012-06-12 17:11       ` Arnaldo Carvalho de Melo
2012-06-25 23:20       ` Arnaldo Carvalho de Melo
2012-06-27  9:18         ` Dmitry Antipov
2012-06-27 14:21           ` Arnaldo Carvalho de Melo
2012-06-29 16:17         ` [tip:perf/core] perf tools: Stop using a global trace events description list tip-bot for Arnaldo Carvalho de Melo
2012-06-25 18:02 ` [PATCH] perf sched replay: fix event lookup Arnaldo Carvalho de Melo

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.