brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · 198907a Raw
102 lines · plain
1%define api.pure full2%parse-param {void *format}3%parse-param {void *scanner}4%lex-param {void* scanner}5 6%{7 8#ifndef NDEBUG9#define YYDEBUG 110#endif11 12#include <linux/compiler.h>13#include <linux/list.h>14#include <linux/bitmap.h>15#include <string.h>16#include "pmu.h"17#include "pmu-bison.h"18 19int perf_pmu_lex(YYSTYPE * yylval_param , void *yyscanner);20 21#define ABORT_ON(val) \22do { \23        if (val) \24                YYABORT; \25} while (0)26 27static void perf_pmu_error(void *format, void *scanner, const char *msg);28 29static void perf_pmu__set_format(unsigned long *bits, long from, long to)30{31	long b;32 33	if (!to)34		to = from;35 36	memset(bits, 0, BITS_TO_BYTES(PERF_PMU_FORMAT_BITS));37	for (b = from; b <= to; b++)38		__set_bit(b, bits);39}40 41%}42 43%token PP_CONFIG44%token PP_VALUE PP_ERROR45%type <num> PP_VALUE46%type <bits> bit_term47%type <bits> bits48 49%union50{51	unsigned long num;52	DECLARE_BITMAP(bits, PERF_PMU_FORMAT_BITS);53}54 55%%56 57format:58format format_term59|60format_term61 62format_term:63PP_CONFIG ':' bits64{65	perf_pmu_format__set_value(format, PERF_PMU_FORMAT_VALUE_CONFIG, $3);66}67|68PP_CONFIG PP_VALUE ':' bits69{70	perf_pmu_format__set_value(format, $2, $4);71}72 73bits:74bits ',' bit_term75{76	bitmap_or($$, $1, $3, 64);77}78|79bit_term80{81	memcpy($$, $1, sizeof($1));82}83 84bit_term:85PP_VALUE '-' PP_VALUE86{87	perf_pmu__set_format($$, $1, $3);88}89|90PP_VALUE91{92	perf_pmu__set_format($$, $1, 0);93}94 95%%96 97static void perf_pmu_error(void *format __maybe_unused,98			   void *scanner __maybe_unused,99			   const char *msg __maybe_unused)100{101}102