35 #ifndef USE_SELECT |
35 #ifndef USE_SELECT |
36 #include <sys/poll.h> |
36 #include <sys/poll.h> |
37 #endif |
37 #endif |
38 |
38 |
39 |
39 |
40 #if defined(__linux__) || defined(MACOSX) |
40 /* |
|
41 AIX needs a workaround for I/O cancellation, see: |
|
42 http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/close.htm |
|
43 ... |
|
44 The close subroutine is blocked until all subroutines which use the file |
|
45 descriptor return to usr space. For example, when a thread is calling close |
|
46 and another thread is calling select with the same file descriptor, the |
|
47 close subroutine does not return until the select call returns. |
|
48 ... |
|
49 */ |
|
50 #if defined(__linux__) || defined(MACOSX) || defined (_AIX) |
41 extern int NET_Timeout(int s, long timeout); |
51 extern int NET_Timeout(int s, long timeout); |
42 extern int NET_Read(int s, void* buf, size_t len); |
52 extern int NET_Read(int s, void* buf, size_t len); |
43 extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, |
53 extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, |
44 struct sockaddr *from, int *fromlen); |
54 struct sockaddr *from, int *fromlen); |
45 extern int NET_ReadV(int s, const struct iovec * vector, int count); |
55 extern int NET_ReadV(int s, const struct iovec * vector, int count); |