From 99b587901dce688a17ddbb1fc5bc6ce4ff0bfa52 Mon Sep 17 00:00:00 2001 From: Tom Zanussi Date: Fri, 6 Apr 2012 00:47:58 +0200 Subject: [PATCH] --- yaml --- r: 304975 b: refs/heads/master c: 5205aec960514089d12dd8e35f2a82584b8e6172 h: refs/heads/master i: 304973: dff927f875b27b83d6cc2096c1f9963394eed0b7 304971: b9381de405ccf92d6e65fd1550c97a23dbc10310 304967: 86503a1029578cf5075f98f7a0e49590fe6b2f75 304959: 5ad6f8bd4717a330cf892156f19ea1c2d8262bae v: v3 --- [refs] | 2 +- trunk/tools/lib/traceevent/event-parse.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 90ac6177774f..51fc35f65e7b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4dc1024a7a529626de5a800b10088bcbbc1ae941 +refs/heads/master: 5205aec960514089d12dd8e35f2a82584b8e6172 diff --git a/trunk/tools/lib/traceevent/event-parse.c b/trunk/tools/lib/traceevent/event-parse.c index c799c19f9340..f012395d16fb 100644 --- a/trunk/tools/lib/traceevent/event-parse.c +++ b/trunk/tools/lib/traceevent/event-parse.c @@ -39,6 +39,9 @@ static const char *input_buf; static unsigned long long input_buf_ptr; static unsigned long long input_buf_siz; +static int is_flag_field; +static int is_symbolic_field; + static int show_warning = 1; #define do_warning(fmt, ...) \ @@ -1789,6 +1792,16 @@ process_entry(struct event_format *event __unused, struct print_arg *arg, arg->type = PRINT_FIELD; arg->field.name = field; + if (is_flag_field) { + arg->field.field = pevent_find_any_field(event, arg->field.name); + arg->field.field->flags |= FIELD_IS_FLAG; + is_flag_field = 0; + } else if (is_symbolic_field) { + arg->field.field = pevent_find_any_field(event, arg->field.name); + arg->field.field->flags |= FIELD_IS_SYMBOLIC; + is_symbolic_field = 0; + } + type = read_token(&token); *tok = token; @@ -2398,10 +2411,12 @@ process_function(struct event_format *event, struct print_arg *arg, if (strcmp(token, "__print_flags") == 0) { free_token(token); + is_flag_field = 1; return process_flags(event, arg, tok); } if (strcmp(token, "__print_symbolic") == 0) { free_token(token); + is_symbolic_field = 1; return process_symbols(event, arg, tok); } if (strcmp(token, "__get_str") == 0) {