root/tools/perf/util/pmu.y

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. perf_pmu_error

   1 
   2 %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 
  13 extern int perf_pmu_lex (void);
  14 
  15 #define ABORT_ON(val) \
  16 do { \
  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 
  37 format:
  38 format format_term
  39 |
  40 format_term
  41 
  42 format_term:
  43 PP_CONFIG ':' bits
  44 {
  45         ABORT_ON(perf_pmu__new_format(format, name,
  46                                       PERF_PMU_FORMAT_VALUE_CONFIG,
  47                                       $3));
  48 }
  49 |
  50 PP_CONFIG1 ':' bits
  51 {
  52         ABORT_ON(perf_pmu__new_format(format, name,
  53                                       PERF_PMU_FORMAT_VALUE_CONFIG1,
  54                                       $3));
  55 }
  56 |
  57 PP_CONFIG2 ':' bits
  58 {
  59         ABORT_ON(perf_pmu__new_format(format, name,
  60                                       PERF_PMU_FORMAT_VALUE_CONFIG2,
  61                                       $3));
  62 }
  63 
  64 bits:
  65 bits ',' bit_term
  66 {
  67         bitmap_or($$, $1, $3, 64);
  68 }
  69 |
  70 bit_term
  71 {
  72         memcpy($$, $1, sizeof($1));
  73 }
  74 
  75 bit_term:
  76 PP_VALUE '-' PP_VALUE
  77 {
  78         perf_pmu__set_format($$, $1, $3);
  79 }
  80 |
  81 PP_VALUE
  82 {
  83         perf_pmu__set_format($$, $1, 0);
  84 }
  85 
  86 %%
  87 
  88 void perf_pmu_error(struct list_head *list __maybe_unused,
  89                     char *name __maybe_unused,
  90                     char const *msg __maybe_unused)
  91 {
  92 }

/* [<][>][^][v][top][bottom][index][help] */