Module Name:    src
Committed By:   pooka
Date:           Wed Sep 19 21:45:41 UTC 2012

Added Files:
        src/sys/rump/kern/lib/libsys_linux: Makefile component.c shlib_version
            syscalls.conf syscalls.master

Log Message:
Add the first attempt at rump kernel support for Linux clients.  This has
been lightly tested with unmodified networking applications with both
the client and server on a 64bit le host.  Unlike the standard Linux
compat libs where args and syscalls are swizzled around, this compat
lib only massages the arg data types due to the assumption that syscall
numbers come from librumpclient (via librumphijack) and therefore match
the native NetBSD numbers.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/rump/kern/lib/libsys_linux/Makefile \
    src/sys/rump/kern/lib/libsys_linux/component.c \
    src/sys/rump/kern/lib/libsys_linux/shlib_version \
    src/sys/rump/kern/lib/libsys_linux/syscalls.conf \
    src/sys/rump/kern/lib/libsys_linux/syscalls.master

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/sys/rump/kern/lib/libsys_linux/Makefile
diff -u /dev/null src/sys/rump/kern/lib/libsys_linux/Makefile:1.1
--- /dev/null	Wed Sep 19 21:45:41 2012
+++ src/sys/rump/kern/lib/libsys_linux/Makefile	Wed Sep 19 21:45:40 2012
@@ -0,0 +1,19 @@
+#	$NetBSD: Makefile,v 1.1 2012/09/19 21:45:40 pooka Exp $
+#
+
+.PATH:	${.CURDIR}/../../../../compat/linux/common
+
+LIB=	rumpkern_sys_linux
+
+SRCS=	linux_blkio.c linux_cdrom.c linux_errno.c linux_fdio.c		\
+	linux_file.c linux_hdio.c linux_ioctl.c linux_ipc.c linux_misc.c\
+	linux_mtio.c linux_signal.c linux_signo.c linux_socket.c	\
+	linux_sysctl.c linux_termios.c linux_time.c linux_file64.c
+
+SRCS+=	rump_linux_sysent.c component.c
+
+# XXX
+CPPFLAGS+= -I${.CURDIR}
+
+.include <bsd.lib.mk>
+.include <bsd.klinks.mk>
Index: src/sys/rump/kern/lib/libsys_linux/component.c
diff -u /dev/null src/sys/rump/kern/lib/libsys_linux/component.c:1.1
--- /dev/null	Wed Sep 19 21:45:41 2012
+++ src/sys/rump/kern/lib/libsys_linux/component.c	Wed Sep 19 21:45:40 2012
@@ -0,0 +1,44 @@
+/*	$NetBSD: component.c,v 1.1 2012/09/19 21:45:40 pooka Exp $	*/
+
+#include <sys/param.h>
+#include <sys/proc.h>
+
+#include "rump_private.h"
+
+extern struct sysent rump_linux_sysent[];
+
+struct emul emul_rump_sys_linux = {
+	.e_name = "linux-rump",
+	.e_sysent = rump_linux_sysent,
+	.e_vm_default_addr = uvm_default_mapaddr,
+#ifdef __HAVE_SYSCALL_INTERN
+	.e_syscall_intern = syscall_intern,
+#endif
+};
+
+/*
+ * XXX: the linux emulation code is not split into factions
+ */
+void rumplinux__stub(void);
+void rumplinux__stub(void) {panic("unavailable");}
+__weak_alias(rumpns_linux_machdepioctl,rumplinux__stub);
+__weak_alias(rumpns_nanosleep1,rumplinux__stub);
+__weak_alias(rumpns_vm_map_unlock,rumplinux__stub);
+__weak_alias(rumpns_compat_50_sys_settimeofday,rumplinux__stub);
+__weak_alias(rumpns_oss_ioctl_mixer,rumplinux__stub);
+__weak_alias(rumpns_linux_ioctl_sg,rumplinux__stub);
+__weak_alias(rumpns_oss_ioctl_sequencer,rumplinux__stub);
+__weak_alias(rumpns_uvm_mremap,rumplinux__stub);
+__weak_alias(rumpns_sysent,rumplinux__stub);
+__weak_alias(rumpns_sys_swapctl,rumplinux__stub);
+__weak_alias(rumpns_vm_map_lock,rumplinux__stub);
+__weak_alias(rumpns_compat_50_sys_gettimeofday,rumplinux__stub);
+__weak_alias(rumpns_rusage_to_rusage50,rumplinux__stub);
+__weak_alias(rumpns_sys_obreak,rumplinux__stub);
+__weak_alias(rumpns_do_sys_wait,rumplinux__stub);
+__weak_alias(rumpns_sys_mmap,rumplinux__stub);
+__weak_alias(rumpns_oss_ioctl_audio,rumplinux__stub);
+__weak_alias(rumpns_clock_gettime1,rumplinux__stub);
+__weak_alias(rumpns_uvm_map_lookup_entry,rumplinux__stub);
+__weak_alias(rumpns_clock_settime1,rumplinux__stub);
+__weak_alias(rumpns_clock_getres1,rumplinux__stub);
Index: src/sys/rump/kern/lib/libsys_linux/shlib_version
diff -u /dev/null src/sys/rump/kern/lib/libsys_linux/shlib_version:1.1
--- /dev/null	Wed Sep 19 21:45:41 2012
+++ src/sys/rump/kern/lib/libsys_linux/shlib_version	Wed Sep 19 21:45:40 2012
@@ -0,0 +1,4 @@
+#	$NetBSD: shlib_version,v 1.1 2012/09/19 21:45:40 pooka Exp $
+#
+major=0
+minor=0
Index: src/sys/rump/kern/lib/libsys_linux/syscalls.conf
diff -u /dev/null src/sys/rump/kern/lib/libsys_linux/syscalls.conf:1.1
--- /dev/null	Wed Sep 19 21:45:41 2012
+++ src/sys/rump/kern/lib/libsys_linux/syscalls.conf	Wed Sep 19 21:45:40 2012
@@ -0,0 +1,16 @@
+#	$NetBSD: syscalls.conf,v 1.1 2012/09/19 21:45:40 pooka Exp $
+#
+
+sysnames="rump_linux_syscalls.c"
+sysnumhdr="/dev/null"
+syssw="rump_linux_sysent.c"
+sysarghdr="rump_linux_syscallargs.h"
+compatopts=""
+libcompatopts=""
+
+switchname="rump_linux_sysent"
+namesname="rump_linux_syscallnames"
+constprefix="RUMP_LINUX_SYS_"
+nsysent=512
+
+sys_nosys="linux_sys_nosys"
Index: src/sys/rump/kern/lib/libsys_linux/syscalls.master
diff -u /dev/null src/sys/rump/kern/lib/libsys_linux/syscalls.master:1.1
--- /dev/null	Wed Sep 19 21:45:41 2012
+++ src/sys/rump/kern/lib/libsys_linux/syscalls.master	Wed Sep 19 21:45:40 2012
@@ -0,0 +1,604 @@
+	$NetBSD: syscalls.master,v 1.1 2012/09/19 21:45:40 pooka Exp $
+
+;	@(#)syscalls.master	8.2 (Berkeley) 1/13/94
+
+; NetBSD system call name/number "master" file.
+; (See syscalls.conf to see what it is processed into.)
+;
+; Fields: number type [type-dependent ...]
+;	number	system call number, must be in order
+;	type	one of NODEF, UNIMPL, or NOARGS
+;
+; types:
+;	NODEF	always included
+;	UNIMPL	unimplemented, not included in system
+;	NODEF	included, but don't define the syscall number
+;	NOARGS	included, but don't define the syscall args structure
+;
+; arguments:
+;	PAD	argument not part of the C interface, used only for padding
+;
+;
+; The purpose of this syscalls.master is to map to the Linux types which
+; are marshalled into the arg structure by the clientside rump_syscalls.c
+; code in librumpclient.
+;
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/signal.h>
+#include <sys/socket.h>
+#include <sys/mount.h>
+#include <sys/sched.h>
+#include <sys/syscallargs.h>
+
+#include <compat/linux/common/linux_types.h>
+#include <compat/linux/common/linux_signal.h>
+
+#include "rump_linux_syscallargs.h"
+
+%%
+
+0	NOARGS		{ int|linux_sys||nosys(void); }
+1	UNIMPL 		exit
+2	UNIMPL 		fork
+3	NOARGS		{ ssize_t|sys||read(int fd, void *buf, size_t nbyte); }
+4	NOARGS		{ ssize_t|sys||write(int fd, const void *buf, \
+			    size_t nbyte); }
+5	NODEF		{ int|linux_sys||open(const char *path, \
+			    int flags, int mode); }
+6	NOARGS	 	{ int|sys||close(int fd); }
+7	UNIMPL		wait4
+8	UNIMPL		creat
+9	NOARGS 		{ int|sys||link(const char *path, const char *link); }
+10	NODEF 	 	{ int|linux_sys||unlink(const char *path); }
+11	UNIMPL		execv
+12	NOARGS 	 	{ int|sys||chdir(const char *path); }
+13	NOARGS 	 	{ int|sys||fchdir(int fd); }
+14	UNIMPL		mknod
+15	NOARGS 	 	{ int|sys||chmod(const char *path, mode_t mode); }
+16	NOARGS 	 	{ int|sys||__posix_chown(const char *path, uid_t uid, \
+			    gid_t gid); }
+17	UNIMPL		obreak
+18	UNIMPL		getfsstat
+19	UNIMPL		lseek
+20	NOARGS 		{ pid_t|sys||getpid_with_ppid(void); } getpid
+21	UNIMPL		mount
+22	UNIMPL		unmount
+23	NOARGS		{ int|sys||setuid(uid_t uid); }
+24	NOARGS		{ uid_t|sys||getuid_with_euid(void); } getuid
+25	NOARGS		{ uid_t|sys||geteuid(void); }
+26	UNIMPL 		ptrace
+27	NODEF 		{ ssize_t|linux_sys||recvmsg(int s, \
+			    struct linux_msghdr *msg, int flags); }
+28	NODEF 		{ ssize_t|linux_sys||sendmsg(int s, \
+			    const struct linux_msghdr *msg, int flags); }
+29	NODEF 		{ ssize_t|linux_sys||recvfrom(int s, void *buf, \
+			    int len, int flags, struct osockaddr *from, \
+			    int *fromlenaddr); }
+30	NODEF		{ int|linux_sys||accept(int s, struct osockaddr *name, \
+			    int *anamelen); }
+31	NODEF		{ int|linux_sys||getpeername(int fdes, \
+			    struct osockaddr *asa, int *alen); }
+32	NODEF		{ int|linux_sys||getsockname(int fdes, \
+			    struct osockaddr *asa, int *alen); }
+33	NOARGS 		{ int|sys||access(const char *path, int flags); }
+34	UNIMPL		chflags
+35	UNIMPL		fchflags
+36	NOARGS		{ void|sys||sync(void); }
+37	UNIMPL 		kill
+38	UNIMPL		stat
+39	UNIMPL		getppid
+40	UNIMPL		lstat
+41	NOARGS 		{ int|sys||dup(int fd); }
+
+; we mimic the librumpclient calling convention, therefore no linux_sys_pipe
+42	NOARGS 		{ int|sys||pipe(void); }
+
+43	UNIMPL		getegid
+44	UNIMPL 		profil
+45	UNIMPL 		ktrace
+46	UNIMPL		sigaction
+47	NOARGS 		{ gid_t|sys||getgid_with_egid(void); } getgid
+48	UNIMPL		sigprocmask
+49	UNIMPL		__getlogin
+50	UNIMPL		__setlogin
+51	UNIMPL		acct
+52	UNIMPL  	sigpending
+53	UNIMPL  	sigaltstack
+54	NODEF		{ int|linux_sys||ioctl(int fd, \
+			    u_long com, void *data); }
+55	UNIMPL		reboot
+56	UNIMPL		revoke
+57	NOARGS 	 	{ int|sys||symlink(const char *path, \
+			    const char *link); }
+58	NOARGS 	 	{ ssize_t|sys||readlink(const char *path, char *buf, \
+			    int count); }
+59	UNIMPL 		execve
+60	NOARGS 	 	{ mode_t|sys||umask(mode_t newmask); }
+61	NOARGS 	 	{ int|sys||chroot(const char *path); }
+62	UNIMPL		fstat43
+63	UNIMPL		getkerninfo
+64	UNIMPL		getpagesize
+65	UNIMPL		msync
+66	UNIMPL 		vfork
+67	UNIMPL		vread
+68	UNIMPL		vwrite
+69	UNIMPL 		sbrk
+70	UNIMPL 		sstk
+71	UNIMPL  	mmap
+72	UNIMPL 		ovadvise
+73	UNIMPL 		munmap
+74	UNIMPL 		mprotect
+75	UNIMPL 		madvise
+76	UNIMPL		vhangup
+77	UNIMPL		vlimit
+78	UNIMPL 		mincore
+79	NOARGS 		{ int|sys||getgroups(int gidsetsize, \
+			    int *gidset); }
+80	NOARGS 		{ int|sys||setgroups(int gidsetsize, \
+			    const int *gidset); }
+81	NOARGS 		{ int|sys||getpgrp(void); }
+82	NOARGS 		{ int|sys||setpgid(int pid, int pgid); }
+83	UNIMPL		setitimer
+84	UNIMPL		wait
+85	UNIMPL		swapon
+86	UNIMPL		getitimer
+87	UNIMPL		gethostname
+88	UNIMPL		sethostname
+89	UNIMPL		getdtablesize
+90	NOARGS 	 	{ int|sys||dup2(int from, int to); }
+91	UNIMPL		getdopt
+92	NODEF		{ int|linux_sys||fcntl(int fd, int cmd, void *arg); }
+93	UNIMPL		select
+94	UNIMPL		setdopt
+95	NOARGS		{ int|sys||fsync(int fd); }
+96	UNIMPL		setpriority
+97	UNIMPL		socket
+98	NODEF		{ int|linux_sys||connect(int s, \
+			    const struct osockaddr *name, \
+			    unsigned int namelen); }
+99	UNIMPL		accept
+100	UNIMPL 		getpriority
+
+101	UNIMPL		send
+102	UNIMPL		recv
+
+103	UNIMPL		sigreturn
+104	NODEF		{ int|linux_sys||bind(int s, \
+			    const struct osockaddr *name, unsigned namelen); }
+105	NODEF		{ int|linux_sys||setsockopt(int s, int level, \
+			    int name, const void *val, int optlen); }
+106	NOARGS		{ int|sys||listen(int s, int backlog); }
+107	UNIMPL		vtimes
+108	UNIMPL		sigvec
+109	UNIMPL		sigblock
+110	UNIMPL		sigsetmask
+111	UNIMPL		sigsuspend
+112	UNIMPL		sigstack
+113	UNIMPL		orecvmsg
+114	UNIMPL		osendmsg
+115	UNIMPL		vtrace
+116	UNIMPL		gettimeofday
+117	UNIMPL 		getrusage
+118	NODEF		{ int|linux_sys||getsockopt(int s, int level, \
+			    int name, void *val, int *avalsize); }
+119	UNIMPL		resuba
+120	NOARGS 		{ ssize_t|sys||readv(int fd, \
+			    const struct iovec *iovp, int iovcnt); }
+121	NOARGS 		{ ssize_t|sys||writev(int fd, \
+			    const struct iovec *iovp, int iovcnt); }
+122	UNIMPL		settimeofday
+123	NOARGS 	 	{ int|sys||__posix_fchown(int fd, int uid, int gid); }
+124	NOARGS 	 	{ int|sys||fchmod(int fd, mode_t mode); }
+125	UNIMPL		orecvfrom
+126	NOARGS 		{ int|sys||setreuid(uid_t ruid, uid_t euid); }
+127	NOARGS 		{ int|sys||setregid(gid_t rgid, gid_t egid); }
+128	NOARGS 	 	{ int|sys||__posix_rename(const char *from, \
+			    const char *to); }
+129	UNIMPL		otruncate
+130	UNIMPL		oftruncate
+131	NOARGS 	 	{ int|sys||flock(int fd, int how); }
+132	UNIMPL 	 	mkfifo
+133	NODEF 	 	{ int|linux_sys||sendto(int s, void *buf, \
+			    int len, int flags, const struct osockaddr *to, \
+			    int tolen); }
+134	NOARGS	 	{ int|sys||shutdown(int s, int how); }
+135	NODEF	 	{ int|linux_sys||socketpair(int domain, int type, \
+			    int protocol, int *rsv); }
+136	NOARGS 	 	{ int|sys||mkdir(const char *path, mode_t mode); }
+137	NOARGS 	 	{ int|sys||rmdir(const char *path); }
+138	UNIMPL		utimes
+
+139	UNIMPL		4.2 sigreturn
+140	UNIMPL		adjtime
+141	UNIMPL		ogetpeername
+142	UNIMPL		ogethostid
+143	UNIMPL		osethostid
+144	UNIMPL		ogetrlimit
+145	UNIMPL		osetrlimit
+146	UNIMPL		okillpg
+147	NOARGS 		{ int|sys||setsid(void); }
+148	UNIMPL		quotactl
+149	UNIMPL		oquota
+150	UNIMPL		ogetsockname
+
+; Syscalls 151-180 inclusive are reserved for vendor-specific
+; system calls.  (This includes various calls added for compatibity
+; with other Unix variants.)
+; Some of these calls are now supported by BSD...
+151	UNIMPL
+152	UNIMPL
+153	UNIMPL
+154	UNIMPL
+155	UNIMPL		nfssvc
+156	UNIMPL		ogetdirentries
+157	UNIMPL		statfs12
+158	UNIMPL		fstatfs12
+159	UNIMPL
+160	UNIMPL
+161	UNIMPL		getfh30
+162	UNIMPL		ogetdomainname
+163	UNIMPL		osetdomainname
+164	UNIMPL		ouname
+165	UNIMPL 		sysarch
+166	UNIMPL
+167	UNIMPL
+168	UNIMPL
+169	UNIMPL		1.0 semsys
+170	UNIMPL		1.0 msgsys
+171	UNIMPL		1.0 shmsys
+172	UNIMPL
+173	NODEF 	 	{ ssize_t|linux_sys||pread(int fd, char *buf, \
+			    size_t nbyte, int PAD, linux_off_t offset); }
+174	NODEF 	 	{ ssize_t|linux_sys||pwrite(int fd, char *buf, \
+			    size_t nbyte, int PAD, linux_off_t offset); }
+175	UNIMPL		ntp_gettime
+176	UNIMPL		ntp_adjtime
+177	UNIMPL
+178	UNIMPL
+179	UNIMPL
+180	UNIMPL
+
+; Syscalls 180-199 are used by/reserved for BSD
+181	NOARGS 		{ int|sys||setgid(gid_t gid); }
+182	NOARGS 		{ int|sys||setegid(gid_t egid); }
+183	NOARGS 		{ int|sys||seteuid(uid_t euid); }
+184	UNIMPL		lfs_bmapv
+185	UNIMPL		lfs_markv
+186	UNIMPL		lfs_segclean
+187	UNIMPL		lfs_segwait
+188	UNIMPL		stat12
+189	UNIMPL		fstat12
+190	UNIMPL		lstat12
+191	UNIMPL 		pathconf
+192	UNIMPL 		fpathconf
+193	UNIMPL
+194	NODEF 		{ int|linux_sys||getrlimit(int which, \
+			    struct orlimit *rlp); }
+195	NODEF 		{ int|linux_sys||setrlimit(int which, \
+			    const struct orlimit *rlp); }
+196	UNIMPL		getdirentries
+197	UNIMPL		mmap
+198	UNIMPL		__syscall
+199	NOARGS 	 	{ off_t|sys||lseek(int fd, int PAD, off_t offset, \
+			    int whence); }
+200	NOARGS 	 	{ int|sys||truncate(const char *path, int PAD, \
+			    off_t length); }
+201	NOARGS 	 	{ int|sys||ftruncate(int fd, int PAD, off_t length); }
+202	UNIMPL		__sysctl
+203	UNIMPL		mlock
+204	UNIMPL		munlock
+205	UNIMPL		undelete
+206	UNIMPL		futimes
+207	NOARGS 	 	{ pid_t|sys||getpgid(pid_t pid); }
+208	UNIMPL	 	reboot
+209	NOARGS 	 	{ int|sys||poll(struct pollfd *fds, u_int nfds, \
+			    int timeout); }
+;
+; Syscalls 210-219 are reserved for dynamically loaded syscalls
+;
+210	UNIMPL	 	afssys
+211	UNIMPL
+212	UNIMPL
+213	UNIMPL
+214	UNIMPL
+215	UNIMPL
+216	UNIMPL
+217	UNIMPL
+218	UNIMPL
+219	UNIMPL
+220	UNIMPL		compat_14_semctl
+221	UNIMPL		semget
+222	UNIMPL		semop
+223	UNIMPL		semconfig
+224	UNIMPL 		compat_14_msgctl
+225	UNIMPL 		msgget
+226	UNIMPL 		msgsnd
+227	UNIMPL 		msgrcv
+228	UNIMPL		shmat
+229	UNIMPL		compat_14_shmctl
+230	UNIMPL		shmdt
+231	UNIMPL		shmget
+
+232	UNIMPL		clock_gettime
+233	UNIMPL		clock_settime
+234	UNIMPL		clock_getres
+235	UNIMPL		timer_create
+236	UNIMPL		timer_delete
+237	UNIMPL		timer_settime
+238	UNIMPL		timer_gettime
+239	UNIMPL		timer_getoverrun
+;
+; Syscalls 240-269 are reserved for other IEEE Std1003.1b syscalls
+;
+240	UNIMPL		nanosleep
+241	NODEF 	 	{ int|linux_sys||fdatasync(int fd); }
+242	UNIMPL		mlockall
+243	UNIMPL		munlockall
+244	UNIMPL		__sigtimedwait
+245	UNIMPL		sigqueueinfo
+246	UNIMPL		modctl
+247	UNIMPL		_ksem_init
+248	UNIMPL		_ksem_open
+249	UNIMPL		_ksem_unlink
+250	UNIMPL		_ksem_close
+251	UNIMPL		_ksem_post
+252	UNIMPL		_ksem_wait
+253	UNIMPL		_ksem_trywait
+254	UNIMPL		_ksem_getvalue
+255	UNIMPL		_ksem_destroy
+256	UNIMPL		_ksem_timedwait
+
+257	UNIMPL		mq_open
+258	UNIMPL		mq_close
+259	UNIMPL		mq_unlink
+260	UNIMPL		mq_getattr
+261	UNIMPL		mq_setattr
+262	UNIMPL		mq_notify
+263	UNIMPL		mq_send
+264	UNIMPL		mq_receive
+265	UNIMPL		mq_timedsend
+266	UNIMPL		mq_timedreceive
+267	UNIMPL
+268	UNIMPL
+269	UNIMPL
+270	UNIMPL		__posix_rename
+271	UNIMPL		swapctl
+272	UNIMPL		getdents
+273	UNIMPL		minherit
+274	UNIMPL 	 	lchmod
+275	UNIMPL 	 	lchown
+276	UNIMPL		lutimes
+277	UNIMPL		msync
+278	UNIMPL		stat
+279	UNIMPL		fstat
+280	UNIMPL		lstat
+281	UNIMPL		sigaltstack
+282	UNIMPL		vfork
+283	UNIMPL		__posix_chown
+284	UNIMPL		__posix_fchown
+285	UNIMPL		__posix_lchown
+286	NOARGS 		{ pid_t|sys||getsid(pid_t pid); }
+
+287	UNIMPL		__clone
+288	UNIMPL		fktrace
+289	UNIMPL 		{ ssize_t|sys||preadv(int fd, \
+			    const struct iovec *iovp, int iovcnt, \
+			    int PAD, off_t offset); }
+290	UNIMPL 		{ ssize_t|sys||pwritev(int fd, \
+			    const struct iovec *iovp, int iovcnt, \
+			    int PAD, off_t offset); }
+291	UNIMPL		sigaction
+292	UNIMPL		sigpending
+293	UNIMPL		sigprocmask
+294	UNIMPL		sigsuspend
+295	UNIMPL		sigreturn
+296	NOARGS 	 	{ int|sys||__getcwd(char *bufp, size_t length); }
+297	NOARGS 	 	{ int|sys||fchroot(int fd); }
+298	UNIMPL		fhopen
+299	UNIMPL		fhstat
+300	UNIMPL		fhstatfs
+301	UNIMPL		____semctl13
+302	UNIMPL		__msgctl13
+303	UNIMPL		__shmctl13
+304	UNIMPL 	 	lchflags
+305	UNIMPL		issetugid
+306	UNIMPL		utrace
+307	UNIMPL		getcontext
+308	UNIMPL		setcontext
+309	UNIMPL		_lwp_create
+310	UNIMPL		_lwp_exit
+311	UNIMPL		_lwp_self
+312	UNIMPL		_lwp_wait
+313	UNIMPL		_lwp_suspend
+314	UNIMPL		_lwp_continue
+315	UNIMPL		_lwp_wakeup
+316	UNIMPL		_lwp_getprivate
+317	UNIMPL		_lwp_setprivate
+318	UNIMPL		_lwp_kill
+319	UNIMPL		_lwp_detach
+320	UNIMPL		_lwp_park
+321	UNIMPL		_lwp_unpark
+322	UNIMPL		_lwp_unpark_all
+323	UNIMPL		_lwp_setname
+324	UNIMPL		_lwp_getname
+325	UNIMPL		_lwp_ctl
+
+; Syscalls 326-339 reserved for LWP syscalls.
+326	UNIMPL
+327	UNIMPL
+328	UNIMPL
+329	UNIMPL
+; SA system calls.
+330	UNIMPL		sa_register
+331	UNIMPL		sa_stacks
+332	UNIMPL		sa_enable
+333	UNIMPL		sa_setconcurrency
+334	UNIMPL		sa_yield
+335	UNIMPL		sa_preempt
+336	UNIMPL 		sys_sa_unblockyield
+;
+; Syscalls 337-339 are reserved for other scheduler activation syscalls.
+;
+337	UNIMPL
+338	UNIMPL
+339	UNIMPL
+
+340	UNIMPL		__sigaction_sigtramp
+341	UNIMPL		pmc_get_info
+342	UNIMPL		pmc_control
+343	UNIMPL		rasctl
+344	UNIMPL		kqueue
+345	UNIMPL		kevent
+
+; Scheduling system calls.
+346	UNIMPL		_sched_setparam
+347	UNIMPL		_sched_getparam
+348	UNIMPL		_sched_setaffinity
+349	UNIMPL		_sched_getaffinity
+350	UNIMPL		sched_yield
+351	UNIMPL
+352	UNIMPL
+353	UNIMPL
+
+354	UNIMPL		fsync_range
+355	UNIMPL		uuidgen
+356	UNIMPL		getvfsstat
+357	UNIMPL		statvfs1
+358	UNIMPL		fstatvfs1
+359	UNIMPL		fhstatvfs1
+360	UNIMPL		extattrctl
+361	UNIMPL		extattr_set_file
+362	UNIMPL		extattr_get_file
+363	UNIMPL		extattr_delete_file
+364	UNIMPL		extattr_set_fd
+365	UNIMPL		extattr_get_fd
+366	UNIMPL		extattr_delete_fd
+367	UNIMPL		extattr_set_link
+368	UNIMPL		extattr_get_link
+369	UNIMPL		extattr_delete_link
+370	UNIMPL		extattr_list_fd
+371	UNIMPL		extattr_list_file
+372	UNIMPL		extattr_list_link
+373	UNIMPL		pselect
+374	UNIMPL		pollts
+375	UNIMPL		setxattr
+376	UNIMPL		lsetxattr
+377	UNIMPL		fsetxattr
+378	UNIMPL		getxattr
+379	UNIMPL		lgetxattr
+380	UNIMPL		fgetxattr
+381	UNIMPL		listxattr
+382	UNIMPL		llistxattr
+383	UNIMPL		flistxattr
+384	UNIMPL		removexattr
+385	UNIMPL		lremovexattr
+386	UNIMPL		fremovexattr
+387	UNIMPL		stat30
+388	UNIMPL		fstat30
+389	UNIMPL		lstat30
+390	NODEF		{ int|linux_sys||getdents(int fd, \
+			    struct linux_dirent *dent, unsigned int count); }
+391	UNIMPL		old posix_fadvise
+392	UNIMPL		fhstat
+393	UNIMPL		ntp_gettime
+394	NODEF	 	{ int|linux_sys||socket(int domain, \
+			    int type, int protocol); }
+395	UNIMPL		getfh
+396	UNIMPL		fhopen
+397	UNIMPL		fhstatvfs1
+398	UNIMPL		fhstat
+
+; Asynchronous I/O system calls
+399	UNIMPL		aio_cancel
+400	UNIMPL		aio_error
+401	UNIMPL		aio_fsync
+402	UNIMPL		aio_read
+403	UNIMPL		aio_return
+404	UNIMPL		aio_suspend
+405	UNIMPL		aio_write
+406	UNIMPL		lio_listio
+
+407	UNIMPL
+408	UNIMPL
+409	UNIMPL
+
+410	UNIMPL		mount
+411	UNIMPL		mremap
+
+; Processor-sets system calls
+412	UNIMPL		pset_create
+413	UNIMPL		pset_destroy
+414	UNIMPL		pset_assign
+415	UNIMPL		_pset_bind
+416	UNIMPL		fadvise
+417	NODEF  		{ int|linux_sys||select(int nd, \
+			    fd_set *in, fd_set *ou, fd_set *ex, \
+			    struct timeval50 *tv); }
+418	UNIMPL		gettimeofday
+419	UNIMPL		settimeofday
+420	UNIMPL		utimes
+421	UNIMPL		adjtime
+422	UNIMPL		lfs_segwait
+423	UNIMPL		futimes
+424	UNIMPL		lutimes
+425	UNIMPL		setitimer
+426	UNIMPL		getitimer
+427	UNIMPL		clock_gettime
+428	UNIMPL		clock_settime
+429	UNIMPL		clock_getres
+430	UNIMPL		nanosleep
+431	UNIMPL		__sigtimedwait
+432	UNIMPL		mq_timedsend
+433	UNIMPL		mq_timedreceive
+434	UNIMPL		_lwp_park
+435	UNIMPL		kevent
+436	UNIMPL		pselect
+437	NODEF		{ int|linux_sys||ppoll(struct pollfd *fds, \
+			    u_int nfds, const struct linux_timespec *timeout, \
+			    const linux_sigset_t *mask);}
+438	UNIMPL		aio_suspend
+439	NODEF  		{ int|linux_sys||stat64(const char *path, \
+			    struct linux_stat64 *sp); }
+440	NODEF  		{ int|linux_sys||fstat64(int fd, \
+			    struct linux_stat64 *sp); }
+441	UNIMPL		lstat
+442	UNIMPL		__semctl
+443	UNIMPL		shmctl
+444	UNIMPL		msgctl
+445	UNIMPL		getrusage
+446	UNIMPL		timer_settime
+447	UNIMPL		timer_gettime
+448	UNIMPL		ntp_gettime
+449	UNIMPL		wait4
+450	NODEF  		{ int|linux_sys||mknod(const char *path, mode_t mode, \
+			    int dev); }
+451	UNIMPL		fhstat
+
+; 452 only ever appeared in 5.99.x and can be reused after netbsd-7
+452	UNIMPL		5.99 quotactl
+453	UNIMPL		pipe2
+454	UNIMPL		dup3
+455	UNIMPL		kqueue1
+456	UNIMPL		paccept
+457	UNIMPL		linkat
+458	UNIMPL		renameat
+459	UNIMPL		mkfifoat
+460	UNIMPL		mknodat
+461	UNIMPL		mkdirat
+462	UNIMPL		faccessat
+463	UNIMPL		fchmodat
+464	UNIMPL		fchownat
+465	UNIMPL		fexecve
+466	UNIMPL		fstatat
+467	UNIMPL		utimensat
+468	UNIMPL		openat
+469	UNIMPL		readlinkat
+470	UNIMPL		symlinkat
+471	UNIMPL		unlinkat
+472	UNIMPL		futimens
+473	UNIMPL		__quotactl
+474	UNIMPL		posix_spawn
+475	UNIMPL		recvmmsg
+476	UNIMPL		sendmmsg

Reply via email to