linux/sound/core/pcm_param_trace.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#undef TRACE_SYSTEM
   3#define TRACE_SYSTEM snd_pcm
   4
   5#if !defined(_PCM_PARAMS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
   6#define _PCM_PARAMS_TRACE_H
   7
   8#include <linux/tracepoint.h>
   9
  10#define HW_PARAM_ENTRY(param) {SNDRV_PCM_HW_PARAM_##param, #param}
  11#define hw_param_labels                 \
  12        HW_PARAM_ENTRY(ACCESS),         \
  13        HW_PARAM_ENTRY(FORMAT),         \
  14        HW_PARAM_ENTRY(SUBFORMAT),      \
  15        HW_PARAM_ENTRY(SAMPLE_BITS),    \
  16        HW_PARAM_ENTRY(FRAME_BITS),     \
  17        HW_PARAM_ENTRY(CHANNELS),       \
  18        HW_PARAM_ENTRY(RATE),           \
  19        HW_PARAM_ENTRY(PERIOD_TIME),    \
  20        HW_PARAM_ENTRY(PERIOD_SIZE),    \
  21        HW_PARAM_ENTRY(PERIOD_BYTES),   \
  22        HW_PARAM_ENTRY(PERIODS),        \
  23        HW_PARAM_ENTRY(BUFFER_TIME),    \
  24        HW_PARAM_ENTRY(BUFFER_SIZE),    \
  25        HW_PARAM_ENTRY(BUFFER_BYTES),   \
  26        HW_PARAM_ENTRY(TICK_TIME)
  27
  28TRACE_EVENT(hw_mask_param,
  29        TP_PROTO(struct snd_pcm_substream *substream, snd_pcm_hw_param_t type, int index, const struct snd_mask *prev, const struct snd_mask *curr),
  30        TP_ARGS(substream, type, index, prev, curr),
  31        TP_STRUCT__entry(
  32                __field(int, card)
  33                __field(int, device)
  34                __field(int, subdevice)
  35                __field(int, direction)
  36                __field(snd_pcm_hw_param_t, type)
  37                __field(int, index)
  38                __field(int, total)
  39                __array(__u32, prev_bits, 8)
  40                __array(__u32, curr_bits, 8)
  41        ),
  42        TP_fast_assign(
  43                __entry->card = substream->pcm->card->number;
  44                __entry->device = substream->pcm->device;
  45                __entry->subdevice = substream->number;
  46                __entry->direction = substream->stream;
  47                __entry->type = type;
  48                __entry->index = index;
  49                __entry->total = substream->runtime->hw_constraints.rules_num;
  50                memcpy(__entry->prev_bits, prev->bits, sizeof(__u32) * 8);
  51                memcpy(__entry->curr_bits, curr->bits, sizeof(__u32) * 8);
  52        ),
  53        TP_printk("pcmC%dD%d%s:%d %03d/%03d %s %08x%08x%08x%08x %08x%08x%08x%08x",
  54                  __entry->card,
  55                  __entry->device,
  56                  __entry->direction ? "c" : "p",
  57                  __entry->subdevice,
  58                  __entry->index,
  59                  __entry->total,
  60                  __print_symbolic(__entry->type, hw_param_labels),
  61                  __entry->prev_bits[3], __entry->prev_bits[2],
  62                  __entry->prev_bits[1], __entry->prev_bits[0],
  63                  __entry->curr_bits[3], __entry->curr_bits[2],
  64                  __entry->curr_bits[1], __entry->curr_bits[0]
  65        )
  66);
  67
  68TRACE_EVENT(hw_interval_param,
  69        TP_PROTO(struct snd_pcm_substream *substream, snd_pcm_hw_param_t type, int index, const struct snd_interval *prev, const struct snd_interval *curr),
  70        TP_ARGS(substream, type, index, prev, curr),
  71        TP_STRUCT__entry(
  72                __field(int, card)
  73                __field(int, device)
  74                __field(int, subdevice)
  75                __field(int, direction)
  76                __field(snd_pcm_hw_param_t, type)
  77                __field(int, index)
  78                __field(int, total)
  79                __field(unsigned int, prev_min)
  80                __field(unsigned int, prev_max)
  81                __field(unsigned int, prev_openmin)
  82                __field(unsigned int, prev_openmax)
  83                __field(unsigned int, prev_integer)
  84                __field(unsigned int, prev_empty)
  85                __field(unsigned int, curr_min)
  86                __field(unsigned int, curr_max)
  87                __field(unsigned int, curr_openmin)
  88                __field(unsigned int, curr_openmax)
  89                __field(unsigned int, curr_integer)
  90                __field(unsigned int, curr_empty)
  91        ),
  92        TP_fast_assign(
  93                __entry->card = substream->pcm->card->number;
  94                __entry->device = substream->pcm->device;
  95                __entry->subdevice = substream->number;
  96                __entry->direction = substream->stream;
  97                __entry->type = type;
  98                __entry->index = index;
  99                __entry->total = substream->runtime->hw_constraints.rules_num;
 100                __entry->prev_min = prev->min;
 101                __entry->prev_max = prev->max;
 102                __entry->prev_openmin = prev->openmin;
 103                __entry->prev_openmax = prev->openmax;
 104                __entry->prev_integer = prev->integer;
 105                __entry->prev_empty = prev->empty;
 106                __entry->curr_min = curr->min;
 107                __entry->curr_max = curr->max;
 108                __entry->curr_openmin = curr->openmin;
 109                __entry->curr_openmax = curr->openmax;
 110                __entry->curr_integer = curr->integer;
 111                __entry->curr_empty = curr->empty;
 112        ),
 113        TP_printk("pcmC%dD%d%s:%d %03d/%03d %s %d %d %s%u %u%s %d %d %s%u %u%s",
 114                  __entry->card,
 115                  __entry->device,
 116                  __entry->direction ? "c" : "p",
 117                  __entry->subdevice,
 118                  __entry->index,
 119                  __entry->total,
 120                  __print_symbolic(__entry->type, hw_param_labels),
 121                  __entry->prev_empty,
 122                  __entry->prev_integer,
 123                  __entry->prev_openmin ? "(" : "[",
 124                  __entry->prev_min,
 125                  __entry->prev_max,
 126                  __entry->prev_openmax ? ")" : "]",
 127                  __entry->curr_empty,
 128                  __entry->curr_integer,
 129                  __entry->curr_openmin ? "(" : "[",
 130                  __entry->curr_min,
 131                  __entry->curr_max,
 132                  __entry->curr_openmax ? ")" : "]"
 133        )
 134);
 135
 136#endif /* _PCM_PARAMS_TRACE_H */
 137
 138/* This part must be outside protection */
 139#undef TRACE_INCLUDE_PATH
 140#define TRACE_INCLUDE_PATH .
 141#undef TRACE_INCLUDE_FILE
 142#define TRACE_INCLUDE_FILE pcm_param_trace
 143#include <trace/define_trace.h>
 144