[parisc-linux] EWOULDBLOCK vs. EAGAIN

John Marvin jsm@udlkern.fc.hp.com
Tue, 22 Oct 2002 09:24:24 -0600 (MDT)

I found a bug last night where a program was expecting EWOULDBLOCK, but
we were returning EAGAIN. The kernel returns EAGAIN, which is correct.
However, the Gnu C library says that EWOULDBLOCK should be defined as the
same thing. We didn't do that on parisc linux. Probably because we
borrowed our errno's from HP-UX. But that is wrong.

So, how should we fix this?  I don't think we can avoid breaking binary
compatibility.  The problem is that the kernel returns EWOULDBLOCK in some
cases (I've enclosed a list of files that might affect us below, file
locking and usb being the ones that are most likely to affect us).

I think we should change errno.h to define EWOULDBLOCK as EAGAIN. That
will fix some programs once they are recompiled. Of course, it will
break some others, but they will also be fixed once again once they
are recompiled.

How hard would it be to grep the source of all debian packages, so we
can find which packages should be rebuilt?