aboutsummaryrefslogtreecommitdiffstats
path: root/tools/lib/traceevent
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung.kim@lge.com>2013-12-12 02:36:12 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-12-13 08:30:22 -0500
commitc8ea690dd0d1385a766d68c51832497181e013b8 (patch)
treeab57b681c9d099d10d1d0996785240ddd07f9939 /tools/lib/traceevent
parent7bb73553e2490ac6667387ee723e0faa61e9d999 (diff)
tools lib traceevent: Refactor create_arg_item()
So that it can return a proper pevent_errno value. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Steven Rostedt <rostedt@goodmis.org> Link: http://lkml.kernel.org/r/1386833777-3790-10-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib/traceevent')
-rw-r--r--tools/lib/traceevent/event-parse.h3
-rw-r--r--tools/lib/traceevent/parse-filter.c20
2 files changed, 12 insertions, 11 deletions
diff --git a/tools/lib/traceevent/event-parse.h b/tools/lib/traceevent/event-parse.h
index 5e4392d8e2d4..57b66aed8122 100644
--- a/tools/lib/traceevent/event-parse.h
+++ b/tools/lib/traceevent/event-parse.h
@@ -367,7 +367,8 @@ enum pevent_flag {
367 _PE(ILLEGAL_INTEGER_CMP,"illegal comparison for integer"), \ 367 _PE(ILLEGAL_INTEGER_CMP,"illegal comparison for integer"), \
368 _PE(REPARENT_NOT_OP, "cannot reparent other than OP"), \ 368 _PE(REPARENT_NOT_OP, "cannot reparent other than OP"), \
369 _PE(REPARENT_FAILED, "failed to reparent filter OP"), \ 369 _PE(REPARENT_FAILED, "failed to reparent filter OP"), \
370 _PE(BAD_FILTER_ARG, "bad arg in filter tree") 370 _PE(BAD_FILTER_ARG, "bad arg in filter tree"), \
371 _PE(UNEXPECTED_TYPE, "unexpected type (not a value)")
371 372
372#undef _PE 373#undef _PE
373#define _PE(__code, __str) PEVENT_ERRNO__ ## __code 374#define _PE(__code, __str) PEVENT_ERRNO__ ## __code
diff --git a/tools/lib/traceevent/parse-filter.c b/tools/lib/traceevent/parse-filter.c
index 9b05892566e0..8d71208f0131 100644
--- a/tools/lib/traceevent/parse-filter.c
+++ b/tools/lib/traceevent/parse-filter.c
@@ -368,9 +368,9 @@ static void free_events(struct event_list *events)
368 } 368 }
369} 369}
370 370
371static struct filter_arg * 371static enum pevent_errno
372create_arg_item(struct event_format *event, const char *token, 372create_arg_item(struct event_format *event, const char *token,
373 enum event_type type, char **error_str) 373 enum event_type type, struct filter_arg **parg, char **error_str)
374{ 374{
375 struct format_field *field; 375 struct format_field *field;
376 struct filter_arg *arg; 376 struct filter_arg *arg;
@@ -378,7 +378,7 @@ create_arg_item(struct event_format *event, const char *token,
378 arg = allocate_arg(); 378 arg = allocate_arg();
379 if (arg == NULL) { 379 if (arg == NULL) {
380 show_error(error_str, "failed to allocate filter arg"); 380 show_error(error_str, "failed to allocate filter arg");
381 return NULL; 381 return PEVENT_ERRNO__MEM_ALLOC_FAILED;
382 } 382 }
383 383
384 switch (type) { 384 switch (type) {
@@ -392,7 +392,7 @@ create_arg_item(struct event_format *event, const char *token,
392 if (!arg->value.str) { 392 if (!arg->value.str) {
393 free_arg(arg); 393 free_arg(arg);
394 show_error(error_str, "failed to allocate string filter arg"); 394 show_error(error_str, "failed to allocate string filter arg");
395 return NULL; 395 return PEVENT_ERRNO__MEM_ALLOC_FAILED;
396 } 396 }
397 break; 397 break;
398 case EVENT_ITEM: 398 case EVENT_ITEM:
@@ -420,11 +420,11 @@ create_arg_item(struct event_format *event, const char *token,
420 break; 420 break;
421 default: 421 default:
422 free_arg(arg); 422 free_arg(arg);
423 show_error(error_str, "expected a value but found %s", 423 show_error(error_str, "expected a value but found %s", token);
424 token); 424 return PEVENT_ERRNO__UNEXPECTED_TYPE;
425 return NULL;
426 } 425 }
427 return arg; 426 *parg = arg;
427 return 0;
428} 428}
429 429
430static struct filter_arg * 430static struct filter_arg *
@@ -993,8 +993,8 @@ process_filter(struct event_format *event, struct filter_arg **parg,
993 case EVENT_SQUOTE: 993 case EVENT_SQUOTE:
994 case EVENT_DQUOTE: 994 case EVENT_DQUOTE:
995 case EVENT_ITEM: 995 case EVENT_ITEM:
996 arg = create_arg_item(event, token, type, error_str); 996 ret = create_arg_item(event, token, type, &arg, error_str);
997 if (!arg) 997 if (ret < 0)
998 goto fail; 998 goto fail;
999 if (!left_item) 999 if (!left_item)
1000 left_item = arg; 1000 left_item = arg;