tools lib traceevent: Change pevent_parse_format to include pevent handle
authorJiri Olsa <jolsa@redhat.com>
Tue, 3 Dec 2013 13:09:19 +0000 (14:09 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 4 Dec 2013 18:18:42 +0000 (15:18 -0300)
Changing the pevent_parse_format interface to include the pevent handle.

The goal is to always use pevent object when dealing with traceevent
library. The reason is that we might need additional processing (like
plugins), which is not possible otherwise.

Patches follow to make this happen completely.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1386076182-14484-6-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/lib/traceevent/event-parse.c
tools/lib/traceevent/event-parse.h
tools/perf/util/evsel.c

index 900fca01bdd3fcbc8617929a822ba5d90ba47ae0..9849873265d4ff7584db05a04f5a23735794c47a 100644 (file)
@@ -5121,8 +5121,38 @@ enum pevent_errno __pevent_parse_format(struct event_format **eventp,
        return ret;
 }
 
+static enum pevent_errno
+__pevent_parse_event(struct pevent *pevent,
+                    struct event_format **eventp,
+                    const char *buf, unsigned long size,
+                    const char *sys)
+{
+       int ret = __pevent_parse_format(eventp, pevent, buf, size, sys);
+       struct event_format *event = *eventp;
+
+       if (event == NULL)
+               return ret;
+
+       if (pevent && add_event(pevent, event)) {
+               ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
+               goto event_add_failed;
+       }
+
+#define PRINT_ARGS 0
+       if (PRINT_ARGS && event->print_fmt.args)
+               print_args(event->print_fmt.args);
+
+       return 0;
+
+event_add_failed:
+       pevent_free_format(event);
+       return ret;
+}
+
 /**
  * pevent_parse_format - parse the event format
+ * @pevent: the handle to the pevent
+ * @eventp: returned format
  * @buf: the buffer storing the event format string
  * @size: the size of @buf
  * @sys: the system the event belongs to
@@ -5134,10 +5164,12 @@ enum pevent_errno __pevent_parse_format(struct event_format **eventp,
  *
  * /sys/kernel/debug/tracing/events/.../.../format
  */
-enum pevent_errno pevent_parse_format(struct event_format **eventp, const char *buf,
+enum pevent_errno pevent_parse_format(struct pevent *pevent,
+                                     struct event_format **eventp,
+                                     const char *buf,
                                      unsigned long size, const char *sys)
 {
-       return __pevent_parse_format(eventp, NULL, buf, size, sys);
+       return __pevent_parse_event(pevent, eventp, buf, size, sys);
 }
 
 /**
@@ -5158,25 +5190,7 @@ enum pevent_errno pevent_parse_event(struct pevent *pevent, const char *buf,
                                     unsigned long size, const char *sys)
 {
        struct event_format *event = NULL;
-       int ret = __pevent_parse_format(&event, pevent, buf, size, sys);
-
-       if (event == NULL)
-               return ret;
-
-       if (add_event(pevent, event)) {
-               ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
-               goto event_add_failed;
-       }
-
-#define PRINT_ARGS 0
-       if (PRINT_ARGS && event->print_fmt.args)
-               print_args(event->print_fmt.args);
-
-       return 0;
-
-event_add_failed:
-       pevent_free_format(event);
-       return ret;
+       return __pevent_parse_event(pevent, &event, buf, size, sys);
 }
 
 #undef _PE
index 54273c0ec5448e62d2571eeaa06510a9129cfc08..620c27a72960f0cfe19a6044f21c4565a4e0746b 100644 (file)
@@ -562,7 +562,9 @@ int pevent_parse_header_page(struct pevent *pevent, char *buf, unsigned long siz
 
 enum pevent_errno pevent_parse_event(struct pevent *pevent, const char *buf,
                                     unsigned long size, const char *sys);
-enum pevent_errno pevent_parse_format(struct event_format **eventp, const char *buf,
+enum pevent_errno pevent_parse_format(struct pevent *pevent,
+                                     struct event_format **eventp,
+                                     const char *buf,
                                      unsigned long size, const char *sys);
 void pevent_free_format(struct event_format *event);
 
index b5fe7f9b2e15091f5d38db1044159177d9c15f27..6a046ed73f988f6fd4cd2067a89480ee8360fe52 100644 (file)
@@ -210,7 +210,7 @@ struct event_format *event_format__new(const char *sys, const char *name)
                size += n;
        } while (n > 0);
 
-       pevent_parse_format(&format, bf, size, sys);
+       pevent_parse_format(NULL, &format, bf, size, sys);
 
 out_free_bf:
        free(bf);