]>
Commit | Line | Data |
---|---|---|
f5914908 TI |
1 | #undef TRACE_SYSTEM |
2 | #define TRACE_SYSTEM snd_pcm | |
3 | #define TRACE_INCLUDE_FILE pcm_trace | |
4 | ||
5 | #if !defined(_PCM_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) | |
6 | #define _PCM_TRACE_H | |
7 | ||
8 | #include <linux/tracepoint.h> | |
9 | ||
10 | TRACE_EVENT(hwptr, | |
11 | TP_PROTO(struct snd_pcm_substream *substream, snd_pcm_uframes_t pos, bool irq), | |
12 | TP_ARGS(substream, pos, irq), | |
13 | TP_STRUCT__entry( | |
14 | __field( bool, in_interrupt ) | |
15 | __field( unsigned int, card ) | |
16 | __field( unsigned int, device ) | |
17 | __field( unsigned int, number ) | |
18 | __field( unsigned int, stream ) | |
19 | __field( snd_pcm_uframes_t, pos ) | |
20 | __field( snd_pcm_uframes_t, period_size ) | |
21 | __field( snd_pcm_uframes_t, buffer_size ) | |
22 | __field( snd_pcm_uframes_t, old_hw_ptr ) | |
23 | __field( snd_pcm_uframes_t, hw_ptr_base ) | |
24 | ), | |
25 | TP_fast_assign( | |
26 | __entry->in_interrupt = (irq); | |
27 | __entry->card = (substream)->pcm->card->number; | |
28 | __entry->device = (substream)->pcm->device; | |
29 | __entry->number = (substream)->number; | |
30 | __entry->stream = (substream)->stream; | |
31 | __entry->pos = (pos); | |
32 | __entry->period_size = (substream)->runtime->period_size; | |
33 | __entry->buffer_size = (substream)->runtime->buffer_size; | |
34 | __entry->old_hw_ptr = (substream)->runtime->status->hw_ptr; | |
35 | __entry->hw_ptr_base = (substream)->runtime->hw_ptr_base; | |
36 | ), | |
f5abd532 | 37 | TP_printk("pcmC%dD%d%s/sub%d: %s: pos=%lu, old=%lu, base=%lu, period=%lu, buf=%lu", |
f5914908 | 38 | __entry->card, __entry->device, |
f5abd532 | 39 | __entry->stream == SNDRV_PCM_STREAM_PLAYBACK ? "p" : "c", |
f5914908 TI |
40 | __entry->number, |
41 | __entry->in_interrupt ? "IRQ" : "POS", | |
42 | (unsigned long)__entry->pos, | |
43 | (unsigned long)__entry->old_hw_ptr, | |
44 | (unsigned long)__entry->hw_ptr_base, | |
45 | (unsigned long)__entry->period_size, | |
46 | (unsigned long)__entry->buffer_size) | |
47 | ); | |
48 | ||
49 | TRACE_EVENT(xrun, | |
50 | TP_PROTO(struct snd_pcm_substream *substream), | |
51 | TP_ARGS(substream), | |
52 | TP_STRUCT__entry( | |
53 | __field( unsigned int, card ) | |
54 | __field( unsigned int, device ) | |
55 | __field( unsigned int, number ) | |
56 | __field( unsigned int, stream ) | |
57 | __field( snd_pcm_uframes_t, period_size ) | |
58 | __field( snd_pcm_uframes_t, buffer_size ) | |
59 | __field( snd_pcm_uframes_t, old_hw_ptr ) | |
60 | __field( snd_pcm_uframes_t, hw_ptr_base ) | |
61 | ), | |
62 | TP_fast_assign( | |
63 | __entry->card = (substream)->pcm->card->number; | |
64 | __entry->device = (substream)->pcm->device; | |
65 | __entry->number = (substream)->number; | |
66 | __entry->stream = (substream)->stream; | |
67 | __entry->period_size = (substream)->runtime->period_size; | |
68 | __entry->buffer_size = (substream)->runtime->buffer_size; | |
69 | __entry->old_hw_ptr = (substream)->runtime->status->hw_ptr; | |
70 | __entry->hw_ptr_base = (substream)->runtime->hw_ptr_base; | |
71 | ), | |
f5abd532 | 72 | TP_printk("pcmC%dD%d%s/sub%d: XRUN: old=%lu, base=%lu, period=%lu, buf=%lu", |
f5914908 | 73 | __entry->card, __entry->device, |
f5abd532 | 74 | __entry->stream == SNDRV_PCM_STREAM_PLAYBACK ? "p" : "c", |
f5914908 TI |
75 | __entry->number, |
76 | (unsigned long)__entry->old_hw_ptr, | |
77 | (unsigned long)__entry->hw_ptr_base, | |
78 | (unsigned long)__entry->period_size, | |
79 | (unsigned long)__entry->buffer_size) | |
80 | ); | |
81 | ||
82 | TRACE_EVENT(hw_ptr_error, | |
83 | TP_PROTO(struct snd_pcm_substream *substream, const char *why), | |
84 | TP_ARGS(substream, why), | |
85 | TP_STRUCT__entry( | |
86 | __field( unsigned int, card ) | |
87 | __field( unsigned int, device ) | |
88 | __field( unsigned int, number ) | |
89 | __field( unsigned int, stream ) | |
90 | __field( const char *, reason ) | |
91 | ), | |
92 | TP_fast_assign( | |
93 | __entry->card = (substream)->pcm->card->number; | |
94 | __entry->device = (substream)->pcm->device; | |
95 | __entry->number = (substream)->number; | |
96 | __entry->stream = (substream)->stream; | |
97 | __entry->reason = (why); | |
98 | ), | |
f5abd532 | 99 | TP_printk("pcmC%dD%d%s/sub%d: ERROR: %s", |
f5914908 | 100 | __entry->card, __entry->device, |
f5abd532 | 101 | __entry->stream == SNDRV_PCM_STREAM_PLAYBACK ? "p" : "c", |
f5914908 TI |
102 | __entry->number, __entry->reason) |
103 | ); | |
104 | ||
fccf5388 TS |
105 | TRACE_EVENT(applptr, |
106 | TP_PROTO(struct snd_pcm_substream *substream, snd_pcm_uframes_t prev, snd_pcm_uframes_t curr), | |
107 | TP_ARGS(substream, prev, curr), | |
108 | TP_STRUCT__entry( | |
109 | __field( unsigned int, card ) | |
110 | __field( unsigned int, device ) | |
111 | __field( unsigned int, number ) | |
112 | __field( unsigned int, stream ) | |
113 | __field( snd_pcm_uframes_t, prev ) | |
114 | __field( snd_pcm_uframes_t, curr ) | |
115 | __field( snd_pcm_uframes_t, avail ) | |
116 | __field( snd_pcm_uframes_t, period_size ) | |
117 | __field( snd_pcm_uframes_t, buffer_size ) | |
118 | ), | |
119 | TP_fast_assign( | |
120 | __entry->card = (substream)->pcm->card->number; | |
121 | __entry->device = (substream)->pcm->device; | |
122 | __entry->number = (substream)->number; | |
123 | __entry->stream = (substream)->stream; | |
124 | __entry->prev = (prev); | |
125 | __entry->curr = (curr); | |
126 | __entry->avail = (substream)->stream ? snd_pcm_capture_avail(substream->runtime) : snd_pcm_playback_avail(substream->runtime); | |
127 | __entry->period_size = (substream)->runtime->period_size; | |
128 | __entry->buffer_size = (substream)->runtime->buffer_size; | |
129 | ), | |
130 | TP_printk("pcmC%dD%d%s/sub%d: prev=%lu, curr=%lu, avail=%lu, period=%lu, buf=%lu", | |
131 | __entry->card, | |
132 | __entry->device, | |
133 | __entry->stream ? "c" : "p", | |
134 | __entry->number, | |
135 | __entry->prev, | |
136 | __entry->curr, | |
137 | __entry->avail, | |
138 | __entry->period_size, | |
139 | __entry->buffer_size | |
140 | ) | |
141 | ); | |
142 | ||
f5914908 TI |
143 | #endif /* _PCM_TRACE_H */ |
144 | ||
145 | /* This part must be outside protection */ | |
146 | #undef TRACE_INCLUDE_PATH | |
147 | #define TRACE_INCLUDE_PATH . | |
148 | #include <trace/define_trace.h> |