Re: How to report error in _pointer function?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Wed, 30 Jul 2008 10:56:31 -0500,
Timur Tabi wrote:
> 
> In my driver, I can detect in the _pointer callback function whether
> or not the DMA engine has actually started.  Sometimes, when I have a
> programming error, the DMA will not start, so my _pointer function
> calculates a crazy value for the current position.  The number it
> returns causes ALSA to go haywire (see my post titled, "underrun!!!
> (at least 1786051083.613 ms long)".
> 
> What is the best way to handle this?  Is there a way I can tell ALSA,
> "hey, this is really screwed up, just abort playback and return an
> error to the app"?

You can return SNDRV_PCM_POS_XRUN from the pointer callback (with
kernel messages if you like).  Then the PCM stream is stopped and the
status is changed to SND_PCM_STATUS_XRUN.  Further access will result
in -EPIPE.

I guess this doesn't fully satisfy your demand, but maybe better than
now :)  We'd need a mechanism to pass a proper error code if other
critical error code must be passed.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux