~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/util/pmu.y

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 %define api.pure full
  2 %parse-param {void *format}
  3 %parse-param {void *scanner}
  4 %lex-param {void* scanner}
  5 
  6 %{
  7 
  8 #ifndef NDEBUG
  9 #define YYDEBUG 1
 10 #endif
 11 
 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 
 19 int perf_pmu_lex(YYSTYPE * yylval_param , void *yyscanner);
 20 
 21 #define ABORT_ON(val) \
 22 do { \
 23         if (val) \
 24                 YYABORT; \
 25 } while (0)
 26 
 27 static void perf_pmu_error(void *format, void *scanner, const char *msg);
 28 
 29 static 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_CONFIG
 44 %token PP_VALUE PP_ERROR
 45 %type <num> PP_VALUE
 46 %type <bits> bit_term
 47 %type <bits> bits
 48 
 49 %union
 50 {
 51         unsigned long num;
 52         DECLARE_BITMAP(bits, PERF_PMU_FORMAT_BITS);
 53 }
 54 
 55 %%
 56 
 57 format:
 58 format format_term
 59 |
 60 format_term
 61 
 62 format_term:
 63 PP_CONFIG ':' bits
 64 {
 65         perf_pmu_format__set_value(format, PERF_PMU_FORMAT_VALUE_CONFIG, $3);
 66 }
 67 |
 68 PP_CONFIG PP_VALUE ':' bits
 69 {
 70         perf_pmu_format__set_value(format, $2, $4);
 71 }
 72 
 73 bits:
 74 bits ',' bit_term
 75 {
 76         bitmap_or($$, $1, $3, 64);
 77 }
 78 |
 79 bit_term
 80 {
 81         memcpy($$, $1, sizeof($1));
 82 }
 83 
 84 bit_term:
 85 PP_VALUE '-' PP_VALUE
 86 {
 87         perf_pmu__set_format($$, $1, $3);
 88 }
 89 |
 90 PP_VALUE
 91 {
 92         perf_pmu__set_format($$, $1, 0);
 93 }
 94 
 95 %%
 96 
 97 static void perf_pmu_error(void *format __maybe_unused,
 98                            void *scanner __maybe_unused,
 99                            const char *msg __maybe_unused)
100 {
101 }

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php