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:
@@ -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 &&
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user