On Tuesday 19 August 2008 14:28:24 Hannu Savolainen wrote:
> Yair K. wrote:
> > Hi,
> >
> >   I noticed pulseaudio has problems starting when OSSv4 is loaded, and 
> > traced it down to using select() and GET{I,O}SPACE with an mmap()'d device 
To be more accurate, PulseAudio uses poll() not select().

> >   (PulseAudio tries using mmap unless explicitly told otherwise). OSS 
> > doesn't support that, and returns -EIO, which is an error code PulseAudio 
> > doesn't check for and eventually leads to it failing to start. One might 
> > consider blaming Pulseaudio, except: 
> >
> >    A) These limitations aren't documented anywhere I can see. AFAICT 
> > FreeBSD's implementation does support using select(),etc. with mmap().
> >    B) OSS's return value isn't entirely consistent: It returns OSS_EIO when 
> > select() is used (oss_audio_core.c / oss_audio_chpoll() ), but OSS_EPERM 
> > when GETOSPACE is used with mmap. OSS_EIO seems wrong to me - the device is 
> > okay, it's just select() isn't supported in the current mode.
> >   
> 
> The attached diff comments out the error checking. However the result is 
> probably that select/poll will never report data available. However 
> could you try if it makes any difference with pulseaudio.

What happens is exactly as described - poll() never reports data (it does work 
in non-mmaped mode).

Yours,
        Yair K.
_______________________________________________
oss-devel mailing list
oss-devel@mailman.opensound.com
http://mailman.opensound.com/mailman/listinfo/oss-devel

Reply via email to