| 
									
										
										
										
											2012-03-15 20:09:17 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | %name-prefix "perf_pmu_" | 
					
						
							|  |  |  | %parse-param {struct list_head *format} | 
					
						
							|  |  |  | %parse-param {char *name} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %{ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/compiler.h> | 
					
						
							|  |  |  | #include <linux/list.h> | 
					
						
							|  |  |  | #include <linux/bitmap.h> | 
					
						
							|  |  |  | #include <string.h> | 
					
						
							|  |  |  | #include "pmu.h" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern int perf_pmu_lex (void); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ABORT_ON(val) \ | 
					
						
							|  |  |  | do { \ | 
					
						
							|  |  |  |         if (val) \ | 
					
						
							|  |  |  |                 YYABORT; \ | 
					
						
							|  |  |  | } while (0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %token PP_CONFIG PP_CONFIG1 PP_CONFIG2 | 
					
						
							|  |  |  | %token PP_VALUE PP_ERROR | 
					
						
							|  |  |  | %type <num> PP_VALUE | 
					
						
							|  |  |  | %type <bits> bit_term | 
					
						
							|  |  |  | %type <bits> bits | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %union | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	unsigned long num; | 
					
						
							|  |  |  | 	DECLARE_BITMAP(bits, PERF_PMU_FORMAT_BITS); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %% | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | format: | 
					
						
							|  |  |  | format format_term | 
					
						
							|  |  |  | | | 
					
						
							|  |  |  | format_term | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | format_term: | 
					
						
							|  |  |  | PP_CONFIG ':' bits | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	ABORT_ON(perf_pmu__new_format(format, name, | 
					
						
							|  |  |  | 				      PERF_PMU_FORMAT_VALUE_CONFIG, | 
					
						
							|  |  |  | 				      $3)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | | | 
					
						
							|  |  |  | PP_CONFIG1 ':' bits | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	ABORT_ON(perf_pmu__new_format(format, name, | 
					
						
							|  |  |  | 				      PERF_PMU_FORMAT_VALUE_CONFIG1, | 
					
						
							|  |  |  | 				      $3)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | | | 
					
						
							|  |  |  | PP_CONFIG2 ':' bits | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	ABORT_ON(perf_pmu__new_format(format, name, | 
					
						
							|  |  |  | 				      PERF_PMU_FORMAT_VALUE_CONFIG2, | 
					
						
							|  |  |  | 				      $3)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bits: | 
					
						
							|  |  |  | bits ',' bit_term | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	bitmap_or($$, $1, $3, 64); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | | | 
					
						
							|  |  |  | bit_term | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	memcpy($$, $1, sizeof($1)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bit_term: | 
					
						
							|  |  |  | PP_VALUE '-' PP_VALUE | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	perf_pmu__set_format($$, $1, $3); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | | | 
					
						
							|  |  |  | PP_VALUE | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	perf_pmu__set_format($$, $1, 0); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %% | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-09-11 01:15:03 +03:00
										 |  |  | void perf_pmu_error(struct list_head *list __maybe_unused, | 
					
						
							|  |  |  | 		    char *name __maybe_unused, | 
					
						
							|  |  |  | 		    char const *msg __maybe_unused) | 
					
						
							| 
									
										
										
										
											2012-03-15 20:09:17 +01:00
										 |  |  | { | 
					
						
							|  |  |  | } |