forked from Minki/linux
[ALSA] PCM core - introduce CONFIG_SND_PCM_XRUN_DEBUG
This patch makes the XRUN (overrun/underrun) notification code optional. Signed-off-by: Jaroslav Kysela <perex@suse.cz>
This commit is contained in:
parent
a2bbbc0c3c
commit
61fb63c096
@ -171,3 +171,13 @@ config SND_DEBUG_DETECT
|
||||
help
|
||||
Say Y here to enable extra-verbose log messages printed when
|
||||
detecting devices.
|
||||
|
||||
config SND_PCM_XRUN_DEBUG
|
||||
bool "Enable PCM ring buffer overrun/underrun debugging"
|
||||
default n
|
||||
depends on SND_DEBUG
|
||||
help
|
||||
Say Y to enable the PCM ring buffer overrun/underrun debugging.
|
||||
It is usually not required, but if you have trouble with
|
||||
sound clicking when system is loaded, it may help to determine
|
||||
the process or driver which causes the scheduling gaps.
|
||||
|
@ -436,7 +436,7 @@ static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry,
|
||||
snd_iprintf(buffer, "appl_ptr : %ld\n", runtime->control->appl_ptr);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SND_DEBUG
|
||||
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
|
||||
static void snd_pcm_xrun_debug_read(struct snd_info_entry *entry,
|
||||
struct snd_info_buffer *buffer)
|
||||
{
|
||||
@ -480,7 +480,7 @@ static int snd_pcm_stream_proc_init(struct snd_pcm_str *pstr)
|
||||
}
|
||||
pstr->proc_info_entry = entry;
|
||||
|
||||
#ifdef CONFIG_SND_DEBUG
|
||||
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
|
||||
if ((entry = snd_info_create_card_entry(pcm->card, "xrun_debug",
|
||||
pstr->proc_root)) != NULL) {
|
||||
entry->c.text.read_size = 64;
|
||||
@ -501,7 +501,7 @@ static int snd_pcm_stream_proc_init(struct snd_pcm_str *pstr)
|
||||
|
||||
static int snd_pcm_stream_proc_done(struct snd_pcm_str *pstr)
|
||||
{
|
||||
#ifdef CONFIG_SND_DEBUG
|
||||
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
|
||||
if (pstr->proc_xrun_debug_entry) {
|
||||
snd_info_unregister(pstr->proc_xrun_debug_entry);
|
||||
pstr->proc_xrun_debug_entry = NULL;
|
||||
|
@ -130,7 +130,7 @@ void snd_pcm_playback_silence(struct snd_pcm_substream *substream, snd_pcm_ufram
|
||||
static void xrun(struct snd_pcm_substream *substream)
|
||||
{
|
||||
snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);
|
||||
#ifdef CONFIG_SND_DEBUG
|
||||
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
|
||||
if (substream->pstr->xrun_debug) {
|
||||
snd_printd(KERN_DEBUG "XRUN: pcmC%dD%d%c\n",
|
||||
substream->pcm->card->number,
|
||||
@ -204,7 +204,7 @@ static inline int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream *subs
|
||||
delta = hw_ptr_interrupt - new_hw_ptr;
|
||||
if (delta > 0) {
|
||||
if ((snd_pcm_uframes_t)delta < runtime->buffer_size / 2) {
|
||||
#ifdef CONFIG_SND_DEBUG
|
||||
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
|
||||
if (runtime->periods > 1 && substream->pstr->xrun_debug) {
|
||||
snd_printd(KERN_ERR "Unexpected hw_pointer value [1] (stream = %i, delta: -%ld, max jitter = %ld): wrong interrupt acknowledge?\n", substream->stream, (long) delta, runtime->buffer_size / 2);
|
||||
if (substream->pstr->xrun_debug > 1)
|
||||
@ -249,7 +249,7 @@ int snd_pcm_update_hw_ptr(struct snd_pcm_substream *substream)
|
||||
delta = old_hw_ptr - new_hw_ptr;
|
||||
if (delta > 0) {
|
||||
if ((snd_pcm_uframes_t)delta < runtime->buffer_size / 2) {
|
||||
#ifdef CONFIG_SND_DEBUG
|
||||
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
|
||||
if (runtime->periods > 2 && substream->pstr->xrun_debug) {
|
||||
snd_printd(KERN_ERR "Unexpected hw_pointer value [2] (stream = %i, delta: -%ld, max jitter = %ld): wrong interrupt acknowledge?\n", substream->stream, (long) delta, runtime->buffer_size / 2);
|
||||
if (substream->pstr->xrun_debug > 1)
|
||||
|
Loading…
Reference in New Issue
Block a user