aboutsummaryrefslogtreecommitdiffstats
path: root/tools/lib/traceevent/event-parse.c
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2013-12-03 08:09:19 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-12-04 13:18:42 -0500
commit71ad9583ff15d2e95cb8c67a5c963321d9d1877b (patch)
tree582815b8c1a7982cf7de691c98f8d98af2a3ed18 /tools/lib/traceevent/event-parse.c
parent91a058ad3856b0a37cb21250eb4c478d0297a1a3 (diff)
tools lib traceevent: Change pevent_parse_format to include pevent handle
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>
Diffstat (limited to 'tools/lib/traceevent/event-parse.c')
-rw-r--r--tools/lib/traceevent/event-parse.c56
1 files changed, 35 insertions, 21 deletions
diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
index 900fca01bdd3..9849873265d4 100644
--- a/tools/lib/traceevent/event-parse.c
+++ b/tools/lib/traceevent/event-parse.c
@@ -5121,8 +5121,38 @@ enum pevent_errno __pevent_parse_format(struct event_format **eventp,
5121 return ret; 5121 return ret;
5122} 5122}
5123 5123
5124static enum pevent_errno
5125__pevent_parse_event(struct pevent *pevent,
5126 struct event_format **eventp,
5127 const char *buf, unsigned long size,
5128 const char *sys)
5129{
5130 int ret = __pevent_parse_format(eventp, pevent, buf, size, sys);
5131 struct event_format *event = *eventp;
5132
5133 if (event == NULL)
5134 return ret;
5135
5136 if (pevent && add_event(pevent, event)) {
5137 ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
5138 goto event_add_failed;
5139 }
5140
5141#define PRINT_ARGS 0
5142 if (PRINT_ARGS && event->print_fmt.args)
5143 print_args(event->print_fmt.args);
5144
5145 return 0;
5146
5147event_add_failed:
5148 pevent_free_format(event);
5149 return ret;
5150}
5151
5124/** 5152/**
5125 * pevent_parse_format - parse the event format 5153 * pevent_parse_format - parse the event format
5154 * @pevent: the handle to the pevent
5155 * @eventp: returned format
5126 * @buf: the buffer storing the event format string 5156 * @buf: the buffer storing the event format string
5127 * @size: the size of @buf 5157 * @size: the size of @buf
5128 * @sys: the system the event belongs to 5158 * @sys: the system the event belongs to
@@ -5134,10 +5164,12 @@ enum pevent_errno __pevent_parse_format(struct event_format **eventp,
5134 * 5164 *
5135 * /sys/kernel/debug/tracing/events/.../.../format 5165 * /sys/kernel/debug/tracing/events/.../.../format
5136 */ 5166 */
5137enum pevent_errno pevent_parse_format(struct event_format **eventp, const char *buf, 5167enum pevent_errno pevent_parse_format(struct pevent *pevent,
5168 struct event_format **eventp,
5169 const char *buf,
5138 unsigned long size, const char *sys) 5170 unsigned long size, const char *sys)
5139{ 5171{
5140 return __pevent_parse_format(eventp, NULL, buf, size, sys); 5172 return __pevent_parse_event(pevent, eventp, buf, size, sys);
5141} 5173}
5142 5174
5143/** 5175/**
@@ -5158,25 +5190,7 @@ enum pevent_errno pevent_parse_event(struct pevent *pevent, const char *buf,
5158 unsigned long size, const char *sys) 5190 unsigned long size, const char *sys)
5159{ 5191{
5160 struct event_format *event = NULL; 5192 struct event_format *event = NULL;
5161 int ret = __pevent_parse_format(&event, pevent, buf, size, sys); 5193 return __pevent_parse_event(pevent, &event, buf, size, sys);
5162
5163 if (event == NULL)
5164 return ret;
5165
5166 if (add_event(pevent, event)) {
5167 ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
5168 goto event_add_failed;
5169 }
5170
5171#define PRINT_ARGS 0
5172 if (PRINT_ARGS && event->print_fmt.args)
5173 print_args(event->print_fmt.args);
5174
5175 return 0;
5176
5177event_add_failed:
5178 pevent_free_format(event);
5179 return ret;
5180} 5194}
5181 5195
5182#undef _PE 5196#undef _PE