On Mon, 1 Jul 2002, Joshua Haberman wrote: > * Paul Davis ([EMAIL PROTECTED]) wrote: > > >Also, how should programs interpret multiple poll descriptors: if the > > >poll succeeds on some descriptors but not others, does this mean the > > >stream is only "partially" ready? > > > > yes. see the internals of JACK's jack/drivers/alsa/alsa_driver.c > > Honestly, I'm afraid to look at that file too carefully since it is GPL > and PortAudio is BSD. This puts me in kind of a weird situation. > > > >Also, is snd_pcm_poll_descriptors_revents() understood to return the > > >events that have triggered on just *one* poll descriptor or on *all*? In > > >other words, are you ANDing bitmasks or ORing them? Right now the > > >semantics are impossible to deduce because the function just returns the > > >revents verbatim since there is only one poll descriptor. > > > > The semantics are those of POSIX poll(2): it returns the status for > > each file descriptor. ALSA's low level and mid level drivers don't > > modify this in anyway. If there 3 fd's for playback and 2 for capture, > > then the return data would indicate status for each of the 5 fd's > > (assuming you asked for it for all 5). > > The prototype for this function is: > > int snd_pcm_poll_descriptors_revents ( snd_pcm_t *pcm, > struct pollfd *pfds, > unsigned int nfds, > unsigned short * revents > ) > > Are you saying that the revents paramter is treated as an array? I was > under the impression that it is treated as a pointer to a single short. > This code fragment from test/pcm.c seems to confirm this interpretation: > > static int wait_for_poll(snd_pcm_t *handle, struct pollfd *ufds, unsigned > int count) > { > unsigned short revents; > > while (1) { > poll(ufds, count, -1); > snd_pcm_poll_descriptors_revents(handle, ufds, count, &revents); > if (revents & POLLERR) > return -EIO; > if (revents & POLLOUT) > return 0; > } > } > > This gives me the impression that snd_pcm_poll_descriptors_revents() is a > function that somehow "summarizes" all of the pfds into a single revents > that speaks to the status of the entire PCM handle.
Yes, it translates multiple revents into one for application. Please, use this function for the library flexibility. Jaroslav ----- Jaroslav Kysela <[EMAIL PROTECTED]> Linux Kernel Sound Maintainer ALSA Project http://www.alsa-project.org SuSE Linux http://www.suse.com ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel