[alsa-devel] Question about device recovery when under/over run error case
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Mon Jan 18 07:04:03 CET 2016
Hi Sakamoto-san
Thank you for your feedback
> > Our sound device needs recovery if under/over run error happen.
> > Basically, this "recovery" means "restart hardware".
> > But, in such case, who should recovers sound device, Kernel or Userland ?
> >
> > Current our sound driver recovers it by kernel automatically.
> > (But I need do work more for it)
>
> I think you should not recover it in kernel space, because 'hw_ptr' in
> mapped page includes values unexpected by userspace application. (The
> value may suddenly jump up to unexpected value after recovered.)
>
> What driver in kernel land is to notify XRUN to the applications in
> your case. If recovering processing includes event waiting, it should
> not be executed in interrupt context.
>
> > We considered that userland should know it, or, run it by himself (?)
> > If userland should do it, which function should be called to announce
> > error to userland from kernel ?
>
> Userspace can get to know the XRUN state by calling some APIs. Then,
> it can recover PCM substream by executing SNDRV_PCM_IOCTL_PREPARE
> ioctl.
I think we can use snd_pcm_stop_xrun() for this purpose.
I will try to investigate it.
More information about the Alsa-devel
mailing list