Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which systems define EAGAIN and EWOULDBLOCK as different values?

Tags:

unix

posix

errno

Just curious. Which systems providing both EAGAIN and EWOULDBLOCK #define them as different values?

like image 206
pilcrow Avatar asked Aug 09 '11 21:08

pilcrow


People also ask

Where are errno defined?

The <errno. h> header file defines the integer variable errno, which is set by system calls and some library functions in the event of an error to indicate what went wrong.

What does Ewouldblock mean?

It might (or might not) be the same as EWOULDBLOCK , which means "your thread would have to block in order to do that".

When errno is set?

The initial value of errno at program startup is zero. In many cases, when a library function encounters an error, it will set errno to a non-zero value to indicate what specific error condition occurred.


2 Answers

There were some... http://www.gnu.org/s/hello/manual/libc/Error-Codes.html

Portability Note: In many older Unix systems, this condition was indicated by EWOULDBLOCK, which was a distinct error code different from EAGAIN. To make your program portable, you should check for both codes and treat them the same.

http://lists.parisc-linux.org/hypermail/parisc-linux/9895.html

On some SysV systems EAGAIN != EWOULDBLOCK. I think we inherited the errno definitions from HPUX...

Older AIX is such system too: http://programming.itags.org/unix-linux-programming/81597/

HP-UX (and older versions of AIX)

For AIX I found the list of codes: http://homepage3.nifty.com/owl_h0h0/unix/job/UNIX/tutorial/error.html

11 EAGAIN; 54 EWOULDBLOCK

OS/390 too: http://web.archiveorange.com/archive/v/zvbaIz8u6TzsQHHjfzOi

OS/390 and other platforms where EWOULDBLOCK != EAGAIN

There is fuller table: http://www.ioplex.com/~miallen/errcmp.html

        SUSv3   AIX 4.3,5.1 HP-UX 11.22 Solaris 9,10    Linux 2.4.28,2.6.9  IRIX 6.5[4] OSF1    FreeBSD 5.2.1   OSX 10.3.8  MSVC6
EAGAIN  1   0   Resource unavailable, try again [3] 11  Resource temporarily unavailable    11  No more processes   11  Resource temporarily unavailable    11  Try again   11  Resource temporarily unavailable    11  ditto   35  Resource temporarily unavailable    35  Resource temporarily unavailable    11  Resource temporarily unavailable

EWOULDBLOCK 0.9 0   Operation would block [3]   54  Operation would block [2]   246 Operation would block   11      11  Operation would block   11  Resource temporarily unavailable    35  Operation would block   35  Operation would block   35  Operation would block

So, AIX 4.3,5.1; HP-UX 11.22 and OSF1 uses different codes for EAGAIN and EWOULDBLOCK

like image 104
osgx Avatar answered Sep 23 '22 11:09

osgx


Yes, there are a couple of systems.

In GNU C library they always have the same value.

like image 2
Karoly Horvath Avatar answered Sep 23 '22 11:09

Karoly Horvath