OSDN Git Service

More reorg. A place for everything and everything in its place...
[uclinux-h8/uclibc-ng.git] / libc / inet / socketcalls.c
1 #include <errno.h>
2 #include <syscall.h>
3 #include <sys/socket.h>
4 #include <sys/socketcall.h>
5
6 extern int socketcall(int call, unsigned long *args);
7
8 #ifdef L_accept
9 int accept(int s, struct sockaddr *addr, socklen_t * addrlen)
10 {
11         unsigned long args[3];
12
13         args[0] = s;
14         args[1] = (unsigned long) addr;
15         args[2] = (unsigned long) addrlen;
16         return socketcall(SYS_ACCEPT, args);
17 }
18 #endif
19
20 #ifdef L_bind
21 int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen)
22 {
23         unsigned long args[3];
24
25         args[0] = sockfd;
26         args[1] = (unsigned long) myaddr;
27         args[2] = addrlen;
28         return socketcall(SYS_BIND, args);
29 }
30 #endif
31
32 #ifdef L_connect
33 int connect(int sockfd, const struct sockaddr *saddr, socklen_t addrlen)
34 {
35         unsigned long args[3];
36
37         args[0] = sockfd;
38         args[1] = (unsigned long) saddr;
39         args[2] = addrlen;
40         return socketcall(SYS_CONNECT, args);
41 }
42 #endif
43
44 #ifdef L_getpeername
45 int getpeername(int sockfd, struct sockaddr *addr, socklen_t * paddrlen)
46 {
47         unsigned long args[3];
48
49         args[0] = sockfd;
50         args[1] = (unsigned long) addr;
51         args[2] = (unsigned long) paddrlen;
52         return socketcall(SYS_GETPEERNAME, args);
53 }
54 #endif
55
56 #ifdef L_getsockname
57 int getsockname(int sockfd, struct sockaddr *addr, socklen_t * paddrlen)
58 {
59         unsigned long args[3];
60
61         args[0] = sockfd;
62         args[1] = (unsigned long) addr;
63         args[2] = (unsigned long) paddrlen;
64         return socketcall(SYS_GETSOCKNAME, args);
65 }
66 #endif
67
68 #ifdef L_getsockopt
69 int getsockopt(int fd, int level, int optname, __ptr_t optval,
70                    socklen_t * optlen)
71 {
72         unsigned long args[5];
73
74         args[0] = fd;
75         args[1] = level;
76         args[2] = optname;
77         args[3] = (unsigned long) optval;
78         args[4] = (unsigned long) optlen;
79         return (socketcall(SYS_GETSOCKOPT, args));
80 }
81 #endif
82
83 #ifdef L_listen
84 int listen(int sockfd, unsigned int backlog)
85 {
86         unsigned long args[2];
87
88         args[0] = sockfd;
89         args[1] = backlog;
90         return socketcall(SYS_LISTEN, args);
91 }
92 #endif
93
94 #ifdef L_recv
95 /* recv, recvfrom added by bir7@leland.stanford.edu */
96 int recv(int sockfd, __ptr_t buffer, size_t len, int flags)
97 {
98         unsigned long args[4];
99
100         args[0] = sockfd;
101         args[1] = (unsigned long) buffer;
102         args[2] = len;
103         args[3] = flags;
104         return (socketcall(SYS_RECV, args));
105 }
106 #endif
107
108 #ifdef L_recvfrom
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)
112 {
113         unsigned long args[6];
114
115         args[0] = sockfd;
116         args[1] = (unsigned long) buffer;
117         args[2] = len;
118         args[3] = flags;
119         args[4] = (unsigned long) to;
120         args[5] = (unsigned long) tolen;
121         return (socketcall(SYS_RECVFROM, args));
122 }
123 #endif
124
125 #ifdef L_recvmsg
126 int recvmsg(int sockfd, struct msghdr *msg, int flags)
127 {
128         unsigned long args[3];
129
130         args[0] = sockfd;
131         args[1] = (unsigned long) msg;
132         args[2] = flags;
133         return (socketcall(SYS_RECVMSG, args));
134 }
135 #endif
136
137 #ifdef L_send
138 /* send, sendto added by bir7@leland.stanford.edu */
139 int send(int sockfd, const void *buffer, size_t len, int flags)
140 {
141         unsigned long args[4];
142
143         args[0] = sockfd;
144         args[1] = (unsigned long) buffer;
145         args[2] = len;
146         args[3] = flags;
147         return (socketcall(SYS_SEND, args));
148 }
149 #endif
150
151 #ifdef L_sendmsg
152 int sendmsg(int sockfd, const struct msghdr *msg, int flags)
153 {
154         unsigned long args[3];
155
156         args[0] = sockfd;
157         args[1] = (unsigned long) msg;
158         args[2] = flags;
159         return (socketcall(SYS_SENDMSG, args));
160 }
161 #endif
162
163 #ifdef L_sendto
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)
167 {
168         unsigned long args[6];
169
170         args[0] = sockfd;
171         args[1] = (unsigned long) buffer;
172         args[2] = len;
173         args[3] = flags;
174         args[4] = (unsigned long) to;
175         args[5] = tolen;
176         return (socketcall(SYS_SENDTO, args));
177 }
178 #endif
179
180 #ifdef L_setsockopt
181 /* [sg]etsockoptions by bir7@leland.stanford.edu */
182 int setsockopt(int fd, int level, int optname, const void *optval,
183                    socklen_t optlen)
184 {
185         unsigned long args[5];
186
187         args[0] = fd;
188         args[1] = level;
189         args[2] = optname;
190         args[3] = (unsigned long) optval;
191         args[4] = optlen;
192         return (socketcall(SYS_SETSOCKOPT, args));
193 }
194 #endif
195
196 #ifdef L_shutdown
197 /* shutdown by bir7@leland.stanford.edu */
198 int shutdown(int sockfd, int how)
199 {
200         unsigned long args[2];
201
202         args[0] = sockfd;
203         args[1] = how;
204         return (socketcall(SYS_SHUTDOWN, args));
205 }
206 #endif
207
208 #ifdef L_socket
209 int socket(int family, int type, int protocol)
210 {
211         unsigned long args[3];
212
213         args[0] = family;
214         args[1] = type;
215         args[2] = (unsigned long) protocol;
216         return socketcall(SYS_SOCKET, args);
217 }
218 #endif
219
220 #ifdef L_socketpair
221 int socketpair(int family, int type, int protocol, int sockvec[2])
222 {
223         unsigned long args[4];
224
225         args[0] = family;
226         args[1] = type;
227         args[2] = protocol;
228         args[3] = (unsigned long) sockvec;
229         return socketcall(SYS_SOCKETPAIR, args);
230 }
231 #endif
232