diff options
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/util/trace-event-parse.c | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c index 9b3c20f42f98..3b81250ffedb 100644 --- a/tools/perf/util/trace-event-parse.c +++ b/tools/perf/util/trace-event-parse.c | |||
| @@ -37,6 +37,8 @@ int header_page_ts_offset; | |||
| 37 | int header_page_ts_size; | 37 | int header_page_ts_size; |
| 38 | int header_page_size_offset; | 38 | int header_page_size_offset; |
| 39 | int header_page_size_size; | 39 | int header_page_size_size; |
| 40 | int header_page_overwrite_offset; | ||
| 41 | int header_page_overwrite_size; | ||
| 40 | int header_page_data_offset; | 42 | int header_page_data_offset; |
| 41 | int header_page_data_size; | 43 | int header_page_data_size; |
| 42 | 44 | ||
| @@ -628,23 +630,32 @@ static int test_type(enum event_type type, enum event_type expect) | |||
| 628 | return 0; | 630 | return 0; |
| 629 | } | 631 | } |
| 630 | 632 | ||
| 631 | static int test_type_token(enum event_type type, char *token, | 633 | static int __test_type_token(enum event_type type, char *token, |
| 632 | enum event_type expect, const char *expect_tok) | 634 | enum event_type expect, const char *expect_tok, |
| 635 | bool warn) | ||
| 633 | { | 636 | { |
| 634 | if (type != expect) { | 637 | if (type != expect) { |
| 635 | warning("Error: expected type %d but read %d", | 638 | if (warn) |
| 636 | expect, type); | 639 | warning("Error: expected type %d but read %d", |
| 640 | expect, type); | ||
| 637 | return -1; | 641 | return -1; |
| 638 | } | 642 | } |
| 639 | 643 | ||
| 640 | if (strcmp(token, expect_tok) != 0) { | 644 | if (strcmp(token, expect_tok) != 0) { |
| 641 | warning("Error: expected '%s' but read '%s'", | 645 | if (warn) |
| 642 | expect_tok, token); | 646 | warning("Error: expected '%s' but read '%s'", |
| 647 | expect_tok, token); | ||
| 643 | return -1; | 648 | return -1; |
| 644 | } | 649 | } |
| 645 | return 0; | 650 | return 0; |
| 646 | } | 651 | } |
| 647 | 652 | ||
| 653 | static int test_type_token(enum event_type type, char *token, | ||
| 654 | enum event_type expect, const char *expect_tok) | ||
| 655 | { | ||
| 656 | return __test_type_token(type, token, expect, expect_tok, true); | ||
| 657 | } | ||
| 658 | |||
| 648 | static int __read_expect_type(enum event_type expect, char **tok, int newline_ok) | 659 | static int __read_expect_type(enum event_type expect, char **tok, int newline_ok) |
| 649 | { | 660 | { |
| 650 | enum event_type type; | 661 | enum event_type type; |
| @@ -661,7 +672,8 @@ static int read_expect_type(enum event_type expect, char **tok) | |||
| 661 | return __read_expect_type(expect, tok, 1); | 672 | return __read_expect_type(expect, tok, 1); |
| 662 | } | 673 | } |
| 663 | 674 | ||
| 664 | static int __read_expected(enum event_type expect, const char *str, int newline_ok) | 675 | static int __read_expected(enum event_type expect, const char *str, |
| 676 | int newline_ok, bool warn) | ||
| 665 | { | 677 | { |
| 666 | enum event_type type; | 678 | enum event_type type; |
| 667 | char *token; | 679 | char *token; |
| @@ -672,21 +684,26 @@ static int __read_expected(enum event_type expect, const char *str, int newline_ | |||
| 672 | else | 684 | else |
| 673 | type = read_token_item(&token); | 685 | type = read_token_item(&token); |
| 674 | 686 | ||
| 675 | ret = test_type_token(type, token, expect, str); | 687 | ret = __test_type_token(type, token, expect, str, warn); |
| 676 | 688 | ||
| 677 | free_token(token); | 689 | free_token(token); |
| 678 | 690 | ||
| 679 | return ret; | 691 | return ret; |
| 680 | } | 692 | } |
| 681 | 693 | ||
| 694 | static int read_expected_warn(enum event_type expect, const char *str, bool warn) | ||
| 695 | { | ||
| 696 | return __read_expected(expect, str, 1, warn); | ||
| 697 | } | ||
| 698 | |||
| 682 | static int read_expected(enum event_type expect, const char *str) | 699 | static int read_expected(enum event_type expect, const char *str) |
| 683 | { | 700 | { |
| 684 | return __read_expected(expect, str, 1); | 701 | return __read_expected(expect, str, 1, true); |
| 685 | } | 702 | } |
| 686 | 703 | ||
| 687 | static int read_expected_item(enum event_type expect, const char *str) | 704 | static int read_expected_item(enum event_type expect, const char *str) |
| 688 | { | 705 | { |
| 689 | return __read_expected(expect, str, 0); | 706 | return __read_expected(expect, str, 0, true); |
| 690 | } | 707 | } |
| 691 | 708 | ||
| 692 | static char *event_read_name(void) | 709 | static char *event_read_name(void) |
| @@ -3088,7 +3105,7 @@ static void print_args(struct print_arg *args) | |||
| 3088 | } | 3105 | } |
| 3089 | 3106 | ||
| 3090 | static void parse_header_field(const char *field, | 3107 | static void parse_header_field(const char *field, |
| 3091 | int *offset, int *size) | 3108 | int *offset, int *size, bool warn) |
| 3092 | { | 3109 | { |
| 3093 | char *token; | 3110 | char *token; |
| 3094 | int type; | 3111 | int type; |
| @@ -3103,7 +3120,7 @@ static void parse_header_field(const char *field, | |||
| 3103 | goto fail; | 3120 | goto fail; |
| 3104 | free_token(token); | 3121 | free_token(token); |
| 3105 | 3122 | ||
| 3106 | if (read_expected(EVENT_ITEM, field) < 0) | 3123 | if (read_expected_warn(EVENT_ITEM, field, warn) < 0) |
| 3107 | return; | 3124 | return; |
| 3108 | if (read_expected(EVENT_OP, ";") < 0) | 3125 | if (read_expected(EVENT_OP, ";") < 0) |
| 3109 | return; | 3126 | return; |
| @@ -3160,11 +3177,13 @@ int parse_header_page(char *buf, unsigned long size) | |||
| 3160 | init_input_buf(buf, size); | 3177 | init_input_buf(buf, size); |
| 3161 | 3178 | ||
| 3162 | parse_header_field("timestamp", &header_page_ts_offset, | 3179 | parse_header_field("timestamp", &header_page_ts_offset, |
| 3163 | &header_page_ts_size); | 3180 | &header_page_ts_size, true); |
| 3164 | parse_header_field("commit", &header_page_size_offset, | 3181 | parse_header_field("commit", &header_page_size_offset, |
| 3165 | &header_page_size_size); | 3182 | &header_page_size_size, true); |
| 3183 | parse_header_field("overwrite", &header_page_overwrite_offset, | ||
| 3184 | &header_page_overwrite_size, false); | ||
| 3166 | parse_header_field("data", &header_page_data_offset, | 3185 | parse_header_field("data", &header_page_data_offset, |
| 3167 | &header_page_data_size); | 3186 | &header_page_data_size, true); |
| 3168 | 3187 | ||
| 3169 | return 0; | 3188 | return 0; |
| 3170 | } | 3189 | } |
