diff options
Diffstat (limited to 'tools/perf/util/parse-events.l')
| -rw-r--r-- | tools/perf/util/parse-events.l | 63 | 
1 files changed, 32 insertions, 31 deletions
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 91346b75396..343299575b3 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -126,6 +126,37 @@ modifier_bp	[rwx]{1,3}  } +<config>{ +config			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG); } +config1			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG1); } +config2			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG2); } +name			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_NAME); } +period			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD); } +branch_type		{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE); } +,			{ return ','; } +"/"			{ BEGIN(INITIAL); return '/'; } +{name_minus}		{ return str(yyscanner, PE_NAME); } +} + +<mem>{ +{modifier_bp}		{ return str(yyscanner, PE_MODIFIER_BP); } +:			{ return ':'; } +{num_dec}		{ return value(yyscanner, 10); } +{num_hex}		{ return value(yyscanner, 16); } +	/* +	 * We need to separate 'mem:' scanner part, in order to get specific +	 * modifier bits parsed out. Otherwise we would need to handle PE_NAME +	 * and we'd need to parse it manually. During the escape from <mem> +	 * state we need to put the escaping char back, so we dont miss it. +	 */ +.			{ unput(*yytext); BEGIN(INITIAL); } +	/* +	 * We destroy the scanner after reaching EOF, +	 * but anyway just to be sure get back to INIT state. +	 */ +<<EOF>>			{ BEGIN(INITIAL); } +} +  cpu-cycles|cycles				{ return sym(yyscanner, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES); }  stalled-cycles-frontend|idle-cycles-frontend	{ return sym(yyscanner, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND); }  stalled-cycles-backend|idle-cycles-backend	{ return sym(yyscanner, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_BACKEND); } @@ -162,18 +193,6 @@ speculative-read|speculative-load	|  refs|Reference|ops|access		|  misses|miss				{ return str(yyscanner, PE_NAME_CACHE_OP_RESULT); } -<config>{ -config			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG); } -config1			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG1); } -config2			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG2); } -name			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_NAME); } -period			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD); } -branch_type		{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE); } -,			{ return ','; } -"/"			{ BEGIN(INITIAL); return '/'; } -{name_minus}		{ return str(yyscanner, PE_NAME); } -} -  mem:			{ BEGIN(mem); return PE_PREFIX_MEM; }  r{num_raw_hex}		{ return raw(yyscanner); }  {num_dec}		{ return value(yyscanner, 10); } @@ -189,25 +208,7 @@ r{num_raw_hex}		{ return raw(yyscanner); }  "}"			{ return '}'; }  =			{ return '='; }  \n			{ } - -<mem>{ -{modifier_bp}		{ return str(yyscanner, PE_MODIFIER_BP); } -:			{ return ':'; } -{num_dec}		{ return value(yyscanner, 10); } -{num_hex}		{ return value(yyscanner, 16); } -	/* -	 * We need to separate 'mem:' scanner part, in order to get specific -	 * modifier bits parsed out. Otherwise we would need to handle PE_NAME -	 * and we'd need to parse it manually. During the escape from <mem> -	 * state we need to put the escaping char back, so we dont miss it. -	 */ -.			{ unput(*yytext); BEGIN(INITIAL); } -	/* -	 * We destroy the scanner after reaching EOF, -	 * but anyway just to be sure get back to INIT state. -	 */ -<<EOF>>			{ BEGIN(INITIAL); } -} +.			{ }  %%  | 
