1 /* $NetBSD: linux_socketcall.h,v 1.8 2005/02/26 23:10:19 perry Exp $ */
2
3 /*-
4 * Copyright (c) 1995, 1998 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Frank van der Linden and Eric Haszlakiewicz.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. All advertising materials mentioning features or use of this software
19 * must display the following acknowledgement:
20 * This product includes software developed by the NetBSD
21 * Foundation, Inc. and its contributors.
22 * 4. Neither the name of The NetBSD Foundation nor the names of its
23 * contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 * POSSIBILITY OF SUCH DAMAGE.
37 */
38
39 /*
40 * Copyright (c) 1995 Frank van der Linden
41 * All rights reserved.
42 *
43 * Redistribution and use in source and binary forms, with or without
44 * modification, are permitted provided that the following conditions
45 * are met:
46 * 1. Redistributions of source code must retain the above copyright
47 * notice, this list of conditions and the following disclaimer.
48 * 2. Redistributions in binary form must reproduce the above copyright
49 * notice, this list of conditions and the following disclaimer in the
50 * documentation and/or other materials provided with the distribution.
51 * 3. All advertising materials mentioning features or use of this software
52 * must display the following acknowledgement:
53 * This product includes software developed for the NetBSD Project
54 * by Frank van der Linden
55 * 4. The name of the author may not be used to endorse or promote products
56 * derived from this software without specific prior written permission
57 *
58 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
59 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
60 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
61 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
62 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
63 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
64 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
65 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
66 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
67 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
68 */
69
70 #ifndef _LINUX_SOCKETCALL_H
71 #define _LINUX_SOCKETCALL_H
72
73 /* Alpha does not use the socketcall multiplexer */
74 #if !defined(__alpha__)
75 /* Used on: arm, i386, m68k, mips, ppc, sparc, sparc64 */
76 /* Not used on: alpha */
77
78 /*
79 * Values passed to the Linux socketcall() syscall, determining the actual
80 * action to take.
81 */
82
83 #define LINUX_SYS_socket 1
84 #define LINUX_SYS_bind 2
85 #define LINUX_SYS_connect 3
86 #define LINUX_SYS_listen 4
87 #define LINUX_SYS_accept 5
88 #define LINUX_SYS_getsockname 6
89 #define LINUX_SYS_getpeername 7
90 #define LINUX_SYS_socketpair 8
91 #define LINUX_SYS_send 9
92 #define LINUX_SYS_recv 10
93 #define LINUX_SYS_sendto 11
94 #define LINUX_SYS_recvfrom 12
95 #define LINUX_SYS_shutdown 13
96 #define LINUX_SYS_setsockopt 14
97 #define LINUX_SYS_getsockopt 15
98 #define LINUX_SYS_sendmsg 16
99 #define LINUX_SYS_recvmsg 17
100
101 #define LINUX_MAX_SOCKETCALL 17
102
103
104 /*
105 * Structures for the arguments of the different system calls. This looks
106 * a little better than copyin() of all values one by one.
107 */
108
109 /* !!!: This should be at least as large as any other struct here. */
110 struct linux_socketcall_dummy_args {
111 int dummy_ints[4]; /* Max 4 ints */
112 void * dummy_ptrs[3]; /* Max 3 pointers */
113 };
114
115 struct linux_sys_socket_args {
116 syscallarg(int) domain;
117 syscallarg(int) type;
118 syscallarg(int) protocol;
119 };
120
121 struct linux_sys_socketpair_args {
122 syscallarg(int) domain;
123 syscallarg(int) type;
124 syscallarg(int) protocol;
125 syscallarg(int *) rsv;
126 };
127
128 struct linux_sys_sendto_args {
129 syscallarg(int) s;
130 syscallarg(void *) msg;
131 syscallarg(int) len;
132 syscallarg(int) flags;
133 syscallarg(struct osockaddr *) to;
134 syscallarg(int) tolen;
135 };
136
137 struct linux_sys_recvfrom_args {
138 syscallarg(int) s;
139 syscallarg(void *) buf;
140 syscallarg(int) len;
141 syscallarg(int) flags;
142 syscallarg(struct osockaddr *) from;
143 syscallarg(int *) fromlenaddr;
144 };
145
146 struct linux_sys_setsockopt_args {
147 syscallarg(int) s;
148 syscallarg(int) level;
149 syscallarg(int) optname;
150 syscallarg(void *) optval;
151 syscallarg(int) optlen;
152 };
153
154 struct linux_sys_getsockopt_args {
155 syscallarg(int) s;
156 syscallarg(int) level;
157 syscallarg(int) optname;
158 syscallarg(void *) optval;
159 syscallarg(int *) optlen;
160 };
161
162 struct linux_sys_bind_args {
163 syscallarg(int) s;
164 syscallarg(struct osockaddr *) name;
165 syscallarg(int) namelen;
166 };
167
168 struct linux_sys_connect_args {
169 syscallarg(int) s;
170 syscallarg(struct osockaddr *) name;
171 syscallarg(int) namelen;
172 };
173
174 struct linux_sys_accept_args {
175 syscallarg(int) s;
176 syscallarg(struct osockaddr *) name;
177 syscallarg(int *) anamelen;
178 };
179
180 struct linux_sys_getsockname_args {
181 syscallarg(int) fdes;
182 syscallarg(struct osockaddr *) asa;
183 syscallarg(int *) alen;
184 };
185
186 struct linux_sys_getpeername_args {
187 syscallarg(int) fdes;
188 syscallarg(struct osockaddr *) asa;
189 syscallarg(int *) alen;
190 };
191
192 struct linux_sys_sendmsg_args {
193 syscallarg(int) s;
194 syscallarg(struct msghdr *) msg;
195 syscallarg(u_int) flags;
196 };
197
198 struct linux_sys_recvmsg_args {
199 syscallarg(int) s;
200 syscallarg(struct msghdr *) msg;
201 syscallarg(u_int) flags;
202 };
203
204 struct linux_sys_send_args {
205 syscallarg(int) s;
206 syscallarg(void *) buf;
207 syscallarg(int) len;
208 syscallarg(int) flags;
209 };
210
211 struct linux_sys_recv_args {
212 syscallarg(int) s;
213 syscallarg(void *) buf;
214 syscallarg(int) len;
215 syscallarg(int) flags;
216 };
217
218 /* These are only used for their size: */
219
220 struct linux_sys_listen_args {
221 syscallarg(int) s;
222 syscallarg(int) backlog;
223 };
224
225 struct linux_sys_shutdown_args {
226 syscallarg(int) s;
227 syscallarg(int) how;
228 };
229
230 # ifdef _KERNEL
231 __BEGIN_DECLS
232 int linux_sys_socket __P((struct lwp *, void *, register_t *));
233 int linux_sys_socketpair __P((struct lwp *, void *, register_t *));
234 int linux_sys_sendto __P((struct lwp *, void *, register_t *));
235 int linux_sys_recvfrom __P((struct lwp *, void *, register_t *));
236 int linux_sys_setsockopt __P((struct lwp *, void *, register_t *));
237 int linux_sys_getsockopt __P((struct lwp *, void *, register_t *));
238 int linux_sys_connect __P((struct lwp *, void *, register_t *));
239 int linux_sys_bind __P((struct lwp *, void *, register_t *));
240 int linux_sys_getsockname __P((struct lwp *, void *, register_t *));
241 int linux_sys_getpeername __P((struct lwp *, void *, register_t *));
242 int linux_sys_sendmsg __P((struct lwp *, void *, register_t *));
243 int linux_sys_recvmsg __P((struct lwp *, void *, register_t *));
244 int linux_sys_recv __P((struct lwp *, void *, register_t *));
245 int linux_sys_send __P((struct lwp *, void *, register_t *));
246 int linux_sys_accept __P((struct lwp *, void *, register_t *));
247 __END_DECLS
248 # endif /* !_KERNEL */
249
250 # endif
251
252 #endif /* !_LINUX_SOCKETCALL_H */
Cache object: 009505b76cd0c265f7dc7a03e1eccdaf
|