[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