Merge tag 'pwm/for-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek...
[linux-2.6-microblaze.git] / tools / perf / util / pmu.l
1 %option prefix="perf_pmu_"
2 %option reentrant
3 %option bison-bridge
4
5 %{
6 #include <stdlib.h>
7 #include <linux/bitops.h>
8 #include "pmu.h"
9 #include "pmu-bison.h"
10
11 char *perf_pmu_get_text(yyscan_t yyscanner);
12 YYSTYPE *perf_pmu_get_lval(yyscan_t yyscanner);
13
14 static int value(yyscan_t scanner, int base)
15 {
16         YYSTYPE *yylval = perf_pmu_get_lval(scanner);
17         char *text = perf_pmu_get_text(scanner);
18         long num;
19
20         errno = 0;
21         num = strtoul(text, NULL, base);
22         if (errno)
23                 return PP_ERROR;
24
25         yylval->num = num;
26         return PP_VALUE;
27 }
28
29 %}
30
31 num_dec         [0-9]+
32
33 %%
34
35 {num_dec}       { return value(yyscanner, 10); }
36 config          { return PP_CONFIG; }
37 -               { return '-'; }
38 :               { return ':'; }
39 ,               { return ','; }
40 .               { ; }
41 \n              { ; }
42
43 %%
44
45 int perf_pmu_wrap(void *scanner __maybe_unused)
46 {
47         return 1;
48 }