src/solaris/native/java/net/net_util_md.h

Print this page
rev 8975 : 8031581: PPC64: Addons and fixes for AIX to pass the jdk regression tests


  30 #include <sys/types.h>
  31 #include <netdb.h>
  32 #include <netinet/in.h>
  33 #include <unistd.h>
  34 
  35 #ifndef USE_SELECT
  36 #include <sys/poll.h>
  37 #endif
  38 
  39 
  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)
  51 extern int NET_Timeout(int s, long timeout);
  52 extern int NET_Read(int s, void* buf, size_t len);
  53 extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
  54        struct sockaddr *from, int *fromlen);
  55 extern int NET_ReadV(int s, const struct iovec * vector, int count);
  56 extern int NET_Send(int s, void *msg, int len, unsigned int flags);
  57 extern int NET_SendTo(int s, const void *msg, int len,  unsigned  int
  58        flags, const struct sockaddr *to, int tolen);
  59 extern int NET_Writev(int s, const struct iovec * vector, int count);
  60 extern int NET_Connect(int s, struct sockaddr *addr, int addrlen);
  61 extern int NET_Accept(int s, struct sockaddr *addr, int *addrlen);
  62 extern int NET_SocketClose(int s);
  63 extern int NET_Dup2(int oldfd, int newfd);
  64 
  65 #ifdef USE_SELECT
  66 extern int NET_Select(int s, fd_set *readfds, fd_set *writefds,
  67                fd_set *exceptfds, struct timeval *timeout);
  68 #else
  69 extern int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout);
  70 #endif
  71 
  72 #else
  73 
  74 #define NET_Timeout     JVM_Timeout
  75 #define NET_Read        JVM_Read
  76 #define NET_RecvFrom    JVM_RecvFrom
  77 #define NET_ReadV       readv
  78 #define NET_Send        JVM_Send
  79 #define NET_SendTo      JVM_SendTo
  80 #define NET_WriteV      writev
  81 #define NET_Connect     JVM_Connect
  82 #define NET_Accept      JVM_Accept
  83 #define NET_SocketClose JVM_SocketClose
  84 #define NET_Dup2        dup2
  85 #define NET_Select      select
  86 #define NET_Poll        poll
  87 






  88 #endif
  89 
  90 #if defined(__linux__) && defined(AF_INET6)
  91 int getDefaultIPv6Interface(struct in6_addr *target_addr);
  92 #endif
  93 
  94 
  95 /* needed from libsocket on Solaris 8 */
  96 
  97 typedef int (*getaddrinfo_f)(const char *nodename, const char *servname,
  98     const struct addrinfo *hints, struct addrinfo **res);
  99 
 100 typedef void (*freeaddrinfo_f)(struct addrinfo *);
 101 
 102 typedef const char * (*gai_strerror_f)(int ecode);
 103 
 104 typedef int (*getnameinfo_f)(const struct sockaddr *, size_t,
 105     char *, size_t, char *, size_t, int);
 106 
 107 extern getaddrinfo_f getaddrinfo_ptr;




  30 #include <sys/types.h>
  31 #include <netdb.h>
  32 #include <netinet/in.h>
  33 #include <unistd.h>
  34 
  35 #ifndef USE_SELECT
  36 #include <sys/poll.h>
  37 #endif
  38 
  39 
  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 (_AIX)
  51 extern int IO_Fcntl(int s, int cmd, void *arg);
  52 extern int IO_Read(int s, void* buf, size_t len);
  53 extern int IO_Write(int s, void* buf, size_t len);
  54 #endif
  55 
  56 #if defined(__linux__) || defined(MACOSX) || defined (_AIX)
  57 extern int NET_Timeout(int s, long timeout);
  58 extern int NET_Read(int s, void* buf, size_t len);
  59 extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
  60        struct sockaddr *from, int *fromlen);
  61 extern int NET_ReadV(int s, const struct iovec * vector, int count);
  62 extern int NET_Send(int s, void *msg, int len, unsigned int flags);
  63 extern int NET_SendTo(int s, const void *msg, int len,  unsigned  int
  64        flags, const struct sockaddr *to, int tolen);
  65 extern int NET_WriteV(int s, const struct iovec * vector, int count);
  66 extern int NET_Connect(int s, struct sockaddr *addr, int addrlen);
  67 extern int NET_Accept(int s, struct sockaddr *addr, int *addrlen);
  68 extern int NET_SocketClose(int s);
  69 extern int NET_Dup2(int oldfd, int newfd);
  70 
  71 #ifdef USE_SELECT
  72 extern int NET_Select(int s, fd_set *readfds, fd_set *writefds,
  73                fd_set *exceptfds, struct timeval *timeout);
  74 #else
  75 extern int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout);
  76 #endif
  77 
  78 #else
  79 
  80 #define NET_Timeout     JVM_Timeout
  81 #define NET_Read        JVM_Read
  82 #define NET_RecvFrom    JVM_RecvFrom
  83 #define NET_ReadV       readv
  84 #define NET_Send        JVM_Send
  85 #define NET_SendTo      JVM_SendTo
  86 #define NET_WriteV      writev
  87 #define NET_Connect     JVM_Connect
  88 #define NET_Accept      JVM_Accept
  89 #define NET_SocketClose JVM_SocketClose
  90 #define NET_Dup2        dup2
  91 #define NET_Select      select
  92 #define NET_Poll        poll
  93 
  94 #endif
  95 
  96 #ifdef _AIX
  97 /* defined in src/aix/native/java/net/aix_close.c */
  98 int javaToNativeEvents(int javaEvents);
  99 int nativeToJavaEvents(int nativeEvents);
 100 #endif
 101 
 102 #if defined(__linux__) && defined(AF_INET6)
 103 int getDefaultIPv6Interface(struct in6_addr *target_addr);
 104 #endif
 105 
 106 
 107 /* needed from libsocket on Solaris 8 */
 108 
 109 typedef int (*getaddrinfo_f)(const char *nodename, const char *servname,
 110     const struct addrinfo *hints, struct addrinfo **res);
 111 
 112 typedef void (*freeaddrinfo_f)(struct addrinfo *);
 113 
 114 typedef const char * (*gai_strerror_f)(int ecode);
 115 
 116 typedef int (*getnameinfo_f)(const struct sockaddr *, size_t,
 117     char *, size_t, char *, size_t, int);
 118 
 119 extern getaddrinfo_f getaddrinfo_ptr;