blob: bfd7e8509869b64b53fbcbcddafe89a4a73b93b3 [file] [log] [blame]
Jiri Olsacd82a322012-03-15 20:09:17 +01001
Jiri Olsacd82a322012-03-15 20:09:17 +01002%parse-param {struct list_head *format}
3%parse-param {char *name}
4
5%{
6
7#include <linux/compiler.h>
8#include <linux/list.h>
9#include <linux/bitmap.h>
10#include <string.h>
11#include "pmu.h"
12
13extern int perf_pmu_lex (void);
14
15#define ABORT_ON(val) \
16do { \
17 if (val) \
18 YYABORT; \
19} while (0)
20
21%}
22
23%token PP_CONFIG PP_CONFIG1 PP_CONFIG2
24%token PP_VALUE PP_ERROR
25%type <num> PP_VALUE
26%type <bits> bit_term
27%type <bits> bits
28
29%union
30{
31 unsigned long num;
32 DECLARE_BITMAP(bits, PERF_PMU_FORMAT_BITS);
33}
34
35%%
36
37format:
38format format_term
39|
40format_term
41
42format_term:
43PP_CONFIG ':' bits
44{
45 ABORT_ON(perf_pmu__new_format(format, name,
46 PERF_PMU_FORMAT_VALUE_CONFIG,
47 $3));
48}
49|
50PP_CONFIG1 ':' bits
51{
52 ABORT_ON(perf_pmu__new_format(format, name,
53 PERF_PMU_FORMAT_VALUE_CONFIG1,
54 $3));
55}
56|
57PP_CONFIG2 ':' bits
58{
59 ABORT_ON(perf_pmu__new_format(format, name,
60 PERF_PMU_FORMAT_VALUE_CONFIG2,
61 $3));
62}
63
64bits:
65bits ',' bit_term
66{
67 bitmap_or($$, $1, $3, 64);
68}
69|
70bit_term
71{
72 memcpy($$, $1, sizeof($1));
73}
74
75bit_term:
76PP_VALUE '-' PP_VALUE
77{
78 perf_pmu__set_format($$, $1, $3);
79}
80|
81PP_VALUE
82{
83 perf_pmu__set_format($$, $1, 0);
84}
85
86%%
87
Irina Tirdea1d037ca2012-09-11 01:15:03 +030088void perf_pmu_error(struct list_head *list __maybe_unused,
89 char *name __maybe_unused,
90 char const *msg __maybe_unused)
Jiri Olsacd82a322012-03-15 20:09:17 +010091{
92}