On Mon, May 27, 2013 at 09:55:46AM +0300, Arto Merilainen wrote: > On 05/26/2013 01:12 PM, Thierry Reding wrote: > >* PGP Signed by an unknown key > > > >On Fri, May 17, 2013 at 02:49:44PM +0300, Arto Merilainen wrote: [...] > >Thinking about it, maybe it would be good to have two separate error > >codes. Keeping -EAGAIN for the case where a zero timeout was passed > >doesn't sound too bad to differentiate it from the case where a non- > >zero timeout was passed and it actually timed out. What do you think? > > I agree, in this case it would not look bad at all. However, user > space libraries may loop until the ioctl return code is something > else than -EAGAIN or -EINTR. Especially function drmIoctl() in > libdrm does this which is why I noted this isssue in the first > place. > > If user space uses zero timeout to just check if a syncpoint value > has already passed the library continues looping until the syncpoint > value actually passes. Of course, we could just modify the ioctl > interface to "cast" this return code to something else but that does > not seem correct. That doesn't sound right. Maybe drmIoctl() needs fixing instead. Looking at the history, drmIoctl() was introduced to automatically loop if a signal was received (commit 8b9ab108ec1f2ba2b503f713769c4946849b3cb2). However the ioctl(3p) manpage doesn't mention that ioctl() returns EAGAIN in case it is interrupted by a signal. I'm adding Keith as author of that commit and the xorg-devel mailing list on Cc to get some more eyes on this. Thierry
Attachment:
pgpnpwp5V5_07.pgp
Description: PGP signature