ALSA: pcm: Add support trace for applptr-start

This patch add trace 'applptr_start' for analyse R/W whether
it's blocked by user or kernel space.

CONFIG_FUNCTION_TRACER
CONFIG_FUNCTION_GRAPH_TRACER
CONFIG_STACK_TRACER
CONFIG_DYNAMIC_FTRACE

/# cd /sys/kernel/debug/tracing
/# echo "snd_pcm:applptr" >> set_event
/# echo "snd_pcm:applptr_start" >> set_event
/# echo "snd_pcm:hwptr" >> set_event
/# echo "snd_pcm:xrun" >> set_event
/# echo 1 > tracing_on
/# cat trace_pipe > trace.txt

149.773314: applptr_start: pcmC1D0c/sub0: size=4096
149.794870: applptr: pcmC1D0c/sub0: prev=0, curr=1024, avail=0, period=1024, buf=4096
149.816192: applptr: pcmC1D0c/sub0: prev=1024, curr=2048, avail=0, period=1024, buf=4096
149.837526: applptr: pcmC1D0c/sub0: prev=2048, curr=3072, avail=0, period=1024, buf=4096
149.858859: applptr: pcmC1D0c/sub0: prev=3072, curr=4096, avail=0, period=1024, buf=4096
149.858871: applptr_start: pcmC1D0c/sub0: size=4096
149.880192: applptr: pcmC1D0c/sub0: prev=4096, curr=5120, avail=0, period=1024, buf=4096
149.901523: applptr: pcmC1D0c/sub0: prev=5120, curr=6144, avail=0, period=1024, buf=4096
149.922857: applptr: pcmC1D0c/sub0: prev=6144, curr=7168, avail=0, period=1024, buf=4096
149.944192: applptr: pcmC1D0c/sub0: prev=7168, curr=8192, avail=0, period=1024, buf=4096
149.944202: applptr_start: pcmC1D0c/sub0: size=4096
149.965524: applptr: pcmC1D0c/sub0: prev=8192, curr=9216, avail=0, period=1024, buf=4096
149.986858: applptr: pcmC1D0c/sub0: prev=9216, curr=10240, avail=0, period=1024, buf=4096
150.008191: applptr: pcmC1D0c/sub0: prev=10240, curr=11264, avail=0, period=1024, buf=4096
150.029529: applptr: pcmC1D0c/sub0: prev=11264, curr=12288, avail=0, period=1024, buf=4096
150.029539: applptr_start: pcmC1D0c/sub0: size=4096
150.050859: applptr: pcmC1D0c/sub0: prev=12288, curr=13312, avail=0, period=1024, buf=4096
150.072191: applptr: pcmC1D0c/sub0: prev=13312, curr=14336, avail=0, period=1024, buf=4096
150.093524: applptr: pcmC1D0c/sub0: prev=14336, curr=15360, avail=0, period=1024, buf=4096
150.114859: applptr: pcmC1D0c/sub0: prev=15360, curr=16384, avail=0, period=1024, buf=4096

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Change-Id: I66dad75dc183d887ee413539e3df6d77a90a70f6
This commit is contained in:
Sugar Zhang
2022-08-16 14:59:42 +08:00
parent b48600bef8
commit 73a2042551
2 changed files with 29 additions and 0 deletions
+3
View File
@@ -28,6 +28,7 @@
#define trace_xrun(substream)
#define trace_hw_ptr_error(substream, reason)
#define trace_applptr(substream, prev, curr)
#define trace_applptr_start(substream, frame)
#endif
static int fill_silence_frames(struct snd_pcm_substream *substream,
@@ -2131,6 +2132,8 @@ snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream,
if (err < 0)
return err;
trace_applptr_start(substream, size);
is_playback = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
if (interleaved) {
if (runtime->access != SNDRV_PCM_ACCESS_RW_INTERLEAVED &&
+26
View File
@@ -141,6 +141,32 @@ TRACE_EVENT(applptr,
)
);
TRACE_EVENT(applptr_start,
TP_PROTO(struct snd_pcm_substream *substream, snd_pcm_uframes_t size),
TP_ARGS(substream, size),
TP_STRUCT__entry(
__field( unsigned int, card )
__field( unsigned int, device )
__field( unsigned int, number )
__field( unsigned int, stream )
__field( snd_pcm_uframes_t, size )
),
TP_fast_assign(
__entry->card = (substream)->pcm->card->number;
__entry->device = (substream)->pcm->device;
__entry->number = (substream)->number;
__entry->stream = (substream)->stream;
__entry->size = (size);
),
TP_printk("pcmC%dD%d%s/sub%d: size=%lu",
__entry->card,
__entry->device,
__entry->stream ? "c" : "p",
__entry->number,
__entry->size
)
);
#endif /* _PCM_TRACE_H */
/* This part must be outside protection */