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 ---