[Midnightbsd-cvs] src: i386/linux: sync with freebsd 7

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sat Dec 6 10:28:31 EST 2008


Log Message:
-----------
sync with freebsd 7

Modified Files:
--------------
    src/sys/i386/linux:
        imgact_linux.c (r1.1.1.1 -> r1.2)
        linux.h (r1.1.1.1 -> r1.2)
        linux_dummy.c (r1.1.1.1 -> r1.2)
        linux_machdep.c (r1.1.1.1 -> r1.2)
        linux_proto.h (r1.1.1.1 -> r1.2)
        linux_ptrace.c (r1.2 -> r1.3)
        linux_syscall.h (r1.1.1.1 -> r1.2)
        linux_sysent.c (r1.1.1.1 -> r1.2)
        linux_sysvec.c (r1.1.1.2 -> r1.2)
        syscalls.conf (r1.1.1.1 -> r1.2)
        syscalls.master (r1.1.1.1 -> r1.2)

Added Files:
-----------
    src/sys/i386/linux:
        linux_support.s (r1.1)

-------------- next part --------------
Index: syscalls.master
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/syscalls.master,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/syscalls.master -L sys/i386/linux/syscalls.master -u -r1.1.1.1 -r1.2
--- sys/i386/linux/syscalls.master
+++ sys/i386/linux/syscalls.master
@@ -1,17 +1,17 @@
- $FreeBSD: src/sys/i386/linux/syscalls.master,v 1.61.2.1 2005/07/20 17:42:15 jhb Exp $
+ $FreeBSD: src/sys/i386/linux/syscalls.master,v 1.89 2007/09/18 19:50:33 dwmalone Exp $
 
 ;	@(#)syscalls.master	8.1 (Berkeley) 7/19/93
 ; System call name/number master file (or rather, slave, from LINUX).
 ; Processed to create linux_sysent.c, linux_proto.h and linux_syscall.h.
 
-; Columns: number type nargs name alt{name,tag,rtyp}/comments
+; Columns: number audit type nargs name alt{name,tag,rtyp}/comments
 ;	number	system call number, must be in order
 ;	audit	the audit event associated with the system call
 ;		A value of AUE_NULL means no auditing, but it also means that
 ;		there is no audit event for the call at this time. For the
 ;		case where the event exists, but we don't want auditing, the
 ;		event should be #defined to AUE_NULL in audit_kevents.h.
-;	type	one of STD, OBSOL, UNIMPL, COMPAT
+;	type	one of STD, OBSOL, UNIMPL
 ;	name	psuedo-prototype of syscall routine
 ;		If one of the following alts is different, then all appear:
 ;	altname	name of system call if different
@@ -20,13 +20,10 @@
 ;		for UNIMPL/OBSOL, name continues with comments
 
 ; types:
-;	AUE_NULL	STD	always included
-;	COMPAT	included on COMPAT #ifdef
-;	LIBCOMPAT included on COMPAT #ifdef, and placed in syscall.h
+;	STD	always included
 ;	OBSOL	obsolete, not included in system, only specifies name
-;	AUE_NULL	UNIMPL	not implemented, placeholder only
+;	UNIMPL	not implemented, placeholder only
 
-#include "opt_compat.h"
 #include <sys/param.h>
 #include <sys/sysent.h>
 #include <sys/sysproto.h>
@@ -40,392 +37,457 @@
 ; #ifdef's, etc. may be included, and are copied to the output files.
 
 0	AUE_NULL	UNIMPL	setup
-1	AUE_NULL	MNOPROTO { void sys_exit(int rval); } exit \
+1	AUE_EXIT	NOPROTO	{ void sys_exit(int rval); } exit \
 				    sys_exit_args void
-2	AUE_NULL	MSTD	{ int linux_fork(void); }
-3	AUE_NULL	MNOPROTO { int read(int fd, char *buf, \
+2	AUE_FORK	STD	{ int linux_fork(void); }
+3	AUE_NULL	NOPROTO	{ int read(int fd, char *buf, \
 				    u_int nbyte); }
-4	AUE_NULL	MNOPROTO { int write(int fd, char *buf, \
+4	AUE_NULL	NOPROTO	{ int write(int fd, char *buf, \
 				    u_int nbyte); }
-5	AUE_NULL	MSTD	{ int linux_open(char *path, l_int flags, \
+5	AUE_OPEN_RWTC	STD	{ int linux_open(char *path, l_int flags, \
 				    l_int mode); }
-6	AUE_NULL	MNOPROTO { int close(int fd); }
-7	AUE_NULL	MSTD	{ int linux_waitpid(l_pid_t pid, \
+6	AUE_CLOSE	NOPROTO	{ int close(int fd); }
+7	AUE_WAIT4	STD	{ int linux_waitpid(l_pid_t pid, \
 				    l_int *status, l_int options); }
-8	AUE_NULL	MSTD	{ int linux_creat(char *path, \
+8	AUE_CREAT	STD	{ int linux_creat(char *path, \
 				    l_int mode); }
-9	AUE_NULL	MSTD	{ int linux_link(char *path, char *to); }
-10	AUE_NULL	MSTD	{ int linux_unlink(char *path); }
-11	AUE_NULL	MSTD	{ int linux_execve(char *path, char **argp, \
+9	AUE_LINK	STD	{ int linux_link(char *path, char *to); }
+10	AUE_UNLINK	STD	{ int linux_unlink(char *path); }
+11	AUE_EXECVE	STD	{ int linux_execve(char *path, char **argp, \
 				    char **envp); }
-12	AUE_NULL	MSTD	{ int linux_chdir(char *path); }
-13	AUE_NULL	MSTD	{ int linux_time(l_time_t *tm); }
-14	AUE_NULL	MSTD	{ int linux_mknod(char *path, l_int mode, \
+12	AUE_CHDIR	STD	{ int linux_chdir(char *path); }
+13	AUE_NULL	STD	{ int linux_time(l_time_t *tm); }
+14	AUE_MKNOD	STD	{ int linux_mknod(char *path, l_int mode, \
 				    l_dev_t dev); }
-15	AUE_NULL	MSTD	{ int linux_chmod(char *path, \
+15	AUE_CHMOD	STD	{ int linux_chmod(char *path, \
 				    l_mode_t mode); }
-16	AUE_NULL	MSTD	{ int linux_lchown16(char *path, \
+16	AUE_LCHOWN	STD	{ int linux_lchown16(char *path, \
 				    l_uid16_t uid, l_gid16_t gid); }
 17	AUE_NULL	UNIMPL	break
-18	AUE_NULL	MSTD	{ int linux_stat(char *path, \
-				    struct ostat *up); }
-19	AUE_NULL	MSTD	{ int linux_lseek(l_uint fdes, l_off_t off, \
+18	AUE_STAT	STD	{ int linux_stat(char *path, \
+				    struct linux_stat *up); }
+19	AUE_LSEEK	STD	{ int linux_lseek(l_uint fdes, l_off_t off, \
 				    l_int whence); }
-20	AUE_NULL	MSTD	{ int linux_getpid(void); }
-21	AUE_NULL	STD	{ int linux_mount(char *specialfile, \
+20	AUE_GETPID	STD	{ int linux_getpid(void); }
+21	AUE_MOUNT	STD	{ int linux_mount(char *specialfile, \
 				    char *dir, char *filesystemtype, \
 				    l_ulong rwflag, void *data); }
-22	AUE_NULL	STD	{ int linux_oldumount(char *path); }
-23	AUE_NULL	MSTD	{ int linux_setuid16(l_uid16_t uid); }
-24	AUE_NULL	MSTD	{ int linux_getuid16(void); }
-25	AUE_NULL	MSTD	{ int linux_stime(void); }
-26	AUE_NULL	MSTD	{ int linux_ptrace(l_long req, l_long pid, \
+22	AUE_UMOUNT	STD	{ int linux_oldumount(char *path); }
+23	AUE_SETUID	STD	{ int linux_setuid16(l_uid16_t uid); }
+24	AUE_GETUID	STD	{ int linux_getuid16(void); }
+25	AUE_SETTIMEOFDAY	STD	{ int linux_stime(void); }
+26	AUE_PTRACE	STD	{ int linux_ptrace(l_long req, l_long pid, \
 				    l_long addr, l_long data); }
-27	AUE_NULL	MSTD	{ int linux_alarm(l_uint secs); }
-28	AUE_NULL	MSTD	{ int linux_fstat(l_uint fd, \
-				    struct ostat *up); }
-29	AUE_NULL	MSTD	{ int linux_pause(void); }
-30	AUE_NULL	MSTD	{ int linux_utime(char *fname, \
+27	AUE_NULL	STD	{ int linux_alarm(l_uint secs); }
+28	AUE_FSTAT	STD	{ int linux_fstat(l_uint fd, \
+				    struct linux_stat *up); }
+29	AUE_NULL	STD	{ int linux_pause(void); }
+30	AUE_UTIME	STD	{ int linux_utime(char *fname, \
 				    struct l_utimbuf *times); }
 31	AUE_NULL	UNIMPL	stty
 32	AUE_NULL	UNIMPL	gtty
-33	AUE_NULL	MSTD	{ int linux_access(char *path, l_int flags); }
-34	AUE_NULL	MSTD	{ int linux_nice(l_int inc); }
+33	AUE_ACCESS	STD	{ int linux_access(char *path, l_int flags); }
+34	AUE_NICE	STD	{ int linux_nice(l_int inc); }
 35	AUE_NULL	UNIMPL	ftime
-36	AUE_NULL	MNOPROTO	{ int sync(void); }
-37	AUE_NULL	MSTD	{ int linux_kill(l_int pid, l_int signum); }
-38	AUE_NULL	MSTD	{ int linux_rename(char *from, char *to); }
-39	AUE_NULL	MSTD	{ int linux_mkdir(char *path, l_int mode); }
-40	AUE_NULL	MSTD	{ int linux_rmdir(char *path); }
-41	AUE_NULL	MNOPROTO { int dup(u_int fd); }
-42	AUE_NULL	MSTD	{ int linux_pipe(l_ulong *pipefds); }
-43	AUE_NULL	MSTD	{ int linux_times(struct l_times_argv *buf); }
+36	AUE_SYNC	NOPROTO	{ int sync(void); }
+37	AUE_KILL	STD	{ int linux_kill(l_int pid, l_int signum); }
+38	AUE_RENAME	STD	{ int linux_rename(char *from, char *to); }
+39	AUE_MKDIR	STD	{ int linux_mkdir(char *path, l_int mode); }
+40	AUE_RMDIR	STD	{ int linux_rmdir(char *path); }
+41	AUE_DUP		NOPROTO	{ int dup(u_int fd); }
+42	AUE_PIPE	STD	{ int linux_pipe(l_ulong *pipefds); }
+43	AUE_NULL	STD	{ int linux_times(struct l_times_argv *buf); }
 44	AUE_NULL	UNIMPL	prof
 45	AUE_NULL	STD	{ int linux_brk(l_ulong dsend); }
-46	AUE_NULL	MSTD	{ int linux_setgid16(l_gid16_t gid); }
-47	AUE_NULL	MSTD	{ int linux_getgid16(void); }
-48	AUE_NULL	MSTD	{ int linux_signal(l_int sig, \
+46	AUE_SETGID	STD	{ int linux_setgid16(l_gid16_t gid); }
+47	AUE_GETGID	STD	{ int linux_getgid16(void); }
+48	AUE_NULL	STD	{ int linux_signal(l_int sig, \
 				    l_handler_t handler); }
-49	AUE_NULL	MSTD	{ int linux_geteuid16(void); }
-50	AUE_NULL	MSTD	{ int linux_getegid16(void); }
-51	AUE_NULL	MNOPROTO { int acct(char *path); }
-52	AUE_NULL	STD	{ int linux_umount(char *path, l_int flags); }
+49	AUE_GETEUID	STD	{ int linux_geteuid16(void); }
+50	AUE_GETEGID	STD	{ int linux_getegid16(void); }
+51	AUE_ACCT	NOPROTO	{ int acct(char *path); }
+52	AUE_UMOUNT	STD	{ int linux_umount(char *path, l_int flags); }
 53	AUE_NULL	UNIMPL	lock
-54	AUE_NULL	STD	{ int linux_ioctl(l_uint fd, l_uint cmd, \
+54	AUE_IOCTL	STD	{ int linux_ioctl(l_uint fd, l_uint cmd, \
 				    l_ulong arg); }
-55	AUE_NULL	MSTD	{ int linux_fcntl(l_uint fd, l_uint cmd, \
+55	AUE_FCNTL	STD	{ int linux_fcntl(l_uint fd, l_uint cmd, \
 				    l_ulong arg); }
 56	AUE_NULL	UNIMPL	mpx
-57	AUE_NULL	MNOPROTO { int setpgid(int pid, int pgid); }
+57	AUE_SETPGRP	NOPROTO	{ int setpgid(int pid, int pgid); }
 58	AUE_NULL	UNIMPL	ulimit
-59	AUE_NULL	MSTD	{ int linux_olduname(void); }
-60	AUE_NULL	MNOPROTO { int umask(int newmask); }
-61	AUE_NULL	MNOPROTO	{ int chroot(char *path); }
-62	AUE_NULL	MSTD	{ int linux_ustat(l_dev_t dev, \
+59	AUE_NULL	STD	{ int linux_olduname(void); }
+60	AUE_UMASK	NOPROTO	{ int umask(int newmask); }
+61	AUE_CHROOT	NOPROTO	{ int chroot(char *path); }
+62	AUE_NULL	STD	{ int linux_ustat(l_dev_t dev, \
 				    struct l_ustat *ubuf); }
-63	AUE_NULL	MNOPROTO { int dup2(u_int from, u_int to); }
-64	AUE_NULL	MNOPROTO { int getppid(void); }
-65	AUE_NULL	MNOPROTO { int getpgrp(void); }
-66	AUE_NULL	MNOPROTO { int setsid(void); }
-67	AUE_NULL	MSTD	{ int linux_sigaction(l_int sig, \
+63	AUE_DUP2	NOPROTO { int dup2(u_int from, u_int to); }
+64	AUE_GETPPID	STD	{ int linux_getppid(void); }
+65	AUE_GETPGRP	NOPROTO { int getpgrp(void); }
+66	AUE_SETSID	NOPROTO { int setsid(void); }
+67	AUE_NULL	STD	{ int linux_sigaction(l_int sig, \
 				    l_osigaction_t *nsa, \
 				    l_osigaction_t *osa); }
-68	AUE_NULL	MSTD	{ int linux_sgetmask(void); }
-69	AUE_NULL	MSTD	{ int linux_ssetmask(l_osigset_t mask); }
-70	AUE_NULL	MSTD	{ int linux_setreuid16(l_uid16_t ruid, \
+68	AUE_NULL	STD	{ int linux_sgetmask(void); }
+69	AUE_NULL	STD	{ int linux_ssetmask(l_osigset_t mask); }
+70	AUE_SETREUID	STD	{ int linux_setreuid16(l_uid16_t ruid, \
 				    l_uid16_t euid); }
-71	AUE_NULL	MSTD	{ int linux_setregid16(l_gid16_t rgid, \
+71	AUE_SETREGID	STD	{ int linux_setregid16(l_gid16_t rgid, \
 				    l_gid16_t egid); }
-72	AUE_NULL	MSTD	{ int linux_sigsuspend(l_int hist0, \
+72	AUE_NULL	STD	{ int linux_sigsuspend(l_int hist0, \
 				    l_int hist1, l_osigset_t mask); }
-73	AUE_NULL	MSTD	{ int linux_sigpending(l_osigset_t *mask); }
-74	AUE_NULL	MNOPROTO { int osethostname(char *hostname, \
-				    u_int len); } osethostname \
-				    sethostname_args int
-75	AUE_NULL	MSTD	{ int linux_setrlimit(l_uint resource, \
+73	AUE_NULL	STD	{ int linux_sigpending(l_osigset_t *mask); }
+74	AUE_SYSCTL	STD	{ int linux_sethostname(char *hostname, \
+				    u_int len); }
+75	AUE_SETRLIMIT	STD	{ int linux_setrlimit(l_uint resource, \
 				    struct l_rlimit *rlim); }
-76	AUE_NULL	MSTD	{ int linux_old_getrlimit(l_uint resource, \
+76	AUE_GETRLIMIT	STD	{ int linux_old_getrlimit(l_uint resource, \
 				    struct l_rlimit *rlim); }
-77	AUE_NULL	MNOPROTO { int getrusage(int who, \
+77	AUE_GETRUSAGE	NOPROTO	{ int getrusage(int who, \
 				    struct rusage *rusage); }
-78	AUE_NULL	MNOPROTO { int gettimeofday(struct timeval *tp, \
+78	AUE_NULL	NOPROTO	{ int gettimeofday( \
+				    struct timeval *tp, \
 				    struct timezone *tzp); }
-79	AUE_NULL	MNOPROTO { int settimeofday(struct timeval *tp, \
+79	AUE_SETTIMEOFDAY	NOPROTO	{ int settimeofday( \
+				    struct timeval *tp, \
 				    struct timezone *tzp); }
-80	AUE_NULL	MSTD	{ int linux_getgroups16(l_uint gidsetsize, \
+80	AUE_GETGROUPS	STD	{ int linux_getgroups16(l_uint gidsetsize, \
 				    l_gid16_t *gidset); }
-81	AUE_NULL	MSTD	{ int linux_setgroups16(l_uint gidsetsize, \
+81	AUE_SETGROUPS	STD	{ int linux_setgroups16(l_uint gidsetsize, \
 				    l_gid16_t *gidset); }
-82	AUE_NULL	MSTD	{ int linux_old_select( \
+82	AUE_SELECT	STD	{ int linux_old_select( \
 				    struct l_old_select_argv *ptr); }
-83	AUE_NULL	MSTD	{ int linux_symlink(char *path, char *to); }
-84	AUE_NULL	MNOPROTO	{ int ostat(char *path, struct ostat *up); }
-85	AUE_NULL	MSTD	{ int linux_readlink(char *name, char *buf, \
+83	AUE_SYMLINK	STD	{ int linux_symlink(char *path, char *to); }
+84	AUE_LSTAT	STD	{ int linux_lstat(char *path, struct ostat *up); }
+85	AUE_READLINK	STD	{ int linux_readlink(char *name, char *buf, \
 				    l_int count); }
-86	AUE_NULL	STD	{ int linux_uselib(char *library); }
-87	AUE_NULL	MNOPROTO	{ int swapon(char *name); }
-88	AUE_NULL	MSTD	{ int linux_reboot(l_int magic1, \
+86	AUE_USELIB	STD	{ int linux_uselib(char *library); }
+87	AUE_SWAPON	NOPROTO	{ int swapon(char *name); }
+88	AUE_REBOOT	STD	{ int linux_reboot(l_int magic1, \
 				    l_int magic2, l_uint cmd, void *arg); }
-89	AUE_NULL	STD	{ int linux_readdir(l_uint fd, \
+89	AUE_GETDIRENTRIES	STD { int linux_readdir(l_uint fd, \
 				    struct l_dirent *dent, l_uint count); }
-90	AUE_NULL	MSTD	{ int linux_mmap(struct l_mmap_argv *ptr); }
-91	AUE_NULL	MNOPROTO	{ int munmap(caddr_t addr, int len); }
-92	AUE_NULL	MSTD	{ int linux_truncate(char *path, \
+90	AUE_MMAP	STD	{ int linux_mmap(struct l_mmap_argv *ptr); }
+91	AUE_MUNMAP	NOPROTO	{ int munmap(caddr_t addr, int len); }
+92	AUE_TRUNCATE	STD	{ int linux_truncate(char *path, \
 				    l_ulong length); }
-93	AUE_NULL	MNOPROTO	{ int oftruncate(int fd, long length); }
-94	AUE_NULL	MNOPROTO	{ int fchmod(int fd, int mode); }
-95	AUE_NULL	MNOPROTO	{ int fchown(int fd, int uid, int gid); }
-96	AUE_NULL	MSTD	{ int linux_getpriority(int which, int who); }
-97	AUE_NULL	MNOPROTO { int setpriority(int which, int who, \
+93	AUE_FTRUNCATE	STD	{ int linux_ftruncate(int fd, long length); }
+94	AUE_FCHMOD	NOPROTO	{ int fchmod(int fd, int mode); }
+95	AUE_FCHOWN	NOPROTO	{ int fchown(int fd, int uid, int gid); }
+96	AUE_GETPRIORITY	STD	{ int linux_getpriority(int which, int who); }
+97	AUE_SETPRIORITY	NOPROTO	{ int setpriority(int which, int who, \
 				    int prio); }
-98	AUE_NULL	UNIMPL	profil
-99	AUE_NULL	MSTD	{ int linux_statfs(char *path, \
+98	AUE_PROFILE	UNIMPL	profil
+99	AUE_STATFS	STD	{ int linux_statfs(char *path, \
 				    struct l_statfs_buf *buf); }
-100	AUE_NULL	MSTD	{ int linux_fstatfs(l_uint fd, \
+100	AUE_FSTATFS	STD	{ int linux_fstatfs(l_uint fd, \
 				    struct l_statfs_buf *buf); }
-101	AUE_NULL	MSTD	{ int linux_ioperm(l_ulong start, \
+101	AUE_NULL	STD	{ int linux_ioperm(l_ulong start, \
 				    l_ulong length, l_int enable); }
-102	AUE_NULL	MSTD	{ int linux_socketcall(l_int what, \
+102	AUE_NULL	STD	{ int linux_socketcall(l_int what, \
 				    l_ulong args); }
-103	AUE_NULL	MSTD	{ int linux_syslog(l_int type, char *buf, \
+103	AUE_NULL	STD	{ int linux_syslog(l_int type, char *buf, \
 				    l_int len); }
-104	AUE_NULL	MSTD	{ int linux_setitimer(l_int which, \
+104	AUE_SETITIMER	STD	{ int linux_setitimer(l_int which, \
 				    struct l_itimerval *itv, \
 				    struct l_itimerval *oitv); }
-105	AUE_NULL	MSTD	{ int linux_getitimer(l_int which, \
+105	AUE_GETITIMER	STD	{ int linux_getitimer(l_int which, \
 				    struct l_itimerval *itv); }
-106	AUE_NULL	MSTD	{ int linux_newstat(char *path, \
+106	AUE_STAT	STD	{ int linux_newstat(char *path, \
 				    struct l_newstat *buf); }
-107	AUE_NULL	MSTD	{ int linux_newlstat(char *path, \
+107	AUE_LSTAT	STD	{ int linux_newlstat(char *path, \
 				    struct l_newstat *buf); }
-108	AUE_NULL	MSTD	{ int linux_newfstat(l_uint fd, \
+108	AUE_FSTAT	STD	{ int linux_newfstat(l_uint fd, \
 				    struct l_newstat *buf); }
-109	AUE_NULL	MSTD	{ int linux_uname(void); }
-110	AUE_NULL	MSTD	{ int linux_iopl(l_ulong level); }
-111	AUE_NULL	MSTD	{ int linux_vhangup(void); }
+109	AUE_NULL	STD	{ int linux_uname(void); }
+110	AUE_NULL	STD	{ int linux_iopl(l_ulong level); }
+111	AUE_NULL	STD	{ int linux_vhangup(void); }
 112	AUE_NULL	UNIMPL	idle
-113	AUE_NULL	MSTD	{ int linux_vm86old(void); }
-114	AUE_NULL	MSTD	{ int linux_wait4(l_pid_t pid, \
+113	AUE_NULL	STD	{ int linux_vm86old(void); }
+114	AUE_WAIT4	STD	{ int linux_wait4(l_pid_t pid, \
 				    l_uint *status, l_int options, \
 				    struct l_rusage *rusage); }
-115	AUE_NULL	MSTD	{ int linux_swapoff(void); }
-116	AUE_NULL	MSTD	{ int linux_sysinfo(struct l_sysinfo *info); }
+115	AUE_SWAPOFF	STD	{ int linux_swapoff(void); }
+116	AUE_NULL	STD	{ int linux_sysinfo(struct l_sysinfo *info); }
 117	AUE_NULL	STD	{ int linux_ipc(l_uint what, l_int arg1, \
 				    l_int arg2, l_int arg3, void *ptr, \
 				    l_long arg5); }
-118	AUE_NULL	MNOPROTO	{ int fsync(int fd); }
-119	AUE_NULL	MSTD	{ int linux_sigreturn( \
+118	AUE_FSYNC	NOPROTO	{ int fsync(int fd); }
+119	AUE_SIGRETURN	STD	{ int linux_sigreturn( \
 				    struct l_sigframe *sfp); }
-120	AUE_NULL	MSTD	{ int linux_clone(l_int flags, void *stack); }
-121	AUE_NULL	MNOPROTO { int setdomainname(char *name, int len); }
-122	AUE_NULL	MSTD	{ int linux_newuname( \
+; linux uses some strange calling convention here so we have to use the dummy arg
+120	AUE_RFORK	STD	{ int linux_clone(l_int flags, void *stack, \
+				    void *parent_tidptr, int dummy, void * child_tidptr); }
+121	AUE_SYSCTL	NOPROTO { int setdomainname(char *name, \
+				    int len); }
+122	AUE_NULL	STD	{ int linux_newuname( \
 				    struct l_new_utsname *buf); }
-123	AUE_NULL	MSTD	{ int linux_modify_ldt(l_int func, \
+123	AUE_NULL	STD	{ int linux_modify_ldt(l_int func, \
 				    void *ptr, l_ulong bytecount); }
-124	AUE_NULL	MSTD	{ int linux_adjtimex(void); }
-125	AUE_NULL	MNOPROTO	{ int mprotect(caddr_t addr, int len, \
+124	AUE_ADJTIME	STD	{ int linux_adjtimex(void); }
+125	AUE_MPROTECT	STD	{ int linux_mprotect(caddr_t addr, int len, \
 				    int prot); }
-126	AUE_NULL	MSTD	{ int linux_sigprocmask(l_int how, \
+126	AUE_SIGPROCMASK	STD	{ int linux_sigprocmask(l_int how, \
 				    l_osigset_t *mask, l_osigset_t *omask); }
-127	AUE_NULL	MSTD	{ int linux_create_module(void); }
-128	AUE_NULL	MSTD	{ int linux_init_module(void); }
-129	AUE_NULL	MSTD	{ int linux_delete_module(void); }
-130	AUE_NULL	MSTD	{ int linux_get_kernel_syms(void); }
-131	AUE_NULL	MSTD	{ int linux_quotactl(void); }
-132	AUE_NULL	MNOPROTO	{ int getpgid(int pid); }
-133	AUE_NULL	MNOPROTO	{ int fchdir(int fd); }
-134	AUE_NULL	MSTD	{ int linux_bdflush(void); }
-135	AUE_NULL	MSTD	{ int linux_sysfs(l_int option, \
+127	AUE_NULL	STD	{ int linux_create_module(void); }
+128	AUE_NULL	STD	{ int linux_init_module(void); }
+129	AUE_NULL	STD	{ int linux_delete_module(void); }
+130	AUE_NULL	STD	{ int linux_get_kernel_syms(void); }
+131	AUE_QUOTACTL	STD	{ int linux_quotactl(void); }
+132	AUE_GETPGID	NOPROTO	{ int getpgid(int pid); }
+133	AUE_FCHDIR	NOPROTO	{ int fchdir(int fd); }
+134	AUE_BDFLUSH	STD	{ int linux_bdflush(void); }
+135	AUE_NULL	STD	{ int linux_sysfs(l_int option, \
 				    l_ulong arg1, l_ulong arg2); }
-136	AUE_NULL	MSTD	{ int linux_personality(l_ulong per); }
+136	AUE_PERSONALITY	STD	{ int linux_personality(l_ulong per); }
 137	AUE_NULL	UNIMPL	afs_syscall
-138	AUE_NULL	MSTD	{ int linux_setfsuid16(l_uid16_t uid); }
-139	AUE_NULL	MSTD	{ int linux_setfsgid16(l_gid16_t gid); }
-140	AUE_NULL	MSTD	{ int linux_llseek(l_int fd, l_ulong ohigh, \
+138	AUE_SETFSUID	STD	{ int linux_setfsuid16(l_uid16_t uid); }
+139	AUE_SETFSGID	STD	{ int linux_setfsgid16(l_gid16_t gid); }
+140	AUE_LSEEK	STD	{ int linux_llseek(l_int fd, l_ulong ohigh, \
 				    l_ulong olow, l_loff_t *res, \
 				    l_uint whence); }
-141	AUE_NULL	STD	{ int linux_getdents(l_uint fd, void *dent, \
-				    l_uint count); }
-142	AUE_NULL	MSTD	{ int linux_select(l_int nfds, \
+141	AUE_GETDIRENTRIES	STD { int linux_getdents(l_uint fd, \
+				    void *dent, l_uint count); }
+142	AUE_SELECT	STD	{ int linux_select(l_int nfds, \
 				    l_fd_set *readfds, l_fd_set *writefds, \
 				    l_fd_set *exceptfds, \
 				    struct l_timeval *timeout); }
-143	AUE_NULL	MNOPROTO	{ int flock(int fd, int how); }
-144	AUE_NULL	MSTD	{ int linux_msync(l_ulong addr, \
+143	AUE_FLOCK	NOPROTO	{ int flock(int fd, int how); }
+144	AUE_MSYNC	STD	{ int linux_msync(l_ulong addr, \
 				    l_size_t len, l_int fl); }
-145	AUE_NULL	MNOPROTO	{ int readv(int fd, struct iovec *iovp, \
+145	AUE_READV	NOPROTO	{ int readv(int fd, struct iovec *iovp, \
 				    u_int iovcnt); }
-146	AUE_NULL	MNOPROTO	{ int writev(int fd, struct iovec *iovp, \
+146	AUE_WRITEV	NOPROTO	{ int writev(int fd, struct iovec *iovp, \
 				    u_int iovcnt); }
-147	AUE_NULL	MSTD	{ int linux_getsid(l_pid_t pid); }
-148	AUE_NULL	MSTD	{ int linux_fdatasync(l_uint fd); }
-149	AUE_NULL	MSTD	{ int linux_sysctl( \
+147	AUE_GETSID	STD	{ int linux_getsid(l_pid_t pid); }
+148	AUE_NULL	STD	{ int linux_fdatasync(l_uint fd); }
+149	AUE_SYSCTL	STD	{ int linux_sysctl( \
 				    struct l___sysctl_args *args); }
-150	AUE_NULL	MNOPROTO { int mlock(const void *addr, size_t len); }
-151	AUE_NULL	MNOPROTO { int munlock(const void *addr, size_t len); }
-152	AUE_NULL	MNOPROTO { int mlockall(int how); }
-153	AUE_NULL	MNOPROTO { int munlockall(void); }
-154	AUE_NULL	MNOPROTO { int sched_setparam(pid_t pid, \
+150	AUE_MLOCK	NOPROTO	{ int mlock(const void *addr, size_t len); }
+151	AUE_MUNLOCK	NOPROTO	{ int munlock(const void *addr, size_t len); }
+152	AUE_MLOCKALL	NOPROTO	{ int mlockall(int how); }
+153	AUE_MUNLOCKALL	NOPROTO	{ int munlockall(void); }
+154	AUE_SCHED_SETPARAM	NOPROTO	{ int sched_setparam(pid_t pid, \
 				    const struct sched_param *param); }
-155	AUE_NULL	MNOPROTO { int sched_getparam(pid_t pid, \
+155	AUE_SCHED_GETPARAM	NOPROTO	{ int sched_getparam(pid_t pid, \
 				    struct sched_param *param); }
-156	AUE_NULL	MSTD	{ int linux_sched_setscheduler(l_pid_t pid, \
-				    l_int policy, \
+156	AUE_SCHED_SETSCHEDULER	STD { int linux_sched_setscheduler( \
+				    l_pid_t pid, l_int policy, \
 				    struct l_sched_param *param); }
-157	AUE_NULL	MSTD	{ int linux_sched_getscheduler(l_pid_t pid); }
-158	AUE_NULL	MNOPROTO	{ int sched_yield(void); }
-159	AUE_NULL	MSTD	{ int linux_sched_get_priority_max( \
+157	AUE_SCHED_GETSCHEDULER	STD { int linux_sched_getscheduler( \
+				    l_pid_t pid); }
+158	AUE_NULL	NOPROTO	{ int sched_yield(void); }
+159	AUE_SCHED_GET_PRIORITY_MAX	STD { int linux_sched_get_priority_max( \
 				    l_int policy); }
-160	AUE_NULL	MSTD	{ int linux_sched_get_priority_min( \
+160	AUE_SCHED_GET_PRIORITY_MIN	STD { int linux_sched_get_priority_min( \
 				    l_int policy); }
-161	AUE_NULL	MNOPROTO { int sched_rr_get_interval(l_pid_t pid, \
+161	AUE_SCHED_RR_GET_INTERVAL	NOPROTO	{ int sched_rr_get_interval(l_pid_t pid, \
 				    struct l_timespec *interval); }
-162	AUE_NULL	MNOPROTO { int nanosleep( \
-				    const struct timespec *rqtp, \
-				    struct timespec *rmtp); }
-163	AUE_NULL	MSTD	{ int linux_mremap(l_ulong addr, \
+162	AUE_NULL	STD	{ int linux_nanosleep( \
+				    const struct l_timespec *rqtp, \
+				    struct l_timespec *rmtp); }
+163	AUE_NULL	STD	{ int linux_mremap(l_ulong addr, \
 				    l_ulong old_len, l_ulong new_len, \
 				    l_ulong flags, l_ulong new_addr); }
-164	AUE_NULL	MSTD	{ int linux_setresuid16(l_uid16_t ruid, \
+164	AUE_SETRESUID	STD	{ int linux_setresuid16(l_uid16_t ruid, \
 				    l_uid16_t euid, l_uid16_t suid); }
-165	AUE_NULL	MSTD	{ int linux_getresuid16(l_uid16_t *ruid, \
+165	AUE_GETRESUID	STD	{ int linux_getresuid16(l_uid16_t *ruid, \
 				    l_uid16_t *euid, l_uid16_t *suid); }
-166	AUE_NULL	MSTD	{ int linux_vm86(void); }
-167	AUE_NULL	MSTD	{ int linux_query_module(void); }
-168	AUE_NULL	MNOPROTO	{ int poll(struct pollfd*, \
+166	AUE_NULL	STD	{ int linux_vm86(void); }
+167	AUE_NULL	STD	{ int linux_query_module(void); }
+168	AUE_POLL	NOPROTO	{ int poll(struct pollfd*, \
 				    unsigned int nfds, long timeout); }
-169	AUE_NULL	MSTD	{ int linux_nfsservctl(void); }
-170	AUE_NULL	MSTD	{ int linux_setresgid16(l_gid16_t rgid, \
+169	AUE_NULL	STD	{ int linux_nfsservctl(void); }
+170	AUE_SETRESGID	STD	{ int linux_setresgid16(l_gid16_t rgid, \
 				    l_gid16_t egid, l_gid16_t sgid); }
-171	AUE_NULL	MSTD	{ int linux_getresgid16(l_gid16_t *rgid, \
+171	AUE_GETRESGID	STD	{ int linux_getresgid16(l_gid16_t *rgid, \
 				    l_gid16_t *egid, l_gid16_t *sgid); }
-172	AUE_NULL	MSTD	{ int linux_prctl(void); }
-173	AUE_NULL	MSTD	{ int linux_rt_sigreturn( \
+172	AUE_PRCTL	STD	{ int linux_prctl(l_int option, l_int arg2, l_int arg3, \
+				    l_int arg4, l_int arg5); }
+173	AUE_NULL	STD	{ int linux_rt_sigreturn( \
 				    struct l_ucontext *ucp); }
-174	AUE_NULL	MSTD	{ int linux_rt_sigaction(l_int sig, \
+174	AUE_NULL	STD	{ int linux_rt_sigaction(l_int sig, \
 				    l_sigaction_t *act, l_sigaction_t *oact, \
 				    l_size_t sigsetsize); }
-175	AUE_NULL	MSTD	{ int linux_rt_sigprocmask(l_int how, \
+175	AUE_NULL	STD	{ int linux_rt_sigprocmask(l_int how, \
 				    l_sigset_t *mask, l_sigset_t *omask, \
 				    l_size_t sigsetsize); }
-176	AUE_NULL	MSTD	{ int linux_rt_sigpending(void); }
-177	AUE_NULL	MSTD	{ int linux_rt_sigtimedwait(void); }
-178	AUE_NULL	MSTD	{ int linux_rt_sigqueueinfo(void); }
-179	AUE_NULL	MSTD	{ int linux_rt_sigsuspend( \
+176	AUE_NULL	STD	{ int linux_rt_sigpending(l_sigset_t *set, \
+				    l_size_t sigsetsize); }
+177	AUE_NULL	STD	{ int linux_rt_sigtimedwait(l_sigset_t *mask, \
+				    l_siginfo_t *ptr, \
+				    struct l_timeval *timeout, \
+				    l_size_t sigsetsize); }
+178	AUE_NULL	STD	{ int linux_rt_sigqueueinfo(void); }
+179	AUE_NULL	STD	{ int linux_rt_sigsuspend( \
 				    l_sigset_t *newset, \
 				    l_size_t sigsetsize); }
-180	AUE_NULL	MSTD	{ int linux_pread(l_uint fd, char *buf, \
+180	AUE_PREAD	STD	{ int linux_pread(l_uint fd, char *buf, \
 				    l_size_t nbyte, l_loff_t offset); }
-181	AUE_NULL	MSTD	{ int linux_pwrite(l_uint fd, char *buf, \
+181	AUE_PWRITE	STD	{ int linux_pwrite(l_uint fd, char *buf, \
 				    l_size_t nbyte, l_loff_t offset); }
-182	AUE_NULL	MSTD	{ int linux_chown16(char *path, \
+182	AUE_CHOWN	STD	{ int linux_chown16(char *path, \
 				    l_uid16_t uid, l_gid16_t gid); }
-183	AUE_NULL	MSTD	{ int linux_getcwd(char *buf, \
+183	AUE_GETCWD	STD	{ int linux_getcwd(char *buf, \
 				    l_ulong bufsize); }
-184	AUE_NULL	MSTD	{ int linux_capget(void); }
-185	AUE_NULL	MSTD	{ int linux_capset(void); }
-186	AUE_NULL	MSTD	{ int linux_sigaltstack(l_stack_t *uss, \
+184	AUE_CAPGET	STD	{ int linux_capget(void); }
+185	AUE_CAPSET	STD	{ int linux_capset(void); }
+186	AUE_NULL	STD	{ int linux_sigaltstack(l_stack_t *uss, \
 				    l_stack_t *uoss); }
-187	AUE_NULL	MSTD	{ int linux_sendfile(void); }
-188	AUE_NULL	UNIMPL	getpmsg
-189	AUE_NULL	UNIMPL	putpmsg
-190	AUE_NULL	MSTD	{ int linux_vfork(void); }
-191	AUE_NULL	MSTD	{ int linux_getrlimit(l_uint resource, \
+187	AUE_SENDFILE	STD	{ int linux_sendfile(void); }
+188	AUE_GETPMSG	UNIMPL	getpmsg
+189	AUE_PUTPMSG	UNIMPL	putpmsg
+190	AUE_VFORK	STD	{ int linux_vfork(void); }
+191	AUE_GETRLIMIT	STD	{ int linux_getrlimit(l_uint resource, \
 				    struct l_rlimit *rlim); }
-192	AUE_NULL	MSTD	{ int linux_mmap2(l_ulong addr, l_ulong len, \
+192	AUE_MMAP	STD	{ int linux_mmap2(l_ulong addr, l_ulong len, \
 				    l_ulong prot, l_ulong flags, l_ulong fd, \
 				    l_ulong pgoff); }
-193	AUE_NULL	MSTD	{ int linux_truncate64(char *path, \
+193	AUE_TRUNCATE	STD	{ int linux_truncate64(char *path, \
 				    l_loff_t length); }
-194	AUE_NULL	MSTD	{ int linux_ftruncate64(l_uint fd, \
+194	AUE_FTRUNCATE	STD	{ int linux_ftruncate64(l_uint fd, \
 				    l_loff_t length); }
-195	AUE_NULL	MSTD	{ int linux_stat64(char *filename, \
+195	AUE_STAT	STD	{ int linux_stat64(char *filename, \
 				    struct l_stat64 *statbuf, l_long flags); }
-196	AUE_NULL	MSTD	{ int linux_lstat64(char *filename, \
+196	AUE_LSTAT	STD	{ int linux_lstat64(char *filename, \
 				    struct l_stat64 *statbuf, l_long flags); }
-197	AUE_NULL	MSTD	{ int linux_fstat64(l_ulong fd, \
+197	AUE_FSTAT	STD	{ int linux_fstat64(l_ulong fd, \
 				    struct l_stat64 *statbuf, l_long flags); }
-198	AUE_NULL	MSTD	{ int linux_lchown(char *path, l_uid_t uid, \
+198	AUE_LCHOWN	STD	{ int linux_lchown(char *path, l_uid_t uid, \
 				    l_gid_t gid); }
-199	AUE_NULL	MSTD	{ int linux_getuid(void); }
-200	AUE_NULL	MSTD	{ int linux_getgid(void); }
-201	AUE_NULL	MNOPROTO { int geteuid(void); }
-202	AUE_NULL	MNOPROTO { int getegid(void); }
-203	AUE_NULL	MNOPROTO { int setreuid(uid_t ruid, uid_t euid); }
-204	AUE_NULL	MNOPROTO { int setregid(gid_t rgid, gid_t egid); }
-205	AUE_NULL	MSTD	{ int linux_getgroups(l_int gidsetsize, \
+199	AUE_GETUID	STD	{ int linux_getuid(void); }
+200	AUE_GETGID	STD	{ int linux_getgid(void); }
+201	AUE_GETEUID	NOPROTO	{ int geteuid(void); }
+202	AUE_GETEGID	NOPROTO	{ int getegid(void); }
+203	AUE_SETREUID	NOPROTO	{ int setreuid(uid_t ruid, uid_t euid); }
+204	AUE_SETREGID	NOPROTO	{ int setregid(gid_t rgid, gid_t egid); }
+205	AUE_GETGROUPS	STD	{ int linux_getgroups(l_int gidsetsize, \
 				    l_gid_t *grouplist); }
-206	AUE_NULL	MSTD	{ int linux_setgroups(l_int gidsetsize, \
+206	AUE_SETGROUPS	STD	{ int linux_setgroups(l_int gidsetsize, \
 				    l_gid_t *grouplist); }
-207	AUE_NULL	NODEF	fchown fchown fchown_args int
-208	AUE_NULL	MNOPROTO { int setresuid(uid_t ruid, uid_t euid, \
+207	AUE_FCHOWN	NODEF	fchown fchown fchown_args int
+208	AUE_SETRESUID	NOPROTO	{ int setresuid(uid_t ruid, uid_t euid, \
 				    uid_t suid); }
-209	AUE_NULL	MNOPROTO { int getresuid(uid_t *ruid, uid_t *euid, \
+209	AUE_GETRESUID	NOPROTO	{ int getresuid(uid_t *ruid, uid_t *euid, \
 				    uid_t *suid); }
-210	AUE_NULL	MNOPROTO { int setresgid(gid_t rgid, gid_t egid, \
+210	AUE_SETRESGID	NOPROTO	{ int setresgid(gid_t rgid, gid_t egid, \
 				    gid_t sgid); }
-211	AUE_NULL	MNOPROTO { int getresgid(gid_t *rgid, gid_t *egid, \
+211	AUE_GETRESGID	NOPROTO	{ int getresgid(gid_t *rgid, gid_t *egid, \
 				    gid_t *sgid); }
-212	AUE_NULL	MSTD	{ int linux_chown(char *path, l_uid_t uid, \
+212	AUE_CHOWN	STD	{ int linux_chown(char *path, l_uid_t uid, \
 				    l_gid_t gid); }
-213	AUE_NULL	MNOPROTO { int setuid(uid_t uid); }
-214	AUE_NULL	MNOPROTO { int setgid(gid_t gid); }
-215	AUE_NULL	MSTD	{ int linux_setfsuid(l_uid_t uid); }
-216	AUE_NULL	MSTD	{ int linux_setfsgid(l_gid_t gid); }
-217	AUE_NULL	MSTD	{ int linux_pivot_root(char *new_root, \
+213	AUE_SETUID	NOPROTO	{ int setuid(uid_t uid); }
+214	AUE_SETGID	NOPROTO	{ int setgid(gid_t gid); }
+215	AUE_SETFSUID	STD	{ int linux_setfsuid(l_uid_t uid); }
+216	AUE_SETFSGID	STD	{ int linux_setfsgid(l_gid_t gid); }
+217	AUE_PIVOT_ROOT	STD	{ int linux_pivot_root(char *new_root, \
 				    char *put_old); }
-218	AUE_NULL	MSTD	{ int linux_mincore(l_ulong start, \
+218	AUE_MINCORE	STD	{ int linux_mincore(l_ulong start, \
 				    l_size_t len, u_char *vec); }
-219	AUE_NULL	MNOPROTO { int madvise(void *addr, size_t len, \
+219	AUE_MADVISE	NOPROTO	{ int madvise(void *addr, size_t len, \
 				    int behav); }
-220	AUE_NULL	STD	{ int linux_getdents64(l_uint fd, \
+220	AUE_GETDIRENTRIES	STD { int linux_getdents64(l_uint fd, \
 				    void *dirent, l_uint count); }
-221	AUE_NULL	MSTD	{ int linux_fcntl64(l_uint fd, l_uint cmd, \
+221	AUE_FCNTL	STD	{ int linux_fcntl64(l_uint fd, l_uint cmd, \
 				    l_ulong arg); }
 222	AUE_NULL	UNIMPL
 223	AUE_NULL	UNIMPL
-224	AUE_NULL	MSTD	{ long linux_gettid(void); }
+224	AUE_NULL	STD	{ long linux_gettid(void); }
 225	AUE_NULL	UNIMPL	linux_readahead
-226	AUE_NULL	MSTD	{ int linux_setxattr(void); }
-227	AUE_NULL	MSTD	{ int linux_lsetxattr(void); }
-228	AUE_NULL	MSTD	{ int linux_fsetxattr(void); }
-229	AUE_NULL	MSTD	{ int linux_getxattr(void); }
-230	AUE_NULL	MSTD	{ int linux_lgetxattr(void); }
-231	AUE_NULL	MSTD	{ int linux_fgetxattr(void); }
-232	AUE_NULL	MSTD	{ int linux_listxattr(void); }
-233	AUE_NULL	MSTD	{ int linux_llistxattr(void); }
-234	AUE_NULL	MSTD	{ int linux_flistxattr(void); }
-235	AUE_NULL	MSTD	{ int linux_removexattr(void); }
-236	AUE_NULL	MSTD	{ int linux_lremovexattr(void); }
-237	AUE_NULL	MSTD	{ int linux_fremovexattr(void); }
-238	AUE_NULL	MSTD	{ int linux_tkill(int tid, int sig); }
-239	AUE_NULL	UNIMPL	linux_sendfile64
-240	AUE_NULL	UNIMPL	linux_futex
+226	AUE_NULL	STD	{ int linux_setxattr(void); }
+227	AUE_NULL	STD	{ int linux_lsetxattr(void); }
+228	AUE_NULL	STD	{ int linux_fsetxattr(void); }
+229	AUE_NULL	STD	{ int linux_getxattr(void); }
+230	AUE_NULL	STD	{ int linux_lgetxattr(void); }
+231	AUE_NULL	STD	{ int linux_fgetxattr(void); }
+232	AUE_NULL	STD	{ int linux_listxattr(void); }
+233	AUE_NULL	STD	{ int linux_llistxattr(void); }
+234	AUE_NULL	STD	{ int linux_flistxattr(void); }
+235	AUE_NULL	STD	{ int linux_removexattr(void); }
+236	AUE_NULL	STD	{ int linux_lremovexattr(void); }
+237	AUE_NULL	STD	{ int linux_fremovexattr(void); }
+238	AUE_NULL	STD	{ int linux_tkill(int tid, int sig); }
+239	AUE_SENDFILE	UNIMPL	linux_sendfile64
+240	AUE_NULL	STD	{ int linux_sys_futex(void *uaddr, int op, int val, \
+					struct l_timespec *timeout, void *uaddr2, int val3); }
 241	AUE_NULL	UNIMPL	linux_sched_setaffinity
-242	AUE_NULL	UNIMPL	linux_sched_getaffinity
-243	AUE_NULL	MSTD	{ int linux_set_thread_area(void *entry); }
-244	AUE_NULL	UNIMPL	linux_get_thread_area
+242	AUE_NULL	STD	{ int linux_sched_getaffinity(l_pid_t pid, l_uint len, \
+					l_ulong *user_mask_ptr); }
+243	AUE_NULL	STD	{ int linux_set_thread_area(struct l_user_desc *desc); }
+244	AUE_NULL	STD	{ int linux_get_thread_area(struct l_user_desc *desc); }
 245	AUE_NULL	UNIMPL	linux_io_setup
 246	AUE_NULL	UNIMPL	linux_io_destroy
 247	AUE_NULL	UNIMPL	linux_io_getevents
 248	AUE_NULL	UNIMPL	linux_io_submit
 249	AUE_NULL	UNIMPL	linux_io_cancel
-250	AUE_NULL	MSTD	{ int linux_fadvise64(void); }
+250	AUE_NULL	STD	{ int linux_fadvise64(void); }
 251	AUE_NULL	UNIMPL
-252	AUE_NULL	MNOPROTO { void sys_exit(int rval); } exit_group \
-				    sys_exit_args void
-253	AUE_NULL	UNIMPL	linux_lookup_dcookie
-254	AUE_NULL	UNIMPL	linux_epoll_create
-255	AUE_NULL	UNIMPL	linux_epoll_ctl
-256	AUE_NULL	UNIMPL	linux_epoll_wait
-257	AUE_NULL	UNIMPL	linux_remap_file_pages
-258	AUE_NULL	UNIMPL	linux_set_tid_address
-259	AUE_NULL	UNIMPL	linux_timer_create
-260	AUE_NULL	UNIMPL	linux_timer_settime
-261	AUE_NULL	UNIMPL	linux_timer_gettime
-262	AUE_NULL	UNIMPL	linux_timer_getoverrun
-263	AUE_NULL	UNIMPL	linux_timer_delete
-264	AUE_NULL	UNIMPL	linux_clock_settime
-265	AUE_NULL	UNIMPL	linux_clock_gettime
-266	AUE_NULL	UNIMPL	linux_clock_getres
-267	AUE_NULL	UNIMPL	linux_clock_nanosleep
+252	AUE_EXIT	STD	{ int linux_exit_group(int error_code); }
+253	AUE_NULL	STD	{ int linux_lookup_dcookie(void); }
+254	AUE_NULL	STD	{ int linux_epoll_create(void); }
+255	AUE_NULL	STD	{ int linux_epoll_ctl(void); }
+256	AUE_NULL	STD	{ int linux_epoll_wait(void); }
+257	AUE_NULL	STD	{ int linux_remap_file_pages(void); }
+258	AUE_NULL	STD	{ int linux_set_tid_address(int *tidptr); }
+259	AUE_NULL	STD	{ int linux_timer_create(clockid_t clock_id, \
+					struct sigevent *evp, l_timer_t *timerid); }
+260	AUE_NULL	STD	{ int linux_timer_settime(l_timer_t timerid, \
+					const struct itimerspec *new, struct itimerspec *old); }
+261	AUE_NULL	STD	{ int linux_timer_gettime(l_timer_t timerid, struct itimerspec *setting); }
+262	AUE_NULL	STD	{ int linux_timer_getoverrun(l_timer_t timerid); }
+263	AUE_NULL	STD	{ int linux_timer_delete(l_timer_t timerid); }
+264	AUE_CLOCK_SETTIME	STD	{ int linux_clock_settime(clockid_t which, struct l_timespec *tp); }
+265	AUE_NULL	STD	{ int linux_clock_gettime(clockid_t which, struct l_timespec *tp); }
+266	AUE_NULL	STD	{ int linux_clock_getres(clockid_t which, struct l_timespec *tp); }
+267	AUE_NULL	STD	{ int linux_clock_nanosleep(clockid_t which, int flags, \
+					struct l_timespec *rqtp, struct l_timespec *rmtp); }
+268	AUE_STATFS	STD	{ int linux_statfs64(char *path, size_t bufsize, struct l_statfs64_buf *buf); }
+269	AUE_FSTATFS	STD	{ int linux_fstatfs64(void); }
+270	AUE_NULL	STD	{ int linux_tgkill(int tgid, int pid, int sig); }
+271	AUE_UTIMES	STD	{ int linux_utimes(char *fname, \
+					struct l_timeval *tptr); }
+272	AUE_NULL	STD	{ int linux_fadvise64_64(void); }
+273	AUE_NULL	UNIMPL
+274	AUE_NULL	STD	{ int linux_mbind(void); }
+275	AUE_NULL	STD	{ int linux_get_mempolicy(void); }
+276	AUE_NULL	STD	{ int linux_set_mempolicy(void); }
+277	AUE_NULL	STD	{ int linux_mq_open(const char *name, int oflag, mode_t mode, \
+					struct mq_attr *attr); }
+278	AUE_NULL	STD	{ int linux_mq_unlink(const char *name); }
+279	AUE_NULL	STD	{ int linux_mq_timedsend(l_mqd_t mqd, const char *msg_ptr, \
+					size_t msg_len, unsigned int msg_prio, const struct \
+					l_timespec *abs_timeout); }
+280	AUE_NULL	STD	{ int linux_mq_timedreceive(l_mqd_t mqd, char *msg_ptr, \
+					size_t msg_len, unsigned int msg_prio, const struct \
+					l_timespec *abs_timeout); }
+281	AUE_NULL	STD	{ int linux_mq_notify(l_mqd_t mqd, const struct l_timespec *abs_timeout); }
+282	AUE_NULL	STD	{ int linux_mq_getsetattr(l_mqd_t mqd, const struct mq_attr *attr, \
+					struct mq_attr *oattr); }
+283	AUE_NULL	STD	{ int linux_kexec_load(void); }
+284	AUE_NULL	STD	{ int linux_waitid(void); }
+285	AUE_NULL	UNIMPL
+286	AUE_NULL	STD	{ int linux_add_key(void); }
+287	AUE_NULL	STD	{ int linux_request_key(void); }
+288	AUE_NULL	STD	{ int linux_keyctl(void); }
+289	AUE_NULL	STD	{ int linux_ioprio_set(void); }
+290	AUE_NULL	STD	{ int linux_ioprio_get(void); }
+291	AUE_NULL	STD	{ int linux_inotify_init(void); }
+292	AUE_NULL	STD	{ int linux_inotify_add_watch(void); }
+293	AUE_NULL	STD	{ int linux_inotify_rm_watch(void); }
+294	AUE_NULL	STD	{ int linux_migrate_pages(void); }
+295	AUE_OPEN_RWTC	STD	{ int linux_openat(l_int dfd, char *filename, \
+					l_int flags, l_int mode); }
+296	AUE_NULL	STD	{ int linux_mkdirat(void); }
+297	AUE_NULL	STD	{ int linux_mknodat(void); }
+298	AUE_NULL	STD	{ int linux_fchownat(void); }
+299	AUE_NULL	STD	{ int linux_futimesat(void); }
+300	AUE_NULL	STD	{ int linux_fstatat64(void); }
+301	AUE_NULL	STD	{ int linux_unlinkat(void); }
+302	AUE_NULL	STD	{ int linux_renameat(void); }
+303	AUE_NULL	STD	{ int linux_linkat(void); }
+304	AUE_NULL	STD	{ int linux_symlinkat(void); }
+305	AUE_NULL	STD	{ int linux_readlinkat(void); }
+306	AUE_NULL	STD	{ int linux_fchmodat(void); }
+307	AUE_NULL	STD	{ int linux_faccessat(void); }
+308	AUE_NULL	STD	{ int linux_pselect6(void); }
+309	AUE_NULL	STD	{ int linux_ppoll(void); }
+310	AUE_NULL	STD	{ int linux_unshare(void); }
Index: syscalls.conf
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/syscalls.conf,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/syscalls.conf -L sys/i386/linux/syscalls.conf -u -r1.1.1.1 -r1.2
--- sys/i386/linux/syscalls.conf
+++ sys/i386/linux/syscalls.conf
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/i386/linux/syscalls.conf,v 1.6 2003/12/24 00:32:07 peter Exp $
+# $FreeBSD: src/sys/i386/linux/syscalls.conf,v 1.7 2006/08/15 17:25:55 jhb Exp $
 sysnames="/dev/null"
 sysproto="linux_proto.h"
 sysproto_h=_LINUX_SYSPROTO_H_
@@ -8,4 +8,4 @@
 syscallprefix="LINUX_SYS_"
 switchname="linux_sysent"
 namesname="linux_syscallnames"
-sysvec="\n"
+systrace="/dev/null"
Index: linux_sysent.c
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/linux_sysent.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/linux_sysent.c -L sys/i386/linux/linux_sysent.c -u -r1.1.1.1 -r1.2
--- sys/i386/linux/linux_sysent.c
+++ sys/i386/linux/linux_sysent.c
@@ -2,12 +2,11 @@
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/i386/linux/linux_sysent.c,v 1.65.2.1 2005/07/20 17:43:53 jhb Exp $
- * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.61.2.1 2005/07/20 17:42:15 jhb Exp 
+ * $FreeBSD: src/sys/i386/linux/linux_sysent.c,v 1.94 2007/09/18 19:51:49 dwmalone Exp $
+ * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.89 2007/09/18 19:50:33 dwmalone Exp 
  */
 
 #include <bsm/audit_kevents.h>
-#include "opt_compat.h"
 #include <sys/param.h>
 #include <sys/sysent.h>
 #include <sys/sysproto.h>
@@ -20,272 +19,315 @@
 /* The casts are bogus but will do for now. */
 struct sysent linux_sysent[] = {
 #define	nosys	linux_nosys
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 0 = setup */
-	{ SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_NULL },	/* 1 = exit */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_fork, AUE_NULL },	/* 2 = linux_fork */
-	{ SYF_MPSAFE | AS(read_args), (sy_call_t *)read, AUE_NULL },	/* 3 = read */
-	{ SYF_MPSAFE | AS(write_args), (sy_call_t *)write, AUE_NULL },	/* 4 = write */
-	{ SYF_MPSAFE | AS(linux_open_args), (sy_call_t *)linux_open, AUE_NULL },	/* 5 = linux_open */
-	{ SYF_MPSAFE | AS(close_args), (sy_call_t *)close, AUE_NULL },	/* 6 = close */
-	{ SYF_MPSAFE | AS(linux_waitpid_args), (sy_call_t *)linux_waitpid, AUE_NULL },	/* 7 = linux_waitpid */
-	{ SYF_MPSAFE | AS(linux_creat_args), (sy_call_t *)linux_creat, AUE_NULL },	/* 8 = linux_creat */
-	{ SYF_MPSAFE | AS(linux_link_args), (sy_call_t *)linux_link, AUE_NULL },	/* 9 = linux_link */
-	{ SYF_MPSAFE | AS(linux_unlink_args), (sy_call_t *)linux_unlink, AUE_NULL },	/* 10 = linux_unlink */
-	{ SYF_MPSAFE | AS(linux_execve_args), (sy_call_t *)linux_execve, AUE_NULL },	/* 11 = linux_execve */
-	{ SYF_MPSAFE | AS(linux_chdir_args), (sy_call_t *)linux_chdir, AUE_NULL },	/* 12 = linux_chdir */
-	{ SYF_MPSAFE | AS(linux_time_args), (sy_call_t *)linux_time, AUE_NULL },	/* 13 = linux_time */
-	{ SYF_MPSAFE | AS(linux_mknod_args), (sy_call_t *)linux_mknod, AUE_NULL },	/* 14 = linux_mknod */
-	{ SYF_MPSAFE | AS(linux_chmod_args), (sy_call_t *)linux_chmod, AUE_NULL },	/* 15 = linux_chmod */
-	{ SYF_MPSAFE | AS(linux_lchown16_args), (sy_call_t *)linux_lchown16, AUE_NULL },	/* 16 = linux_lchown16 */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 17 = break */
-	{ SYF_MPSAFE | AS(linux_stat_args), (sy_call_t *)linux_stat, AUE_NULL },	/* 18 = linux_stat */
-	{ SYF_MPSAFE | AS(linux_lseek_args), (sy_call_t *)linux_lseek, AUE_NULL },	/* 19 = linux_lseek */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_getpid, AUE_NULL },	/* 20 = linux_getpid */
-	{ AS(linux_mount_args), (sy_call_t *)linux_mount, AUE_NULL },	/* 21 = linux_mount */
-	{ AS(linux_oldumount_args), (sy_call_t *)linux_oldumount, AUE_NULL },	/* 22 = linux_oldumount */
-	{ SYF_MPSAFE | AS(linux_setuid16_args), (sy_call_t *)linux_setuid16, AUE_NULL },	/* 23 = linux_setuid16 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_getuid16, AUE_NULL },	/* 24 = linux_getuid16 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_stime, AUE_NULL },	/* 25 = linux_stime */
-	{ SYF_MPSAFE | AS(linux_ptrace_args), (sy_call_t *)linux_ptrace, AUE_NULL },	/* 26 = linux_ptrace */
-	{ SYF_MPSAFE | AS(linux_alarm_args), (sy_call_t *)linux_alarm, AUE_NULL },	/* 27 = linux_alarm */
-	{ SYF_MPSAFE | AS(linux_fstat_args), (sy_call_t *)linux_fstat, AUE_NULL },	/* 28 = linux_fstat */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_pause, AUE_NULL },	/* 29 = linux_pause */
-	{ SYF_MPSAFE | AS(linux_utime_args), (sy_call_t *)linux_utime, AUE_NULL },	/* 30 = linux_utime */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 31 = stty */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 32 = gtty */
-	{ SYF_MPSAFE | AS(linux_access_args), (sy_call_t *)linux_access, AUE_NULL },	/* 33 = linux_access */
-	{ SYF_MPSAFE | AS(linux_nice_args), (sy_call_t *)linux_nice, AUE_NULL },	/* 34 = linux_nice */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 35 = ftime */
-	{ SYF_MPSAFE | 0, (sy_call_t *)sync, AUE_NULL },	/* 36 = sync */
-	{ SYF_MPSAFE | AS(linux_kill_args), (sy_call_t *)linux_kill, AUE_NULL },	/* 37 = linux_kill */
-	{ SYF_MPSAFE | AS(linux_rename_args), (sy_call_t *)linux_rename, AUE_NULL },	/* 38 = linux_rename */
-	{ SYF_MPSAFE | AS(linux_mkdir_args), (sy_call_t *)linux_mkdir, AUE_NULL },	/* 39 = linux_mkdir */
-	{ SYF_MPSAFE | AS(linux_rmdir_args), (sy_call_t *)linux_rmdir, AUE_NULL },	/* 40 = linux_rmdir */
-	{ SYF_MPSAFE | AS(dup_args), (sy_call_t *)dup, AUE_NULL },	/* 41 = dup */
-	{ SYF_MPSAFE | AS(linux_pipe_args), (sy_call_t *)linux_pipe, AUE_NULL },	/* 42 = linux_pipe */
-	{ SYF_MPSAFE | AS(linux_times_args), (sy_call_t *)linux_times, AUE_NULL },	/* 43 = linux_times */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 44 = prof */
-	{ AS(linux_brk_args), (sy_call_t *)linux_brk, AUE_NULL },	/* 45 = linux_brk */
-	{ SYF_MPSAFE | AS(linux_setgid16_args), (sy_call_t *)linux_setgid16, AUE_NULL },	/* 46 = linux_setgid16 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_getgid16, AUE_NULL },	/* 47 = linux_getgid16 */
-	{ SYF_MPSAFE | AS(linux_signal_args), (sy_call_t *)linux_signal, AUE_NULL },	/* 48 = linux_signal */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_geteuid16, AUE_NULL },	/* 49 = linux_geteuid16 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_getegid16, AUE_NULL },	/* 50 = linux_getegid16 */
-	{ SYF_MPSAFE | AS(acct_args), (sy_call_t *)acct, AUE_NULL },	/* 51 = acct */
-	{ AS(linux_umount_args), (sy_call_t *)linux_umount, AUE_NULL },	/* 52 = linux_umount */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 53 = lock */
-	{ AS(linux_ioctl_args), (sy_call_t *)linux_ioctl, AUE_NULL },	/* 54 = linux_ioctl */
-	{ SYF_MPSAFE | AS(linux_fcntl_args), (sy_call_t *)linux_fcntl, AUE_NULL },	/* 55 = linux_fcntl */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 56 = mpx */
-	{ SYF_MPSAFE | AS(setpgid_args), (sy_call_t *)setpgid, AUE_NULL },	/* 57 = setpgid */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 58 = ulimit */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_olduname, AUE_NULL },	/* 59 = linux_olduname */
-	{ SYF_MPSAFE | AS(umask_args), (sy_call_t *)umask, AUE_NULL },	/* 60 = umask */
-	{ SYF_MPSAFE | AS(chroot_args), (sy_call_t *)chroot, AUE_NULL },	/* 61 = chroot */
-	{ SYF_MPSAFE | AS(linux_ustat_args), (sy_call_t *)linux_ustat, AUE_NULL },	/* 62 = linux_ustat */
-	{ SYF_MPSAFE | AS(dup2_args), (sy_call_t *)dup2, AUE_NULL },	/* 63 = dup2 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)getppid, AUE_NULL },	/* 64 = getppid */
-	{ SYF_MPSAFE | 0, (sy_call_t *)getpgrp, AUE_NULL },	/* 65 = getpgrp */
-	{ SYF_MPSAFE | 0, (sy_call_t *)setsid, AUE_NULL },	/* 66 = setsid */
-	{ SYF_MPSAFE | AS(linux_sigaction_args), (sy_call_t *)linux_sigaction, AUE_NULL },	/* 67 = linux_sigaction */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_sgetmask, AUE_NULL },	/* 68 = linux_sgetmask */
-	{ SYF_MPSAFE | AS(linux_ssetmask_args), (sy_call_t *)linux_ssetmask, AUE_NULL },	/* 69 = linux_ssetmask */
-	{ SYF_MPSAFE | AS(linux_setreuid16_args), (sy_call_t *)linux_setreuid16, AUE_NULL },	/* 70 = linux_setreuid16 */
-	{ SYF_MPSAFE | AS(linux_setregid16_args), (sy_call_t *)linux_setregid16, AUE_NULL },	/* 71 = linux_setregid16 */
-	{ SYF_MPSAFE | AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend, AUE_NULL },	/* 72 = linux_sigsuspend */
-	{ SYF_MPSAFE | AS(linux_sigpending_args), (sy_call_t *)linux_sigpending, AUE_NULL },	/* 73 = linux_sigpending */
-	{ SYF_MPSAFE | AS(sethostname_args), (sy_call_t *)osethostname, AUE_NULL },	/* 74 = osethostname */
-	{ SYF_MPSAFE | AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit, AUE_NULL },	/* 75 = linux_setrlimit */
-	{ SYF_MPSAFE | AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit, AUE_NULL },	/* 76 = linux_old_getrlimit */
-	{ SYF_MPSAFE | AS(getrusage_args), (sy_call_t *)getrusage, AUE_NULL },	/* 77 = getrusage */
-	{ SYF_MPSAFE | AS(gettimeofday_args), (sy_call_t *)gettimeofday, AUE_NULL },	/* 78 = gettimeofday */
-	{ SYF_MPSAFE | AS(settimeofday_args), (sy_call_t *)settimeofday, AUE_NULL },	/* 79 = settimeofday */
-	{ SYF_MPSAFE | AS(linux_getgroups16_args), (sy_call_t *)linux_getgroups16, AUE_NULL },	/* 80 = linux_getgroups16 */
-	{ SYF_MPSAFE | AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16, AUE_NULL },	/* 81 = linux_setgroups16 */
-	{ SYF_MPSAFE | AS(linux_old_select_args), (sy_call_t *)linux_old_select, AUE_NULL },	/* 82 = linux_old_select */
-	{ SYF_MPSAFE | AS(linux_symlink_args), (sy_call_t *)linux_symlink, AUE_NULL },	/* 83 = linux_symlink */
-	{ SYF_MPSAFE | AS(ostat_args), (sy_call_t *)ostat, AUE_NULL },	/* 84 = ostat */
-	{ SYF_MPSAFE | AS(linux_readlink_args), (sy_call_t *)linux_readlink, AUE_NULL },	/* 85 = linux_readlink */
-	{ AS(linux_uselib_args), (sy_call_t *)linux_uselib, AUE_NULL },	/* 86 = linux_uselib */
-	{ SYF_MPSAFE | AS(swapon_args), (sy_call_t *)swapon, AUE_NULL },	/* 87 = swapon */
-	{ SYF_MPSAFE | AS(linux_reboot_args), (sy_call_t *)linux_reboot, AUE_NULL },	/* 88 = linux_reboot */
-	{ AS(linux_readdir_args), (sy_call_t *)linux_readdir, AUE_NULL },	/* 89 = linux_readdir */
-	{ SYF_MPSAFE | AS(linux_mmap_args), (sy_call_t *)linux_mmap, AUE_NULL },	/* 90 = linux_mmap */
-	{ SYF_MPSAFE | AS(munmap_args), (sy_call_t *)munmap, AUE_NULL },	/* 91 = munmap */
-	{ SYF_MPSAFE | AS(linux_truncate_args), (sy_call_t *)linux_truncate, AUE_NULL },	/* 92 = linux_truncate */
-	{ SYF_MPSAFE | AS(oftruncate_args), (sy_call_t *)oftruncate, AUE_NULL },	/* 93 = oftruncate */
-	{ SYF_MPSAFE | AS(fchmod_args), (sy_call_t *)fchmod, AUE_NULL },	/* 94 = fchmod */
-	{ SYF_MPSAFE | AS(fchown_args), (sy_call_t *)fchown, AUE_NULL },	/* 95 = fchown */
-	{ SYF_MPSAFE | AS(linux_getpriority_args), (sy_call_t *)linux_getpriority, AUE_NULL },	/* 96 = linux_getpriority */
-	{ SYF_MPSAFE | AS(setpriority_args), (sy_call_t *)setpriority, AUE_NULL },	/* 97 = setpriority */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 98 = profil */
-	{ SYF_MPSAFE | AS(linux_statfs_args), (sy_call_t *)linux_statfs, AUE_NULL },	/* 99 = linux_statfs */
-	{ SYF_MPSAFE | AS(linux_fstatfs_args), (sy_call_t *)linux_fstatfs, AUE_NULL },	/* 100 = linux_fstatfs */
-	{ SYF_MPSAFE | AS(linux_ioperm_args), (sy_call_t *)linux_ioperm, AUE_NULL },	/* 101 = linux_ioperm */
-	{ SYF_MPSAFE | AS(linux_socketcall_args), (sy_call_t *)linux_socketcall, AUE_NULL },	/* 102 = linux_socketcall */
-	{ SYF_MPSAFE | AS(linux_syslog_args), (sy_call_t *)linux_syslog, AUE_NULL },	/* 103 = linux_syslog */
-	{ SYF_MPSAFE | AS(linux_setitimer_args), (sy_call_t *)linux_setitimer, AUE_NULL },	/* 104 = linux_setitimer */
-	{ SYF_MPSAFE | AS(linux_getitimer_args), (sy_call_t *)linux_getitimer, AUE_NULL },	/* 105 = linux_getitimer */
-	{ SYF_MPSAFE | AS(linux_newstat_args), (sy_call_t *)linux_newstat, AUE_NULL },	/* 106 = linux_newstat */
-	{ SYF_MPSAFE | AS(linux_newlstat_args), (sy_call_t *)linux_newlstat, AUE_NULL },	/* 107 = linux_newlstat */
-	{ SYF_MPSAFE | AS(linux_newfstat_args), (sy_call_t *)linux_newfstat, AUE_NULL },	/* 108 = linux_newfstat */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_uname, AUE_NULL },	/* 109 = linux_uname */
-	{ SYF_MPSAFE | AS(linux_iopl_args), (sy_call_t *)linux_iopl, AUE_NULL },	/* 110 = linux_iopl */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_vhangup, AUE_NULL },	/* 111 = linux_vhangup */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 112 = idle */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_vm86old, AUE_NULL },	/* 113 = linux_vm86old */
-	{ SYF_MPSAFE | AS(linux_wait4_args), (sy_call_t *)linux_wait4, AUE_NULL },	/* 114 = linux_wait4 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_swapoff, AUE_NULL },	/* 115 = linux_swapoff */
-	{ SYF_MPSAFE | AS(linux_sysinfo_args), (sy_call_t *)linux_sysinfo, AUE_NULL },	/* 116 = linux_sysinfo */
-	{ AS(linux_ipc_args), (sy_call_t *)linux_ipc, AUE_NULL },	/* 117 = linux_ipc */
-	{ SYF_MPSAFE | AS(fsync_args), (sy_call_t *)fsync, AUE_NULL },	/* 118 = fsync */
-	{ SYF_MPSAFE | AS(linux_sigreturn_args), (sy_call_t *)linux_sigreturn, AUE_NULL },	/* 119 = linux_sigreturn */
-	{ SYF_MPSAFE | AS(linux_clone_args), (sy_call_t *)linux_clone, AUE_NULL },	/* 120 = linux_clone */
-	{ SYF_MPSAFE | AS(setdomainname_args), (sy_call_t *)setdomainname, AUE_NULL },	/* 121 = setdomainname */
-	{ SYF_MPSAFE | AS(linux_newuname_args), (sy_call_t *)linux_newuname, AUE_NULL },	/* 122 = linux_newuname */
-	{ SYF_MPSAFE | AS(linux_modify_ldt_args), (sy_call_t *)linux_modify_ldt, AUE_NULL },	/* 123 = linux_modify_ldt */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_adjtimex, AUE_NULL },	/* 124 = linux_adjtimex */
-	{ SYF_MPSAFE | AS(mprotect_args), (sy_call_t *)mprotect, AUE_NULL },	/* 125 = mprotect */
-	{ SYF_MPSAFE | AS(linux_sigprocmask_args), (sy_call_t *)linux_sigprocmask, AUE_NULL },	/* 126 = linux_sigprocmask */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_create_module, AUE_NULL },	/* 127 = linux_create_module */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_init_module, AUE_NULL },	/* 128 = linux_init_module */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_delete_module, AUE_NULL },	/* 129 = linux_delete_module */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_get_kernel_syms, AUE_NULL },	/* 130 = linux_get_kernel_syms */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_quotactl, AUE_NULL },	/* 131 = linux_quotactl */
-	{ SYF_MPSAFE | AS(getpgid_args), (sy_call_t *)getpgid, AUE_NULL },	/* 132 = getpgid */
-	{ SYF_MPSAFE | AS(fchdir_args), (sy_call_t *)fchdir, AUE_NULL },	/* 133 = fchdir */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_bdflush, AUE_NULL },	/* 134 = linux_bdflush */
-	{ SYF_MPSAFE | AS(linux_sysfs_args), (sy_call_t *)linux_sysfs, AUE_NULL },	/* 135 = linux_sysfs */
-	{ SYF_MPSAFE | AS(linux_personality_args), (sy_call_t *)linux_personality, AUE_NULL },	/* 136 = linux_personality */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 137 = afs_syscall */
-	{ SYF_MPSAFE | AS(linux_setfsuid16_args), (sy_call_t *)linux_setfsuid16, AUE_NULL },	/* 138 = linux_setfsuid16 */
-	{ SYF_MPSAFE | AS(linux_setfsgid16_args), (sy_call_t *)linux_setfsgid16, AUE_NULL },	/* 139 = linux_setfsgid16 */
-	{ SYF_MPSAFE | AS(linux_llseek_args), (sy_call_t *)linux_llseek, AUE_NULL },	/* 140 = linux_llseek */
-	{ AS(linux_getdents_args), (sy_call_t *)linux_getdents, AUE_NULL },	/* 141 = linux_getdents */
-	{ SYF_MPSAFE | AS(linux_select_args), (sy_call_t *)linux_select, AUE_NULL },	/* 142 = linux_select */
-	{ SYF_MPSAFE | AS(flock_args), (sy_call_t *)flock, AUE_NULL },	/* 143 = flock */
-	{ SYF_MPSAFE | AS(linux_msync_args), (sy_call_t *)linux_msync, AUE_NULL },	/* 144 = linux_msync */
-	{ SYF_MPSAFE | AS(readv_args), (sy_call_t *)readv, AUE_NULL },	/* 145 = readv */
-	{ SYF_MPSAFE | AS(writev_args), (sy_call_t *)writev, AUE_NULL },	/* 146 = writev */
-	{ SYF_MPSAFE | AS(linux_getsid_args), (sy_call_t *)linux_getsid, AUE_NULL },	/* 147 = linux_getsid */
-	{ SYF_MPSAFE | AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync, AUE_NULL },	/* 148 = linux_fdatasync */
-	{ SYF_MPSAFE | AS(linux_sysctl_args), (sy_call_t *)linux_sysctl, AUE_NULL },	/* 149 = linux_sysctl */
-	{ SYF_MPSAFE | AS(mlock_args), (sy_call_t *)mlock, AUE_NULL },	/* 150 = mlock */
-	{ SYF_MPSAFE | AS(munlock_args), (sy_call_t *)munlock, AUE_NULL },	/* 151 = munlock */
-	{ SYF_MPSAFE | AS(mlockall_args), (sy_call_t *)mlockall, AUE_NULL },	/* 152 = mlockall */
-	{ SYF_MPSAFE | 0, (sy_call_t *)munlockall, AUE_NULL },	/* 153 = munlockall */
-	{ SYF_MPSAFE | AS(sched_setparam_args), (sy_call_t *)sched_setparam, AUE_NULL },	/* 154 = sched_setparam */
-	{ SYF_MPSAFE | AS(sched_getparam_args), (sy_call_t *)sched_getparam, AUE_NULL },	/* 155 = sched_getparam */
-	{ SYF_MPSAFE | AS(linux_sched_setscheduler_args), (sy_call_t *)linux_sched_setscheduler, AUE_NULL },	/* 156 = linux_sched_setscheduler */
-	{ SYF_MPSAFE | AS(linux_sched_getscheduler_args), (sy_call_t *)linux_sched_getscheduler, AUE_NULL },	/* 157 = linux_sched_getscheduler */
-	{ SYF_MPSAFE | 0, (sy_call_t *)sched_yield, AUE_NULL },	/* 158 = sched_yield */
-	{ SYF_MPSAFE | AS(linux_sched_get_priority_max_args), (sy_call_t *)linux_sched_get_priority_max, AUE_NULL },	/* 159 = linux_sched_get_priority_max */
-	{ SYF_MPSAFE | AS(linux_sched_get_priority_min_args), (sy_call_t *)linux_sched_get_priority_min, AUE_NULL },	/* 160 = linux_sched_get_priority_min */
-	{ SYF_MPSAFE | AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval, AUE_NULL },	/* 161 = sched_rr_get_interval */
-	{ SYF_MPSAFE | AS(nanosleep_args), (sy_call_t *)nanosleep, AUE_NULL },	/* 162 = nanosleep */
-	{ SYF_MPSAFE | AS(linux_mremap_args), (sy_call_t *)linux_mremap, AUE_NULL },	/* 163 = linux_mremap */
-	{ SYF_MPSAFE | AS(linux_setresuid16_args), (sy_call_t *)linux_setresuid16, AUE_NULL },	/* 164 = linux_setresuid16 */
-	{ SYF_MPSAFE | AS(linux_getresuid16_args), (sy_call_t *)linux_getresuid16, AUE_NULL },	/* 165 = linux_getresuid16 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_vm86, AUE_NULL },	/* 166 = linux_vm86 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_query_module, AUE_NULL },	/* 167 = linux_query_module */
-	{ SYF_MPSAFE | AS(poll_args), (sy_call_t *)poll, AUE_NULL },	/* 168 = poll */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_nfsservctl, AUE_NULL },	/* 169 = linux_nfsservctl */
-	{ SYF_MPSAFE | AS(linux_setresgid16_args), (sy_call_t *)linux_setresgid16, AUE_NULL },	/* 170 = linux_setresgid16 */
-	{ SYF_MPSAFE | AS(linux_getresgid16_args), (sy_call_t *)linux_getresgid16, AUE_NULL },	/* 171 = linux_getresgid16 */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_prctl, AUE_NULL },	/* 172 = linux_prctl */
-	{ SYF_MPSAFE | AS(linux_rt_sigreturn_args), (sy_call_t *)linux_rt_sigreturn, AUE_NULL },	/* 173 = linux_rt_sigreturn */
-	{ SYF_MPSAFE | AS(linux_rt_sigaction_args), (sy_call_t *)linux_rt_sigaction, AUE_NULL },	/* 174 = linux_rt_sigaction */
-	{ SYF_MPSAFE | AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL },	/* 175 = linux_rt_sigprocmask */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_rt_sigpending, AUE_NULL },	/* 176 = linux_rt_sigpending */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL },	/* 177 = linux_rt_sigtimedwait */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL },	/* 178 = linux_rt_sigqueueinfo */
-	{ SYF_MPSAFE | AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL },	/* 179 = linux_rt_sigsuspend */
-	{ SYF_MPSAFE | AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_NULL },	/* 180 = linux_pread */
-	{ SYF_MPSAFE | AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_NULL },	/* 181 = linux_pwrite */
-	{ SYF_MPSAFE | AS(linux_chown16_args), (sy_call_t *)linux_chown16, AUE_NULL },	/* 182 = linux_chown16 */
-	{ SYF_MPSAFE | AS(linux_getcwd_args), (sy_call_t *)linux_getcwd, AUE_NULL },	/* 183 = linux_getcwd */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_capget, AUE_NULL },	/* 184 = linux_capget */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_capset, AUE_NULL },	/* 185 = linux_capset */
-	{ SYF_MPSAFE | AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack, AUE_NULL },	/* 186 = linux_sigaltstack */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_sendfile, AUE_NULL },	/* 187 = linux_sendfile */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 188 = getpmsg */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 189 = putpmsg */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_vfork, AUE_NULL },	/* 190 = linux_vfork */
-	{ SYF_MPSAFE | AS(linux_getrlimit_args), (sy_call_t *)linux_getrlimit, AUE_NULL },	/* 191 = linux_getrlimit */
-	{ SYF_MPSAFE | AS(linux_mmap2_args), (sy_call_t *)linux_mmap2, AUE_NULL },	/* 192 = linux_mmap2 */
-	{ SYF_MPSAFE | AS(linux_truncate64_args), (sy_call_t *)linux_truncate64, AUE_NULL },	/* 193 = linux_truncate64 */
-	{ SYF_MPSAFE | AS(linux_ftruncate64_args), (sy_call_t *)linux_ftruncate64, AUE_NULL },	/* 194 = linux_ftruncate64 */
-	{ SYF_MPSAFE | AS(linux_stat64_args), (sy_call_t *)linux_stat64, AUE_NULL },	/* 195 = linux_stat64 */
-	{ SYF_MPSAFE | AS(linux_lstat64_args), (sy_call_t *)linux_lstat64, AUE_NULL },	/* 196 = linux_lstat64 */
-	{ SYF_MPSAFE | AS(linux_fstat64_args), (sy_call_t *)linux_fstat64, AUE_NULL },	/* 197 = linux_fstat64 */
-	{ SYF_MPSAFE | AS(linux_lchown_args), (sy_call_t *)linux_lchown, AUE_NULL },	/* 198 = linux_lchown */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_getuid, AUE_NULL },	/* 199 = linux_getuid */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_getgid, AUE_NULL },	/* 200 = linux_getgid */
-	{ SYF_MPSAFE | 0, (sy_call_t *)geteuid, AUE_NULL },	/* 201 = geteuid */
-	{ SYF_MPSAFE | 0, (sy_call_t *)getegid, AUE_NULL },	/* 202 = getegid */
-	{ SYF_MPSAFE | AS(setreuid_args), (sy_call_t *)setreuid, AUE_NULL },	/* 203 = setreuid */
-	{ SYF_MPSAFE | AS(setregid_args), (sy_call_t *)setregid, AUE_NULL },	/* 204 = setregid */
-	{ SYF_MPSAFE | AS(linux_getgroups_args), (sy_call_t *)linux_getgroups, AUE_NULL },	/* 205 = linux_getgroups */
-	{ SYF_MPSAFE | AS(linux_setgroups_args), (sy_call_t *)linux_setgroups, AUE_NULL },	/* 206 = linux_setgroups */
-	{ AS(fchown_args), (sy_call_t *)fchown, AUE_NULL },	/* 207 = fchown */
-	{ SYF_MPSAFE | AS(setresuid_args), (sy_call_t *)setresuid, AUE_NULL },	/* 208 = setresuid */
-	{ SYF_MPSAFE | AS(getresuid_args), (sy_call_t *)getresuid, AUE_NULL },	/* 209 = getresuid */
-	{ SYF_MPSAFE | AS(setresgid_args), (sy_call_t *)setresgid, AUE_NULL },	/* 210 = setresgid */
-	{ SYF_MPSAFE | AS(getresgid_args), (sy_call_t *)getresgid, AUE_NULL },	/* 211 = getresgid */
-	{ SYF_MPSAFE | AS(linux_chown_args), (sy_call_t *)linux_chown, AUE_NULL },	/* 212 = linux_chown */
-	{ SYF_MPSAFE | AS(setuid_args), (sy_call_t *)setuid, AUE_NULL },	/* 213 = setuid */
-	{ SYF_MPSAFE | AS(setgid_args), (sy_call_t *)setgid, AUE_NULL },	/* 214 = setgid */
-	{ SYF_MPSAFE | AS(linux_setfsuid_args), (sy_call_t *)linux_setfsuid, AUE_NULL },	/* 215 = linux_setfsuid */
-	{ SYF_MPSAFE | AS(linux_setfsgid_args), (sy_call_t *)linux_setfsgid, AUE_NULL },	/* 216 = linux_setfsgid */
-	{ SYF_MPSAFE | AS(linux_pivot_root_args), (sy_call_t *)linux_pivot_root, AUE_NULL },	/* 217 = linux_pivot_root */
-	{ SYF_MPSAFE | AS(linux_mincore_args), (sy_call_t *)linux_mincore, AUE_NULL },	/* 218 = linux_mincore */
-	{ SYF_MPSAFE | AS(madvise_args), (sy_call_t *)madvise, AUE_NULL },	/* 219 = madvise */
-	{ AS(linux_getdents64_args), (sy_call_t *)linux_getdents64, AUE_NULL },	/* 220 = linux_getdents64 */
-	{ SYF_MPSAFE | AS(linux_fcntl64_args), (sy_call_t *)linux_fcntl64, AUE_NULL },	/* 221 = linux_fcntl64 */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 222 =  */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 223 =  */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_gettid, AUE_NULL },	/* 224 = linux_gettid */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 225 = linux_readahead */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_setxattr, AUE_NULL },	/* 226 = linux_setxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_lsetxattr, AUE_NULL },	/* 227 = linux_lsetxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_fsetxattr, AUE_NULL },	/* 228 = linux_fsetxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_getxattr, AUE_NULL },	/* 229 = linux_getxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_lgetxattr, AUE_NULL },	/* 230 = linux_lgetxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_fgetxattr, AUE_NULL },	/* 231 = linux_fgetxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_listxattr, AUE_NULL },	/* 232 = linux_listxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_llistxattr, AUE_NULL },	/* 233 = linux_llistxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_flistxattr, AUE_NULL },	/* 234 = linux_flistxattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_removexattr, AUE_NULL },	/* 235 = linux_removexattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_lremovexattr, AUE_NULL },	/* 236 = linux_lremovexattr */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_fremovexattr, AUE_NULL },	/* 237 = linux_fremovexattr */
-	{ SYF_MPSAFE | AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL },	/* 238 = linux_tkill */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 239 = linux_sendfile64 */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 240 = linux_futex */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 241 = linux_sched_setaffinity */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 242 = linux_sched_getaffinity */
-	{ SYF_MPSAFE | AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, AUE_NULL },	/* 243 = linux_set_thread_area */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 244 = linux_get_thread_area */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 245 = linux_io_setup */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 246 = linux_io_destroy */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 247 = linux_io_getevents */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 248 = linux_io_submit */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 249 = linux_io_cancel */
-	{ SYF_MPSAFE | 0, (sy_call_t *)linux_fadvise64, AUE_NULL },	/* 250 = linux_fadvise64 */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 251 =  */
-	{ SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_NULL },	/* 252 = exit_group */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 253 = linux_lookup_dcookie */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 254 = linux_epoll_create */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 255 = linux_epoll_ctl */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 256 = linux_epoll_wait */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 257 = linux_remap_file_pages */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 258 = linux_set_tid_address */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 259 = linux_timer_create */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 260 = linux_timer_settime */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 261 = linux_timer_gettime */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 262 = linux_timer_getoverrun */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 263 = linux_timer_delete */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 264 = linux_clock_settime */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 265 = linux_clock_gettime */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 266 = linux_clock_getres */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 267 = linux_clock_nanosleep */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 0 = setup */
+	{ AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_EXIT, NULL, 0, 0 },	/* 1 = exit */
+	{ 0, (sy_call_t *)linux_fork, AUE_FORK, NULL, 0, 0 },		/* 2 = linux_fork */
+	{ AS(read_args), (sy_call_t *)read, AUE_NULL, NULL, 0, 0 },	/* 3 = read */
+	{ AS(write_args), (sy_call_t *)write, AUE_NULL, NULL, 0, 0 },	/* 4 = write */
+	{ AS(linux_open_args), (sy_call_t *)linux_open, AUE_OPEN_RWTC, NULL, 0, 0 },	/* 5 = linux_open */
+	{ AS(close_args), (sy_call_t *)close, AUE_CLOSE, NULL, 0, 0 },	/* 6 = close */
+	{ AS(linux_waitpid_args), (sy_call_t *)linux_waitpid, AUE_WAIT4, NULL, 0, 0 },	/* 7 = linux_waitpid */
+	{ AS(linux_creat_args), (sy_call_t *)linux_creat, AUE_CREAT, NULL, 0, 0 },	/* 8 = linux_creat */
+	{ AS(linux_link_args), (sy_call_t *)linux_link, AUE_LINK, NULL, 0, 0 },	/* 9 = linux_link */
+	{ AS(linux_unlink_args), (sy_call_t *)linux_unlink, AUE_UNLINK, NULL, 0, 0 },	/* 10 = linux_unlink */
+	{ AS(linux_execve_args), (sy_call_t *)linux_execve, AUE_EXECVE, NULL, 0, 0 },	/* 11 = linux_execve */
+	{ AS(linux_chdir_args), (sy_call_t *)linux_chdir, AUE_CHDIR, NULL, 0, 0 },	/* 12 = linux_chdir */
+	{ AS(linux_time_args), (sy_call_t *)linux_time, AUE_NULL, NULL, 0, 0 },	/* 13 = linux_time */
+	{ AS(linux_mknod_args), (sy_call_t *)linux_mknod, AUE_MKNOD, NULL, 0, 0 },	/* 14 = linux_mknod */
+	{ AS(linux_chmod_args), (sy_call_t *)linux_chmod, AUE_CHMOD, NULL, 0, 0 },	/* 15 = linux_chmod */
+	{ AS(linux_lchown16_args), (sy_call_t *)linux_lchown16, AUE_LCHOWN, NULL, 0, 0 },	/* 16 = linux_lchown16 */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 17 = break */
+	{ AS(linux_stat_args), (sy_call_t *)linux_stat, AUE_STAT, NULL, 0, 0 },	/* 18 = linux_stat */
+	{ AS(linux_lseek_args), (sy_call_t *)linux_lseek, AUE_LSEEK, NULL, 0, 0 },	/* 19 = linux_lseek */
+	{ 0, (sy_call_t *)linux_getpid, AUE_GETPID, NULL, 0, 0 },	/* 20 = linux_getpid */
+	{ AS(linux_mount_args), (sy_call_t *)linux_mount, AUE_MOUNT, NULL, 0, 0 },	/* 21 = linux_mount */
+	{ AS(linux_oldumount_args), (sy_call_t *)linux_oldumount, AUE_UMOUNT, NULL, 0, 0 },	/* 22 = linux_oldumount */
+	{ AS(linux_setuid16_args), (sy_call_t *)linux_setuid16, AUE_SETUID, NULL, 0, 0 },	/* 23 = linux_setuid16 */
+	{ 0, (sy_call_t *)linux_getuid16, AUE_GETUID, NULL, 0, 0 },	/* 24 = linux_getuid16 */
+	{ 0, (sy_call_t *)linux_stime, AUE_SETTIMEOFDAY, NULL, 0, 0 },	/* 25 = linux_stime */
+	{ AS(linux_ptrace_args), (sy_call_t *)linux_ptrace, AUE_PTRACE, NULL, 0, 0 },	/* 26 = linux_ptrace */
+	{ AS(linux_alarm_args), (sy_call_t *)linux_alarm, AUE_NULL, NULL, 0, 0 },	/* 27 = linux_alarm */
+	{ AS(linux_fstat_args), (sy_call_t *)linux_fstat, AUE_FSTAT, NULL, 0, 0 },	/* 28 = linux_fstat */
+	{ 0, (sy_call_t *)linux_pause, AUE_NULL, NULL, 0, 0 },	/* 29 = linux_pause */
+	{ AS(linux_utime_args), (sy_call_t *)linux_utime, AUE_UTIME, NULL, 0, 0 },	/* 30 = linux_utime */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 31 = stty */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 32 = gtty */
+	{ AS(linux_access_args), (sy_call_t *)linux_access, AUE_ACCESS, NULL, 0, 0 },	/* 33 = linux_access */
+	{ AS(linux_nice_args), (sy_call_t *)linux_nice, AUE_NICE, NULL, 0, 0 },	/* 34 = linux_nice */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 35 = ftime */
+	{ 0, (sy_call_t *)sync, AUE_SYNC, NULL, 0, 0 },		/* 36 = sync */
+	{ AS(linux_kill_args), (sy_call_t *)linux_kill, AUE_KILL, NULL, 0, 0 },	/* 37 = linux_kill */
+	{ AS(linux_rename_args), (sy_call_t *)linux_rename, AUE_RENAME, NULL, 0, 0 },	/* 38 = linux_rename */
+	{ AS(linux_mkdir_args), (sy_call_t *)linux_mkdir, AUE_MKDIR, NULL, 0, 0 },	/* 39 = linux_mkdir */
+	{ AS(linux_rmdir_args), (sy_call_t *)linux_rmdir, AUE_RMDIR, NULL, 0, 0 },	/* 40 = linux_rmdir */
+	{ AS(dup_args), (sy_call_t *)dup, AUE_DUP, NULL, 0, 0 },	/* 41 = dup */
+	{ AS(linux_pipe_args), (sy_call_t *)linux_pipe, AUE_PIPE, NULL, 0, 0 },	/* 42 = linux_pipe */
+	{ AS(linux_times_args), (sy_call_t *)linux_times, AUE_NULL, NULL, 0, 0 },	/* 43 = linux_times */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 44 = prof */
+	{ AS(linux_brk_args), (sy_call_t *)linux_brk, AUE_NULL, NULL, 0, 0 },	/* 45 = linux_brk */
+	{ AS(linux_setgid16_args), (sy_call_t *)linux_setgid16, AUE_SETGID, NULL, 0, 0 },	/* 46 = linux_setgid16 */
+	{ 0, (sy_call_t *)linux_getgid16, AUE_GETGID, NULL, 0, 0 },	/* 47 = linux_getgid16 */
+	{ AS(linux_signal_args), (sy_call_t *)linux_signal, AUE_NULL, NULL, 0, 0 },	/* 48 = linux_signal */
+	{ 0, (sy_call_t *)linux_geteuid16, AUE_GETEUID, NULL, 0, 0 },	/* 49 = linux_geteuid16 */
+	{ 0, (sy_call_t *)linux_getegid16, AUE_GETEGID, NULL, 0, 0 },	/* 50 = linux_getegid16 */
+	{ AS(acct_args), (sy_call_t *)acct, AUE_ACCT, NULL, 0, 0 },	/* 51 = acct */
+	{ AS(linux_umount_args), (sy_call_t *)linux_umount, AUE_UMOUNT, NULL, 0, 0 },	/* 52 = linux_umount */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 53 = lock */
+	{ AS(linux_ioctl_args), (sy_call_t *)linux_ioctl, AUE_IOCTL, NULL, 0, 0 },	/* 54 = linux_ioctl */
+	{ AS(linux_fcntl_args), (sy_call_t *)linux_fcntl, AUE_FCNTL, NULL, 0, 0 },	/* 55 = linux_fcntl */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 56 = mpx */
+	{ AS(setpgid_args), (sy_call_t *)setpgid, AUE_SETPGRP, NULL, 0, 0 },	/* 57 = setpgid */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 58 = ulimit */
+	{ 0, (sy_call_t *)linux_olduname, AUE_NULL, NULL, 0, 0 },	/* 59 = linux_olduname */
+	{ AS(umask_args), (sy_call_t *)umask, AUE_UMASK, NULL, 0, 0 },	/* 60 = umask */
+	{ AS(chroot_args), (sy_call_t *)chroot, AUE_CHROOT, NULL, 0, 0 },	/* 61 = chroot */
+	{ AS(linux_ustat_args), (sy_call_t *)linux_ustat, AUE_NULL, NULL, 0, 0 },	/* 62 = linux_ustat */
+	{ AS(dup2_args), (sy_call_t *)dup2, AUE_DUP2, NULL, 0, 0 },	/* 63 = dup2 */
+	{ 0, (sy_call_t *)linux_getppid, AUE_GETPPID, NULL, 0, 0 },	/* 64 = linux_getppid */
+	{ 0, (sy_call_t *)getpgrp, AUE_GETPGRP, NULL, 0, 0 },		/* 65 = getpgrp */
+	{ 0, (sy_call_t *)setsid, AUE_SETSID, NULL, 0, 0 },		/* 66 = setsid */
+	{ AS(linux_sigaction_args), (sy_call_t *)linux_sigaction, AUE_NULL, NULL, 0, 0 },	/* 67 = linux_sigaction */
+	{ 0, (sy_call_t *)linux_sgetmask, AUE_NULL, NULL, 0, 0 },	/* 68 = linux_sgetmask */
+	{ AS(linux_ssetmask_args), (sy_call_t *)linux_ssetmask, AUE_NULL, NULL, 0, 0 },	/* 69 = linux_ssetmask */
+	{ AS(linux_setreuid16_args), (sy_call_t *)linux_setreuid16, AUE_SETREUID, NULL, 0, 0 },	/* 70 = linux_setreuid16 */
+	{ AS(linux_setregid16_args), (sy_call_t *)linux_setregid16, AUE_SETREGID, NULL, 0, 0 },	/* 71 = linux_setregid16 */
+	{ AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend, AUE_NULL, NULL, 0, 0 },	/* 72 = linux_sigsuspend */
+	{ AS(linux_sigpending_args), (sy_call_t *)linux_sigpending, AUE_NULL, NULL, 0, 0 },	/* 73 = linux_sigpending */
+	{ AS(linux_sethostname_args), (sy_call_t *)linux_sethostname, AUE_SYSCTL, NULL, 0, 0 },	/* 74 = linux_sethostname */
+	{ AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit, AUE_SETRLIMIT, NULL, 0, 0 },	/* 75 = linux_setrlimit */
+	{ AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit, AUE_GETRLIMIT, NULL, 0, 0 },	/* 76 = linux_old_getrlimit */
+	{ AS(getrusage_args), (sy_call_t *)getrusage, AUE_GETRUSAGE, NULL, 0, 0 },	/* 77 = getrusage */
+	{ AS(gettimeofday_args), (sy_call_t *)gettimeofday, AUE_NULL, NULL, 0, 0 },	/* 78 = gettimeofday */
+	{ AS(settimeofday_args), (sy_call_t *)settimeofday, AUE_SETTIMEOFDAY, NULL, 0, 0 },	/* 79 = settimeofday */
+	{ AS(linux_getgroups16_args), (sy_call_t *)linux_getgroups16, AUE_GETGROUPS, NULL, 0, 0 },	/* 80 = linux_getgroups16 */
+	{ AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16, AUE_SETGROUPS, NULL, 0, 0 },	/* 81 = linux_setgroups16 */
+	{ AS(linux_old_select_args), (sy_call_t *)linux_old_select, AUE_SELECT, NULL, 0, 0 },	/* 82 = linux_old_select */
+	{ AS(linux_symlink_args), (sy_call_t *)linux_symlink, AUE_SYMLINK, NULL, 0, 0 },	/* 83 = linux_symlink */
+	{ AS(linux_lstat_args), (sy_call_t *)linux_lstat, AUE_LSTAT, NULL, 0, 0 },	/* 84 = linux_lstat */
+	{ AS(linux_readlink_args), (sy_call_t *)linux_readlink, AUE_READLINK, NULL, 0, 0 },	/* 85 = linux_readlink */
+	{ AS(linux_uselib_args), (sy_call_t *)linux_uselib, AUE_USELIB, NULL, 0, 0 },	/* 86 = linux_uselib */
+	{ AS(swapon_args), (sy_call_t *)swapon, AUE_SWAPON, NULL, 0, 0 },	/* 87 = swapon */
+	{ AS(linux_reboot_args), (sy_call_t *)linux_reboot, AUE_REBOOT, NULL, 0, 0 },	/* 88 = linux_reboot */
+	{ AS(linux_readdir_args), (sy_call_t *)linux_readdir, AUE_GETDIRENTRIES, NULL, 0, 0 },	/* 89 = linux_readdir */
+	{ AS(linux_mmap_args), (sy_call_t *)linux_mmap, AUE_MMAP, NULL, 0, 0 },	/* 90 = linux_mmap */
+	{ AS(munmap_args), (sy_call_t *)munmap, AUE_MUNMAP, NULL, 0, 0 },	/* 91 = munmap */
+	{ AS(linux_truncate_args), (sy_call_t *)linux_truncate, AUE_TRUNCATE, NULL, 0, 0 },	/* 92 = linux_truncate */
+	{ AS(linux_ftruncate_args), (sy_call_t *)linux_ftruncate, AUE_FTRUNCATE, NULL, 0, 0 },	/* 93 = linux_ftruncate */
+	{ AS(fchmod_args), (sy_call_t *)fchmod, AUE_FCHMOD, NULL, 0, 0 },	/* 94 = fchmod */
+	{ AS(fchown_args), (sy_call_t *)fchown, AUE_FCHOWN, NULL, 0, 0 },	/* 95 = fchown */
+	{ AS(linux_getpriority_args), (sy_call_t *)linux_getpriority, AUE_GETPRIORITY, NULL, 0, 0 },	/* 96 = linux_getpriority */
+	{ AS(setpriority_args), (sy_call_t *)setpriority, AUE_SETPRIORITY, NULL, 0, 0 },	/* 97 = setpriority */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 98 = profil */
+	{ AS(linux_statfs_args), (sy_call_t *)linux_statfs, AUE_STATFS, NULL, 0, 0 },	/* 99 = linux_statfs */
+	{ AS(linux_fstatfs_args), (sy_call_t *)linux_fstatfs, AUE_FSTATFS, NULL, 0, 0 },	/* 100 = linux_fstatfs */
+	{ AS(linux_ioperm_args), (sy_call_t *)linux_ioperm, AUE_NULL, NULL, 0, 0 },	/* 101 = linux_ioperm */
+	{ AS(linux_socketcall_args), (sy_call_t *)linux_socketcall, AUE_NULL, NULL, 0, 0 },	/* 102 = linux_socketcall */
+	{ AS(linux_syslog_args), (sy_call_t *)linux_syslog, AUE_NULL, NULL, 0, 0 },	/* 103 = linux_syslog */
+	{ AS(linux_setitimer_args), (sy_call_t *)linux_setitimer, AUE_SETITIMER, NULL, 0, 0 },	/* 104 = linux_setitimer */
+	{ AS(linux_getitimer_args), (sy_call_t *)linux_getitimer, AUE_GETITIMER, NULL, 0, 0 },	/* 105 = linux_getitimer */
+	{ AS(linux_newstat_args), (sy_call_t *)linux_newstat, AUE_STAT, NULL, 0, 0 },	/* 106 = linux_newstat */
+	{ AS(linux_newlstat_args), (sy_call_t *)linux_newlstat, AUE_LSTAT, NULL, 0, 0 },	/* 107 = linux_newlstat */
+	{ AS(linux_newfstat_args), (sy_call_t *)linux_newfstat, AUE_FSTAT, NULL, 0, 0 },	/* 108 = linux_newfstat */
+	{ 0, (sy_call_t *)linux_uname, AUE_NULL, NULL, 0, 0 },	/* 109 = linux_uname */
+	{ AS(linux_iopl_args), (sy_call_t *)linux_iopl, AUE_NULL, NULL, 0, 0 },	/* 110 = linux_iopl */
+	{ 0, (sy_call_t *)linux_vhangup, AUE_NULL, NULL, 0, 0 },	/* 111 = linux_vhangup */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 112 = idle */
+	{ 0, (sy_call_t *)linux_vm86old, AUE_NULL, NULL, 0, 0 },	/* 113 = linux_vm86old */
+	{ AS(linux_wait4_args), (sy_call_t *)linux_wait4, AUE_WAIT4, NULL, 0, 0 },	/* 114 = linux_wait4 */
+	{ 0, (sy_call_t *)linux_swapoff, AUE_SWAPOFF, NULL, 0, 0 },	/* 115 = linux_swapoff */
+	{ AS(linux_sysinfo_args), (sy_call_t *)linux_sysinfo, AUE_NULL, NULL, 0, 0 },	/* 116 = linux_sysinfo */
+	{ AS(linux_ipc_args), (sy_call_t *)linux_ipc, AUE_NULL, NULL, 0, 0 },	/* 117 = linux_ipc */
+	{ AS(fsync_args), (sy_call_t *)fsync, AUE_FSYNC, NULL, 0, 0 },	/* 118 = fsync */
+	{ AS(linux_sigreturn_args), (sy_call_t *)linux_sigreturn, AUE_SIGRETURN, NULL, 0, 0 },	/* 119 = linux_sigreturn */
+	{ AS(linux_clone_args), (sy_call_t *)linux_clone, AUE_RFORK, NULL, 0, 0 },	/* 120 = linux_clone */
+	{ AS(setdomainname_args), (sy_call_t *)setdomainname, AUE_SYSCTL, NULL, 0, 0 },	/* 121 = setdomainname */
+	{ AS(linux_newuname_args), (sy_call_t *)linux_newuname, AUE_NULL, NULL, 0, 0 },	/* 122 = linux_newuname */
+	{ AS(linux_modify_ldt_args), (sy_call_t *)linux_modify_ldt, AUE_NULL, NULL, 0, 0 },	/* 123 = linux_modify_ldt */
+	{ 0, (sy_call_t *)linux_adjtimex, AUE_ADJTIME, NULL, 0, 0 },	/* 124 = linux_adjtimex */
+	{ AS(linux_mprotect_args), (sy_call_t *)linux_mprotect, AUE_MPROTECT, NULL, 0, 0 },	/* 125 = linux_mprotect */
+	{ AS(linux_sigprocmask_args), (sy_call_t *)linux_sigprocmask, AUE_SIGPROCMASK, NULL, 0, 0 },	/* 126 = linux_sigprocmask */
+	{ 0, (sy_call_t *)linux_create_module, AUE_NULL, NULL, 0, 0 },	/* 127 = linux_create_module */
+	{ 0, (sy_call_t *)linux_init_module, AUE_NULL, NULL, 0, 0 },	/* 128 = linux_init_module */
+	{ 0, (sy_call_t *)linux_delete_module, AUE_NULL, NULL, 0, 0 },	/* 129 = linux_delete_module */
+	{ 0, (sy_call_t *)linux_get_kernel_syms, AUE_NULL, NULL, 0, 0 },	/* 130 = linux_get_kernel_syms */
+	{ 0, (sy_call_t *)linux_quotactl, AUE_QUOTACTL, NULL, 0, 0 },	/* 131 = linux_quotactl */
+	{ AS(getpgid_args), (sy_call_t *)getpgid, AUE_GETPGID, NULL, 0, 0 },	/* 132 = getpgid */
+	{ AS(fchdir_args), (sy_call_t *)fchdir, AUE_FCHDIR, NULL, 0, 0 },	/* 133 = fchdir */
+	{ 0, (sy_call_t *)linux_bdflush, AUE_BDFLUSH, NULL, 0, 0 },	/* 134 = linux_bdflush */
+	{ AS(linux_sysfs_args), (sy_call_t *)linux_sysfs, AUE_NULL, NULL, 0, 0 },	/* 135 = linux_sysfs */
+	{ AS(linux_personality_args), (sy_call_t *)linux_personality, AUE_PERSONALITY, NULL, 0, 0 },	/* 136 = linux_personality */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 137 = afs_syscall */
+	{ AS(linux_setfsuid16_args), (sy_call_t *)linux_setfsuid16, AUE_SETFSUID, NULL, 0, 0 },	/* 138 = linux_setfsuid16 */
+	{ AS(linux_setfsgid16_args), (sy_call_t *)linux_setfsgid16, AUE_SETFSGID, NULL, 0, 0 },	/* 139 = linux_setfsgid16 */
+	{ AS(linux_llseek_args), (sy_call_t *)linux_llseek, AUE_LSEEK, NULL, 0, 0 },	/* 140 = linux_llseek */
+	{ AS(linux_getdents_args), (sy_call_t *)linux_getdents, AUE_GETDIRENTRIES, NULL, 0, 0 },	/* 141 = linux_getdents */
+	{ AS(linux_select_args), (sy_call_t *)linux_select, AUE_SELECT, NULL, 0, 0 },	/* 142 = linux_select */
+	{ AS(flock_args), (sy_call_t *)flock, AUE_FLOCK, NULL, 0, 0 },	/* 143 = flock */
+	{ AS(linux_msync_args), (sy_call_t *)linux_msync, AUE_MSYNC, NULL, 0, 0 },	/* 144 = linux_msync */
+	{ AS(readv_args), (sy_call_t *)readv, AUE_READV, NULL, 0, 0 },	/* 145 = readv */
+	{ AS(writev_args), (sy_call_t *)writev, AUE_WRITEV, NULL, 0, 0 },	/* 146 = writev */
+	{ AS(linux_getsid_args), (sy_call_t *)linux_getsid, AUE_GETSID, NULL, 0, 0 },	/* 147 = linux_getsid */
+	{ AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync, AUE_NULL, NULL, 0, 0 },	/* 148 = linux_fdatasync */
+	{ AS(linux_sysctl_args), (sy_call_t *)linux_sysctl, AUE_SYSCTL, NULL, 0, 0 },	/* 149 = linux_sysctl */
+	{ AS(mlock_args), (sy_call_t *)mlock, AUE_MLOCK, NULL, 0, 0 },	/* 150 = mlock */
+	{ AS(munlock_args), (sy_call_t *)munlock, AUE_MUNLOCK, NULL, 0, 0 },	/* 151 = munlock */
+	{ AS(mlockall_args), (sy_call_t *)mlockall, AUE_MLOCKALL, NULL, 0, 0 },	/* 152 = mlockall */
+	{ 0, (sy_call_t *)munlockall, AUE_MUNLOCKALL, NULL, 0, 0 },	/* 153 = munlockall */
+	{ AS(sched_setparam_args), (sy_call_t *)sched_setparam, AUE_SCHED_SETPARAM, NULL, 0, 0 },	/* 154 = sched_setparam */
+	{ AS(sched_getparam_args), (sy_call_t *)sched_getparam, AUE_SCHED_GETPARAM, NULL, 0, 0 },	/* 155 = sched_getparam */
+	{ AS(linux_sched_setscheduler_args), (sy_call_t *)linux_sched_setscheduler, AUE_SCHED_SETSCHEDULER, NULL, 0, 0 },	/* 156 = linux_sched_setscheduler */
+	{ AS(linux_sched_getscheduler_args), (sy_call_t *)linux_sched_getscheduler, AUE_SCHED_GETSCHEDULER, NULL, 0, 0 },	/* 157 = linux_sched_getscheduler */
+	{ 0, (sy_call_t *)sched_yield, AUE_NULL, NULL, 0, 0 },	/* 158 = sched_yield */
+	{ AS(linux_sched_get_priority_max_args), (sy_call_t *)linux_sched_get_priority_max, AUE_SCHED_GET_PRIORITY_MAX, NULL, 0, 0 },	/* 159 = linux_sched_get_priority_max */
+	{ AS(linux_sched_get_priority_min_args), (sy_call_t *)linux_sched_get_priority_min, AUE_SCHED_GET_PRIORITY_MIN, NULL, 0, 0 },	/* 160 = linux_sched_get_priority_min */
+	{ AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval, AUE_SCHED_RR_GET_INTERVAL, NULL, 0, 0 },	/* 161 = sched_rr_get_interval */
+	{ AS(linux_nanosleep_args), (sy_call_t *)linux_nanosleep, AUE_NULL, NULL, 0, 0 },	/* 162 = linux_nanosleep */
+	{ AS(linux_mremap_args), (sy_call_t *)linux_mremap, AUE_NULL, NULL, 0, 0 },	/* 163 = linux_mremap */
+	{ AS(linux_setresuid16_args), (sy_call_t *)linux_setresuid16, AUE_SETRESUID, NULL, 0, 0 },	/* 164 = linux_setresuid16 */
+	{ AS(linux_getresuid16_args), (sy_call_t *)linux_getresuid16, AUE_GETRESUID, NULL, 0, 0 },	/* 165 = linux_getresuid16 */
+	{ 0, (sy_call_t *)linux_vm86, AUE_NULL, NULL, 0, 0 },		/* 166 = linux_vm86 */
+	{ 0, (sy_call_t *)linux_query_module, AUE_NULL, NULL, 0, 0 },	/* 167 = linux_query_module */
+	{ AS(poll_args), (sy_call_t *)poll, AUE_POLL, NULL, 0, 0 },	/* 168 = poll */
+	{ 0, (sy_call_t *)linux_nfsservctl, AUE_NULL, NULL, 0, 0 },	/* 169 = linux_nfsservctl */
+	{ AS(linux_setresgid16_args), (sy_call_t *)linux_setresgid16, AUE_SETRESGID, NULL, 0, 0 },	/* 170 = linux_setresgid16 */
+	{ AS(linux_getresgid16_args), (sy_call_t *)linux_getresgid16, AUE_GETRESGID, NULL, 0, 0 },	/* 171 = linux_getresgid16 */
+	{ AS(linux_prctl_args), (sy_call_t *)linux_prctl, AUE_PRCTL, NULL, 0, 0 },	/* 172 = linux_prctl */
+	{ AS(linux_rt_sigreturn_args), (sy_call_t *)linux_rt_sigreturn, AUE_NULL, NULL, 0, 0 },	/* 173 = linux_rt_sigreturn */
+	{ AS(linux_rt_sigaction_args), (sy_call_t *)linux_rt_sigaction, AUE_NULL, NULL, 0, 0 },	/* 174 = linux_rt_sigaction */
+	{ AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL, NULL, 0, 0 },	/* 175 = linux_rt_sigprocmask */
+	{ AS(linux_rt_sigpending_args), (sy_call_t *)linux_rt_sigpending, AUE_NULL, NULL, 0, 0 },	/* 176 = linux_rt_sigpending */
+	{ AS(linux_rt_sigtimedwait_args), (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL, NULL, 0, 0 },	/* 177 = linux_rt_sigtimedwait */
+	{ 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0 },	/* 178 = linux_rt_sigqueueinfo */
+	{ AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL, NULL, 0, 0 },	/* 179 = linux_rt_sigsuspend */
+	{ AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_PREAD, NULL, 0, 0 },	/* 180 = linux_pread */
+	{ AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_PWRITE, NULL, 0, 0 },	/* 181 = linux_pwrite */
+	{ AS(linux_chown16_args), (sy_call_t *)linux_chown16, AUE_CHOWN, NULL, 0, 0 },	/* 182 = linux_chown16 */
+	{ AS(linux_getcwd_args), (sy_call_t *)linux_getcwd, AUE_GETCWD, NULL, 0, 0 },	/* 183 = linux_getcwd */
+	{ 0, (sy_call_t *)linux_capget, AUE_CAPGET, NULL, 0, 0 },	/* 184 = linux_capget */
+	{ 0, (sy_call_t *)linux_capset, AUE_CAPSET, NULL, 0, 0 },	/* 185 = linux_capset */
+	{ AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack, AUE_NULL, NULL, 0, 0 },	/* 186 = linux_sigaltstack */
+	{ 0, (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0 },	/* 187 = linux_sendfile */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 188 = getpmsg */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 189 = putpmsg */
+	{ 0, (sy_call_t *)linux_vfork, AUE_VFORK, NULL, 0, 0 },	/* 190 = linux_vfork */
+	{ AS(linux_getrlimit_args), (sy_call_t *)linux_getrlimit, AUE_GETRLIMIT, NULL, 0, 0 },	/* 191 = linux_getrlimit */
+	{ AS(linux_mmap2_args), (sy_call_t *)linux_mmap2, AUE_MMAP, NULL, 0, 0 },	/* 192 = linux_mmap2 */
+	{ AS(linux_truncate64_args), (sy_call_t *)linux_truncate64, AUE_TRUNCATE, NULL, 0, 0 },	/* 193 = linux_truncate64 */
+	{ AS(linux_ftruncate64_args), (sy_call_t *)linux_ftruncate64, AUE_FTRUNCATE, NULL, 0, 0 },	/* 194 = linux_ftruncate64 */
+	{ AS(linux_stat64_args), (sy_call_t *)linux_stat64, AUE_STAT, NULL, 0, 0 },	/* 195 = linux_stat64 */
+	{ AS(linux_lstat64_args), (sy_call_t *)linux_lstat64, AUE_LSTAT, NULL, 0, 0 },	/* 196 = linux_lstat64 */
+	{ AS(linux_fstat64_args), (sy_call_t *)linux_fstat64, AUE_FSTAT, NULL, 0, 0 },	/* 197 = linux_fstat64 */
+	{ AS(linux_lchown_args), (sy_call_t *)linux_lchown, AUE_LCHOWN, NULL, 0, 0 },	/* 198 = linux_lchown */
+	{ 0, (sy_call_t *)linux_getuid, AUE_GETUID, NULL, 0, 0 },	/* 199 = linux_getuid */
+	{ 0, (sy_call_t *)linux_getgid, AUE_GETGID, NULL, 0, 0 },	/* 200 = linux_getgid */
+	{ 0, (sy_call_t *)geteuid, AUE_GETEUID, NULL, 0, 0 },		/* 201 = geteuid */
+	{ 0, (sy_call_t *)getegid, AUE_GETEGID, NULL, 0, 0 },		/* 202 = getegid */
+	{ AS(setreuid_args), (sy_call_t *)setreuid, AUE_SETREUID, NULL, 0, 0 },	/* 203 = setreuid */
+	{ AS(setregid_args), (sy_call_t *)setregid, AUE_SETREGID, NULL, 0, 0 },	/* 204 = setregid */
+	{ AS(linux_getgroups_args), (sy_call_t *)linux_getgroups, AUE_GETGROUPS, NULL, 0, 0 },	/* 205 = linux_getgroups */
+	{ AS(linux_setgroups_args), (sy_call_t *)linux_setgroups, AUE_SETGROUPS, NULL, 0, 0 },	/* 206 = linux_setgroups */
+	{ AS(fchown_args), (sy_call_t *)fchown, AUE_NULL, NULL, 0, 0 },	/* 207 = fchown */
+	{ AS(setresuid_args), (sy_call_t *)setresuid, AUE_SETRESUID, NULL, 0, 0 },	/* 208 = setresuid */
+	{ AS(getresuid_args), (sy_call_t *)getresuid, AUE_GETRESUID, NULL, 0, 0 },	/* 209 = getresuid */
+	{ AS(setresgid_args), (sy_call_t *)setresgid, AUE_SETRESGID, NULL, 0, 0 },	/* 210 = setresgid */
+	{ AS(getresgid_args), (sy_call_t *)getresgid, AUE_GETRESGID, NULL, 0, 0 },	/* 211 = getresgid */
+	{ AS(linux_chown_args), (sy_call_t *)linux_chown, AUE_CHOWN, NULL, 0, 0 },	/* 212 = linux_chown */
+	{ AS(setuid_args), (sy_call_t *)setuid, AUE_SETUID, NULL, 0, 0 },	/* 213 = setuid */
+	{ AS(setgid_args), (sy_call_t *)setgid, AUE_SETGID, NULL, 0, 0 },	/* 214 = setgid */
+	{ AS(linux_setfsuid_args), (sy_call_t *)linux_setfsuid, AUE_SETFSUID, NULL, 0, 0 },	/* 215 = linux_setfsuid */
+	{ AS(linux_setfsgid_args), (sy_call_t *)linux_setfsgid, AUE_SETFSGID, NULL, 0, 0 },	/* 216 = linux_setfsgid */
+	{ AS(linux_pivot_root_args), (sy_call_t *)linux_pivot_root, AUE_PIVOT_ROOT, NULL, 0, 0 },	/* 217 = linux_pivot_root */
+	{ AS(linux_mincore_args), (sy_call_t *)linux_mincore, AUE_MINCORE, NULL, 0, 0 },	/* 218 = linux_mincore */
+	{ AS(madvise_args), (sy_call_t *)madvise, AUE_MADVISE, NULL, 0, 0 },	/* 219 = madvise */
+	{ AS(linux_getdents64_args), (sy_call_t *)linux_getdents64, AUE_GETDIRENTRIES, NULL, 0, 0 },	/* 220 = linux_getdents64 */
+	{ AS(linux_fcntl64_args), (sy_call_t *)linux_fcntl64, AUE_FCNTL, NULL, 0, 0 },	/* 221 = linux_fcntl64 */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 222 =  */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 223 =  */
+	{ 0, (sy_call_t *)linux_gettid, AUE_NULL, NULL, 0, 0 },	/* 224 = linux_gettid */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 225 = linux_readahead */
+	{ 0, (sy_call_t *)linux_setxattr, AUE_NULL, NULL, 0, 0 },	/* 226 = linux_setxattr */
+	{ 0, (sy_call_t *)linux_lsetxattr, AUE_NULL, NULL, 0, 0 },	/* 227 = linux_lsetxattr */
+	{ 0, (sy_call_t *)linux_fsetxattr, AUE_NULL, NULL, 0, 0 },	/* 228 = linux_fsetxattr */
+	{ 0, (sy_call_t *)linux_getxattr, AUE_NULL, NULL, 0, 0 },	/* 229 = linux_getxattr */
+	{ 0, (sy_call_t *)linux_lgetxattr, AUE_NULL, NULL, 0, 0 },	/* 230 = linux_lgetxattr */
+	{ 0, (sy_call_t *)linux_fgetxattr, AUE_NULL, NULL, 0, 0 },	/* 231 = linux_fgetxattr */
+	{ 0, (sy_call_t *)linux_listxattr, AUE_NULL, NULL, 0, 0 },	/* 232 = linux_listxattr */
+	{ 0, (sy_call_t *)linux_llistxattr, AUE_NULL, NULL, 0, 0 },	/* 233 = linux_llistxattr */
+	{ 0, (sy_call_t *)linux_flistxattr, AUE_NULL, NULL, 0, 0 },	/* 234 = linux_flistxattr */
+	{ 0, (sy_call_t *)linux_removexattr, AUE_NULL, NULL, 0, 0 },	/* 235 = linux_removexattr */
+	{ 0, (sy_call_t *)linux_lremovexattr, AUE_NULL, NULL, 0, 0 },	/* 236 = linux_lremovexattr */
+	{ 0, (sy_call_t *)linux_fremovexattr, AUE_NULL, NULL, 0, 0 },	/* 237 = linux_fremovexattr */
+	{ AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0 },	/* 238 = linux_tkill */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 239 = linux_sendfile64 */
+	{ AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, NULL, 0, 0 },	/* 240 = linux_sys_futex */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 241 = linux_sched_setaffinity */
+	{ AS(linux_sched_getaffinity_args), (sy_call_t *)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0 },	/* 242 = linux_sched_getaffinity */
+	{ AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, AUE_NULL, NULL, 0, 0 },	/* 243 = linux_set_thread_area */
+	{ AS(linux_get_thread_area_args), (sy_call_t *)linux_get_thread_area, AUE_NULL, NULL, 0, 0 },	/* 244 = linux_get_thread_area */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 245 = linux_io_setup */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 246 = linux_io_destroy */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 247 = linux_io_getevents */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 248 = linux_io_submit */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 249 = linux_io_cancel */
+	{ 0, (sy_call_t *)linux_fadvise64, AUE_NULL, NULL, 0, 0 },	/* 250 = linux_fadvise64 */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 251 =  */
+	{ AS(linux_exit_group_args), (sy_call_t *)linux_exit_group, AUE_EXIT, NULL, 0, 0 },	/* 252 = linux_exit_group */
+	{ 0, (sy_call_t *)linux_lookup_dcookie, AUE_NULL, NULL, 0, 0 },	/* 253 = linux_lookup_dcookie */
+	{ 0, (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0 },	/* 254 = linux_epoll_create */
+	{ 0, (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0 },	/* 255 = linux_epoll_ctl */
+	{ 0, (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0 },	/* 256 = linux_epoll_wait */
+	{ 0, (sy_call_t *)linux_remap_file_pages, AUE_NULL, NULL, 0, 0 },	/* 257 = linux_remap_file_pages */
+	{ AS(linux_set_tid_address_args), (sy_call_t *)linux_set_tid_address, AUE_NULL, NULL, 0, 0 },	/* 258 = linux_set_tid_address */
+	{ AS(linux_timer_create_args), (sy_call_t *)linux_timer_create, AUE_NULL, NULL, 0, 0 },	/* 259 = linux_timer_create */
+	{ AS(linux_timer_settime_args), (sy_call_t *)linux_timer_settime, AUE_NULL, NULL, 0, 0 },	/* 260 = linux_timer_settime */
+	{ AS(linux_timer_gettime_args), (sy_call_t *)linux_timer_gettime, AUE_NULL, NULL, 0, 0 },	/* 261 = linux_timer_gettime */
+	{ AS(linux_timer_getoverrun_args), (sy_call_t *)linux_timer_getoverrun, AUE_NULL, NULL, 0, 0 },	/* 262 = linux_timer_getoverrun */
+	{ AS(linux_timer_delete_args), (sy_call_t *)linux_timer_delete, AUE_NULL, NULL, 0, 0 },	/* 263 = linux_timer_delete */
+	{ AS(linux_clock_settime_args), (sy_call_t *)linux_clock_settime, AUE_CLOCK_SETTIME, NULL, 0, 0 },	/* 264 = linux_clock_settime */
+	{ AS(linux_clock_gettime_args), (sy_call_t *)linux_clock_gettime, AUE_NULL, NULL, 0, 0 },	/* 265 = linux_clock_gettime */
+	{ AS(linux_clock_getres_args), (sy_call_t *)linux_clock_getres, AUE_NULL, NULL, 0, 0 },	/* 266 = linux_clock_getres */
+	{ AS(linux_clock_nanosleep_args), (sy_call_t *)linux_clock_nanosleep, AUE_NULL, NULL, 0, 0 },	/* 267 = linux_clock_nanosleep */
+	{ AS(linux_statfs64_args), (sy_call_t *)linux_statfs64, AUE_STATFS, NULL, 0, 0 },	/* 268 = linux_statfs64 */
+	{ 0, (sy_call_t *)linux_fstatfs64, AUE_FSTATFS, NULL, 0, 0 },	/* 269 = linux_fstatfs64 */
+	{ AS(linux_tgkill_args), (sy_call_t *)linux_tgkill, AUE_NULL, NULL, 0, 0 },	/* 270 = linux_tgkill */
+	{ AS(linux_utimes_args), (sy_call_t *)linux_utimes, AUE_UTIMES, NULL, 0, 0 },	/* 271 = linux_utimes */
+	{ 0, (sy_call_t *)linux_fadvise64_64, AUE_NULL, NULL, 0, 0 },	/* 272 = linux_fadvise64_64 */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 273 =  */
+	{ 0, (sy_call_t *)linux_mbind, AUE_NULL, NULL, 0, 0 },	/* 274 = linux_mbind */
+	{ 0, (sy_call_t *)linux_get_mempolicy, AUE_NULL, NULL, 0, 0 },	/* 275 = linux_get_mempolicy */
+	{ 0, (sy_call_t *)linux_set_mempolicy, AUE_NULL, NULL, 0, 0 },	/* 276 = linux_set_mempolicy */
+	{ AS(linux_mq_open_args), (sy_call_t *)linux_mq_open, AUE_NULL, NULL, 0, 0 },	/* 277 = linux_mq_open */
+	{ AS(linux_mq_unlink_args), (sy_call_t *)linux_mq_unlink, AUE_NULL, NULL, 0, 0 },	/* 278 = linux_mq_unlink */
+	{ AS(linux_mq_timedsend_args), (sy_call_t *)linux_mq_timedsend, AUE_NULL, NULL, 0, 0 },	/* 279 = linux_mq_timedsend */
+	{ AS(linux_mq_timedreceive_args), (sy_call_t *)linux_mq_timedreceive, AUE_NULL, NULL, 0, 0 },	/* 280 = linux_mq_timedreceive */
+	{ AS(linux_mq_notify_args), (sy_call_t *)linux_mq_notify, AUE_NULL, NULL, 0, 0 },	/* 281 = linux_mq_notify */
+	{ AS(linux_mq_getsetattr_args), (sy_call_t *)linux_mq_getsetattr, AUE_NULL, NULL, 0, 0 },	/* 282 = linux_mq_getsetattr */
+	{ 0, (sy_call_t *)linux_kexec_load, AUE_NULL, NULL, 0, 0 },	/* 283 = linux_kexec_load */
+	{ 0, (sy_call_t *)linux_waitid, AUE_NULL, NULL, 0, 0 },	/* 284 = linux_waitid */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 285 =  */
+	{ 0, (sy_call_t *)linux_add_key, AUE_NULL, NULL, 0, 0 },	/* 286 = linux_add_key */
+	{ 0, (sy_call_t *)linux_request_key, AUE_NULL, NULL, 0, 0 },	/* 287 = linux_request_key */
+	{ 0, (sy_call_t *)linux_keyctl, AUE_NULL, NULL, 0, 0 },	/* 288 = linux_keyctl */
+	{ 0, (sy_call_t *)linux_ioprio_set, AUE_NULL, NULL, 0, 0 },	/* 289 = linux_ioprio_set */
+	{ 0, (sy_call_t *)linux_ioprio_get, AUE_NULL, NULL, 0, 0 },	/* 290 = linux_ioprio_get */
+	{ 0, (sy_call_t *)linux_inotify_init, AUE_NULL, NULL, 0, 0 },	/* 291 = linux_inotify_init */
+	{ 0, (sy_call_t *)linux_inotify_add_watch, AUE_NULL, NULL, 0, 0 },	/* 292 = linux_inotify_add_watch */
+	{ 0, (sy_call_t *)linux_inotify_rm_watch, AUE_NULL, NULL, 0, 0 },	/* 293 = linux_inotify_rm_watch */
+	{ 0, (sy_call_t *)linux_migrate_pages, AUE_NULL, NULL, 0, 0 },	/* 294 = linux_migrate_pages */
+	{ AS(linux_openat_args), (sy_call_t *)linux_openat, AUE_OPEN_RWTC, NULL, 0, 0 },	/* 295 = linux_openat */
+	{ 0, (sy_call_t *)linux_mkdirat, AUE_NULL, NULL, 0, 0 },	/* 296 = linux_mkdirat */
+	{ 0, (sy_call_t *)linux_mknodat, AUE_NULL, NULL, 0, 0 },	/* 297 = linux_mknodat */
+	{ 0, (sy_call_t *)linux_fchownat, AUE_NULL, NULL, 0, 0 },	/* 298 = linux_fchownat */
+	{ 0, (sy_call_t *)linux_futimesat, AUE_NULL, NULL, 0, 0 },	/* 299 = linux_futimesat */
+	{ 0, (sy_call_t *)linux_fstatat64, AUE_NULL, NULL, 0, 0 },	/* 300 = linux_fstatat64 */
+	{ 0, (sy_call_t *)linux_unlinkat, AUE_NULL, NULL, 0, 0 },	/* 301 = linux_unlinkat */
+	{ 0, (sy_call_t *)linux_renameat, AUE_NULL, NULL, 0, 0 },	/* 302 = linux_renameat */
+	{ 0, (sy_call_t *)linux_linkat, AUE_NULL, NULL, 0, 0 },	/* 303 = linux_linkat */
+	{ 0, (sy_call_t *)linux_symlinkat, AUE_NULL, NULL, 0, 0 },	/* 304 = linux_symlinkat */
+	{ 0, (sy_call_t *)linux_readlinkat, AUE_NULL, NULL, 0, 0 },	/* 305 = linux_readlinkat */
+	{ 0, (sy_call_t *)linux_fchmodat, AUE_NULL, NULL, 0, 0 },	/* 306 = linux_fchmodat */
+	{ 0, (sy_call_t *)linux_faccessat, AUE_NULL, NULL, 0, 0 },	/* 307 = linux_faccessat */
+	{ 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0 },	/* 308 = linux_pselect6 */
+	{ 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0 },	/* 309 = linux_ppoll */
+	{ 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0 },	/* 310 = linux_unshare */
 };
Index: linux_ptrace.c
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/linux_ptrace.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/i386/linux/linux_ptrace.c -L sys/i386/linux/linux_ptrace.c -u -r1.2 -r1.3
--- sys/i386/linux/linux_ptrace.c
+++ sys/i386/linux/linux_ptrace.c
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/linux/linux_ptrace.c,v 1.16.2.1 2006/03/07 18:08:09 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/linux/linux_ptrace.c,v 1.18 2007/09/17 05:27:20 jeff Exp $");
 
 #include "opt_cpu.h"
 
@@ -222,7 +222,7 @@
 {
 
 	PROC_LOCK_ASSERT(td->td_proc, MA_OWNED);
-	if (cpu_fxsr == 0 || (td->td_proc->p_sflag & PS_INMEM) == 0)
+	if (cpu_fxsr == 0 || (td->td_proc->p_flag & P_INMEM) == 0)
 		return (EIO);
 	bcopy(&td->td_pcb->pcb_save.sv_xmm, fpxregs, sizeof(*fpxregs));
 	return (0);
@@ -233,7 +233,7 @@
 {
 
 	PROC_LOCK_ASSERT(td->td_proc, MA_OWNED);
-	if (cpu_fxsr == 0 || (td->td_proc->p_sflag & PS_INMEM) == 0)
+	if (cpu_fxsr == 0 || (td->td_proc->p_flag & P_INMEM) == 0)
 		return (EIO);
 	bcopy(fpxregs, &td->td_pcb->pcb_save.sv_xmm, sizeof(*fpxregs));
 	return (0);
Index: linux_sysvec.c
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/linux_sysvec.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -L sys/i386/linux/linux_sysvec.c -L sys/i386/linux/linux_sysvec.c -u -r1.1.1.2 -r1.2
--- sys/i386/linux/linux_sysvec.c
+++ sys/i386/linux/linux_sysvec.c
@@ -27,14 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/linux/linux_sysvec.c,v 1.137.2.1 2005/12/22 21:25:20 jhb Exp $");
-
-/* XXX we use functions that might not exist. */
-#include "opt_compat.h"
-
-#ifndef COMPAT_43
-#error "Unable to compile Linux-emulator due to missing COMPAT_43 option!"
-#endif
+__FBSDID("$FreeBSD: src/sys/i386/linux/linux_sysvec.c,v 1.150 2007/09/20 13:46:26 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -53,6 +46,7 @@
 #include <sys/sysent.h>
 #include <sys/sysproto.h>
 #include <sys/vnode.h>
+#include <sys/eventhandler.h>
 
 #include <vm/vm.h>
 #include <vm/pmap.h>
@@ -68,14 +62,12 @@
 
 #include <i386/linux/linux.h>
 #include <i386/linux/linux_proto.h>
+#include <compat/linux/linux_emul.h>
 #include <compat/linux/linux_mib.h>
 #include <compat/linux/linux_signal.h>
 #include <compat/linux/linux_util.h>
 
 MODULE_VERSION(linux, 1);
-MODULE_DEPEND(linux, sysvmsg, 1, 1, 1);
-MODULE_DEPEND(linux, sysvsem, 1, 1, 1);
-MODULE_DEPEND(linux, sysvshm, 1, 1, 1);
 
 MALLOC_DEFINE(M_LINUX, "linux", "Linux mode structures");
 
@@ -103,6 +95,7 @@
 extern struct sysent linux_sysent[LINUX_SYS_MAXSYSCALL];
 
 SET_DECLARE(linux_ioctl_handler_set, struct linux_ioctl_handler);
+SET_DECLARE(linux_device_handler_set, struct linux_device_handler);
 
 static int	linux_fixup(register_t **stack_base,
 		    struct image_params *iparams);
@@ -110,13 +103,23 @@
 		    struct image_params *iparams);
 static void	linux_prepsyscall(struct trapframe *tf, int *args, u_int *code,
 		    caddr_t *params);
-static void     linux_sendsig(sig_t catcher, int sig, sigset_t *mask,
-		    u_long code);
+static void     linux_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask);
 static void	exec_linux_setregs(struct thread *td, u_long entry,
 				   u_long stack, u_long ps_strings);
 
+extern LIST_HEAD(futex_list, futex) futex_list;
+extern struct sx futex_sx;
+
+static eventhandler_tag linux_exit_tag;
+static eventhandler_tag linux_schedtail_tag;
+static eventhandler_tag linux_exec_tag;
+
 /*
  * Linux syscalls return negative errno's, we do positive and map them
+ * Reference:
+ *   FreeBSD: src/sys/sys/errno.h
+ *   Linux:   linux-2.6.17.8/include/asm-generic/errno-base.h
+ *            linux-2.6.17.8/include/asm-generic/errno.h
  */
 static int bsd_to_linux_errno[ELAST + 1] = {
 	-0,  -1,  -2,  -3,  -4,  -5,  -6,  -7,  -8,  -9,
@@ -127,7 +130,8 @@
 	-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,
 	-110,-111, -40, -36,-112,-113, -39, -11, -87,-122,
 	-116, -66,  -6,  -6,  -6,  -6,  -6, -37, -38,  -9,
-	-6, -6, -43, -42, -75, -6, -84
+	  -6,  -6, -43, -42, -75,-125, -84, -95, -16, -74,
+	 -72, -67, -71
 };
 
 int bsd_to_linux_signal[LINUX_SIGTBLSZ] = {
@@ -270,15 +274,18 @@
 extern unsigned long linux_sznonrtsigcode;
 
 static void
-linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
+linux_rt_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
 {
 	struct thread *td = curthread;
 	struct proc *p = td->td_proc;
 	struct sigacts *psp;
 	struct trapframe *regs;
 	struct l_rt_sigframe *fp, frame;
+	int sig, code;
 	int oonstack;
 
+	sig = ksi->ksi_signo;
+	code = ksi->ksi_code;	
 	PROC_LOCK_ASSERT(p, MA_OWNED);
 	psp = p->p_sigacts;
 	mtx_assert(&psp->ps_mtx, MA_OWNED);
@@ -287,7 +294,7 @@
 
 #ifdef DEBUG
 	if (ldebug(rt_sendsig))
-		printf(ARGS(rt_sendsig, "%p, %d, %p, %lu"),
+		printf(ARGS(rt_sendsig, "%p, %d, %p, %u"),
 		    catcher, sig, (void*)mask, code);
 #endif
 	/*
@@ -318,7 +325,7 @@
 	/* Fill in POSIX parts */
 	frame.sf_si.lsi_signo = sig;
 	frame.sf_si.lsi_code = code;
-	frame.sf_si.lsi_addr = (void *)regs->tf_err;
+	frame.sf_si.lsi_addr = ksi->ksi_addr;
 
 	/*
 	 * Build the signal context to be used by sigreturn.
@@ -352,6 +359,7 @@
 	frame.sf_sc.uc_mcontext.sc_esp_at_signal = regs->tf_esp;
 	frame.sf_sc.uc_mcontext.sc_ss     = regs->tf_ss;
 	frame.sf_sc.uc_mcontext.sc_err    = regs->tf_err;
+	frame.sf_sc.uc_mcontext.sc_cr2    = (register_t)ksi->ksi_addr;
 	frame.sf_sc.uc_mcontext.sc_trapno = bsd_to_linux_trapcode(code);
 
 #ifdef DEBUG
@@ -403,7 +411,7 @@
  * specified pc, psl.
  */
 static void
-linux_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
+linux_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
 {
 	struct thread *td = curthread;
 	struct proc *p = td->td_proc;
@@ -411,23 +419,25 @@
 	struct trapframe *regs;
 	struct l_sigframe *fp, frame;
 	l_sigset_t lmask;
+	int sig, code;
 	int oonstack, i;
 
 	PROC_LOCK_ASSERT(p, MA_OWNED);
 	psp = p->p_sigacts;
+	sig = ksi->ksi_signo;
+	code = ksi->ksi_code;
 	mtx_assert(&psp->ps_mtx, MA_OWNED);
 	if (SIGISMEMBER(psp->ps_siginfo, sig)) {
 		/* Signal handler installed with SA_SIGINFO. */
-		linux_rt_sendsig(catcher, sig, mask, code);
+		linux_rt_sendsig(catcher, ksi, mask);
 		return;
 	}
-
 	regs = td->td_frame;
 	oonstack = sigonstack(regs->tf_esp);
 
 #ifdef DEBUG
 	if (ldebug(sendsig))
-		printf(ARGS(sendsig, "%p, %d, %p, %lu"),
+		printf(ARGS(sendsig, "%p, %d, %p, %u"),
 		    catcher, sig, (void*)mask, code);
 #endif
 
@@ -478,7 +488,8 @@
 	frame.sf_sc.sc_esp_at_signal = regs->tf_esp;
 	frame.sf_sc.sc_ss     = regs->tf_ss;
 	frame.sf_sc.sc_err    = regs->tf_err;
-	frame.sf_sc.sc_trapno = bsd_to_linux_trapcode(code);
+	frame.sf_sc.sc_cr2    = (register_t)ksi->ksi_addr;
+	frame.sf_sc.sc_trapno = bsd_to_linux_trapcode(ksi->ksi_trapno);
 
 	for (i = 0; i < (LINUX_NSIG_WORDS-1); i++)
 		frame.sf_extramask[i] = lmask.__bits[i+1];
@@ -525,6 +536,7 @@
 	struct trapframe *regs;
 	l_sigset_t lmask;
 	int eflags, i;
+	ksiginfo_t ksi;
 
 	regs = td->td_frame;
 
@@ -565,7 +577,12 @@
 	 */
 #define	CS_SECURE(cs)	(ISPL(cs) == SEL_UPL)
 	if (!CS_SECURE(frame.sf_sc.sc_cs)) {
-		trapsignal(td, SIGBUS, T_PROTFLT);
+		ksiginfo_init_trap(&ksi);
+		ksi.ksi_signo = SIGBUS;
+		ksi.ksi_code = BUS_OBJERR;
+		ksi.ksi_trapno = T_PROTFLT;
+		ksi.ksi_addr = (void *)regs->tf_eip;
+		trapsignal(td, &ksi);
 		return(EINVAL);
 	}
 
@@ -621,6 +638,7 @@
 	stack_t ss;
 	struct trapframe *regs;
 	int eflags;
+	ksiginfo_t ksi;
 
 	regs = td->td_frame;
 
@@ -663,7 +681,12 @@
 	 */
 #define	CS_SECURE(cs)	(ISPL(cs) == SEL_UPL)
 	if (!CS_SECURE(context->sc_cs)) {
-		trapsignal(td, SIGBUS, T_PROTFLT);
+		ksiginfo_init_trap(&ksi);
+		ksi.ksi_signo = SIGBUS;
+		ksi.ksi_code = BUS_OBJERR;
+		ksi.ksi_trapno = T_PROTFLT;
+		ksi.ksi_addr = (void *)regs->tf_eip;
+		trapsignal(td, &ksi);
 		return(EINVAL);
 	}
 
@@ -792,7 +815,7 @@
 struct sysentvec linux_sysvec = {
 	LINUX_SYS_MAXSYSCALL,
 	linux_sysent,
-	0xff,
+	0,
 	LINUX_SIGTBLSZ,
 	bsd_to_linux_signal,
 	ELAST + 1,
@@ -821,7 +844,7 @@
 struct sysentvec elf_linux_sysvec = {
 	LINUX_SYS_MAXSYSCALL,
 	linux_sysent,
-	0xff,
+	0,
 	LINUX_SIGTBLSZ,
 	bsd_to_linux_signal,
 	ELAST + 1,
@@ -855,6 +878,7 @@
 					"/lib/ld-linux.so.1",
 					&elf_linux_sysvec,
 					NULL,
+					BI_CAN_EXEC_DYN,
 				 };
 
 static Elf32_Brandinfo linux_glibc2brand = {
@@ -865,6 +889,7 @@
 					"/lib/ld-linux.so.2",
 					&elf_linux_sysvec,
 					NULL,
+					BI_CAN_EXEC_DYN,
 				 };
 
 Elf32_Brandinfo *linux_brandlist[] = {
@@ -879,6 +904,7 @@
 	Elf32_Brandinfo **brandinfo;
 	int error;
 	struct linux_ioctl_handler **lihp;
+	struct linux_device_handler **ldhp;
 
 	error = 0;
 
@@ -891,6 +917,18 @@
 		if (error == 0) {
 			SET_FOREACH(lihp, linux_ioctl_handler_set)
 				linux_ioctl_register_handler(*lihp);
+			SET_FOREACH(ldhp, linux_device_handler_set)
+				linux_device_register_handler(*ldhp);
+			mtx_init(&emul_lock, "emuldata lock", NULL, MTX_DEF);
+			sx_init(&emul_shared_lock, "emuldata->shared lock");
+			LIST_INIT(&futex_list);
+			sx_init(&futex_sx, "futex protection lock");
+			linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit,
+			      NULL, 1000);
+			linux_schedtail_tag = EVENTHANDLER_REGISTER(schedtail, linux_schedtail,
+			      NULL, 1000);
+			linux_exec_tag = EVENTHANDLER_REGISTER(process_exec, linux_proc_exec,
+			      NULL, 1000);
 			if (bootverbose)
 				printf("Linux ELF exec handler installed\n");
 		} else
@@ -910,6 +948,14 @@
 		if (error == 0) {
 			SET_FOREACH(lihp, linux_ioctl_handler_set)
 				linux_ioctl_unregister_handler(*lihp);
+			SET_FOREACH(ldhp, linux_device_handler_set)
+				linux_device_unregister_handler(*ldhp);
+			mtx_destroy(&emul_lock);
+			sx_destroy(&emul_shared_lock);
+			sx_destroy(&futex_sx);
+			EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag);
+			EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag);
+			EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag);
 			if (bootverbose)
 				printf("Linux ELF exec handler removed\n");
 		} else
Index: imgact_linux.c
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/imgact_linux.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/imgact_linux.c -L sys/i386/linux/imgact_linux.c -u -r1.1.1.1 -r1.2
--- sys/i386/linux/imgact_linux.c
+++ sys/i386/linux/imgact_linux.c
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/linux/imgact_linux.c,v 1.54 2005/04/01 20:00:10 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/linux/imgact_linux.c,v 1.55.4.1 2008/01/19 18:15:04 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -119,12 +119,14 @@
     /*
      * Destroy old process VM and create a new one (with a new stack)
      */
-    exec_new_vmspace(imgp, &linux_sysvec);
+    error = exec_new_vmspace(imgp, &linux_sysvec);
+    if (error)
+	    goto fail;
     vmspace = imgp->proc->p_vmspace;
 
     /*
      * Check if file_offset page aligned,.
-     * Currently we cannot handle misalinged file offsets,
+     * Currently we cannot handle misaligned file offsets,
      * and so we read in the entire image (what a waste).
      */
     if (file_offset & PAGE_MASK) {
Index: linux_machdep.c
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/linux_machdep.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/linux_machdep.c -L sys/i386/linux/linux_machdep.c -u -r1.1.1.1 -r1.2
--- sys/i386/linux/linux_machdep.c
+++ sys/i386/linux/linux_machdep.c
@@ -27,22 +27,29 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/linux/linux_machdep.c,v 1.48.2.1 2005/08/04 23:25:32 sobomax Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/linux/linux_machdep.c,v 1.78.2.1 2007/12/05 13:31:57 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/file.h>
+#include <sys/fcntl.h>
 #include <sys/imgact.h>
 #include <sys/lock.h>
 #include <sys/malloc.h>
 #include <sys/mman.h>
 #include <sys/mutex.h>
+#include <sys/sx.h>
+#include <sys/priv.h>
 #include <sys/proc.h>
+#include <sys/queue.h>
 #include <sys/resource.h>
 #include <sys/resourcevar.h>
 #include <sys/signalvar.h>
 #include <sys/syscallsubr.h>
 #include <sys/sysproto.h>
 #include <sys/unistd.h>
+#include <sys/wait.h>
+#include <sys/sched.h>
 
 #include <machine/frame.h>
 #include <machine/psl.h>
@@ -58,6 +65,13 @@
 #include <compat/linux/linux_ipc.h>
 #include <compat/linux/linux_signal.h>
 #include <compat/linux/linux_util.h>
+#include <compat/linux/linux_emul.h>
+
+#include <i386/include/pcb.h>			/* needed for pcb definition in linux_set_thread_area */
+
+#include "opt_posix.h"
+
+extern struct sysentvec elf32_freebsd_sysvec;	/* defined in i386/i386/elf_machdep.c */
 
 struct l_descriptor {
 	l_uint		entry_number;
@@ -122,7 +136,14 @@
 	free(newpath, M_TEMP);
 	if (error == 0)
 		error = kern_execve(td, &eargs, NULL);
-	exec_free_args(&eargs);
+	if (error == 0)
+	   	/* linux process can exec fbsd one, dont attempt
+		 * to create emuldata for such process using
+		 * linux_proc_init, this leads to a panic on KASSERT
+		 * because such process has p->p_emuldata == NULL
+		 */
+	   	if (td->td_proc->p_sysent == &elf_linux_sysvec)
+   		   	error = linux_proc_init(td, 0, 0);
 	return (error);
 }
 
@@ -277,17 +298,38 @@
 linux_fork(struct thread *td, struct linux_fork_args *args)
 {
 	int error;
+	struct proc *p2;
+	struct thread *td2;
 
 #ifdef DEBUG
 	if (ldebug(fork))
 		printf(ARGS(fork, ""));
 #endif
 
-	if ((error = fork(td, (struct fork_args *)args)) != 0)
+	if ((error = fork1(td, RFFDG | RFPROC | RFSTOPPED, 0, &p2)) != 0)
 		return (error);
+	
+	if (error == 0) {
+		td->td_retval[0] = p2->p_pid;
+		td->td_retval[1] = 0;
+	}
 
 	if (td->td_retval[1] == 1)
 		td->td_retval[0] = 0;
+	error = linux_proc_init(td, td->td_retval[0], 0);
+	if (error)
+		return (error);
+
+	td2 = FIRST_THREAD_IN_PROC(p2);
+
+	/*
+	 * Make this runnable after we are finished with it.
+	 */
+	thread_lock(td2);
+	TD_SET_CAN_RUN(td2);
+	sched_add(td2, SRQ_BORING);
+	thread_unlock(td2);
+
 	return (0);
 }
 
@@ -295,28 +337,50 @@
 linux_vfork(struct thread *td, struct linux_vfork_args *args)
 {
 	int error;
+	struct proc *p2;
+	struct thread *td2;
 
 #ifdef DEBUG
 	if (ldebug(vfork))
 		printf(ARGS(vfork, ""));
 #endif
 
-	if ((error = vfork(td, (struct vfork_args *)args)) != 0)
+	/* exclude RFPPWAIT */
+	if ((error = fork1(td, RFFDG | RFPROC | RFMEM | RFSTOPPED, 0, &p2)) != 0)
 		return (error);
+	if (error == 0) {
+		td->td_retval[0] = p2->p_pid;
+		td->td_retval[1] = 0;
+	}
 	/* Are we the child? */
 	if (td->td_retval[1] == 1)
 		td->td_retval[0] = 0;
-	return (0);
-}
+	error = linux_proc_init(td, td->td_retval[0], 0);
+	if (error)
+		return (error);
+
+	PROC_LOCK(p2);
+	p2->p_flag |= P_PPWAIT;
+	PROC_UNLOCK(p2);
+
+	td2 = FIRST_THREAD_IN_PROC(p2);
+	
+	/*
+	 * Make this runnable after we are finished with it.
+	 */
+	thread_lock(td2);
+	TD_SET_CAN_RUN(td2);
+	sched_add(td2, SRQ_BORING);
+	thread_unlock(td2);
 
-#define CLONE_VM	0x100
-#define CLONE_FS	0x200
-#define CLONE_FILES	0x400
-#define CLONE_SIGHAND	0x800
-#define CLONE_PID	0x1000
-#define CLONE_THREAD	0x10000
+	/* wait for the children to exit, ie. emulate vfork */
+	PROC_LOCK(p2);
+	while (p2->p_flag & P_PPWAIT)
+	   	msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0);
+	PROC_UNLOCK(p2);
 
-#define THREADING_FLAGS	(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND)
+	return (0);
+}
 
 int
 linux_clone(struct thread *td, struct linux_clone_args *args)
@@ -325,31 +389,35 @@
 	struct proc *p2;
 	struct thread *td2;
 	int exit_signal;
+	struct linux_emuldata *em;
 
 #ifdef DEBUG
 	if (ldebug(clone)) {
-		printf(ARGS(clone, "flags %x, stack %x"),
-		    (unsigned int)args->flags, (unsigned int)args->stack);
-		if (args->flags & CLONE_PID)
-			printf(LMSG("CLONE_PID not yet supported"));
+   	   	printf(ARGS(clone, "flags %x, stack %x, parent tid: %x, child tid: %x"),
+		    (unsigned int)args->flags, (unsigned int)args->stack, 
+		    (unsigned int)args->parent_tidptr, (unsigned int)args->child_tidptr);
 	}
 #endif
 
-	if (!args->stack)
-		return (EINVAL);
-
 	exit_signal = args->flags & 0x000000ff;
-	if (exit_signal >= LINUX_NSIG)
+	if (LINUX_SIG_VALID(exit_signal)) {
+		if (exit_signal <= LINUX_SIGTBLSZ)
+			exit_signal =
+			    linux_to_bsd_signal[_SIG_IDX(exit_signal)];
+	} else if (exit_signal != 0)
 		return (EINVAL);
 
-	if (exit_signal <= LINUX_SIGTBLSZ)
-		exit_signal = linux_to_bsd_signal[_SIG_IDX(exit_signal)];
-
-	if (args->flags & CLONE_VM)
+	if (args->flags & LINUX_CLONE_VM)
 		ff |= RFMEM;
-	if (args->flags & CLONE_SIGHAND)
+	if (args->flags & LINUX_CLONE_SIGHAND)
 		ff |= RFSIGSHARE;
-	if (!(args->flags & CLONE_FILES))
+	/* 
+	 * XXX: in linux sharing of fs info (chroot/cwd/umask)
+	 * and open files is independant. in fbsd its in one
+	 * structure but in reality it doesn't cause any problems
+	 * because both of these flags are usually set together.
+	 */
+	if (!(args->flags & (LINUX_CLONE_FILES | LINUX_CLONE_FS)))
 		ff |= RFFDG;
 
 	/*
@@ -357,7 +425,7 @@
 	 * kernel threads. Unfortunately despite the existence of the
 	 * CLONE_THREAD flag, version of linuxthreads package used in
 	 * most popular distros as of beginning of 2005 doesn't make
-	 * any use of it. Therefore, this detection relay fully on
+	 * any use of it. Therefore, this detection relies on
 	 * empirical observation that linuxthreads sets certain
 	 * combination of flags, so that we can make more or less
 	 * precise detection and notify the FreeBSD kernel that several
@@ -365,49 +433,161 @@
 	 * that special treatment is necessary for signal delivery
 	 * between those processes and fd locking.
 	 */
-	if ((args->flags & 0xffffff00) == THREADING_FLAGS)
+	if ((args->flags & 0xffffff00) == LINUX_THREADING_FLAGS)
 		ff |= RFTHREAD;
 
+	if (args->flags & LINUX_CLONE_PARENT_SETTID)
+		if (args->parent_tidptr == NULL)
+			return (EINVAL);
+
 	error = fork1(td, ff, 0, &p2);
 	if (error)
 		return (error);
+
+	if (args->flags & (LINUX_CLONE_PARENT | LINUX_CLONE_THREAD)) {
+	   	sx_xlock(&proctree_lock);
+		PROC_LOCK(p2);
+		proc_reparent(p2, td->td_proc->p_pptr);
+		PROC_UNLOCK(p2);
+		sx_xunlock(&proctree_lock);
+	}
 	
+	/* create the emuldata */
+	error = linux_proc_init(td, p2->p_pid, args->flags);
+	/* reference it - no need to check this */
+	em = em_find(p2, EMUL_DOLOCK);
+	KASSERT(em != NULL, ("clone: emuldata not found.\n"));
+	/* and adjust it */
+
+	if (args->flags & LINUX_CLONE_THREAD) {
+	   	/* XXX: linux mangles pgrp and pptr somehow
+		 * I think it might be this but I am not sure.
+		 */
+#ifdef notyet
+	   	PROC_LOCK(p2);
+	   	p2->p_pgrp = td->td_proc->p_pgrp;
+	   	PROC_UNLOCK(p2);
+#endif
+	 	exit_signal = 0;
+	}
+
+	if (args->flags & LINUX_CLONE_CHILD_SETTID)
+		em->child_set_tid = args->child_tidptr;
+	else
+	   	em->child_set_tid = NULL;
+
+	if (args->flags & LINUX_CLONE_CHILD_CLEARTID)
+		em->child_clear_tid = args->child_tidptr;
+	else
+	   	em->child_clear_tid = NULL;
+
+	EMUL_UNLOCK(&emul_lock);
+
+	if (args->flags & LINUX_CLONE_PARENT_SETTID) {
+		error = copyout(&p2->p_pid, args->parent_tidptr, sizeof(p2->p_pid));
+		if (error)
+			printf(LMSG("copyout failed!"));
+	}
 
 	PROC_LOCK(p2);
 	p2->p_sigparent = exit_signal;
 	PROC_UNLOCK(p2);
 	td2 = FIRST_THREAD_IN_PROC(p2);
-	td2->td_frame->tf_esp = (unsigned int)args->stack;
+	/* 
+	 * in a case of stack = NULL we are supposed to COW calling process stack
+	 * this is what normal fork() does so we just keep the tf_esp arg intact
+	 */
+	if (args->stack)
+   	   	td2->td_frame->tf_esp = (unsigned int)args->stack;
+
+	if (args->flags & LINUX_CLONE_SETTLS) {
+   	   	struct l_user_desc info;
+   	   	int idx;
+	   	int a[2];
+		struct segment_descriptor sd;
+
+	   	error = copyin((void *)td->td_frame->tf_esi, &info, sizeof(struct l_user_desc));
+		if (error) {
+			printf(LMSG("copyin failed!"));
+		} else {
+		
+			idx = info.entry_number;
+		
+			/* 
+			 * looks like we're getting the idx we returned
+			 * in the set_thread_area() syscall
+			 */
+			if (idx != 6 && idx != 3) {
+				printf(LMSG("resetting idx!"));
+				idx = 3;
+			}
+
+			/* this doesnt happen in practice */
+			if (idx == 6) {
+		   		/* we might copy out the entry_number as 3 */
+			   	info.entry_number = 3;
+				error = copyout(&info, (void *) td->td_frame->tf_esi, sizeof(struct l_user_desc));
+				if (error)
+					printf(LMSG("copyout failed!"));
+			}
+
+			a[0] = LINUX_LDT_entry_a(&info);
+			a[1] = LINUX_LDT_entry_b(&info);
+
+			memcpy(&sd, &a, sizeof(a));
+#ifdef DEBUG
+		if (ldebug(clone))
+		   	printf("Segment created in clone with CLONE_SETTLS: lobase: %x, hibase: %x, lolimit: %x, hilimit: %x, type: %i, dpl: %i, p: %i, xx: %i, def32: %i, gran: %i\n", sd.sd_lobase,
+			sd.sd_hibase,
+			sd.sd_lolimit,
+			sd.sd_hilimit,
+			sd.sd_type,
+			sd.sd_dpl,
+			sd.sd_p,
+			sd.sd_xx,
+			sd.sd_def32,
+			sd.sd_gran);
+#endif
+
+			/* set %gs */
+			td2->td_pcb->pcb_gsd = sd;
+			td2->td_pcb->pcb_gs = GSEL(GUGS_SEL, SEL_UPL);
+		}
+	} 
 
 #ifdef DEBUG
 	if (ldebug(clone))
 		printf(LMSG("clone: successful rfork to %ld, stack %p sig = %d"),
 		    (long)p2->p_pid, args->stack, exit_signal);
 #endif
+	if (args->flags & LINUX_CLONE_VFORK) {
+	   	PROC_LOCK(p2);
+		p2->p_flag |= P_PPWAIT;
+	   	PROC_UNLOCK(p2);
+	}
 
 	/*
 	 * Make this runnable after we are finished with it.
 	 */
-	mtx_lock_spin(&sched_lock);
+	thread_lock(td2);
 	TD_SET_CAN_RUN(td2);
-	setrunqueue(td2, SRQ_BORING);
-	mtx_unlock_spin(&sched_lock);
+	sched_add(td2, SRQ_BORING);
+	thread_unlock(td2);
 
 	td->td_retval[0] = p2->p_pid;
 	td->td_retval[1] = 0;
+
+	if (args->flags & LINUX_CLONE_VFORK) {
+   	   	/* wait for the children to exit, ie. emulate vfork */
+   	   	PROC_LOCK(p2);
+		while (p2->p_flag & P_PPWAIT)
+   		   	msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0);
+		PROC_UNLOCK(p2);
+	}
+
 	return (0);
 }
 
-/* XXX move */
-struct l_mmap_argv {
-	l_caddr_t	addr;
-	l_int		len;
-	l_int		prot;
-	l_int		flags;
-	l_int		fd;
-	l_int		pos;
-};
-
 #define STACK_SIZE  (2 * 1024 * 1024)
 #define GUARD_SIZE  (4 * PAGE_SIZE)
 
@@ -425,12 +605,12 @@
 		    args->flags, args->fd, args->pgoff);
 #endif
 
-	linux_args.addr = (l_caddr_t)args->addr;
+	linux_args.addr = args->addr;
 	linux_args.len = args->len;
 	linux_args.prot = args->prot;
 	linux_args.flags = args->flags;
 	linux_args.fd = args->fd;
-	linux_args.pos = args->pgoff * PAGE_SIZE;
+	linux_args.pgoff = args->pgoff * PAGE_SIZE;
 
 	return (linux_mmap_common(td, &linux_args));
 }
@@ -449,7 +629,7 @@
 	if (ldebug(mmap))
 		printf(ARGS(mmap, "%p, %d, %d, 0x%08x, %d, %d"),
 		    (void *)linux_args.addr, linux_args.len, linux_args.prot,
-		    linux_args.flags, linux_args.fd, linux_args.pos);
+		    linux_args.flags, linux_args.fd, linux_args.pgoff);
 #endif
 
 	return (linux_mmap_common(td, &linux_args));
@@ -469,9 +649,20 @@
 		off_t pos;
 	} */ bsd_args;
 	int error;
+	struct file *fp;
 
 	error = 0;
 	bsd_args.flags = 0;
+	fp = NULL;
+
+	/*
+	 * Linux mmap(2):
+	 * You must specify exactly one of MAP_SHARED and MAP_PRIVATE
+	 */
+	if (! ((linux_args->flags & LINUX_MAP_SHARED) ^
+	    (linux_args->flags & LINUX_MAP_PRIVATE)))
+		return (EINVAL);
+
 	if (linux_args->flags & LINUX_MAP_SHARED)
 		bsd_args.flags |= MAP_SHARED;
 	if (linux_args->flags & LINUX_MAP_PRIVATE)
@@ -482,10 +673,47 @@
 		bsd_args.flags |= MAP_ANON;
 	else
 		bsd_args.flags |= MAP_NOSYNC;
-	if (linux_args->flags & LINUX_MAP_GROWSDOWN) {
+	if (linux_args->flags & LINUX_MAP_GROWSDOWN)
 		bsd_args.flags |= MAP_STACK;
 
-		/* The linux MAP_GROWSDOWN option does not limit auto
+	/*
+	 * PROT_READ, PROT_WRITE, or PROT_EXEC implies PROT_READ and PROT_EXEC
+	 * on Linux/i386. We do this to ensure maximum compatibility.
+	 * Linux/ia64 does the same in i386 emulation mode.
+	 */
+	bsd_args.prot = linux_args->prot;
+	if (bsd_args.prot & (PROT_READ | PROT_WRITE | PROT_EXEC))
+		bsd_args.prot |= PROT_READ | PROT_EXEC;
+
+	/* Linux does not check file descriptor when MAP_ANONYMOUS is set. */
+	bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : linux_args->fd;
+	if (bsd_args.fd != -1) {
+		/*
+		 * Linux follows Solaris mmap(2) description:
+		 * The file descriptor fildes is opened with
+		 * read permission, regardless of the
+		 * protection options specified.
+		 */
+
+		if ((error = fget(td, bsd_args.fd, &fp)) != 0)
+			return (error);
+		if (fp->f_type != DTYPE_VNODE) {
+			fdrop(fp, td);
+			return (EINVAL);
+		}
+
+		/* Linux mmap() just fails for O_WRONLY files */
+		if (!(fp->f_flag & FREAD)) {
+			fdrop(fp, td);
+			return (EACCES);
+		}
+
+		fdrop(fp, td);
+	}
+
+	if (linux_args->flags & LINUX_MAP_GROWSDOWN) {
+		/* 
+		 * The linux MAP_GROWSDOWN option does not limit auto
 		 * growth of the region.  Linux mmap with this option
 		 * takes as addr the inital BOS, and as len, the initial
 		 * region size.  It can then grow down from addr without
@@ -498,7 +726,7 @@
 		 * Our mmap with MAP_STACK takes addr as the maximum
 		 * downsize limit on BOS, and as len the max size of
 		 * the region.  It them maps the top SGROWSIZ bytes,
-		 * and autgrows the region down, up to the limit
+		 * and auto grows the region down, up to the limit
 		 * in addr.
 		 *
 		 * If we don't use the MAP_STACK option, the effect
@@ -506,11 +734,10 @@
 		 * fixed size of (STACK_SIZE - GUARD_SIZE).
 		 */
 
-		/* This gives us TOS */
-		bsd_args.addr = linux_args->addr + linux_args->len;
-
-		if (bsd_args.addr > p->p_vmspace->vm_maxsaddr) {
-			/* Some linux apps will attempt to mmap
+		if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len >
+		    p->p_vmspace->vm_maxsaddr) {
+			/* 
+			 * Some linux apps will attempt to mmap
 			 * thread stacks near the top of their
 			 * address space.  If their TOS is greater
 			 * than vm_maxsaddr, vm_map_growstack()
@@ -537,25 +764,20 @@
 		else
 			bsd_args.len  = STACK_SIZE - GUARD_SIZE;
 
-		/* This gives us a new BOS.  If we're using VM_STACK, then
+		/* 
+		 * This gives us a new BOS.  If we're using VM_STACK, then
 		 * mmap will just map the top SGROWSIZ bytes, and let
 		 * the stack grow down to the limit at BOS.  If we're
 		 * not using VM_STACK we map the full stack, since we
 		 * don't have a way to autogrow it.
 		 */
-		bsd_args.addr -= bsd_args.len;
+		bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) -
+		    bsd_args.len;
 	} else {
-		bsd_args.addr = linux_args->addr;
+		bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
 		bsd_args.len  = linux_args->len;
 	}
-
-	bsd_args.prot = linux_args->prot | PROT_READ;	/* always required */
-	if (linux_args->flags & LINUX_MAP_ANON)
-		bsd_args.fd = -1;
-	else
-		bsd_args.fd = linux_args->fd;
-	bsd_args.pos = linux_args->pos;
-	bsd_args.pad = 0;
+	bsd_args.pos = linux_args->pgoff;
 
 #ifdef DEBUG
 	if (ldebug(mmap))
@@ -574,6 +796,19 @@
 }
 
 int
+linux_mprotect(struct thread *td, struct linux_mprotect_args *uap)
+{
+	struct mprotect_args bsd_args;
+
+	bsd_args.addr = uap->addr;
+	bsd_args.len = uap->len;
+	bsd_args.prot = uap->prot;
+	if (bsd_args.prot & (PROT_READ | PROT_WRITE | PROT_EXEC))
+		bsd_args.prot |= PROT_READ | PROT_EXEC;
+	return (mprotect(td, &bsd_args));
+}
+
+int
 linux_pipe(struct thread *td, struct linux_pipe_args *args)
 {
 	int error;
@@ -611,9 +846,7 @@
 	iia.start = args->start;
 	iia.length = args->length;
 	iia.enable = args->enable;
-	mtx_lock(&Giant);
 	error = i386_set_ioperm(td, &iia);
-	mtx_unlock(&Giant);
 	return (error);
 }
 
@@ -624,7 +857,7 @@
 
 	if (args->level < 0 || args->level > 3)
 		return (EINVAL);
-	if ((error = suser(td)) != 0)
+	if ((error = priv_check(td, PRIV_IO)) != 0)
 		return (error);
 	if ((error = securelevel_gt(td->td_ucred, 0)) != 0)
 		return (error);
@@ -640,6 +873,7 @@
 	struct i386_ldt_args ldt;
 	struct l_descriptor ld;
 	union descriptor desc;
+	int size, written;
 
 	if (uap->ptr == NULL)
 		return (EINVAL);
@@ -649,10 +883,16 @@
 		ldt.start = 0;
 		ldt.descs = uap->ptr;
 		ldt.num = uap->bytecount / sizeof(union descriptor);
-		mtx_lock(&Giant);
 		error = i386_get_ldt(td, &ldt);
 		td->td_retval[0] *= sizeof(union descriptor);
-		mtx_unlock(&Giant);
+		break;
+	case 0x02: /* read_default_ldt = 0 */
+		size = 5*sizeof(struct l_desc_struct);
+		if (size > uap->bytecount)
+			size = uap->bytecount;
+		for (written = error = 0; written < size && error == 0; written++)
+			error = subyte((char *)uap->ptr + written, 0);
+		td->td_retval[0] = written;
 		break;
 	case 0x01: /* write_ldt */
 	case 0x11: /* write_ldt */
@@ -677,9 +917,7 @@
 		desc.sd.sd_xx = 0;
 		desc.sd.sd_def32 = ld.seg_32bit;
 		desc.sd.sd_gran = ld.limit_in_pages;
-		mtx_lock(&Giant);
 		error = i386_set_ldt(td, &ldt, &desc);
-		mtx_unlock(&Giant);
 		break;
 	default:
 		error = EINVAL;
@@ -840,7 +1078,6 @@
 #endif
 
 	sa.fd = args->fd;
-	sa.pad = 0;
 	sa.length = args->length;
 	return ftruncate(td, &sa);
 }
@@ -848,25 +1085,241 @@
 int
 linux_set_thread_area(struct thread *td, struct linux_set_thread_area_args *args)
 {
-	/*
-	 * Return an error code instead of raising a SIGSYS so that
-	 * the caller will fall back to simpler LDT methods.
+	struct l_user_desc info;
+	int error;
+	int idx;
+	int a[2];
+	struct segment_descriptor sd;
+
+	error = copyin(args->desc, &info, sizeof(struct l_user_desc));
+	if (error)
+		return (error);
+
+#ifdef DEBUG
+	if (ldebug(set_thread_area))
+	   	printf(ARGS(set_thread_area, "%i, %x, %x, %i, %i, %i, %i, %i, %i\n"),
+		      info.entry_number,
+      		      info.base_addr,
+      		      info.limit,
+      		      info.seg_32bit,
+		      info.contents,
+      		      info.read_exec_only,
+      		      info.limit_in_pages,
+      		      info.seg_not_present,
+      		      info.useable);
+#endif
+
+	idx = info.entry_number;
+	/* 
+	 * Semantics of linux version: every thread in the system has array of
+	 * 3 tls descriptors. 1st is GLIBC TLS, 2nd is WINE, 3rd unknown. This 
+	 * syscall loads one of the selected tls decriptors with a value and
+	 * also loads GDT descriptors 6, 7 and 8 with the content of the
+	 * per-thread descriptors.
+	 *
+	 * Semantics of fbsd version: I think we can ignore that linux has 3 
+	 * per-thread descriptors and use just the 1st one. The tls_array[]
+	 * is used only in set/get-thread_area() syscalls and for loading the
+	 * GDT descriptors. In fbsd we use just one GDT descriptor for TLS so
+	 * we will load just one. 
+	 *
+	 * XXX: this doesn't work when a user space process tries to use more
+	 * than 1 TLS segment. Comment in the linux sources says wine might do
+	 * this.
 	 */
-	return (ENOSYS);
+
+	/* 
+	 * we support just GLIBC TLS now 
+	 * we should let 3 proceed as well because we use this segment so
+	 * if code does two subsequent calls it should succeed
+	 */
+	if (idx != 6 && idx != -1 && idx != 3)
+		return (EINVAL);
+
+	/* 
+	 * we have to copy out the GDT entry we use
+	 * FreeBSD uses GDT entry #3 for storing %gs so load that
+	 *
+	 * XXX: what if a user space program doesn't check this value and tries
+	 * to use 6, 7 or 8? 
+	 */
+	idx = info.entry_number = 3;
+	error = copyout(&info, args->desc, sizeof(struct l_user_desc));
+	if (error)
+		return (error);
+
+	if (LINUX_LDT_empty(&info)) {
+		a[0] = 0;
+		a[1] = 0;
+	} else {
+		a[0] = LINUX_LDT_entry_a(&info);
+		a[1] = LINUX_LDT_entry_b(&info);
+	}
+
+	memcpy(&sd, &a, sizeof(a));
+#ifdef DEBUG
+	if (ldebug(set_thread_area))
+	   	printf("Segment created in set_thread_area: lobase: %x, hibase: %x, lolimit: %x, hilimit: %x, type: %i, dpl: %i, p: %i, xx: %i, def32: %i, gran: %i\n", sd.sd_lobase,
+			sd.sd_hibase,
+			sd.sd_lolimit,
+			sd.sd_hilimit,
+			sd.sd_type,
+			sd.sd_dpl,
+			sd.sd_p,
+			sd.sd_xx,
+			sd.sd_def32,
+			sd.sd_gran);
+#endif
+
+	/* this is taken from i386 version of cpu_set_user_tls() */
+	critical_enter();
+	/* set %gs */
+	td->td_pcb->pcb_gsd = sd;
+	PCPU_GET(fsgs_gdt)[1] = sd;
+	load_gs(GSEL(GUGS_SEL, SEL_UPL));
+	critical_exit();
+   
+	return (0);
 }
 
 int
-linux_gettid(struct thread *td, struct linux_gettid_args *args)
+linux_get_thread_area(struct thread *td, struct linux_get_thread_area_args *args)
 {
+   	
+	struct l_user_desc info;
+	int error;
+	int idx;
+	struct l_desc_struct desc;
+	struct segment_descriptor sd;
+
+#ifdef DEBUG
+	if (ldebug(get_thread_area))
+		printf(ARGS(get_thread_area, "%p"), args->desc);
+#endif
+
+	error = copyin(args->desc, &info, sizeof(struct l_user_desc));
+	if (error)
+		return (error);
+
+	idx = info.entry_number;
+	/* XXX: I am not sure if we want 3 to be allowed too. */
+	if (idx != 6 && idx != 3)
+		return (EINVAL);
+
+	idx = 3;
+
+	memset(&info, 0, sizeof(info));
+
+	sd = PCPU_GET(fsgs_gdt)[1];
+
+	memcpy(&desc, &sd, sizeof(desc));
+
+	info.entry_number = idx;
+	info.base_addr = LINUX_GET_BASE(&desc);
+	info.limit = LINUX_GET_LIMIT(&desc);
+	info.seg_32bit = LINUX_GET_32BIT(&desc);
+	info.contents = LINUX_GET_CONTENTS(&desc);
+	info.read_exec_only = !LINUX_GET_WRITABLE(&desc);
+	info.limit_in_pages = LINUX_GET_LIMIT_PAGES(&desc);
+	info.seg_not_present = !LINUX_GET_PRESENT(&desc);
+	info.useable = LINUX_GET_USEABLE(&desc);
+
+	error = copyout(&info, args->desc, sizeof(struct l_user_desc));
+	if (error)
+	   	return (EFAULT);
 
-	td->td_retval[0] = td->td_proc->p_pid;
 	return (0);
 }
 
+/* copied from kern/kern_time.c */
+int
+linux_timer_create(struct thread *td, struct linux_timer_create_args *args)
+{
+   	return ktimer_create(td, (struct ktimer_create_args *) args);
+}
+
 int
-linux_tkill(struct thread *td, struct linux_tkill_args *args)
+linux_timer_settime(struct thread *td, struct linux_timer_settime_args *args)
 {
+   	return ktimer_settime(td, (struct ktimer_settime_args *) args);
+}
+
+int
+linux_timer_gettime(struct thread *td, struct linux_timer_gettime_args *args)
+{
+   	return ktimer_gettime(td, (struct ktimer_gettime_args *) args);
+}
 
-	return (linux_kill(td, (struct linux_kill_args *) args));
+int
+linux_timer_getoverrun(struct thread *td, struct linux_timer_getoverrun_args *args)
+{
+   	return ktimer_getoverrun(td, (struct ktimer_getoverrun_args *) args);
+}
+
+int
+linux_timer_delete(struct thread *td, struct linux_timer_delete_args *args)
+{
+   	return ktimer_delete(td, (struct ktimer_delete_args *) args);
+}
+
+/* XXX: this wont work with module - convert it */
+int
+linux_mq_open(struct thread *td, struct linux_mq_open_args *args)
+{
+#ifdef P1003_1B_MQUEUE
+   	return kmq_open(td, (struct kmq_open_args *) args);
+#else
+	return (ENOSYS);
+#endif
+}
+
+int
+linux_mq_unlink(struct thread *td, struct linux_mq_unlink_args *args)
+{
+#ifdef P1003_1B_MQUEUE
+   	return kmq_unlink(td, (struct kmq_unlink_args *) args);
+#else
+	return (ENOSYS);
+#endif
+}
+
+int
+linux_mq_timedsend(struct thread *td, struct linux_mq_timedsend_args *args)
+{
+#ifdef P1003_1B_MQUEUE
+   	return kmq_timedsend(td, (struct kmq_timedsend_args *) args);
+#else
+	return (ENOSYS);
+#endif
+}
+
+int
+linux_mq_timedreceive(struct thread *td, struct linux_mq_timedreceive_args *args)
+{
+#ifdef P1003_1B_MQUEUE
+   	return kmq_timedreceive(td, (struct kmq_timedreceive_args *) args);
+#else
+	return (ENOSYS);
+#endif
+}
+
+int
+linux_mq_notify(struct thread *td, struct linux_mq_notify_args *args)
+{
+#ifdef P1003_1B_MQUEUE
+	return kmq_notify(td, (struct kmq_notify_args *) args);
+#else
+	return (ENOSYS);
+#endif
+}
+
+int
+linux_mq_getsetattr(struct thread *td, struct linux_mq_getsetattr_args *args)
+{
+#ifdef P1003_1B_MQUEUE
+   	return kmq_setattr(td, (struct kmq_setattr_args *) args);
+#else
+	return (ENOSYS);
+#endif
 }
 
Index: linux_syscall.h
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/linux_syscall.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/linux_syscall.h -L sys/i386/linux/linux_syscall.h -u -r1.1.1.1 -r1.2
--- sys/i386/linux/linux_syscall.h
+++ sys/i386/linux/linux_syscall.h
@@ -2,8 +2,8 @@
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/i386/linux/linux_syscall.h,v 1.58.2.1 2005/07/20 17:43:53 jhb Exp $
- * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.61.2.1 2005/07/20 17:42:15 jhb Exp 
+ * $FreeBSD: src/sys/i386/linux/linux_syscall.h,v 1.87 2007/09/18 19:51:49 dwmalone Exp $
+ * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.89 2007/09/18 19:50:33 dwmalone Exp 
  */
 
 #define	LINUX_SYS_exit	1
@@ -61,7 +61,7 @@
 #define	LINUX_SYS_chroot	61
 #define	LINUX_SYS_linux_ustat	62
 #define	LINUX_SYS_dup2	63
-#define	LINUX_SYS_getppid	64
+#define	LINUX_SYS_linux_getppid	64
 #define	LINUX_SYS_getpgrp	65
 #define	LINUX_SYS_setsid	66
 #define	LINUX_SYS_linux_sigaction	67
@@ -71,7 +71,7 @@
 #define	LINUX_SYS_linux_setregid16	71
 #define	LINUX_SYS_linux_sigsuspend	72
 #define	LINUX_SYS_linux_sigpending	73
-#define	LINUX_SYS_osethostname	74
+#define	LINUX_SYS_linux_sethostname	74
 #define	LINUX_SYS_linux_setrlimit	75
 #define	LINUX_SYS_linux_old_getrlimit	76
 #define	LINUX_SYS_getrusage	77
@@ -81,7 +81,7 @@
 #define	LINUX_SYS_linux_setgroups16	81
 #define	LINUX_SYS_linux_old_select	82
 #define	LINUX_SYS_linux_symlink	83
-#define	LINUX_SYS_ostat	84
+#define	LINUX_SYS_linux_lstat	84
 #define	LINUX_SYS_linux_readlink	85
 #define	LINUX_SYS_linux_uselib	86
 #define	LINUX_SYS_swapon	87
@@ -90,7 +90,7 @@
 #define	LINUX_SYS_linux_mmap	90
 #define	LINUX_SYS_munmap	91
 #define	LINUX_SYS_linux_truncate	92
-#define	LINUX_SYS_oftruncate	93
+#define	LINUX_SYS_linux_ftruncate	93
 #define	LINUX_SYS_fchmod	94
 #define	LINUX_SYS_fchown	95
 #define	LINUX_SYS_linux_getpriority	96
@@ -120,7 +120,7 @@
 #define	LINUX_SYS_linux_newuname	122
 #define	LINUX_SYS_linux_modify_ldt	123
 #define	LINUX_SYS_linux_adjtimex	124
-#define	LINUX_SYS_mprotect	125
+#define	LINUX_SYS_linux_mprotect	125
 #define	LINUX_SYS_linux_sigprocmask	126
 #define	LINUX_SYS_linux_create_module	127
 #define	LINUX_SYS_linux_init_module	128
@@ -156,7 +156,7 @@
 #define	LINUX_SYS_linux_sched_get_priority_max	159
 #define	LINUX_SYS_linux_sched_get_priority_min	160
 #define	LINUX_SYS_sched_rr_get_interval	161
-#define	LINUX_SYS_nanosleep	162
+#define	LINUX_SYS_linux_nanosleep	162
 #define	LINUX_SYS_linux_mremap	163
 #define	LINUX_SYS_linux_setresuid16	164
 #define	LINUX_SYS_linux_getresuid16	165
@@ -227,7 +227,66 @@
 #define	LINUX_SYS_linux_lremovexattr	236
 #define	LINUX_SYS_linux_fremovexattr	237
 #define	LINUX_SYS_linux_tkill	238
+#define	LINUX_SYS_linux_sys_futex	240
+#define	LINUX_SYS_linux_sched_getaffinity	242
 #define	LINUX_SYS_linux_set_thread_area	243
+#define	LINUX_SYS_linux_get_thread_area	244
 #define	LINUX_SYS_linux_fadvise64	250
-#define	LINUX_SYS_exit_group	252
-#define	LINUX_SYS_MAXSYSCALL	268
+#define	LINUX_SYS_linux_exit_group	252
+#define	LINUX_SYS_linux_lookup_dcookie	253
+#define	LINUX_SYS_linux_epoll_create	254
+#define	LINUX_SYS_linux_epoll_ctl	255
+#define	LINUX_SYS_linux_epoll_wait	256
+#define	LINUX_SYS_linux_remap_file_pages	257
+#define	LINUX_SYS_linux_set_tid_address	258
+#define	LINUX_SYS_linux_timer_create	259
+#define	LINUX_SYS_linux_timer_settime	260
+#define	LINUX_SYS_linux_timer_gettime	261
+#define	LINUX_SYS_linux_timer_getoverrun	262
+#define	LINUX_SYS_linux_timer_delete	263
+#define	LINUX_SYS_linux_clock_settime	264
+#define	LINUX_SYS_linux_clock_gettime	265
+#define	LINUX_SYS_linux_clock_getres	266
+#define	LINUX_SYS_linux_clock_nanosleep	267
+#define	LINUX_SYS_linux_statfs64	268
+#define	LINUX_SYS_linux_fstatfs64	269
+#define	LINUX_SYS_linux_tgkill	270
+#define	LINUX_SYS_linux_utimes	271
+#define	LINUX_SYS_linux_fadvise64_64	272
+#define	LINUX_SYS_linux_mbind	274
+#define	LINUX_SYS_linux_get_mempolicy	275
+#define	LINUX_SYS_linux_set_mempolicy	276
+#define	LINUX_SYS_linux_mq_open	277
+#define	LINUX_SYS_linux_mq_unlink	278
+#define	LINUX_SYS_linux_mq_timedsend	279
+#define	LINUX_SYS_linux_mq_timedreceive	280
+#define	LINUX_SYS_linux_mq_notify	281
+#define	LINUX_SYS_linux_mq_getsetattr	282
+#define	LINUX_SYS_linux_kexec_load	283
+#define	LINUX_SYS_linux_waitid	284
+#define	LINUX_SYS_linux_add_key	286
+#define	LINUX_SYS_linux_request_key	287
+#define	LINUX_SYS_linux_keyctl	288
+#define	LINUX_SYS_linux_ioprio_set	289
+#define	LINUX_SYS_linux_ioprio_get	290
+#define	LINUX_SYS_linux_inotify_init	291
+#define	LINUX_SYS_linux_inotify_add_watch	292
+#define	LINUX_SYS_linux_inotify_rm_watch	293
+#define	LINUX_SYS_linux_migrate_pages	294
+#define	LINUX_SYS_linux_openat	295
+#define	LINUX_SYS_linux_mkdirat	296
+#define	LINUX_SYS_linux_mknodat	297
+#define	LINUX_SYS_linux_fchownat	298
+#define	LINUX_SYS_linux_futimesat	299
+#define	LINUX_SYS_linux_fstatat64	300
+#define	LINUX_SYS_linux_unlinkat	301
+#define	LINUX_SYS_linux_renameat	302
+#define	LINUX_SYS_linux_linkat	303
+#define	LINUX_SYS_linux_symlinkat	304
+#define	LINUX_SYS_linux_readlinkat	305
+#define	LINUX_SYS_linux_fchmodat	306
+#define	LINUX_SYS_linux_faccessat	307
+#define	LINUX_SYS_linux_pselect6	308
+#define	LINUX_SYS_linux_ppoll	309
+#define	LINUX_SYS_linux_unshare	310
+#define	LINUX_SYS_MAXSYSCALL	311
Index: linux_proto.h
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/linux_proto.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/linux_proto.h -L sys/i386/linux/linux_proto.h -u -r1.1.1.1 -r1.2
--- sys/i386/linux/linux_proto.h
+++ sys/i386/linux/linux_proto.h
@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/i386/linux/linux_proto.h,v 1.64.2.1 2005/07/20 17:43:53 jhb Exp $
- * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.61.2.1 2005/07/20 17:42:15 jhb Exp 
+ * $FreeBSD: src/sys/i386/linux/linux_proto.h,v 1.95 2007/09/18 19:51:49 dwmalone Exp $
+ * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.89 2007/09/18 19:50:33 dwmalone Exp 
  */
 
 #ifndef _LINUX_SYSPROTO_H_
@@ -11,12 +11,11 @@
 
 #include <sys/signal.h>
 #include <sys/acl.h>
-#include <sys/thr.h>
-#include <sys/umtx.h>
-#include <posix4/_semaphore.h>
-
+#include <sys/_semaphore.h>
 #include <sys/ucontext.h>
 
+#include <bsm/audit_kevents.h>
+
 struct proc;
 
 struct thread;
@@ -84,7 +83,7 @@
 };
 struct linux_stat_args {
 	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
-	char up_l_[PADL_(struct ostat *)]; struct ostat * up; char up_r_[PADR_(struct ostat *)];
+	char up_l_[PADL_(struct linux_stat *)]; struct linux_stat * up; char up_r_[PADR_(struct linux_stat *)];
 };
 struct linux_lseek_args {
 	char fdes_l_[PADL_(l_uint)]; l_uint fdes; char fdes_r_[PADR_(l_uint)];
@@ -124,7 +123,7 @@
 };
 struct linux_fstat_args {
 	char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)];
-	char up_l_[PADL_(struct ostat *)]; struct ostat * up; char up_r_[PADR_(struct ostat *)];
+	char up_l_[PADL_(struct linux_stat *)]; struct linux_stat * up; char up_r_[PADR_(struct linux_stat *)];
 };
 struct linux_pause_args {
 	register_t dummy;
@@ -201,6 +200,9 @@
 	char dev_l_[PADL_(l_dev_t)]; l_dev_t dev; char dev_r_[PADR_(l_dev_t)];
 	char ubuf_l_[PADL_(struct l_ustat *)]; struct l_ustat * ubuf; char ubuf_r_[PADR_(struct l_ustat *)];
 };
+struct linux_getppid_args {
+	register_t dummy;
+};
 struct linux_sigaction_args {
 	char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)];
 	char nsa_l_[PADL_(l_osigaction_t *)]; l_osigaction_t * nsa; char nsa_r_[PADR_(l_osigaction_t *)];
@@ -228,6 +230,10 @@
 struct linux_sigpending_args {
 	char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)];
 };
+struct linux_sethostname_args {
+	char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
+	char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
+};
 struct linux_setrlimit_args {
 	char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)];
 	char rlim_l_[PADL_(struct l_rlimit *)]; struct l_rlimit * rlim; char rlim_r_[PADR_(struct l_rlimit *)];
@@ -251,6 +257,10 @@
 	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 	char to_l_[PADL_(char *)]; char * to; char to_r_[PADR_(char *)];
 };
+struct linux_lstat_args {
+	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+	char up_l_[PADL_(struct ostat *)]; struct ostat * up; char up_r_[PADR_(struct ostat *)];
+};
 struct linux_readlink_args {
 	char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)];
 	char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)];
@@ -277,6 +287,10 @@
 	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 	char length_l_[PADL_(l_ulong)]; l_ulong length; char length_r_[PADR_(l_ulong)];
 };
+struct linux_ftruncate_args {
+	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
+};
 struct linux_getpriority_args {
 	char which_l_[PADL_(int)]; int which; char which_r_[PADR_(int)];
 	char who_l_[PADL_(int)]; int who; char who_r_[PADR_(int)];
@@ -362,6 +376,9 @@
 struct linux_clone_args {
 	char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)];
 	char stack_l_[PADL_(void *)]; void * stack; char stack_r_[PADR_(void *)];
+	char parent_tidptr_l_[PADL_(void *)]; void * parent_tidptr; char parent_tidptr_r_[PADR_(void *)];
+	char dummy_l_[PADL_(int)]; int dummy; char dummy_r_[PADR_(int)];
+	char child_tidptr_l_[PADL_(void *)]; void * child_tidptr; char child_tidptr_r_[PADR_(void *)];
 };
 struct linux_newuname_args {
 	char buf_l_[PADL_(struct l_new_utsname *)]; struct l_new_utsname * buf; char buf_r_[PADR_(struct l_new_utsname *)];
@@ -374,6 +391,11 @@
 struct linux_adjtimex_args {
 	register_t dummy;
 };
+struct linux_mprotect_args {
+	char addr_l_[PADL_(caddr_t)]; caddr_t addr; char addr_r_[PADR_(caddr_t)];
+	char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
+	char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)];
+};
 struct linux_sigprocmask_args {
 	char how_l_[PADL_(l_int)]; l_int how; char how_r_[PADR_(l_int)];
 	char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)];
@@ -458,6 +480,10 @@
 struct linux_sched_get_priority_min_args {
 	char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)];
 };
+struct linux_nanosleep_args {
+	char rqtp_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * rqtp; char rqtp_r_[PADR_(const struct l_timespec *)];
+	char rmtp_l_[PADL_(struct l_timespec *)]; struct l_timespec * rmtp; char rmtp_r_[PADR_(struct l_timespec *)];
+};
 struct linux_mremap_args {
 	char addr_l_[PADL_(l_ulong)]; l_ulong addr; char addr_r_[PADR_(l_ulong)];
 	char old_len_l_[PADL_(l_ulong)]; l_ulong old_len; char old_len_r_[PADR_(l_ulong)];
@@ -495,7 +521,11 @@
 	char sgid_l_[PADL_(l_gid16_t *)]; l_gid16_t * sgid; char sgid_r_[PADR_(l_gid16_t *)];
 };
 struct linux_prctl_args {
-	register_t dummy;
+	char option_l_[PADL_(l_int)]; l_int option; char option_r_[PADR_(l_int)];
+	char arg2_l_[PADL_(l_int)]; l_int arg2; char arg2_r_[PADR_(l_int)];
+	char arg3_l_[PADL_(l_int)]; l_int arg3; char arg3_r_[PADR_(l_int)];
+	char arg4_l_[PADL_(l_int)]; l_int arg4; char arg4_r_[PADR_(l_int)];
+	char arg5_l_[PADL_(l_int)]; l_int arg5; char arg5_r_[PADR_(l_int)];
 };
 struct linux_rt_sigreturn_args {
 	char ucp_l_[PADL_(struct l_ucontext *)]; struct l_ucontext * ucp; char ucp_r_[PADR_(struct l_ucontext *)];
@@ -513,10 +543,14 @@
 	char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)];
 };
 struct linux_rt_sigpending_args {
-	register_t dummy;
+	char set_l_[PADL_(l_sigset_t *)]; l_sigset_t * set; char set_r_[PADR_(l_sigset_t *)];
+	char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)];
 };
 struct linux_rt_sigtimedwait_args {
-	register_t dummy;
+	char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)];
+	char ptr_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * ptr; char ptr_r_[PADR_(l_siginfo_t *)];
+	char timeout_l_[PADL_(struct l_timeval *)]; struct l_timeval * timeout; char timeout_r_[PADR_(struct l_timeval *)];
+	char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)];
 };
 struct linux_rt_sigqueueinfo_args {
 	register_t dummy;
@@ -689,12 +723,232 @@
 	char tid_l_[PADL_(int)]; int tid; char tid_r_[PADR_(int)];
 	char sig_l_[PADL_(int)]; int sig; char sig_r_[PADR_(int)];
 };
+struct linux_sys_futex_args {
+	char uaddr_l_[PADL_(void *)]; void * uaddr; char uaddr_r_[PADR_(void *)];
+	char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
+	char val_l_[PADL_(int)]; int val; char val_r_[PADR_(int)];
+	char timeout_l_[PADL_(struct l_timespec *)]; struct l_timespec * timeout; char timeout_r_[PADR_(struct l_timespec *)];
+	char uaddr2_l_[PADL_(void *)]; void * uaddr2; char uaddr2_r_[PADR_(void *)];
+	char val3_l_[PADL_(int)]; int val3; char val3_r_[PADR_(int)];
+};
+struct linux_sched_getaffinity_args {
+	char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)];
+	char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)];
+	char user_mask_ptr_l_[PADL_(l_ulong *)]; l_ulong * user_mask_ptr; char user_mask_ptr_r_[PADR_(l_ulong *)];
+};
 struct linux_set_thread_area_args {
-	char entry_l_[PADL_(void *)]; void * entry; char entry_r_[PADR_(void *)];
+	char desc_l_[PADL_(struct l_user_desc *)]; struct l_user_desc * desc; char desc_r_[PADR_(struct l_user_desc *)];
+};
+struct linux_get_thread_area_args {
+	char desc_l_[PADL_(struct l_user_desc *)]; struct l_user_desc * desc; char desc_r_[PADR_(struct l_user_desc *)];
 };
 struct linux_fadvise64_args {
 	register_t dummy;
 };
+struct linux_exit_group_args {
+	char error_code_l_[PADL_(int)]; int error_code; char error_code_r_[PADR_(int)];
+};
+struct linux_lookup_dcookie_args {
+	register_t dummy;
+};
+struct linux_epoll_create_args {
+	register_t dummy;
+};
+struct linux_epoll_ctl_args {
+	register_t dummy;
+};
+struct linux_epoll_wait_args {
+	register_t dummy;
+};
+struct linux_remap_file_pages_args {
+	register_t dummy;
+};
+struct linux_set_tid_address_args {
+	char tidptr_l_[PADL_(int *)]; int * tidptr; char tidptr_r_[PADR_(int *)];
+};
+struct linux_timer_create_args {
+	char clock_id_l_[PADL_(clockid_t)]; clockid_t clock_id; char clock_id_r_[PADR_(clockid_t)];
+	char evp_l_[PADL_(struct sigevent *)]; struct sigevent * evp; char evp_r_[PADR_(struct sigevent *)];
+	char timerid_l_[PADL_(l_timer_t *)]; l_timer_t * timerid; char timerid_r_[PADR_(l_timer_t *)];
+};
+struct linux_timer_settime_args {
+	char timerid_l_[PADL_(l_timer_t)]; l_timer_t timerid; char timerid_r_[PADR_(l_timer_t)];
+	char new_l_[PADL_(const struct itimerspec *)]; const struct itimerspec * new; char new_r_[PADR_(const struct itimerspec *)];
+	char old_l_[PADL_(struct itimerspec *)]; struct itimerspec * old; char old_r_[PADR_(struct itimerspec *)];
+};
+struct linux_timer_gettime_args {
+	char timerid_l_[PADL_(l_timer_t)]; l_timer_t timerid; char timerid_r_[PADR_(l_timer_t)];
+	char setting_l_[PADL_(struct itimerspec *)]; struct itimerspec * setting; char setting_r_[PADR_(struct itimerspec *)];
+};
+struct linux_timer_getoverrun_args {
+	char timerid_l_[PADL_(l_timer_t)]; l_timer_t timerid; char timerid_r_[PADR_(l_timer_t)];
+};
+struct linux_timer_delete_args {
+	char timerid_l_[PADL_(l_timer_t)]; l_timer_t timerid; char timerid_r_[PADR_(l_timer_t)];
+};
+struct linux_clock_settime_args {
+	char which_l_[PADL_(clockid_t)]; clockid_t which; char which_r_[PADR_(clockid_t)];
+	char tp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tp; char tp_r_[PADR_(struct l_timespec *)];
+};
+struct linux_clock_gettime_args {
+	char which_l_[PADL_(clockid_t)]; clockid_t which; char which_r_[PADR_(clockid_t)];
+	char tp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tp; char tp_r_[PADR_(struct l_timespec *)];
+};
+struct linux_clock_getres_args {
+	char which_l_[PADL_(clockid_t)]; clockid_t which; char which_r_[PADR_(clockid_t)];
+	char tp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tp; char tp_r_[PADR_(struct l_timespec *)];
+};
+struct linux_clock_nanosleep_args {
+	char which_l_[PADL_(clockid_t)]; clockid_t which; char which_r_[PADR_(clockid_t)];
+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+	char rqtp_l_[PADL_(struct l_timespec *)]; struct l_timespec * rqtp; char rqtp_r_[PADR_(struct l_timespec *)];
+	char rmtp_l_[PADL_(struct l_timespec *)]; struct l_timespec * rmtp; char rmtp_r_[PADR_(struct l_timespec *)];
+};
+struct linux_statfs64_args {
+	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+	char bufsize_l_[PADL_(size_t)]; size_t bufsize; char bufsize_r_[PADR_(size_t)];
+	char buf_l_[PADL_(struct l_statfs64_buf *)]; struct l_statfs64_buf * buf; char buf_r_[PADR_(struct l_statfs64_buf *)];
+};
+struct linux_fstatfs64_args {
+	register_t dummy;
+};
+struct linux_tgkill_args {
+	char tgid_l_[PADL_(int)]; int tgid; char tgid_r_[PADR_(int)];
+	char pid_l_[PADL_(int)]; int pid; char pid_r_[PADR_(int)];
+	char sig_l_[PADL_(int)]; int sig; char sig_r_[PADR_(int)];
+};
+struct linux_utimes_args {
+	char fname_l_[PADL_(char *)]; char * fname; char fname_r_[PADR_(char *)];
+	char tptr_l_[PADL_(struct l_timeval *)]; struct l_timeval * tptr; char tptr_r_[PADR_(struct l_timeval *)];
+};
+struct linux_fadvise64_64_args {
+	register_t dummy;
+};
+struct linux_mbind_args {
+	register_t dummy;
+};
+struct linux_get_mempolicy_args {
+	register_t dummy;
+};
+struct linux_set_mempolicy_args {
+	register_t dummy;
+};
+struct linux_mq_open_args {
+	char name_l_[PADL_(const char *)]; const char * name; char name_r_[PADR_(const char *)];
+	char oflag_l_[PADL_(int)]; int oflag; char oflag_r_[PADR_(int)];
+	char mode_l_[PADL_(mode_t)]; mode_t mode; char mode_r_[PADR_(mode_t)];
+	char attr_l_[PADL_(struct mq_attr *)]; struct mq_attr * attr; char attr_r_[PADR_(struct mq_attr *)];
+};
+struct linux_mq_unlink_args {
+	char name_l_[PADL_(const char *)]; const char * name; char name_r_[PADR_(const char *)];
+};
+struct linux_mq_timedsend_args {
+	char mqd_l_[PADL_(l_mqd_t)]; l_mqd_t mqd; char mqd_r_[PADR_(l_mqd_t)];
+	char msg_ptr_l_[PADL_(const char *)]; const char * msg_ptr; char msg_ptr_r_[PADR_(const char *)];
+	char msg_len_l_[PADL_(size_t)]; size_t msg_len; char msg_len_r_[PADR_(size_t)];
+	char msg_prio_l_[PADL_(unsigned int)]; unsigned int msg_prio; char msg_prio_r_[PADR_(unsigned int)];
+	char abs_timeout_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * abs_timeout; char abs_timeout_r_[PADR_(const struct l_timespec *)];
+};
+struct linux_mq_timedreceive_args {
+	char mqd_l_[PADL_(l_mqd_t)]; l_mqd_t mqd; char mqd_r_[PADR_(l_mqd_t)];
+	char msg_ptr_l_[PADL_(char *)]; char * msg_ptr; char msg_ptr_r_[PADR_(char *)];
+	char msg_len_l_[PADL_(size_t)]; size_t msg_len; char msg_len_r_[PADR_(size_t)];
+	char msg_prio_l_[PADL_(unsigned int)]; unsigned int msg_prio; char msg_prio_r_[PADR_(unsigned int)];
+	char abs_timeout_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * abs_timeout; char abs_timeout_r_[PADR_(const struct l_timespec *)];
+};
+struct linux_mq_notify_args {
+	char mqd_l_[PADL_(l_mqd_t)]; l_mqd_t mqd; char mqd_r_[PADR_(l_mqd_t)];
+	char abs_timeout_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * abs_timeout; char abs_timeout_r_[PADR_(const struct l_timespec *)];
+};
+struct linux_mq_getsetattr_args {
+	char mqd_l_[PADL_(l_mqd_t)]; l_mqd_t mqd; char mqd_r_[PADR_(l_mqd_t)];
+	char attr_l_[PADL_(const struct mq_attr *)]; const struct mq_attr * attr; char attr_r_[PADR_(const struct mq_attr *)];
+	char oattr_l_[PADL_(struct mq_attr *)]; struct mq_attr * oattr; char oattr_r_[PADR_(struct mq_attr *)];
+};
+struct linux_kexec_load_args {
+	register_t dummy;
+};
+struct linux_waitid_args {
+	register_t dummy;
+};
+struct linux_add_key_args {
+	register_t dummy;
+};
+struct linux_request_key_args {
+	register_t dummy;
+};
+struct linux_keyctl_args {
+	register_t dummy;
+};
+struct linux_ioprio_set_args {
+	register_t dummy;
+};
+struct linux_ioprio_get_args {
+	register_t dummy;
+};
+struct linux_inotify_init_args {
+	register_t dummy;
+};
+struct linux_inotify_add_watch_args {
+	register_t dummy;
+};
+struct linux_inotify_rm_watch_args {
+	register_t dummy;
+};
+struct linux_migrate_pages_args {
+	register_t dummy;
+};
+struct linux_openat_args {
+	char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)];
+	char filename_l_[PADL_(char *)]; char * filename; char filename_r_[PADR_(char *)];
+	char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)];
+	char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)];
+};
+struct linux_mkdirat_args {
+	register_t dummy;
+};
+struct linux_mknodat_args {
+	register_t dummy;
+};
+struct linux_fchownat_args {
+	register_t dummy;
+};
+struct linux_futimesat_args {
+	register_t dummy;
+};
+struct linux_fstatat64_args {
+	register_t dummy;
+};
+struct linux_unlinkat_args {
+	register_t dummy;
+};
+struct linux_renameat_args {
+	register_t dummy;
+};
+struct linux_linkat_args {
+	register_t dummy;
+};
+struct linux_symlinkat_args {
+	register_t dummy;
+};
+struct linux_readlinkat_args {
+	register_t dummy;
+};
+struct linux_fchmodat_args {
+	register_t dummy;
+};
+struct linux_faccessat_args {
+	register_t dummy;
+};
+struct linux_pselect6_args {
+	register_t dummy;
+};
+struct linux_ppoll_args {
+	register_t dummy;
+};
+struct linux_unshare_args {
+	register_t dummy;
+};
 #define	nosys	linux_nosys
 int	linux_fork(struct thread *, struct linux_fork_args *);
 int	linux_open(struct thread *, struct linux_open_args *);
@@ -740,6 +994,7 @@
 int	linux_fcntl(struct thread *, struct linux_fcntl_args *);
 int	linux_olduname(struct thread *, struct linux_olduname_args *);
 int	linux_ustat(struct thread *, struct linux_ustat_args *);
+int	linux_getppid(struct thread *, struct linux_getppid_args *);
 int	linux_sigaction(struct thread *, struct linux_sigaction_args *);
 int	linux_sgetmask(struct thread *, struct linux_sgetmask_args *);
 int	linux_ssetmask(struct thread *, struct linux_ssetmask_args *);
@@ -747,18 +1002,21 @@
 int	linux_setregid16(struct thread *, struct linux_setregid16_args *);
 int	linux_sigsuspend(struct thread *, struct linux_sigsuspend_args *);
 int	linux_sigpending(struct thread *, struct linux_sigpending_args *);
+int	linux_sethostname(struct thread *, struct linux_sethostname_args *);
 int	linux_setrlimit(struct thread *, struct linux_setrlimit_args *);
 int	linux_old_getrlimit(struct thread *, struct linux_old_getrlimit_args *);
 int	linux_getgroups16(struct thread *, struct linux_getgroups16_args *);
 int	linux_setgroups16(struct thread *, struct linux_setgroups16_args *);
 int	linux_old_select(struct thread *, struct linux_old_select_args *);
 int	linux_symlink(struct thread *, struct linux_symlink_args *);
+int	linux_lstat(struct thread *, struct linux_lstat_args *);
 int	linux_readlink(struct thread *, struct linux_readlink_args *);
 int	linux_uselib(struct thread *, struct linux_uselib_args *);
 int	linux_reboot(struct thread *, struct linux_reboot_args *);
 int	linux_readdir(struct thread *, struct linux_readdir_args *);
 int	linux_mmap(struct thread *, struct linux_mmap_args *);
 int	linux_truncate(struct thread *, struct linux_truncate_args *);
+int	linux_ftruncate(struct thread *, struct linux_ftruncate_args *);
 int	linux_getpriority(struct thread *, struct linux_getpriority_args *);
 int	linux_statfs(struct thread *, struct linux_statfs_args *);
 int	linux_fstatfs(struct thread *, struct linux_fstatfs_args *);
@@ -783,6 +1041,7 @@
 int	linux_newuname(struct thread *, struct linux_newuname_args *);
 int	linux_modify_ldt(struct thread *, struct linux_modify_ldt_args *);
 int	linux_adjtimex(struct thread *, struct linux_adjtimex_args *);
+int	linux_mprotect(struct thread *, struct linux_mprotect_args *);
 int	linux_sigprocmask(struct thread *, struct linux_sigprocmask_args *);
 int	linux_create_module(struct thread *, struct linux_create_module_args *);
 int	linux_init_module(struct thread *, struct linux_init_module_args *);
@@ -805,6 +1064,7 @@
 int	linux_sched_getscheduler(struct thread *, struct linux_sched_getscheduler_args *);
 int	linux_sched_get_priority_max(struct thread *, struct linux_sched_get_priority_max_args *);
 int	linux_sched_get_priority_min(struct thread *, struct linux_sched_get_priority_min_args *);
+int	linux_nanosleep(struct thread *, struct linux_nanosleep_args *);
 int	linux_mremap(struct thread *, struct linux_mremap_args *);
 int	linux_setresuid16(struct thread *, struct linux_setresuid16_args *);
 int	linux_getresuid16(struct thread *, struct linux_getresuid16_args *);
@@ -863,8 +1123,68 @@
 int	linux_lremovexattr(struct thread *, struct linux_lremovexattr_args *);
 int	linux_fremovexattr(struct thread *, struct linux_fremovexattr_args *);
 int	linux_tkill(struct thread *, struct linux_tkill_args *);
+int	linux_sys_futex(struct thread *, struct linux_sys_futex_args *);
+int	linux_sched_getaffinity(struct thread *, struct linux_sched_getaffinity_args *);
 int	linux_set_thread_area(struct thread *, struct linux_set_thread_area_args *);
+int	linux_get_thread_area(struct thread *, struct linux_get_thread_area_args *);
 int	linux_fadvise64(struct thread *, struct linux_fadvise64_args *);
+int	linux_exit_group(struct thread *, struct linux_exit_group_args *);
+int	linux_lookup_dcookie(struct thread *, struct linux_lookup_dcookie_args *);
+int	linux_epoll_create(struct thread *, struct linux_epoll_create_args *);
+int	linux_epoll_ctl(struct thread *, struct linux_epoll_ctl_args *);
+int	linux_epoll_wait(struct thread *, struct linux_epoll_wait_args *);
+int	linux_remap_file_pages(struct thread *, struct linux_remap_file_pages_args *);
+int	linux_set_tid_address(struct thread *, struct linux_set_tid_address_args *);
+int	linux_timer_create(struct thread *, struct linux_timer_create_args *);
+int	linux_timer_settime(struct thread *, struct linux_timer_settime_args *);
+int	linux_timer_gettime(struct thread *, struct linux_timer_gettime_args *);
+int	linux_timer_getoverrun(struct thread *, struct linux_timer_getoverrun_args *);
+int	linux_timer_delete(struct thread *, struct linux_timer_delete_args *);
+int	linux_clock_settime(struct thread *, struct linux_clock_settime_args *);
+int	linux_clock_gettime(struct thread *, struct linux_clock_gettime_args *);
+int	linux_clock_getres(struct thread *, struct linux_clock_getres_args *);
+int	linux_clock_nanosleep(struct thread *, struct linux_clock_nanosleep_args *);
+int	linux_statfs64(struct thread *, struct linux_statfs64_args *);
+int	linux_fstatfs64(struct thread *, struct linux_fstatfs64_args *);
+int	linux_tgkill(struct thread *, struct linux_tgkill_args *);
+int	linux_utimes(struct thread *, struct linux_utimes_args *);
+int	linux_fadvise64_64(struct thread *, struct linux_fadvise64_64_args *);
+int	linux_mbind(struct thread *, struct linux_mbind_args *);
+int	linux_get_mempolicy(struct thread *, struct linux_get_mempolicy_args *);
+int	linux_set_mempolicy(struct thread *, struct linux_set_mempolicy_args *);
+int	linux_mq_open(struct thread *, struct linux_mq_open_args *);
+int	linux_mq_unlink(struct thread *, struct linux_mq_unlink_args *);
+int	linux_mq_timedsend(struct thread *, struct linux_mq_timedsend_args *);
+int	linux_mq_timedreceive(struct thread *, struct linux_mq_timedreceive_args *);
+int	linux_mq_notify(struct thread *, struct linux_mq_notify_args *);
+int	linux_mq_getsetattr(struct thread *, struct linux_mq_getsetattr_args *);
+int	linux_kexec_load(struct thread *, struct linux_kexec_load_args *);
+int	linux_waitid(struct thread *, struct linux_waitid_args *);
+int	linux_add_key(struct thread *, struct linux_add_key_args *);
+int	linux_request_key(struct thread *, struct linux_request_key_args *);
+int	linux_keyctl(struct thread *, struct linux_keyctl_args *);
+int	linux_ioprio_set(struct thread *, struct linux_ioprio_set_args *);
+int	linux_ioprio_get(struct thread *, struct linux_ioprio_get_args *);
+int	linux_inotify_init(struct thread *, struct linux_inotify_init_args *);
+int	linux_inotify_add_watch(struct thread *, struct linux_inotify_add_watch_args *);
+int	linux_inotify_rm_watch(struct thread *, struct linux_inotify_rm_watch_args *);
+int	linux_migrate_pages(struct thread *, struct linux_migrate_pages_args *);
+int	linux_openat(struct thread *, struct linux_openat_args *);
+int	linux_mkdirat(struct thread *, struct linux_mkdirat_args *);
+int	linux_mknodat(struct thread *, struct linux_mknodat_args *);
+int	linux_fchownat(struct thread *, struct linux_fchownat_args *);
+int	linux_futimesat(struct thread *, struct linux_futimesat_args *);
+int	linux_fstatat64(struct thread *, struct linux_fstatat64_args *);
+int	linux_unlinkat(struct thread *, struct linux_unlinkat_args *);
+int	linux_renameat(struct thread *, struct linux_renameat_args *);
+int	linux_linkat(struct thread *, struct linux_linkat_args *);
+int	linux_symlinkat(struct thread *, struct linux_symlinkat_args *);
+int	linux_readlinkat(struct thread *, struct linux_readlinkat_args *);
+int	linux_fchmodat(struct thread *, struct linux_fchmodat_args *);
+int	linux_faccessat(struct thread *, struct linux_faccessat_args *);
+int	linux_pselect6(struct thread *, struct linux_pselect6_args *);
+int	linux_ppoll(struct thread *, struct linux_ppoll_args *);
+int	linux_unshare(struct thread *, struct linux_unshare_args *);
 
 #ifdef COMPAT_43
 
@@ -879,6 +1199,249 @@
 
 #endif /* COMPAT_FREEBSD4 */
 
+
+#ifdef COMPAT_FREEBSD6
+
+#define	nosys	linux_nosys
+
+#endif /* COMPAT_FREEBSD6 */
+
+#define	LINUX_SYS_AUE_linux_fork	AUE_FORK
+#define	LINUX_SYS_AUE_linux_open	AUE_OPEN_RWTC
+#define	LINUX_SYS_AUE_linux_waitpid	AUE_WAIT4
+#define	LINUX_SYS_AUE_linux_creat	AUE_CREAT
+#define	LINUX_SYS_AUE_linux_link	AUE_LINK
+#define	LINUX_SYS_AUE_linux_unlink	AUE_UNLINK
+#define	LINUX_SYS_AUE_linux_execve	AUE_EXECVE
+#define	LINUX_SYS_AUE_linux_chdir	AUE_CHDIR
+#define	LINUX_SYS_AUE_linux_time	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mknod	AUE_MKNOD
+#define	LINUX_SYS_AUE_linux_chmod	AUE_CHMOD
+#define	LINUX_SYS_AUE_linux_lchown16	AUE_LCHOWN
+#define	LINUX_SYS_AUE_linux_stat	AUE_STAT
+#define	LINUX_SYS_AUE_linux_lseek	AUE_LSEEK
+#define	LINUX_SYS_AUE_linux_getpid	AUE_GETPID
+#define	LINUX_SYS_AUE_linux_mount	AUE_MOUNT
+#define	LINUX_SYS_AUE_linux_oldumount	AUE_UMOUNT
+#define	LINUX_SYS_AUE_linux_setuid16	AUE_SETUID
+#define	LINUX_SYS_AUE_linux_getuid16	AUE_GETUID
+#define	LINUX_SYS_AUE_linux_stime	AUE_SETTIMEOFDAY
+#define	LINUX_SYS_AUE_linux_ptrace	AUE_PTRACE
+#define	LINUX_SYS_AUE_linux_alarm	AUE_NULL
+#define	LINUX_SYS_AUE_linux_fstat	AUE_FSTAT
+#define	LINUX_SYS_AUE_linux_pause	AUE_NULL
+#define	LINUX_SYS_AUE_linux_utime	AUE_UTIME
+#define	LINUX_SYS_AUE_linux_access	AUE_ACCESS
+#define	LINUX_SYS_AUE_linux_nice	AUE_NICE
+#define	LINUX_SYS_AUE_linux_kill	AUE_KILL
+#define	LINUX_SYS_AUE_linux_rename	AUE_RENAME
+#define	LINUX_SYS_AUE_linux_mkdir	AUE_MKDIR
+#define	LINUX_SYS_AUE_linux_rmdir	AUE_RMDIR
+#define	LINUX_SYS_AUE_linux_pipe	AUE_PIPE
+#define	LINUX_SYS_AUE_linux_times	AUE_NULL
+#define	LINUX_SYS_AUE_linux_brk	AUE_NULL
+#define	LINUX_SYS_AUE_linux_setgid16	AUE_SETGID
+#define	LINUX_SYS_AUE_linux_getgid16	AUE_GETGID
+#define	LINUX_SYS_AUE_linux_signal	AUE_NULL
+#define	LINUX_SYS_AUE_linux_geteuid16	AUE_GETEUID
+#define	LINUX_SYS_AUE_linux_getegid16	AUE_GETEGID
+#define	LINUX_SYS_AUE_linux_umount	AUE_UMOUNT
+#define	LINUX_SYS_AUE_linux_ioctl	AUE_IOCTL
+#define	LINUX_SYS_AUE_linux_fcntl	AUE_FCNTL
+#define	LINUX_SYS_AUE_linux_olduname	AUE_NULL
+#define	LINUX_SYS_AUE_linux_ustat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_getppid	AUE_GETPPID
+#define	LINUX_SYS_AUE_linux_sigaction	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sgetmask	AUE_NULL
+#define	LINUX_SYS_AUE_linux_ssetmask	AUE_NULL
+#define	LINUX_SYS_AUE_linux_setreuid16	AUE_SETREUID
+#define	LINUX_SYS_AUE_linux_setregid16	AUE_SETREGID
+#define	LINUX_SYS_AUE_linux_sigsuspend	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sigpending	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sethostname	AUE_SYSCTL
+#define	LINUX_SYS_AUE_linux_setrlimit	AUE_SETRLIMIT
+#define	LINUX_SYS_AUE_linux_old_getrlimit	AUE_GETRLIMIT
+#define	LINUX_SYS_AUE_linux_getgroups16	AUE_GETGROUPS
+#define	LINUX_SYS_AUE_linux_setgroups16	AUE_SETGROUPS
+#define	LINUX_SYS_AUE_linux_old_select	AUE_SELECT
+#define	LINUX_SYS_AUE_linux_symlink	AUE_SYMLINK
+#define	LINUX_SYS_AUE_linux_lstat	AUE_LSTAT
+#define	LINUX_SYS_AUE_linux_readlink	AUE_READLINK
+#define	LINUX_SYS_AUE_linux_uselib	AUE_USELIB
+#define	LINUX_SYS_AUE_linux_reboot	AUE_REBOOT
+#define	LINUX_SYS_AUE_linux_readdir	AUE_GETDIRENTRIES
+#define	LINUX_SYS_AUE_linux_mmap	AUE_MMAP
+#define	LINUX_SYS_AUE_linux_truncate	AUE_TRUNCATE
+#define	LINUX_SYS_AUE_linux_ftruncate	AUE_FTRUNCATE
+#define	LINUX_SYS_AUE_linux_getpriority	AUE_GETPRIORITY
+#define	LINUX_SYS_AUE_linux_statfs	AUE_STATFS
+#define	LINUX_SYS_AUE_linux_fstatfs	AUE_FSTATFS
+#define	LINUX_SYS_AUE_linux_ioperm	AUE_NULL
+#define	LINUX_SYS_AUE_linux_socketcall	AUE_NULL
+#define	LINUX_SYS_AUE_linux_syslog	AUE_NULL
+#define	LINUX_SYS_AUE_linux_setitimer	AUE_SETITIMER
+#define	LINUX_SYS_AUE_linux_getitimer	AUE_GETITIMER
+#define	LINUX_SYS_AUE_linux_newstat	AUE_STAT
+#define	LINUX_SYS_AUE_linux_newlstat	AUE_LSTAT
+#define	LINUX_SYS_AUE_linux_newfstat	AUE_FSTAT
+#define	LINUX_SYS_AUE_linux_uname	AUE_NULL
+#define	LINUX_SYS_AUE_linux_iopl	AUE_NULL
+#define	LINUX_SYS_AUE_linux_vhangup	AUE_NULL
+#define	LINUX_SYS_AUE_linux_vm86old	AUE_NULL
+#define	LINUX_SYS_AUE_linux_wait4	AUE_WAIT4
+#define	LINUX_SYS_AUE_linux_swapoff	AUE_SWAPOFF
+#define	LINUX_SYS_AUE_linux_sysinfo	AUE_NULL
+#define	LINUX_SYS_AUE_linux_ipc	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sigreturn	AUE_SIGRETURN
+#define	LINUX_SYS_AUE_linux_clone	AUE_RFORK
+#define	LINUX_SYS_AUE_linux_newuname	AUE_NULL
+#define	LINUX_SYS_AUE_linux_modify_ldt	AUE_NULL
+#define	LINUX_SYS_AUE_linux_adjtimex	AUE_ADJTIME
+#define	LINUX_SYS_AUE_linux_mprotect	AUE_MPROTECT
+#define	LINUX_SYS_AUE_linux_sigprocmask	AUE_SIGPROCMASK
+#define	LINUX_SYS_AUE_linux_create_module	AUE_NULL
+#define	LINUX_SYS_AUE_linux_init_module	AUE_NULL
+#define	LINUX_SYS_AUE_linux_delete_module	AUE_NULL
+#define	LINUX_SYS_AUE_linux_get_kernel_syms	AUE_NULL
+#define	LINUX_SYS_AUE_linux_quotactl	AUE_QUOTACTL
+#define	LINUX_SYS_AUE_linux_bdflush	AUE_BDFLUSH
+#define	LINUX_SYS_AUE_linux_sysfs	AUE_NULL
+#define	LINUX_SYS_AUE_linux_personality	AUE_PERSONALITY
+#define	LINUX_SYS_AUE_linux_setfsuid16	AUE_SETFSUID
+#define	LINUX_SYS_AUE_linux_setfsgid16	AUE_SETFSGID
+#define	LINUX_SYS_AUE_linux_llseek	AUE_LSEEK
+#define	LINUX_SYS_AUE_linux_getdents	AUE_GETDIRENTRIES
+#define	LINUX_SYS_AUE_linux_select	AUE_SELECT
+#define	LINUX_SYS_AUE_linux_msync	AUE_MSYNC
+#define	LINUX_SYS_AUE_linux_getsid	AUE_GETSID
+#define	LINUX_SYS_AUE_linux_fdatasync	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sysctl	AUE_SYSCTL
+#define	LINUX_SYS_AUE_linux_sched_setscheduler	AUE_SCHED_SETSCHEDULER
+#define	LINUX_SYS_AUE_linux_sched_getscheduler	AUE_SCHED_GETSCHEDULER
+#define	LINUX_SYS_AUE_linux_sched_get_priority_max	AUE_SCHED_GET_PRIORITY_MAX
+#define	LINUX_SYS_AUE_linux_sched_get_priority_min	AUE_SCHED_GET_PRIORITY_MIN
+#define	LINUX_SYS_AUE_linux_nanosleep	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mremap	AUE_NULL
+#define	LINUX_SYS_AUE_linux_setresuid16	AUE_SETRESUID
+#define	LINUX_SYS_AUE_linux_getresuid16	AUE_GETRESUID
+#define	LINUX_SYS_AUE_linux_vm86	AUE_NULL
+#define	LINUX_SYS_AUE_linux_query_module	AUE_NULL
+#define	LINUX_SYS_AUE_linux_nfsservctl	AUE_NULL
+#define	LINUX_SYS_AUE_linux_setresgid16	AUE_SETRESGID
+#define	LINUX_SYS_AUE_linux_getresgid16	AUE_GETRESGID
+#define	LINUX_SYS_AUE_linux_prctl	AUE_PRCTL
+#define	LINUX_SYS_AUE_linux_rt_sigreturn	AUE_NULL
+#define	LINUX_SYS_AUE_linux_rt_sigaction	AUE_NULL
+#define	LINUX_SYS_AUE_linux_rt_sigprocmask	AUE_NULL
+#define	LINUX_SYS_AUE_linux_rt_sigpending	AUE_NULL
+#define	LINUX_SYS_AUE_linux_rt_sigtimedwait	AUE_NULL
+#define	LINUX_SYS_AUE_linux_rt_sigqueueinfo	AUE_NULL
+#define	LINUX_SYS_AUE_linux_rt_sigsuspend	AUE_NULL
+#define	LINUX_SYS_AUE_linux_pread	AUE_PREAD
+#define	LINUX_SYS_AUE_linux_pwrite	AUE_PWRITE
+#define	LINUX_SYS_AUE_linux_chown16	AUE_CHOWN
+#define	LINUX_SYS_AUE_linux_getcwd	AUE_GETCWD
+#define	LINUX_SYS_AUE_linux_capget	AUE_CAPGET
+#define	LINUX_SYS_AUE_linux_capset	AUE_CAPSET
+#define	LINUX_SYS_AUE_linux_sigaltstack	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sendfile	AUE_SENDFILE
+#define	LINUX_SYS_AUE_linux_vfork	AUE_VFORK
+#define	LINUX_SYS_AUE_linux_getrlimit	AUE_GETRLIMIT
+#define	LINUX_SYS_AUE_linux_mmap2	AUE_MMAP
+#define	LINUX_SYS_AUE_linux_truncate64	AUE_TRUNCATE
+#define	LINUX_SYS_AUE_linux_ftruncate64	AUE_FTRUNCATE
+#define	LINUX_SYS_AUE_linux_stat64	AUE_STAT
+#define	LINUX_SYS_AUE_linux_lstat64	AUE_LSTAT
+#define	LINUX_SYS_AUE_linux_fstat64	AUE_FSTAT
+#define	LINUX_SYS_AUE_linux_lchown	AUE_LCHOWN
+#define	LINUX_SYS_AUE_linux_getuid	AUE_GETUID
+#define	LINUX_SYS_AUE_linux_getgid	AUE_GETGID
+#define	LINUX_SYS_AUE_linux_getgroups	AUE_GETGROUPS
+#define	LINUX_SYS_AUE_linux_setgroups	AUE_SETGROUPS
+#define	LINUX_SYS_AUE_linux_chown	AUE_CHOWN
+#define	LINUX_SYS_AUE_linux_setfsuid	AUE_SETFSUID
+#define	LINUX_SYS_AUE_linux_setfsgid	AUE_SETFSGID
+#define	LINUX_SYS_AUE_linux_pivot_root	AUE_PIVOT_ROOT
+#define	LINUX_SYS_AUE_linux_mincore	AUE_MINCORE
+#define	LINUX_SYS_AUE_linux_getdents64	AUE_GETDIRENTRIES
+#define	LINUX_SYS_AUE_linux_fcntl64	AUE_FCNTL
+#define	LINUX_SYS_AUE_linux_gettid	AUE_NULL
+#define	LINUX_SYS_AUE_linux_setxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_lsetxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_fsetxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_getxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_lgetxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_fgetxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_listxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_llistxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_flistxattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_removexattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_lremovexattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_fremovexattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_tkill	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sys_futex	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sched_getaffinity	AUE_NULL
+#define	LINUX_SYS_AUE_linux_set_thread_area	AUE_NULL
+#define	LINUX_SYS_AUE_linux_get_thread_area	AUE_NULL
+#define	LINUX_SYS_AUE_linux_fadvise64	AUE_NULL
+#define	LINUX_SYS_AUE_linux_exit_group	AUE_EXIT
+#define	LINUX_SYS_AUE_linux_lookup_dcookie	AUE_NULL
+#define	LINUX_SYS_AUE_linux_epoll_create	AUE_NULL
+#define	LINUX_SYS_AUE_linux_epoll_ctl	AUE_NULL
+#define	LINUX_SYS_AUE_linux_epoll_wait	AUE_NULL
+#define	LINUX_SYS_AUE_linux_remap_file_pages	AUE_NULL
+#define	LINUX_SYS_AUE_linux_set_tid_address	AUE_NULL
+#define	LINUX_SYS_AUE_linux_timer_create	AUE_NULL
+#define	LINUX_SYS_AUE_linux_timer_settime	AUE_NULL
+#define	LINUX_SYS_AUE_linux_timer_gettime	AUE_NULL
+#define	LINUX_SYS_AUE_linux_timer_getoverrun	AUE_NULL
+#define	LINUX_SYS_AUE_linux_timer_delete	AUE_NULL
+#define	LINUX_SYS_AUE_linux_clock_settime	AUE_CLOCK_SETTIME
+#define	LINUX_SYS_AUE_linux_clock_gettime	AUE_NULL
+#define	LINUX_SYS_AUE_linux_clock_getres	AUE_NULL
+#define	LINUX_SYS_AUE_linux_clock_nanosleep	AUE_NULL
+#define	LINUX_SYS_AUE_linux_statfs64	AUE_STATFS
+#define	LINUX_SYS_AUE_linux_fstatfs64	AUE_FSTATFS
+#define	LINUX_SYS_AUE_linux_tgkill	AUE_NULL
+#define	LINUX_SYS_AUE_linux_utimes	AUE_UTIMES
+#define	LINUX_SYS_AUE_linux_fadvise64_64	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mbind	AUE_NULL
+#define	LINUX_SYS_AUE_linux_get_mempolicy	AUE_NULL
+#define	LINUX_SYS_AUE_linux_set_mempolicy	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mq_open	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mq_unlink	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mq_timedsend	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mq_timedreceive	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mq_notify	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mq_getsetattr	AUE_NULL
+#define	LINUX_SYS_AUE_linux_kexec_load	AUE_NULL
+#define	LINUX_SYS_AUE_linux_waitid	AUE_NULL
+#define	LINUX_SYS_AUE_linux_add_key	AUE_NULL
+#define	LINUX_SYS_AUE_linux_request_key	AUE_NULL
+#define	LINUX_SYS_AUE_linux_keyctl	AUE_NULL
+#define	LINUX_SYS_AUE_linux_ioprio_set	AUE_NULL
+#define	LINUX_SYS_AUE_linux_ioprio_get	AUE_NULL
+#define	LINUX_SYS_AUE_linux_inotify_init	AUE_NULL
+#define	LINUX_SYS_AUE_linux_inotify_add_watch	AUE_NULL
+#define	LINUX_SYS_AUE_linux_inotify_rm_watch	AUE_NULL
+#define	LINUX_SYS_AUE_linux_migrate_pages	AUE_NULL
+#define	LINUX_SYS_AUE_linux_openat	AUE_OPEN_RWTC
+#define	LINUX_SYS_AUE_linux_mkdirat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_mknodat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_fchownat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_futimesat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_fstatat64	AUE_NULL
+#define	LINUX_SYS_AUE_linux_unlinkat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_renameat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_linkat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_symlinkat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_readlinkat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_fchmodat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_faccessat	AUE_NULL
+#define	LINUX_SYS_AUE_linux_pselect6	AUE_NULL
+#define	LINUX_SYS_AUE_linux_ppoll	AUE_NULL
+#define	LINUX_SYS_AUE_linux_unshare	AUE_NULL
+
 #undef PAD_
 #undef PADL_
 #undef PADR_
Index: linux_dummy.c
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/linux_dummy.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/linux_dummy.c -L sys/i386/linux/linux_dummy.c -u -r1.1.1.1 -r1.2
--- sys/i386/linux/linux_dummy.c
+++ sys/i386/linux/linux_dummy.c
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/linux/linux_dummy.c,v 1.38 2004/03/28 21:43:27 bms Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/linux/linux_dummy.c,v 1.46 2007/03/29 02:11:46 julian Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -37,7 +37,6 @@
 #include <i386/linux/linux_proto.h>
 #include <compat/linux/linux_util.h>
 
-DUMMY(stat);
 DUMMY(stime);
 DUMMY(fstat);
 DUMMY(olduname);
@@ -57,19 +56,52 @@
 DUMMY(vm86);
 DUMMY(query_module);
 DUMMY(nfsservctl);
-DUMMY(prctl);
-DUMMY(rt_sigpending);
-DUMMY(rt_sigtimedwait);
 DUMMY(rt_sigqueueinfo);
 DUMMY(capget);
 DUMMY(capset);
-DUMMY(sendfile);
+DUMMY(sendfile);		/* different semantics */
 DUMMY(truncate64);
 DUMMY(setfsuid);
 DUMMY(setfsgid);
 DUMMY(pivot_root);
 DUMMY(mincore);
 DUMMY(fadvise64);
+DUMMY(lookup_dcookie);
+DUMMY(epoll_create);
+DUMMY(epoll_ctl);
+DUMMY(epoll_wait);
+DUMMY(remap_file_pages);
+DUMMY(fstatfs64);
+DUMMY(fadvise64_64);
+DUMMY(mbind);
+DUMMY(get_mempolicy);
+DUMMY(set_mempolicy);
+DUMMY(kexec_load);
+DUMMY(waitid);
+DUMMY(add_key);
+DUMMY(request_key);
+DUMMY(keyctl);
+DUMMY(ioprio_set);
+DUMMY(ioprio_get);
+DUMMY(inotify_init);
+DUMMY(inotify_add_watch);
+DUMMY(inotify_rm_watch);
+DUMMY(migrate_pages);
+DUMMY(mkdirat);
+DUMMY(mknodat);
+DUMMY(fchownat);
+DUMMY(futimesat);
+DUMMY(fstatat64);
+DUMMY(unlinkat);
+DUMMY(renameat);
+DUMMY(linkat);
+DUMMY(symlinkat);
+DUMMY(readlinkat);
+DUMMY(fchmodat);
+DUMMY(faccessat);
+DUMMY(pselect6);
+DUMMY(ppoll);
+DUMMY(unshare);
 
 #define DUMMY_XATTR(s)						\
 int								\
--- /dev/null
+++ sys/i386/linux/linux_support.s
@@ -0,0 +1,127 @@
+/*-
+ * Copyright (c) 2006,2007 Konstantin Belousov
+ * All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * $FreeBSD: src/sys/i386/linux/linux_support.s,v 1.1 2007/05/23 08:33:06 kib Exp $
+ */
+
+#include "linux_assym.h"		/* system definitions */
+#include <machine/asmacros.h>		/* miscellaneous asm macros */
+
+#include "assym.s"
+
+futex_fault_decx:
+	movl	PCPU(CURPCB),%ecx
+futex_fault:
+	movl	$0,PCB_ONFAULT(%ecx)
+	movl	$-EFAULT,%eax
+	ret
+
+ENTRY(futex_xchgl)
+	movl	PCPU(CURPCB),%ecx
+	movl	$futex_fault,PCB_ONFAULT(%ecx)
+	movl	4(%esp),%eax
+	movl	8(%esp),%edx
+	cmpl    $VM_MAXUSER_ADDRESS-4,%edx
+	ja     	futex_fault
+	xchgl	%eax,(%edx)
+	movl	12(%esp),%edx
+	movl	%eax,(%edx)
+	xorl	%eax,%eax
+	movl	%eax,PCB_ONFAULT(%ecx)
+	ret
+
+ENTRY(futex_addl)
+	movl	PCPU(CURPCB),%ecx
+	movl	$futex_fault,PCB_ONFAULT(%ecx)
+	movl	4(%esp),%eax
+	movl	8(%esp),%edx
+	cmpl    $VM_MAXUSER_ADDRESS-4,%edx
+	ja     	futex_fault
+#ifdef SMP
+	lock
+#endif
+	xaddl	%eax,(%edx)
+	movl	12(%esp),%edx
+	movl	%eax,(%edx)
+	xorl	%eax,%eax
+	movl	%eax,PCB_ONFAULT(%ecx)
+	ret
+
+ENTRY(futex_orl)
+	movl	PCPU(CURPCB),%ecx
+	movl	$futex_fault_decx,PCB_ONFAULT(%ecx)
+	movl	8(%esp),%edx
+	cmpl    $VM_MAXUSER_ADDRESS-4,%edx
+	ja     	futex_fault
+	movl	(%edx),%eax
+1:	movl	%eax,%ecx
+	orl	4(%esp),%ecx
+#ifdef SMP
+	lock
+#endif
+	cmpxchgl %ecx,(%edx)
+	jnz	1b
+futex_tail:	
+	movl	12(%esp),%edx
+	movl	%eax,(%edx)
+	xorl	%eax,%eax
+	movl	PCPU(CURPCB),%ecx
+	movl	%eax,PCB_ONFAULT(%ecx)
+	ret
+
+ENTRY(futex_andl)
+	movl	PCPU(CURPCB),%ecx
+	movl	$futex_fault_decx,PCB_ONFAULT(%ecx)
+	movl	8(%esp),%edx
+	cmpl    $VM_MAXUSER_ADDRESS-4,%edx
+	ja     	futex_fault
+	movl	(%edx),%eax
+1:	movl	%eax,%ecx
+	andl	4(%esp),%ecx
+#ifdef SMP
+	lock
+#endif
+	cmpxchgl %ecx,(%edx)
+	jnz	1b
+	jmp	futex_tail
+
+ENTRY(futex_xorl)
+	movl	PCPU(CURPCB),%ecx
+	movl	$futex_fault_decx,PCB_ONFAULT(%ecx)
+	movl	8(%esp),%edx
+	cmpl    $VM_MAXUSER_ADDRESS-4,%edx
+	ja     	futex_fault
+	movl	(%edx),%eax
+1:	movl	%eax,%ecx
+	xorl	4(%esp),%ecx
+#ifdef SMP
+	lock
+#endif
+	cmpxchgl %ecx,(%edx)
+	jnz	1b
+	jmp	futex_tail
Index: linux.h
===================================================================
RCS file: /home/cvs/src/sys/i386/linux/linux.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/i386/linux/linux.h -L sys/i386/linux/linux.h -u -r1.1.1.1 -r1.2
--- sys/i386/linux/linux.h
+++ sys/i386/linux/linux.h
@@ -6,7 +6,7 @@
  * 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 
+ *    notice, this list of conditions and the following disclaimer
  *    in this position and unchanged.
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
@@ -25,13 +25,13 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/i386/linux/linux.h,v 1.64 2005/04/13 04:31:43 mdodd Exp $
+ * $FreeBSD: src/sys/i386/linux/linux.h,v 1.78 2007/09/18 19:50:33 dwmalone Exp $
  */
 
-#ifndef _I386_LINUX_LINUX_H_
-#define	_I386_LINUX_LINUX_H_
+#ifndef _I386_LINUX_H_
+#define	_I386_LINUX_H_
 
-#include <sys/signal.h> /* for sigval union */
+#include <sys/signal.h>	/* for sigval union */
 
 #include <i386/linux/linux_syscall.h>
 
@@ -39,9 +39,9 @@
  * debugging support
  */
 extern u_char linux_debug_map[];
-#define ldebug(name)	isclr(linux_debug_map, LINUX_SYS_linux_ ## name)
-#define ARGS(nm, fmt)	"linux(%ld): "#nm"("fmt")\n", (long)td->td_proc->p_pid
-#define LMSG(fmt)	"linux(%ld): "fmt"\n", (long)td->td_proc->p_pid
+#define	ldebug(name)	isclr(linux_debug_map, LINUX_SYS_linux_ ## name)
+#define	ARGS(nm, fmt)	"linux(%ld): "#nm"("fmt")\n", (long)td->td_proc->p_pid
+#define	LMSG(fmt)	"linux(%ld): "fmt"\n", (long)td->td_proc->p_pid
 
 #ifdef MALLOC_DECLARE
 MALLOC_DECLARE(M_LINUX);
@@ -126,7 +126,7 @@
 #define	LINUX_RLIMIT_NPROC	6
 #define	LINUX_RLIMIT_NOFILE	7
 #define	LINUX_RLIMIT_MEMLOCK	8
-#define	LINUX_RLIMIT_AS		9       /* address space limit */
+#define	LINUX_RLIMIT_AS		9	/* Address space limit */
 
 #define	LINUX_RLIM_NLIMITS	10
 
@@ -142,12 +142,21 @@
 #define	LINUX_MAP_ANON		0x0020
 #define	LINUX_MAP_GROWSDOWN	0x0100
 
+struct l_mmap_argv {
+	l_uintptr_t	addr;
+	l_size_t	len;
+	l_int		prot;
+	l_int		flags;
+	l_int		fd;
+	l_off_t		pgoff;
+} __packed;
+
 /*
  * stat family of syscalls
  */
 struct l_timespec {
-	l_ulong		tv_sec;
-	l_ulong		tv_nsec;
+	l_time_t	tv_sec;
+	l_long		tv_nsec;
 };
 
 struct l_newstat {
@@ -170,6 +179,24 @@
 	l_ulong		__unused5;
 };
 
+struct l_stat {
+	l_ushort	st_dev;
+	l_ulong		st_ino;
+	l_ushort	st_mode;
+	l_ushort	st_nlink;
+	l_ushort	st_uid;
+	l_ushort	st_gid;
+	l_ushort	st_rdev;
+	l_long		st_size;
+	struct l_timespec	st_atimespec;
+	struct l_timespec	st_mtimespec;
+	struct l_timespec	st_ctimespec;
+	l_long		st_blksize;
+	l_long		st_blocks;
+	l_ulong		st_flags;
+	l_ulong		st_gen;
+};
+
 struct l_stat64 {
 	l_ushort	st_dev;
 	u_char		__pad0[10];
@@ -190,6 +217,19 @@
 	l_ulonglong	st_ino;
 };
 
+struct l_statfs64 { 
+        l_int           f_type; 
+        l_int           f_bsize; 
+        uint64_t        f_blocks; 
+        uint64_t        f_bfree; 
+        uint64_t        f_bavail; 
+        uint64_t        f_files; 
+        uint64_t        f_ffree; 
+        l_fsid_t        f_fsid;
+        l_int           f_namelen;
+        l_int           f_spare[6];
+};
+
 struct l_new_utsname {
 	char	sysname[LINUX_MAX_UTSNAME];
 	char	nodename[LINUX_MAX_UTSNAME];
@@ -263,9 +303,9 @@
 #define	LINUX_SIGADDSET(set, sig)	SIGADDSET(set, sig)
 
 /* sigaltstack */
-#define LINUX_MINSIGSTKSZ	2048
-#define LINUX_SS_ONSTACK	1
-#define LINUX_SS_DISABLE	2
+#define	LINUX_MINSIGSTKSZ	2048
+#define	LINUX_SS_ONSTACK	1
+#define	LINUX_SS_DISABLE	2
 
 int linux_to_bsd_sigaltstack(int lsa);
 int bsd_to_linux_sigaltstack(int bsa);
@@ -328,11 +368,11 @@
 	void		*uc_link;
 	l_stack_t	uc_stack;
 	struct l_sigcontext	uc_mcontext;
-        l_sigset_t	uc_sigmask;
+	l_sigset_t	uc_sigmask;
 };
 
-#define LINUX_SI_MAX_SIZE     128
-#define LINUX_SI_PAD_SIZE     ((LINUX_SI_MAX_SIZE/sizeof(l_int)) - 3)
+#define	LINUX_SI_MAX_SIZE	128
+#define	LINUX_SI_PAD_SIZE	((LINUX_SI_MAX_SIZE/sizeof(l_int)) - 3)
 
 typedef struct l_siginfo {
 	l_int		lsi_signo;
@@ -366,41 +406,41 @@
 		} _sigchld;
 
 		struct {
-			void		*_addr; /* faulting insn/memory ref. */
+			void		*_addr;	/* Faulting insn/memory ref. */
 		} _sigfault;
 
 		struct {
-			l_int		_band;  /* POLL_IN,POLL_OUT,POLL_MSG */
+			l_int		_band;	/* POLL_IN,POLL_OUT,POLL_MSG */
 			l_int		_fd;
 		} _sigpoll;
 	} _sifields;
 } l_siginfo_t;
 
-#define lsi_pid          _sifields._kill._pid
-#define lsi_uid          _sifields._kill._uid
-#define lsi_status       _sifields._sigchld._status
-#define lsi_utime        _sifields._sigchld._utime
-#define lsi_stime        _sifields._sigchld._stime
-#define lsi_value        _sifields._rt._sigval
-#define lsi_int          _sifields._rt._sigval.sival_int
-#define lsi_ptr          _sifields._rt._sigval.sival_ptr
-#define lsi_addr         _sifields._sigfault._addr
-#define lsi_band         _sifields._sigpoll._band
-#define lsi_fd           _sifields._sigpoll._fd
+#define	lsi_pid		_sifields._kill._pid
+#define	lsi_uid		_sifields._kill._uid
+#define	lsi_status	_sifields._sigchld._status
+#define	lsi_utime	_sifields._sigchld._utime
+#define	lsi_stime	_sifields._sigchld._stime
+#define	lsi_value	_sifields._rt._sigval
+#define	lsi_int		_sifields._rt._sigval.sival_int
+#define	lsi_ptr		_sifields._rt._sigval.sival_ptr
+#define	lsi_addr	_sifields._sigfault._addr
+#define	lsi_band	_sifields._sigpoll._band
+#define	lsi_fd		_sifields._sigpoll._fd
 
 struct l_fpreg {
-	u_int16_t significand[4];
-	u_int16_t exponent;
+	u_int16_t	significand[4];
+	u_int16_t	exponent;
 };
 
 struct l_fpxreg {
-	u_int16_t significand[4];
-	u_int16_t exponent;
-	u_int16_t padding[3];
+	u_int16_t	significand[4];
+	u_int16_t	exponent;
+	u_int16_t	padding[3];
 };
 
 struct l_xmmreg {
-	u_int32_t element[4];
+	u_int32_t	element[4];
 };
 
 struct l_fpstate {
@@ -414,13 +454,13 @@
 	u_int32_t		datasel;
 	struct l_fpreg		_st[8];
 	u_int16_t		status;
-	u_int16_t		magic;  /* 0xffff = regular FPU data */
+	u_int16_t		magic;		/* 0xffff = regular FPU data */
 
 	/* FXSR FPU environment */
-	u_int32_t		_fxsr_env[6]; /* env is ignored */
+	u_int32_t		_fxsr_env[6];	/* env is ignored. */
 	u_int32_t		mxcsr;
 	u_int32_t		reserved;
-	struct l_fpxreg		_fxsr_st[8];  /* reg data is ignored */
+	struct l_fpxreg		_fxsr_st[8];	/* reg data is ignored. */
 	struct l_xmmreg		_xmm[8];
 	u_int32_t		padding[56];
 };
@@ -472,22 +512,23 @@
 /*
  * open/fcntl flags
  */
-#define	LINUX_O_RDONLY		00
-#define	LINUX_O_WRONLY		01
-#define	LINUX_O_RDWR		02
-#define	LINUX_O_CREAT		0100
-#define	LINUX_O_EXCL		0200
-#define	LINUX_O_NOCTTY		0400
-#define	LINUX_O_TRUNC		01000
-#define	LINUX_O_APPEND		02000
-#define	LINUX_O_NONBLOCK	04000
+#define	LINUX_O_RDONLY		00000000
+#define	LINUX_O_WRONLY		00000001
+#define	LINUX_O_RDWR		00000002
+#define	LINUX_O_ACCMODE		00000003
+#define	LINUX_O_CREAT		00000100
+#define	LINUX_O_EXCL		00000200
+#define	LINUX_O_NOCTTY		00000400
+#define	LINUX_O_TRUNC		00001000
+#define	LINUX_O_APPEND		00002000
+#define	LINUX_O_NONBLOCK	00004000
 #define	LINUX_O_NDELAY		LINUX_O_NONBLOCK
-#define	LINUX_O_SYNC		010000
-#define	LINUX_FASYNC		020000
-#define	LINUX_O_DIRECT		040000	/* direct disk access hint */
-#define	LINUX_O_LARGEFILE	0100000
-#define	LINUX_O_DIRECTORY	0200000	/* must be a directory */
-#define	LINUX_O_NOFOLLOW	0400000	/* don't follow links */
+#define	LINUX_O_SYNC		00010000
+#define	LINUX_FASYNC		00020000
+#define	LINUX_O_DIRECT		00040000	/* Direct disk access hint */
+#define	LINUX_O_LARGEFILE	00100000
+#define	LINUX_O_DIRECTORY	00200000	/* Must be a directory */
+#define	LINUX_O_NOFOLLOW	00400000	/* Do not follow links */
 #define	LINUX_O_NOATIME		01000000
 
 #define	LINUX_F_DUPFD		0
@@ -509,15 +550,17 @@
 #define	LINUX_F_WRLCK		1
 #define	LINUX_F_UNLCK		2
 
+#define	LINUX_AT_FDCWD		-100
+
 /*
  * mount flags
  */
-#define LINUX_MS_RDONLY         0x0001
-#define LINUX_MS_NOSUID         0x0002
-#define LINUX_MS_NODEV          0x0004
-#define LINUX_MS_NOEXEC         0x0008
-#define LINUX_MS_REMOUNT        0x0020
-        
+#define	LINUX_MS_RDONLY		0x0001
+#define	LINUX_MS_NOSUID		0x0002
+#define	LINUX_MS_NODEV		0x0004
+#define	LINUX_MS_NOEXEC		0x0008
+#define	LINUX_MS_REMOUNT	0x0020
+
 /*
  * SystemV IPC defines
  */
@@ -615,6 +658,13 @@
 #define	LINUX_SO_NO_CHECK	11
 #define	LINUX_SO_PRIORITY	12
 #define	LINUX_SO_LINGER		13
+#define	LINUX_SO_PEERCRED	17
+#define	LINUX_SO_RCVLOWAT	18
+#define	LINUX_SO_SNDLOWAT	19
+#define	LINUX_SO_RCVTIMEO	20
+#define	LINUX_SO_SNDTIMEO	21
+#define	LINUX_SO_TIMESTAMP	29
+#define	LINUX_SO_ACCEPTCONN	30
 
 #define	LINUX_IP_TOS		1
 #define	LINUX_IP_TTL		2
@@ -664,7 +714,7 @@
 	} ifr_ifru;
 };
 
-#define	ifr_name	ifr_ifrn.ifrn_name	/* interface name */
+#define	ifr_name	ifr_ifrn.ifrn_name	/* Interface name */
 #define	ifr_hwaddr	ifr_ifru.ifru_hwaddr	/* MAC address */
 
 /*
@@ -688,4 +738,113 @@
 	l_short		revents;
 };
 
-#endif /* !_I386_LINUX_LINUX_H_ */
+struct l_user_desc {
+	l_uint		entry_number;
+	l_uint		base_addr;
+	l_uint		limit;
+	l_uint		seg_32bit:1;
+	l_uint		contents:2;
+	l_uint		read_exec_only:1;
+	l_uint		limit_in_pages:1;
+	l_uint		seg_not_present:1;
+	l_uint		useable:1;
+};
+
+struct l_desc_struct {
+	unsigned long	a, b;
+};
+
+
+#define	LINUX_LOWERWORD	0x0000ffff
+
+/*
+ * Macros which does the same thing as those in Linux include/asm-um/ldt-i386.h.
+ * These convert Linux user space descriptor to machine one.
+ */
+#define	LINUX_LDT_entry_a(info)					\
+	((((info)->base_addr & LINUX_LOWERWORD) << 16) |	\
+	((info)->limit & LINUX_LOWERWORD))
+
+#define	LINUX_ENTRY_B_READ_EXEC_ONLY	9
+#define	LINUX_ENTRY_B_CONTENTS		10
+#define	LINUX_ENTRY_B_SEG_NOT_PRESENT	15
+#define	LINUX_ENTRY_B_BASE_ADDR		16
+#define	LINUX_ENTRY_B_USEABLE		20
+#define	LINUX_ENTRY_B_SEG32BIT		22
+#define	LINUX_ENTRY_B_LIMIT		23
+
+#define	LINUX_LDT_entry_b(info)							\
+	(((info)->base_addr & 0xff000000) |					\
+	((info)->limit & 0xf0000) |						\
+	((info)->contents << LINUX_ENTRY_B_CONTENTS) |				\
+	(((info)->seg_not_present == 0) << LINUX_ENTRY_B_SEG_NOT_PRESENT) |	\
+	(((info)->base_addr & 0x00ff0000) >> LINUX_ENTRY_B_BASE_ADDR) |		\
+	(((info)->read_exec_only == 0) << LINUX_ENTRY_B_READ_EXEC_ONLY) |	\
+	((info)->seg_32bit << LINUX_ENTRY_B_SEG32BIT) |				\
+	((info)->useable << LINUX_ENTRY_B_USEABLE) |				\
+	((info)->limit_in_pages << LINUX_ENTRY_B_LIMIT) | 0x7000)
+
+#define	LINUX_LDT_empty(info)		\
+	((info)->base_addr == 0 &&	\
+	(info)->limit == 0 &&		\
+	(info)->contents == 0 &&	\
+	(info)->seg_not_present == 1 &&	\
+	(info)->read_exec_only == 1 &&	\
+	(info)->seg_32bit == 0 &&	\
+	(info)->limit_in_pages == 0 &&	\
+	(info)->useable == 0)
+
+/*
+ * Macros for converting segments.
+ * They do the same as those in arch/i386/kernel/process.c in Linux.
+ */
+#define	LINUX_GET_BASE(desc)				\
+	((((desc)->a >> 16) & LINUX_LOWERWORD) |	\
+	(((desc)->b << 16) & 0x00ff0000) |		\
+	((desc)->b & 0xff000000))
+
+#define	LINUX_GET_LIMIT(desc)			\
+	(((desc)->a & LINUX_LOWERWORD) |	\
+	((desc)->b & 0xf0000))
+
+#define	LINUX_GET_32BIT(desc)		\
+	(((desc)->b >> LINUX_ENTRY_B_SEG32BIT) & 1)
+#define	LINUX_GET_CONTENTS(desc)	\
+	(((desc)->b >> LINUX_ENTRY_B_CONTENTS) & 3)
+#define	LINUX_GET_WRITABLE(desc)	\
+	(((desc)->b >> LINUX_ENTRY_B_READ_EXEC_ONLY) & 1)
+#define	LINUX_GET_LIMIT_PAGES(desc)	\
+	(((desc)->b >> LINUX_ENTRY_B_LIMIT) & 1)
+#define	LINUX_GET_PRESENT(desc)		\
+	(((desc)->b >> LINUX_ENTRY_B_SEG_NOT_PRESENT) & 1)
+#define	LINUX_GET_USEABLE(desc)		\
+	(((desc)->b >> LINUX_ENTRY_B_USEABLE) & 1)
+
+#define	LINUX_CLOCK_REALTIME		0
+#define	LINUX_CLOCK_MONOTONIC		1
+#define	LINUX_CLOCK_PROCESS_CPUTIME_ID	2
+#define	LINUX_CLOCK_THREAD_CPUTIME_ID	3
+#define	LINUX_CLOCK_REALTIME_HR		4
+#define	LINUX_CLOCK_MONOTONIC_HR	5
+
+typedef int l_timer_t;
+typedef int l_mqd_t;
+
+#define	LINUX_CLONE_VM			0x00000100
+#define	LINUX_CLONE_FS			0x00000200
+#define	LINUX_CLONE_FILES		0x00000400
+#define	LINUX_CLONE_SIGHAND		0x00000800
+#define	LINUX_CLONE_PID			0x00001000	/* No longer exist in Linux */
+#define	LINUX_CLONE_VFORK		0x00004000
+#define	LINUX_CLONE_PARENT		0x00008000
+#define	LINUX_CLONE_THREAD		0x00010000
+#define	LINUX_CLONE_SETTLS		0x00080000
+#define	LINUX_CLONE_PARENT_SETTID	0x00100000
+#define	LINUX_CLONE_CHILD_CLEARTID	0x00200000
+#define	LINUX_CLONE_CHILD_SETTID	0x01000000
+
+#define	LINUX_THREADING_FLAGS					\
+	(LINUX_CLONE_VM | LINUX_CLONE_FS | LINUX_CLONE_FILES |	\
+	LINUX_CLONE_SIGHAND | LINUX_CLONE_THREAD)
+
+#endif /* !_I386_LINUX_H_ */


More information about the Midnightbsd-cvs mailing list