3 #include <sys/socket.h>
4 #include <sys/socketcall.h>
6 extern int socketcall(int call, unsigned long *args);
9 int accept(int s, struct sockaddr *addr, socklen_t * addrlen)
11 unsigned long args[3];
14 args[1] = (unsigned long) addr;
15 args[2] = (unsigned long) addrlen;
16 return socketcall(SYS_ACCEPT, args);
21 int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen)
23 unsigned long args[3];
26 args[1] = (unsigned long) myaddr;
28 return socketcall(SYS_BIND, args);
33 int connect(int sockfd, const struct sockaddr *saddr, socklen_t addrlen)
35 unsigned long args[3];
38 args[1] = (unsigned long) saddr;
40 return socketcall(SYS_CONNECT, args);
45 int getpeername(int sockfd, struct sockaddr *addr, socklen_t * paddrlen)
47 unsigned long args[3];
50 args[1] = (unsigned long) addr;
51 args[2] = (unsigned long) paddrlen;
52 return socketcall(SYS_GETPEERNAME, args);
57 int getsockname(int sockfd, struct sockaddr *addr, socklen_t * paddrlen)
59 unsigned long args[3];
62 args[1] = (unsigned long) addr;
63 args[2] = (unsigned long) paddrlen;
64 return socketcall(SYS_GETSOCKNAME, args);
69 int getsockopt(int fd, int level, int optname, __ptr_t optval,
72 unsigned long args[5];
77 args[3] = (unsigned long) optval;
78 args[4] = (unsigned long) optlen;
79 return (socketcall(SYS_GETSOCKOPT, args));
84 int listen(int sockfd, unsigned int backlog)
86 unsigned long args[2];
90 return socketcall(SYS_LISTEN, args);
95 /* recv, recvfrom added by bir7@leland.stanford.edu */
96 int recv(int sockfd, __ptr_t buffer, size_t len, int flags)
98 unsigned long args[4];
101 args[1] = (unsigned long) buffer;
104 return (socketcall(SYS_RECV, args));
109 /* recv, recvfrom added by bir7@leland.stanford.edu */
110 int recvfrom(int sockfd, __ptr_t buffer, size_t len, int flags,
111 struct sockaddr *to, socklen_t * tolen)
113 unsigned long args[6];
116 args[1] = (unsigned long) buffer;
119 args[4] = (unsigned long) to;
120 args[5] = (unsigned long) tolen;
121 return (socketcall(SYS_RECVFROM, args));
126 int recvmsg(int sockfd, struct msghdr *msg, int flags)
128 unsigned long args[3];
131 args[1] = (unsigned long) msg;
133 return (socketcall(SYS_RECVMSG, args));
138 /* send, sendto added by bir7@leland.stanford.edu */
139 int send(int sockfd, const void *buffer, size_t len, int flags)
141 unsigned long args[4];
144 args[1] = (unsigned long) buffer;
147 return (socketcall(SYS_SEND, args));
152 int sendmsg(int sockfd, const struct msghdr *msg, int flags)
154 unsigned long args[3];
157 args[1] = (unsigned long) msg;
159 return (socketcall(SYS_SENDMSG, args));
164 /* send, sendto added by bir7@leland.stanford.edu */
165 int sendto(int sockfd, const void *buffer, size_t len, int flags,
166 const struct sockaddr *to, socklen_t tolen)
168 unsigned long args[6];
171 args[1] = (unsigned long) buffer;
174 args[4] = (unsigned long) to;
176 return (socketcall(SYS_SENDTO, args));
181 /* [sg]etsockoptions by bir7@leland.stanford.edu */
182 int setsockopt(int fd, int level, int optname, const void *optval,
185 unsigned long args[5];
190 args[3] = (unsigned long) optval;
192 return (socketcall(SYS_SETSOCKOPT, args));
197 /* shutdown by bir7@leland.stanford.edu */
198 int shutdown(int sockfd, int how)
200 unsigned long args[2];
204 return (socketcall(SYS_SHUTDOWN, args));
209 int socket(int family, int type, int protocol)
211 unsigned long args[3];
215 args[2] = (unsigned long) protocol;
216 return socketcall(SYS_SOCKET, args);
221 int socketpair(int family, int type, int protocol, int sockvec[2])
223 unsigned long args[4];
228 args[3] = (unsigned long) sockvec;
229 return socketcall(SYS_SOCKETPAIR, args);