summaryrefslogtreecommitdiff
path: root/sys/compat/linux/common/linux_socketcall.h
diff options
context:
space:
mode:
authorerh <erh@NetBSD.org>1998-10-01 03:34:50 +0000
committererh <erh@NetBSD.org>1998-10-01 03:34:50 +0000
commit658c307a1af2ea3bf6c4d493d6e33e046aced56a (patch)
treefc1dbfef04e90da4999274c7c1e2ece91b8ffb75 /sys/compat/linux/common/linux_socketcall.h
parent81cc399a4dc6485ff4633978d2850083fad94cd5 (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.h227
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 */