1 /*
   2  * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 // Win32 delegates these to the HPI.  Solaris provides its own
  26 // implementation without using the HPI (for Interrupitble I/O).
  27 
  28 // HPI_FileInterface
  29 
  30 HPIDECL(close, "close", _file, Close, int, "%d",
  31         (int fd),
  32         ("fd = %d", fd),
  33         (fd));
  34 
  35 HPIDECL(read, "read", _file, Read, size_t, "%ld",
  36         (int fd, void *buf, unsigned int nBytes),
  37         ("fd = %d, buf = %p, nBytes = %u", fd, buf, nBytes),
  38         (fd, buf, nBytes));
  39 
  40 HPIDECL(write, "write", _file, Write, size_t, "%ld",
  41         (int fd, const void *buf, unsigned int nBytes),
  42         ("fd = %d, buf = %p, nBytes = %u", fd, buf, nBytes),
  43         (fd, buf, nBytes));
  44 
  45 
  46 // HPI_SocketInterface
  47 
  48 HPIDECL(socket_close, "socket_close", _socket, Close, int, "%d",
  49         (int fd),
  50         ("fd = %d", fd),
  51         (fd));
  52 
  53 HPIDECL(socket_available, "socket_available", _socket, Available,
  54         int, "%d",
  55         (int fd, jint *pbytes),
  56         ("fd = %d, pbytes = %p", fd, pbytes),
  57         (fd, pbytes));
  58 
  59 HPIDECL(socket, "socket", _socket, Socket, int, "%d",
  60         (int domain, int type, int protocol),
  61         ("domain = %d, type = %d, protocol = %d", domain, type, protocol),
  62         (domain, type, protocol));
  63 
  64 HPIDECL(listen, "listen", _socket, Listen, int, "%d",
  65         (int fd, int count),
  66         ("fd = %d, count = %d", fd, count),
  67         (fd, count));
  68 
  69 HPIDECL(connect, "connect", _socket, Connect, int, "%d",
  70         (int fd, struct sockaddr *him, int len),
  71         ("fd = %d, him = %p, len = %d", fd, him, len),
  72         (fd, him, len));
  73 
  74 HPIDECL(accept, "accept", _socket, Accept, int, "%d",
  75         (int fd, struct sockaddr *him, int *len),
  76         ("fd = %d, him = %p, len = %p", fd, him, len),
  77         (fd, him, len));
  78 
  79 HPIDECL(sendto, "sendto", _socket, SendTo, int, "%d",
  80         (int fd, char *buf, int len, int flags,
  81          struct sockaddr *to, int tolen),
  82         ("fd = %d, buf = %p, len = %d, flags = %d, to = %p, tolen = %d",
  83          fd, buf, len, flags, to, tolen),
  84         (fd, buf, len, flags, to, tolen));
  85 
  86 HPIDECL(recvfrom, "recvfrom", _socket, RecvFrom, int, "%d",
  87         (int fd, char *buf, int nbytes, int flags,
  88          struct sockaddr *from, int *fromlen),
  89         ("fd = %d, buf = %p, len = %d, flags = %d, frm = %p, frmlen = %d",
  90          fd, buf, nbytes, flags, from, fromlen),
  91         (fd, buf, nbytes, flags, from, fromlen));
  92 
  93 HPIDECL(recv, "recv", _socket, Recv, int, "%d",
  94         (int fd, char *buf, int nBytes, int flags),
  95         ("fd = %d, buf = %p, nBytes = %d, flags = %d",
  96          fd, buf, nBytes, flags),
  97         (fd, buf, nBytes, flags));
  98 
  99 HPIDECL(send, "send", _socket, Send, int, "%d",
 100         (int fd, char *buf, int nBytes, int flags),
 101         ("fd = %d, buf = %p, nBytes = %d, flags = %d",
 102          fd, buf, nBytes, flags),
 103         (fd, buf, nBytes, flags));
 104 
 105 inline int hpi::raw_send(int fd, char *buf, int nBytes, int flags) {
 106   return send(fd, buf, nBytes, flags);
 107 }
 108 
 109 HPIDECL(timeout, "timeout", _socket, Timeout, int, "%d",
 110         (int fd, long timeout),
 111         ("fd = %d, timeout = %ld", fd, timeout),
 112         (fd, timeout));
 113 
 114 HPIDECL(get_host_by_name, "get_host_by_name", _socket, GetHostByName,
 115         struct hostent *, "(struct hostent *)%p",
 116         (char *name),
 117         ("%s", name),
 118         (name));
 119 
 120 HPIDECL(socket_shutdown, "socket_shutdown", _socket, SocketShutdown,
 121         int, "%d",
 122         (int fd, int howto),
 123         ("fd = %d, howto = %d", fd, howto),
 124         (fd, howto));
 125 
 126 HPIDECL(bind, "bind", _socket, Bind,
 127         int, "%d",
 128         (int fd, struct sockaddr *him, int len),
 129         ("fd = %d, him = %p, len = %d",
 130          fd, him, len),
 131         (fd, him, len));
 132 
 133 HPIDECL(get_sock_name, "get_sock_name", _socket, GetSocketName,
 134         int, "%d",
 135         (int fd, struct sockaddr *him, int *len),
 136         ("fd = %d, him = %p, len = %p",
 137          fd, him, len),
 138         (fd, him, len));
 139 
 140 HPIDECL(get_host_name, "get_host_name", _socket, GetHostName, int, "%d",
 141         (char *hostname, int namelen),
 142         ("hostname = %p, namelen = %d",
 143          hostname, namelen),
 144         (hostname, namelen));
 145 
 146 HPIDECL(get_host_by_addr, "get_host_by_addr", _socket, GetHostByAddr,
 147         struct hostent *, "(struct hostent *)%p",
 148         (const char* name, int len, int type),
 149         ("name = %p, len = %d, type = %d",
 150          name, len, type),
 151         (name, len, type));
 152 
 153 HPIDECL(get_sock_opt, "get_sock_opt", _socket, SocketGetOption, int, "%d",
 154         (int fd, int level, int optname, char *optval, int* optlen),
 155         ("fd = %d, level = %d, optname = %d, optval = %p, optlen = %p",
 156          fd, level, optname, optval, optlen),
 157         (fd, level, optname, optval, optlen));
 158 
 159 HPIDECL(set_sock_opt, "set_sock_opt", _socket, SocketSetOption, int, "%d",
 160         (int fd, int level, int optname, const char *optval, int optlen),
 161         ("fd = %d, level = %d, optname = %d, optval = %p, optlen = %d",
 162          fd, level, optname, optval, optlen),
 163         (fd, level, optname, optval, optlen));
 164 
 165 HPIDECL(get_proto_by_name, "get_proto_by_name", _socket, GetProtoByName,
 166         struct protoent *, "(struct protoent *)%p",
 167         (char* name),
 168         ("name = %p",
 169          name),
 170         (name));