diff options
| author | erh <erh@NetBSD.org> | 1998-10-01 03:34:50 +0000 |
|---|---|---|
| committer | erh <erh@NetBSD.org> | 1998-10-01 03:34:50 +0000 |
| commit | 658c307a1af2ea3bf6c4d493d6e33e046aced56a (patch) | |
| tree | fc1dbfef04e90da4999274c7c1e2ece91b8ffb75 /sys/compat/linux/common/linux_socketcall.h | |
| parent | 81cc399a4dc6485ff4633978d2850083fad94cd5 (diff) | |
Move compat/linux/linux_socketcall.h to multiarch. Defines for the socketcall multiplexer.
Diffstat (limited to 'sys/compat/linux/common/linux_socketcall.h')
| -rw-r--r-- | sys/compat/linux/common/linux_socketcall.h | 227 |
1 files changed, 152 insertions, 75 deletions
diff --git a/sys/compat/linux/common/linux_socketcall.h b/sys/compat/linux/common/linux_socketcall.h index 60b1156f2bc..8ee614304f8 100644 --- a/sys/compat/linux/common/linux_socketcall.h +++ b/sys/compat/linux/common/linux_socketcall.h @@ -1,4 +1,40 @@ -/* $NetBSD: linux_socketcall.h,v 1.1 1995/02/28 23:26:05 fvdl Exp $ */ +/* $NetBSD: linux_socketcall.h,v 1.2 1998/10/01 03:34:50 erh Exp $ */ + +/*- + * Copyright (c) 1998 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Eric Haszlakiewicz. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ /* * Copyright (c) 1995 Frank van der Linden @@ -31,13 +67,17 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _LINUX_SOCKETCALL_H -#define _LINUX_SOCKETCALL_H +#ifndef _MULTIARCH_LINUX_SOCKETCALL_H +#define _MULTIARCH_LINUX_SOCKETCALL_H + +/* Used on: arm, i386, m68k, mips, ppc, sparc, sparc64 */ +/* Not used on: alpha */ /* * Values passed to the Linux socketcall() syscall, determining the actual * action to take. */ + #define LINUX_SYS_socket 1 #define LINUX_SYS_bind 2 #define LINUX_SYS_connect 3 @@ -53,110 +93,147 @@ #define LINUX_SYS_shutdown 13 #define LINUX_SYS_setsockopt 14 #define LINUX_SYS_getsockopt 15 +#define LINUX_SYS_sendmsg 16 +#define LINUX_SYS_recvmsg 17 + +#define LINUX_MAX_SOCKETCALL 17 + /* * Structures for the arguments of the different system calls. This looks * a little better than copyin() of all values one by one. */ -struct linux_socket_args { - int domain; - int type; - int protocol; + +/* !!!: This should be at least as large as any other struct here. */ +struct linux_socketcall_dummy_args { + int dummy_ints[4]; /* Max 4 ints */ + void * dummy_ptrs[3]; /* Max 3 pointers */ }; -struct linux_bind_args { - int s; - struct sockaddr *name; - int namelen; +struct linux_sys_socket_args { + syscallarg(int) domain; + syscallarg(int) type; + syscallarg(int) protocol; }; -struct linux_connect_args { - int s; - struct sockaddr *name; - int namelen; +struct linux_sys_socketpair_args { + syscallarg(int) domain; + syscallarg(int) type; + syscallarg(int) protocol; + syscallarg(int *) rsv; }; -struct linux_listen_args { - int s; - int backlog; +struct linux_sys_sendto_args { + syscallarg(int) s; + syscallarg(void *) msg; + syscallarg(int) len; + syscallarg(int) flags; + syscallarg(struct sockaddr *) to; + syscallarg(int) tolen; }; -struct linux_accept_args { - int s; - struct sockaddr *addr; - int *namelen; +struct linux_sys_recvfrom_args { + syscallarg(int) s; + syscallarg(void *) buf; + syscallarg(int) len; + syscallarg(int) flags; + syscallarg(struct sockaddr *) from; + syscallarg(int *) fromlen; +}; + +struct linux_sys_setsockopt_args { + syscallarg(int) s; + syscallarg(int) level; + syscallarg(int) optname; + syscallarg(void *) optval; + syscallarg(int) optlen; +}; + +struct linux_sys_getsockopt_args { + syscallarg(int) s; + syscallarg(int) level; + syscallarg(int) optname; + syscallarg(void *) optval; + syscallarg(int *) optlen; +}; + +/* These are only used for their size: */ + +struct linux_sys_bind_args { + syscallarg(int) s; + syscallarg(struct sockaddr *) name; + syscallarg(int) namelen; }; -struct linux_getsockname_args { - int s; - struct sockaddr *addr; - int *namelen; +struct linux_sys_connect_args { + syscallarg(int) s; + syscallarg(struct sockaddr *) name; + syscallarg(int) namelen; }; -struct linux_getpeername_args { - int s; - struct sockaddr *addr; - int *namelen; +struct linux_sys_listen_args { + syscallarg(int) s; + syscallarg(int) backlog; }; -struct linux_socketpair_args { - int domain; - int type; - int protocol; - int *rsv; +struct linux_sys_accept_args { + syscallarg(int) s; + syscallarg(struct sockaddr *) addr; + syscallarg(int *) namelen; }; -struct linux_send_args { - int s; - void *msg; - int len; - int flags; +struct linux_sys_getsockname_args { + syscallarg(int) s; + syscallarg(struct sockaddr *) addr; + syscallarg(int *) namelen; }; -struct linux_recv_args { - int s; - void *msg; - int len; - int flags; +struct linux_sys_getpeername_args { + syscallarg(int) s; + syscallarg(struct sockaddr *) addr; + syscallarg(int *) namelen; }; -struct linux_sendto_args { - int s; - void *msg; - int len; - int flags; - struct sockaddr *to; - int tolen; +struct linux_sys_send_args { + syscallarg(int) s; + syscallarg(void *) msg; + syscallarg(int) len; + syscallarg(int) flags; }; -struct linux_recvfrom_args { - int s; - void *buf; - int len; - int flags; - struct sockaddr *from; - int *fromlen; +struct linux_sys_recv_args { + syscallarg(int) s; + syscallarg(void *) msg; + syscallarg(int) len; + syscallarg(int) flags; }; -struct linux_shutdown_args { - int s; - int how; +struct linux_sys_shutdown_args { + syscallarg(int) s; + syscallarg(int) how; }; -struct linux_getsockopt_args { - int s; - int level; - int optname; - void *optval; - int *optlen; +struct linux_sys_sendmsg_args { + syscallarg(int) s; + syscallarg(struct msghdr *) msg; + syscallarg(u_int) flags; }; -struct linux_setsockopt_args { - int s; - int level; - int optname; - void *optval; - int optlen; +struct linux_sys_recvmsg_args { + syscallarg(int) s; + syscallarg(struct msghdr *) msg; + syscallarg(u_int) flags; }; -#endif /* _LINUX_SOCKETCALL_H */ +#ifdef _KERNEL +__BEGIN_DECLS +int linux_sys_socket __P((struct proc *, void *, register_t *)); +int linux_sys_socketpair __P((struct proc *, void *, register_t *)); +int linux_sys_sendto __P((struct proc *, void *, register_t *)); +int linux_sys_recvfrom __P((struct proc *, void *, register_t *)); +int linux_sys_setsockopt __P((struct proc *, void *, register_t *)); +int linux_sys_getsockopt __P((struct proc *, void *, register_t *)); +__END_DECLS +#endif /* !_KERNEL */ + +#endif /* !_MULTIARCH_LINUX_SOCKETCALL_H */ |
