parse-events.y (411ad22ecf0281d666a82aa7f4de90c70365da7d) | parse-events.y (5ea8f2ccffb23983f02012a2731464586b10fbf3) |
---|---|
1%define api.pure full 2%parse-param {void *_parse_state} 3%parse-param {void *scanner} 4%lex-param {void* scanner} 5%locations 6 7%{ 8 --- 51 unchanged lines hidden (view full) --- 60%token PE_BPF_OBJECT PE_BPF_SOURCE 61%token PE_MODIFIER_EVENT PE_MODIFIER_BP 62%token PE_LEGACY_CACHE 63%token PE_PREFIX_MEM PE_PREFIX_RAW PE_PREFIX_GROUP 64%token PE_ERROR 65%token PE_KERNEL_PMU_EVENT PE_PMU_EVENT_FAKE 66%token PE_ARRAY_ALL PE_ARRAY_RANGE 67%token PE_DRV_CFG_TERM | 1%define api.pure full 2%parse-param {void *_parse_state} 3%parse-param {void *scanner} 4%lex-param {void* scanner} 5%locations 6 7%{ 8 --- 51 unchanged lines hidden (view full) --- 60%token PE_BPF_OBJECT PE_BPF_SOURCE 61%token PE_MODIFIER_EVENT PE_MODIFIER_BP 62%token PE_LEGACY_CACHE 63%token PE_PREFIX_MEM PE_PREFIX_RAW PE_PREFIX_GROUP 64%token PE_ERROR 65%token PE_KERNEL_PMU_EVENT PE_PMU_EVENT_FAKE 66%token PE_ARRAY_ALL PE_ARRAY_RANGE 67%token PE_DRV_CFG_TERM |
68%token PE_TERM_HW |
|
68%type <num> PE_VALUE 69%type <num> PE_VALUE_SYM_HW 70%type <num> PE_VALUE_SYM_SW 71%type <num> PE_VALUE_SYM_TOOL 72%type <num> PE_TERM 73%type <num> value_sym 74%type <str> PE_RAW 75%type <str> PE_NAME --- 31 unchanged lines hidden (view full) --- 107%type <list_evsel> groups 108%destructor { free_list_evsel ($$); } <list_evsel> 109%type <tracepoint_name> tracepoint_name 110%destructor { free ($$.sys); free ($$.event); } <tracepoint_name> 111%type <array> array 112%type <array> array_term 113%type <array> array_terms 114%destructor { free ($$.ranges); } <array> | 69%type <num> PE_VALUE 70%type <num> PE_VALUE_SYM_HW 71%type <num> PE_VALUE_SYM_SW 72%type <num> PE_VALUE_SYM_TOOL 73%type <num> PE_TERM 74%type <num> value_sym 75%type <str> PE_RAW 76%type <str> PE_NAME --- 31 unchanged lines hidden (view full) --- 108%type <list_evsel> groups 109%destructor { free_list_evsel ($$); } <list_evsel> 110%type <tracepoint_name> tracepoint_name 111%destructor { free ($$.sys); free ($$.event); } <tracepoint_name> 112%type <array> array 113%type <array> array_term 114%type <array> array_terms 115%destructor { free ($$.ranges); } <array> |
116%type <hardware_term> PE_TERM_HW 117%destructor { free ($$.str); } <hardware_term> |
|
115 116%union 117{ 118 char *str; 119 u64 num; 120 struct list_head *list_evsel; 121 struct list_head *list_terms; 122 struct parse_events_term *term; 123 struct tracepoint_name { 124 char *sys; 125 char *event; 126 } tracepoint_name; 127 struct parse_events_array array; | 118 119%union 120{ 121 char *str; 122 u64 num; 123 struct list_head *list_evsel; 124 struct list_head *list_terms; 125 struct parse_events_term *term; 126 struct tracepoint_name { 127 char *sys; 128 char *event; 129 } tracepoint_name; 130 struct parse_events_array array; |
131 struct hardware_term { 132 char *str; 133 u64 num; 134 } hardware_term; |
|
128} 129%% 130 131start: 132PE_START_EVENTS start_events 133| 134PE_START_TERMS start_terms 135 --- 629 unchanged lines hidden (view full) --- 765 if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, 766 $1, $3, false, &@1, &@3)) { 767 free($1); 768 YYABORT; 769 } 770 $$ = term; 771} 772| | 135} 136%% 137 138start: 139PE_START_EVENTS start_events 140| 141PE_START_TERMS start_terms 142 --- 629 unchanged lines hidden (view full) --- 772 if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, 773 $1, $3, false, &@1, &@3)) { 774 free($1); 775 YYABORT; 776 } 777 $$ = term; 778} 779| |
773name_or_raw '=' PE_VALUE_SYM_HW | 780name_or_raw '=' PE_TERM_HW |
774{ 775 struct parse_events_term *term; | 781{ 782 struct parse_events_term *term; |
776 int config = $3 & 255; | |
777 | 783 |
778 if (parse_events_term__sym_hw(&term, $1, config)) { | 784 if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, 785 $1, $3.str, &@1, &@3)) { |
779 free($1); | 786 free($1); |
787 free($3.str); |
|
780 YYABORT; 781 } 782 $$ = term; 783} 784| 785PE_LEGACY_CACHE 786{ 787 struct parse_events_term *term; --- 13 unchanged lines hidden (view full) --- 801 if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, 802 $1, 1, true, &@1, NULL)) { 803 free($1); 804 YYABORT; 805 } 806 $$ = term; 807} 808| | 788 YYABORT; 789 } 790 $$ = term; 791} 792| 793PE_LEGACY_CACHE 794{ 795 struct parse_events_term *term; --- 13 unchanged lines hidden (view full) --- 809 if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, 810 $1, 1, true, &@1, NULL)) { 811 free($1); 812 YYABORT; 813 } 814 $$ = term; 815} 816| |
809PE_VALUE_SYM_HW | 817PE_TERM_HW |
810{ 811 struct parse_events_term *term; | 818{ 819 struct parse_events_term *term; |
812 int config = $1 & 255; | |
813 | 820 |
814 ABORT_ON(parse_events_term__sym_hw(&term, NULL, config)); | 821 if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_HARDWARE, 822 $1.str, $1.num & 255, false, &@1, NULL)) { 823 free($1.str); 824 YYABORT; 825 } |
815 $$ = term; 816} 817| 818PE_TERM '=' PE_NAME 819{ 820 struct parse_events_term *term; 821 822 if (parse_events_term__str(&term, (int)$1, NULL, $3, &@1, &@3)) { 823 free($3); 824 YYABORT; 825 } 826 $$ = term; 827} 828| | 826 $$ = term; 827} 828| 829PE_TERM '=' PE_NAME 830{ 831 struct parse_events_term *term; 832 833 if (parse_events_term__str(&term, (int)$1, NULL, $3, &@1, &@3)) { 834 free($3); 835 YYABORT; 836 } 837 $$ = term; 838} 839| |
840PE_TERM '=' PE_TERM_HW 841{ 842 struct parse_events_term *term; 843 844 if (parse_events_term__str(&term, (int)$1, NULL, $3.str, &@1, &@3)) { 845 free($3.str); 846 YYABORT; 847 } 848 $$ = term; 849} 850| |
|
829PE_TERM '=' PE_VALUE 830{ 831 struct parse_events_term *term; 832 833 ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, $3, false, &@1, &@3)); 834 $$ = term; 835} 836| --- 120 unchanged lines hidden --- | 851PE_TERM '=' PE_VALUE 852{ 853 struct parse_events_term *term; 854 855 ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, $3, false, &@1, &@3)); 856 $$ = term; 857} 858| --- 120 unchanged lines hidden --- |