All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf tools: fix event parsing of comma-separated tracepoint events
@ 2010-11-30 22:27 Corey Ashford
  2010-12-01  1:05 ` Arnaldo Carvalho de Melo
  2010-12-01  9:14 ` [tip:perf/core] " tip-bot for Corey Ashford
  0 siblings, 2 replies; 3+ messages in thread
From: Corey Ashford @ 2010-11-30 22:27 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Frederic Weisbecker, Ingo Molnar,
	Julia Lawall, linux-kernel, Paul Mackerras, Peter Zijlstra
  Cc: Corey Ashford

There are number of issues that prevent the use of multiple tracepoint
events being specified in a -e/--event switch, separated by commas.

For example, perf stat -e irq:irq_handler_entry,irq:irq_handler_exit ...
fails because the tracepoint event parsing code doesn't recognize the
comma separator properly.

This patch corrects those issues.

Reported-by: Michael Ellerman <michaele@au1.ibm.com>
Signed-off-by: Corey Ashford <cjashfor@linux.vnet.ibm.com>
---
 tools/perf/util/parse-events.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 898aa94..73215e7 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -434,7 +434,7 @@ parse_single_tracepoint_event(char *sys_name,
 	id = atoll(id_buf);
 	attr->config = id;
 	attr->type = PERF_TYPE_TRACEPOINT;
-	*strp = evt_name + evt_length;
+	*strp += strlen(sys_name) + evt_length + 1; /* + 1 for the ':' */
 
 	attr->sample_type |= PERF_SAMPLE_RAW;
 	attr->sample_type |= PERF_SAMPLE_TIME;
@@ -495,7 +495,7 @@ static enum event_result parse_tracepoint_event(const char **strp,
 				    struct perf_event_attr *attr)
 {
 	const char *evt_name;
-	char *flags;
+	char *flags = NULL, *comma_loc;
 	char sys_name[MAX_EVENT_LENGTH];
 	unsigned int sys_length, evt_length;
 
@@ -514,6 +514,11 @@ static enum event_result parse_tracepoint_event(const char **strp,
 	sys_name[sys_length] = '\0';
 	evt_name = evt_name + 1;
 
+	comma_loc = strchr(evt_name, ',');
+	if (comma_loc) {
+		/* take the event name up to the comma */
+		evt_name = strndup(evt_name, comma_loc - evt_name);
+	}
 	flags = strchr(evt_name, ':');
 	if (flags) {
 		/* split it out: */
@@ -524,9 +529,8 @@ static enum event_result parse_tracepoint_event(const char **strp,
 	evt_length = strlen(evt_name);
 	if (evt_length >= MAX_EVENT_LENGTH)
 		return EVT_FAILED;
-
 	if (strpbrk(evt_name, "*?")) {
-		*strp = evt_name + evt_length;
+		*strp += strlen(sys_name) + evt_length;
 		return parse_multiple_tracepoint_event(sys_name, evt_name,
 						       flags);
 	} else
-- 
1.7.3.2


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

* Re: [PATCH] perf tools: fix event parsing of comma-separated tracepoint events
  2010-11-30 22:27 [PATCH] perf tools: fix event parsing of comma-separated tracepoint events Corey Ashford
@ 2010-12-01  1:05 ` Arnaldo Carvalho de Melo
  2010-12-01  9:14 ` [tip:perf/core] " tip-bot for Corey Ashford
  1 sibling, 0 replies; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-12-01  1:05 UTC (permalink / raw)
  To: Corey Ashford
  Cc: Frederic Weisbecker, Ingo Molnar, Julia Lawall, linux-kernel,
	Paul Mackerras, Peter Zijlstra

Em Tue, Nov 30, 2010 at 02:27:01PM -0800, Corey Ashford escreveu:
> There are number of issues that prevent the use of multiple tracepoint
> events being specified in a -e/--event switch, separated by commas.
> 
> For example, perf stat -e irq:irq_handler_entry,irq:irq_handler_exit ...
> fails because the tracepoint event parsing code doesn't recognize the
> comma separator properly.
> 
> This patch corrects those issues.

Thanks, applied.
 

- Arnaldo

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

* [tip:perf/core] perf tools: fix event parsing of comma-separated tracepoint events
  2010-11-30 22:27 [PATCH] perf tools: fix event parsing of comma-separated tracepoint events Corey Ashford
  2010-12-01  1:05 ` Arnaldo Carvalho de Melo
@ 2010-12-01  9:14 ` tip-bot for Corey Ashford
  1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Corey Ashford @ 2010-12-01  9:14 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: acme, linux-kernel, paulus, julia, hpa, mingo, michaele,
	a.p.zijlstra, fweisbec, tglx, cjashfor, mingo

Commit-ID:  4c635a4e04700a371ef7e4d4bb33ed88747e801e
Gitweb:     http://git.kernel.org/tip/4c635a4e04700a371ef7e4d4bb33ed88747e801e
Author:     Corey Ashford <cjashfor@linux.vnet.ibm.com>
AuthorDate: Tue, 30 Nov 2010 14:27:01 -0800
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 30 Nov 2010 23:04:39 -0200

perf tools: fix event parsing of comma-separated tracepoint events

There are number of issues that prevent the use of multiple tracepoint events
being specified in a -e/--event switch, separated by commas.

For example, perf stat -e irq:irq_handler_entry,irq:irq_handler_exit ...  fails
because the tracepoint event parsing code doesn't recognize the comma separator
properly.

This patch corrects those issues.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Julia Lawall <julia@diku.dk>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Reported-by: Michael Ellerman <michaele@au1.ibm.com>
LKML-Reference: <1291156021-17711-1-git-send-email-cjashfor@linux.vnet.ibm.com>
Signed-off-by: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/parse-events.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 4af5bd5..c305305 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -434,7 +434,7 @@ parse_single_tracepoint_event(char *sys_name,
 	id = atoll(id_buf);
 	attr->config = id;
 	attr->type = PERF_TYPE_TRACEPOINT;
-	*strp = evt_name + evt_length;
+	*strp += strlen(sys_name) + evt_length + 1; /* + 1 for the ':' */
 
 	attr->sample_type |= PERF_SAMPLE_RAW;
 	attr->sample_type |= PERF_SAMPLE_TIME;
@@ -495,7 +495,7 @@ static enum event_result parse_tracepoint_event(const char **strp,
 				    struct perf_event_attr *attr)
 {
 	const char *evt_name;
-	char *flags;
+	char *flags = NULL, *comma_loc;
 	char sys_name[MAX_EVENT_LENGTH];
 	unsigned int sys_length, evt_length;
 
@@ -514,6 +514,11 @@ static enum event_result parse_tracepoint_event(const char **strp,
 	sys_name[sys_length] = '\0';
 	evt_name = evt_name + 1;
 
+	comma_loc = strchr(evt_name, ',');
+	if (comma_loc) {
+		/* take the event name up to the comma */
+		evt_name = strndup(evt_name, comma_loc - evt_name);
+	}
 	flags = strchr(evt_name, ':');
 	if (flags) {
 		/* split it out: */
@@ -524,9 +529,8 @@ static enum event_result parse_tracepoint_event(const char **strp,
 	evt_length = strlen(evt_name);
 	if (evt_length >= MAX_EVENT_LENGTH)
 		return EVT_FAILED;
-
 	if (strpbrk(evt_name, "*?")) {
-		*strp = evt_name + evt_length;
+		*strp += strlen(sys_name) + evt_length;
 		return parse_multiple_tracepoint_event(sys_name, evt_name,
 						       flags);
 	} else

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

end of thread, other threads:[~2010-12-01  9:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-30 22:27 [PATCH] perf tools: fix event parsing of comma-separated tracepoint events Corey Ashford
2010-12-01  1:05 ` Arnaldo Carvalho de Melo
2010-12-01  9:14 ` [tip:perf/core] " tip-bot for Corey Ashford

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.