[alsa-devel] Miscellaneous ioplug questions

Takashi Iwai tiwai at suse.de
Wed Aug 15 11:47:11 CEST 2018


On Tue, 14 Aug 2018 18:25:15 +0200,
Rob Duncan wrote:
> 
> Hi Takashi,
> 
> >> - Should the poll FD be made writeable as soon as data is available, or
> >>   only when at least avail_min is available?
> >
> > The latter.  Again, ioplug emulates the hardware driver, so the poll
> > should behave same as the hardware driver does.
> > (Though, admittedly, not all plugin implementations follow this
> > strictly....)
> 
> So, the poll FD must be readable while there is at least avail_min in
> the buffer, and must NOT be readable if there is less than avail_min.
> Is that right?

Yes.

> To labor the point a bit, if exactly avail_min becomes available the
> poll FD must be made readable.  If a single frame is now transferred, so
> the buffer has (avail_min - 1) available, what must the state of the
> poll FD be?

The driver sipmly doesn't set POLLIN|POLLRDNORM bits (or
POLLOUT|POLLWRNORM) unless avail >= avail_min.

> A couple more questions:
> 
> If we are configured to do blocking operations must the read and write
> callbacks always transfer the full requested size, or can they do
> partial transfers?

In general, a partial transfer is always allowed no matter whether
blocking or non-blocking mode is.


Takashi

> On the other hand, what if we are configured to do non-blocking
> operations?
> 
> Or does the caller guarantee not to request a transfer larger than what
> the ioplugin reports as available?
> 
> Thanks,
> 
> Rob.
> 


More information about the Alsa-devel mailing list