diff options
Diffstat (limited to 'sys/i386/linux')
-rw-r--r-- | sys/i386/linux/linux.h | 381 | ||||
-rw-r--r-- | sys/i386/linux/linux_dummy.c | 49 | ||||
-rw-r--r-- | sys/i386/linux/linux_genassym.c | 14 | ||||
-rw-r--r-- | sys/i386/linux/linux_machdep.c | 281 | ||||
-rw-r--r-- | sys/i386/linux/linux_proto.h | 894 | ||||
-rw-r--r-- | sys/i386/linux/linux_syscall.h | 98 | ||||
-rw-r--r-- | sys/i386/linux/linux_sysent.c | 138 | ||||
-rw-r--r-- | sys/i386/linux/linux_sysvec.c | 45 |
8 files changed, 1102 insertions, 798 deletions
diff --git a/sys/i386/linux/linux.h b/sys/i386/linux/linux.h index b4eec098..594ebfc 100644 --- a/sys/i386/linux/linux.h +++ b/sys/i386/linux/linux.h @@ -38,21 +38,75 @@ /* * debugging support */ -extern u_char linux_debug_map[]; +extern u_char linux_debug_map[]; #define ldebug(name) isclr(linux_debug_map, LINUX_SYS_linux_ ## name) -#define ARGS(nm, fmt) "Linux-emul(%ld): "#nm"("fmt")\n", (long)p->p_pid -#define LMSG(fmt) "Linux-emul(%ld): "fmt"\n", (long)p->p_pid +#define ARGS(nm, fmt) "linux(%ld): "#nm"("fmt")\n", (long)p->p_pid +#define LMSG(fmt) "linux(%ld): "fmt"\n", (long)p->p_pid #ifdef MALLOC_DECLARE MALLOC_DECLARE(M_LINUX); #endif /* + * Provide a seperate set of types for the Linux types. + */ +typedef int l_int; +typedef int32_t l_long; +typedef int64_t l_longlong; +typedef short l_short; +typedef unsigned int l_uint; +typedef uint32_t l_ulong; +typedef uint64_t l_ulonglong; +typedef unsigned short l_ushort; + +typedef char *l_caddr_t; +typedef l_long l_clock_t; +typedef l_int l_daddr_t; +typedef l_ushort l_dev_t; +typedef l_uint l_gid_t; +typedef l_ushort l_gid16_t; +typedef l_ulong l_ino_t; +typedef l_int l_key_t; +typedef l_longlong l_loff_t; +typedef l_ushort l_mode_t; +typedef l_long l_off_t; +typedef l_int l_pid_t; +typedef l_uint l_size_t; +typedef l_long l_suseconds_t; +typedef l_long l_time_t; +typedef l_uint l_uid_t; +typedef l_ushort l_uid16_t; + +typedef struct { + l_int val[2]; +} l_fsid_t; + +typedef struct { + l_time_t tv_sec; + l_suseconds_t tv_usec; +} l_timeval; + +#define l_fd_set fd_set + +/* * Miscellaneous */ #define LINUX_NAME_MAX 255 #define LINUX_MAX_UTSNAME 65 +#define LINUX_CTL_MAXNAME 10 + +struct l___sysctl_args +{ + l_int *name; + l_int nlen; + void *oldval; + l_size_t *oldlenp; + void *newval; + l_size_t newlen; + l_ulong __spare[4]; +}; + /* Scheduling policies */ #define LINUX_SCHED_OTHER 0 #define LINUX_SCHED_FIFO 1 @@ -72,6 +126,11 @@ MALLOC_DECLARE(M_LINUX); #define LINUX_RLIM_NLIMITS 10 +struct l_rlimit { + l_ulong rlim_cur; + l_ulong rlim_max; +}; + /* mmap options */ #define LINUX_MAP_SHARED 0x0001 #define LINUX_MAP_PRIVATE 0x0002 @@ -79,25 +138,55 @@ MALLOC_DECLARE(M_LINUX); #define LINUX_MAP_ANON 0x0020 #define LINUX_MAP_GROWSDOWN 0x0100 -typedef char * linux_caddr_t; -typedef long linux_clock_t; -typedef u_short linux_dev_t; -typedef u_short linux_gid_t; -typedef u_long linux_ino_t; -typedef int linux_key_t; /* XXX */ -typedef u_short linux_mode_t; -typedef u_short linux_nlink_t; -typedef long linux_off_t; -typedef int linux_pid_t; -typedef u_int linux_size_t; -typedef long linux_time_t; -typedef u_short linux_uid_t; +/* + * stat family of syscalls + */ +struct l_timespec { + l_ulong tv_sec; + l_ulong tv_nsec; +}; -typedef struct { - long val[2]; -} linux_fsid_t; +struct l_newstat { + l_ushort st_dev; + l_ushort __pad1; + 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_ushort __pad2; + l_ulong st_size; + l_ulong st_blksize; + l_ulong st_blocks; + struct l_timespec st_atimespec; + struct l_timespec st_mtimespec; + struct l_timespec st_ctimespec; + l_ulong __unused4; + l_ulong __unused5; +}; + +struct l_stat64 { + l_ushort st_dev; + u_char __pad0[10]; + l_ulong __st_ino; + l_uint st_mode; + l_uint st_nlink; + l_ulong st_uid; + l_ulong st_gid; + l_ushort st_rdev; + u_char __pad3[10]; + l_longlong st_size; + l_ulong st_blksize; + l_ulong st_blocks; + l_ulong __pad4; + struct l_timespec st_atimespec; + struct l_timespec st_mtimespec; + struct l_timespec st_ctimespec; + l_ulonglong st_ino; +}; -struct linux_new_utsname { +struct l_new_utsname { char sysname[LINUX_MAX_UTSNAME]; char nodename[LINUX_MAX_UTSNAME]; char release[LINUX_MAX_UTSNAME]; @@ -174,117 +263,114 @@ struct linux_new_utsname { #define LINUX_SS_ONSTACK 1 #define LINUX_SS_DISABLE 2 - int linux_to_bsd_sigaltstack(int lsa); int bsd_to_linux_sigaltstack(int bsa); - -typedef void (*linux_handler_t)(int); -typedef u_long linux_osigset_t; +typedef void (*l_handler_t)(l_int); +typedef l_ulong l_osigset_t; typedef struct { - u_int __bits[LINUX_NSIG_WORDS]; -} linux_sigset_t; + l_uint __bits[LINUX_NSIG_WORDS]; +} l_sigset_t; typedef struct { - linux_handler_t lsa_handler; - linux_osigset_t lsa_mask; - u_long lsa_flags; + l_handler_t lsa_handler; + l_osigset_t lsa_mask; + l_ulong lsa_flags; void (*lsa_restorer)(void); -} linux_osigaction_t; +} l_osigaction_t; typedef struct { - linux_handler_t lsa_handler; - u_long lsa_flags; + l_handler_t lsa_handler; + l_ulong lsa_flags; void (*lsa_restorer)(void); - linux_sigset_t lsa_mask; -} linux_sigaction_t; + l_sigset_t lsa_mask; +} l_sigaction_t; typedef struct { - void *ss_sp; - int ss_flags; - linux_size_t ss_size; -} linux_stack_t; + void *ss_sp; + l_int ss_flags; + l_size_t ss_size; +} l_stack_t; /* The Linux sigcontext, pretty much a standard 386 trapframe. */ -struct linux_sigcontext { - int sc_gs; - int sc_fs; - int sc_es; - int sc_ds; - int sc_edi; - int sc_esi; - int sc_ebp; - int sc_esp; - int sc_ebx; - int sc_edx; - int sc_ecx; - int sc_eax; - int sc_trapno; - int sc_err; - int sc_eip; - int sc_cs; - int sc_eflags; - int sc_esp_at_signal; - int sc_ss; - int sc_387; - int sc_mask; - int sc_cr2; +struct l_sigcontext { + l_int sc_gs; + l_int sc_fs; + l_int sc_es; + l_int sc_ds; + l_int sc_edi; + l_int sc_esi; + l_int sc_ebp; + l_int sc_esp; + l_int sc_ebx; + l_int sc_edx; + l_int sc_ecx; + l_int sc_eax; + l_int sc_trapno; + l_int sc_err; + l_int sc_eip; + l_int sc_cs; + l_int sc_eflags; + l_int sc_esp_at_signal; + l_int sc_ss; + l_int sc_387; + l_int sc_mask; + l_int sc_cr2; }; -struct linux_ucontext { - unsigned long uc_flags; - void *uc_link; - linux_stack_t uc_stack; - struct linux_sigcontext uc_mcontext; - linux_sigset_t uc_sigmask; +struct l_ucontext { + l_ulong uc_flags; + void *uc_link; + l_stack_t uc_stack; + struct l_sigcontext uc_mcontext; + l_sigset_t uc_sigmask; }; - #define LINUX_SI_MAX_SIZE 128 -#define LINUX_SI_PAD_SIZE ((LINUX_SI_MAX_SIZE/sizeof(int)) - 3) - -typedef struct siginfo { - int lsi_signo; - int lsi_errno; - int lsi_code; +#define LINUX_SI_PAD_SIZE ((LINUX_SI_MAX_SIZE/sizeof(l_int)) - 3) +typedef struct l_siginfo { + l_int lsi_signo; + l_int lsi_errno; + l_int lsi_code; union { - int _pad[LINUX_SI_PAD_SIZE]; + l_int _pad[LINUX_SI_PAD_SIZE]; + struct { - linux_pid_t _pid; - linux_uid_t _uid; + l_pid_t _pid; + l_uid16_t _uid; } _kill; struct { - unsigned int _timer1; - unsigned int _timer2; + l_uint _timer1; + l_uint _timer2; } _timer; - + struct { - linux_pid_t _pid; /* sender's pid */ - linux_uid_t _uid; /* sender's uid */ + l_pid_t _pid; /* sender's pid */ + l_uid16_t _uid; /* sender's uid */ union sigval _sigval; } _rt; struct { - linux_pid_t _pid; /* which child */ - linux_uid_t _uid; /* sender's uid */ - int _status; /* exit code */ - linux_clock_t _utime; - linux_clock_t _stime; + l_pid_t _pid; /* which child */ + l_uid16_t _uid; /* sender's uid */ + l_int _status; /* exit code */ + l_clock_t _utime; + l_clock_t _stime; } _sigchld; struct { - void *_addr; /* faulting insn/memory ref. */ + void *_addr; /* faulting insn/memory ref. */ } _sigfault; struct { - int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ - int _fd; + l_int _band; /* POLL_IN,POLL_OUT,POLL_MSG */ + l_int _fd; } _sigpoll; } _sifields; -} linux_siginfo_t; +} l_siginfo_t; #define lsi_pid _sifields._kill._pid #define lsi_uid _sifields._kill._uid @@ -298,22 +384,22 @@ typedef struct siginfo { #define lsi_band _sifields._sigpoll._band #define lsi_fd _sifields._sigpoll._fd -struct linux_fpreg { +struct l_fpreg { u_int16_t significand[4]; u_int16_t exponent; }; -struct linux_fpxreg { +struct l_fpxreg { u_int16_t significand[4]; u_int16_t exponent; u_int16_t padding[3]; }; -struct linux_xmmreg { +struct l_xmmreg { u_int32_t element[4]; }; -struct linux_fpstate { +struct l_fpstate { /* Regular FPU environment */ u_int32_t cw; u_int32_t sw; @@ -322,7 +408,7 @@ struct linux_fpstate { u_int32_t cssel; u_int32_t dataoff; u_int32_t datasel; - struct linux_fpreg _st[8]; + struct l_fpreg _st[8]; u_int16_t status; u_int16_t magic; /* 0xffff = regular FPU data */ @@ -330,8 +416,8 @@ struct linux_fpstate { u_int32_t _fxsr_env[6]; /* env is ignored */ u_int32_t mxcsr; u_int32_t reserved; - struct linux_fpxreg _fxsr_st[8]; /* reg data is ignored */ - struct linux_xmmreg _xmm[8]; + struct l_fpxreg _fxsr_st[8]; /* reg data is ignored */ + struct l_xmmreg _xmm[8]; u_int32_t padding[56]; }; @@ -341,21 +427,21 @@ struct linux_fpstate { * This means that we need to pass the pointer to the handler too. * It is appended to the frame to not interfere with the rest of it. */ -struct linux_sigframe { - int sf_sig; - struct linux_sigcontext sf_sc; - struct linux_fpstate sf_fpstate; - u_int sf_extramask[LINUX_NSIG_WORDS-1]; - linux_handler_t sf_handler; +struct l_sigframe { + l_int sf_sig; + struct l_sigcontext sf_sc; + struct l_fpstate sf_fpstate; + l_uint sf_extramask[LINUX_NSIG_WORDS-1]; + l_handler_t sf_handler; }; -struct linux_rt_sigframe { - int sf_sig; - linux_siginfo_t *sf_siginfo; - struct linux_ucontext *sf_ucontext; - linux_siginfo_t sf_si; - struct linux_ucontext sf_sc; - linux_handler_t sf_handler; +struct l_rt_sigframe { + l_int sf_sig; + l_siginfo_t *sf_siginfo; + struct l_ucontext *sf_ucontext; + l_siginfo_t sf_si; + struct l_ucontext sf_sc; + l_handler_t sf_handler; }; extern int bsd_to_linux_signal[]; @@ -457,6 +543,14 @@ int linux_ioctl_unregister_handler(struct linux_ioctl_handler *h); #define LINUX_SETVAL 16 #define LINUX_SETALL 17 +union l_semun { + l_int val; + struct l_semid_ds *buf; + l_ushort *array; + struct l_seminfo *__buf; + void *__pad; +}; + /* * Socket defines */ @@ -517,44 +611,65 @@ int linux_ioctl_unregister_handler(struct linux_ioctl_handler *h); #define LINUX_IP_ADD_MEMBERSHIP 35 #define LINUX_IP_DROP_MEMBERSHIP 36 -struct linux_sockaddr { - u_short sa_family; - char sa_data[14]; +struct l_sockaddr { + l_ushort sa_family; + char sa_data[14]; }; -struct linux_ifmap { - u_long mem_start; - u_long mem_end; - u_short base_addr; - u_char irq; - u_char dma; - u_char port; +struct l_ifmap { + l_ulong mem_start; + l_ulong mem_end; + l_ushort base_addr; + u_char irq; + u_char dma; + u_char port; }; #define LINUX_IFHWADDRLEN 6 #define LINUX_IFNAMSIZ 16 -struct linux_ifreq { +struct l_ifreq { union { char ifrn_name[LINUX_IFNAMSIZ]; } ifr_ifrn; union { - struct linux_sockaddr ifru_addr; - struct linux_sockaddr ifru_dstaddr; - struct linux_sockaddr ifru_broadaddr; - struct linux_sockaddr ifru_netmask; - struct linux_sockaddr ifru_hwaddr; - short ifru_flags; - int ifru_metric; - int ifru_mtu; - struct linux_ifmap ifru_map; - char ifru_slave[LINUX_IFNAMSIZ]; /* Just fits the size */ - linux_caddr_t ifru_data; + struct l_sockaddr ifru_addr; + struct l_sockaddr ifru_dstaddr; + struct l_sockaddr ifru_broadaddr; + struct l_sockaddr ifru_netmask; + struct l_sockaddr ifru_hwaddr; + l_short ifru_flags; + l_int ifru_metric; + l_int ifru_mtu; + struct l_ifmap ifru_map; + char ifru_slave[LINUX_IFNAMSIZ]; + l_caddr_t ifru_data; } ifr_ifru; }; #define ifr_name ifr_ifrn.ifrn_name /* interface name */ #define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */ +/* + * poll() + */ +#define LINUX_POLLIN 0x0001 +#define LINUX_POLLPRI 0x0002 +#define LINUX_POLLOUT 0x0004 +#define LINUX_POLLERR 0x0008 +#define LINUX_POLLHUP 0x0010 +#define LINUX_POLLNVAL 0x0020 +#define LINUX_POLLRDNORM 0x0040 +#define LINUX_POLLRDBAND 0x0080 +#define LINUX_POLLWRNORM 0x0100 +#define LINUX_POLLWRBAND 0x0200 +#define LINUX_POLLMSG 0x0400 + +struct l_pollfd { + l_int fd; + l_short events; + l_short revents; +}; + #endif /* !_I386_LINUX_LINUX_H_ */ diff --git a/sys/i386/linux/linux_dummy.c b/sys/i386/linux/linux_dummy.c index b63a285..983ccec 100644 --- a/sys/i386/linux/linux_dummy.c +++ b/sys/i386/linux/linux_dummy.c @@ -34,41 +34,16 @@ #include <i386/linux/linux.h> #include <i386/linux/linux_proto.h> +#include <compat/linux/linux_util.h> -#define DUMMY(s) \ -int \ -linux_ ## s(struct proc *p, struct linux_ ## s ## _args *args) \ -{ \ - return (unsupported_msg(p, #s)); \ -} \ -struct __hack - -static int -unsupported_msg(struct proc *p, const char *fname) -{ - printf("linux: syscall %s is obsoleted or not implemented (pid=%ld)\n", - fname, (long)p->p_pid); - return (ENOSYS); -} - -DUMMY(setup); -DUMMY(break); DUMMY(stat); DUMMY(stime); DUMMY(ptrace); DUMMY(fstat); -DUMMY(stty); -DUMMY(gtty); -DUMMY(ftime); -DUMMY(prof); -DUMMY(lock); -DUMMY(mpx); -DUMMY(ulimit); DUMMY(olduname); -DUMMY(ksyslog); +DUMMY(syslog); DUMMY(uname); DUMMY(vhangup); -DUMMY(idle); DUMMY(vm86old); DUMMY(swapoff); DUMMY(adjtimex); @@ -79,16 +54,10 @@ DUMMY(get_kernel_syms); DUMMY(quotactl); DUMMY(bdflush); DUMMY(sysfs); -DUMMY(afs_syscall); -DUMMY(setfsuid); -DUMMY(setfsgid); DUMMY(getsid); -DUMMY(sysctl); -DUMMY(getresuid); DUMMY(vm86); DUMMY(query_module); DUMMY(nfsservctl); -DUMMY(getresgid); DUMMY(prctl); DUMMY(rt_sigpending); DUMMY(rt_sigtimedwait); @@ -96,12 +65,14 @@ DUMMY(rt_sigqueueinfo); DUMMY(capget); DUMMY(capset); DUMMY(sendfile); -DUMMY(getpmsg); -DUMMY(putpmsg); -DUMMY(ugetrlimit); DUMMY(mmap2); DUMMY(truncate64); DUMMY(ftruncate64); -DUMMY(stat64); -DUMMY(lstat64); -DUMMY(fstat64); +DUMMY(lchown); +DUMMY(fchown); +DUMMY(chown); +DUMMY(setfsuid); +DUMMY(setfsgid); +DUMMY(pivot_root); +DUMMY(mincore); +DUMMY(madvise); diff --git a/sys/i386/linux/linux_genassym.c b/sys/i386/linux/linux_genassym.c index 3e3fbad..9cef0a5 100644 --- a/sys/i386/linux/linux_genassym.c +++ b/sys/i386/linux/linux_genassym.c @@ -5,11 +5,9 @@ #include <i386/linux/linux.h> -ASSYM(LINUX_SIGF_HANDLER, offsetof(struct linux_sigframe, sf_handler)); -ASSYM(LINUX_SIGF_SC, offsetof(struct linux_sigframe, sf_sc)); -ASSYM(LINUX_SC_GS, offsetof(struct linux_sigcontext, sc_gs)); -ASSYM(LINUX_SC_EFLAGS, offsetof(struct linux_sigcontext, sc_eflags)); -ASSYM(LINUX_RT_SIGF_HANDLER, offsetof(struct linux_rt_sigframe, sf_handler)); -ASSYM(LINUX_RT_SIGF_UC, offsetof(struct linux_rt_sigframe, sf_sc)); - - +ASSYM(LINUX_SIGF_HANDLER, offsetof(struct l_sigframe, sf_handler)); +ASSYM(LINUX_SIGF_SC, offsetof(struct l_sigframe, sf_sc)); +ASSYM(LINUX_SC_GS, offsetof(struct l_sigcontext, sc_gs)); +ASSYM(LINUX_SC_EFLAGS, offsetof(struct l_sigcontext, sc_eflags)); +ASSYM(LINUX_RT_SIGF_HANDLER, offsetof(struct l_rt_sigframe, sf_handler)); +ASSYM(LINUX_RT_SIGF_UC, offsetof(struct l_rt_sigframe, sf_sc)); diff --git a/sys/i386/linux/linux_machdep.c b/sys/i386/linux/linux_machdep.c index ce8d52b..dfae7f4 100644 --- a/sys/i386/linux/linux_machdep.c +++ b/sys/i386/linux/linux_machdep.c @@ -54,24 +54,24 @@ #include <compat/linux/linux_signal.h> #include <compat/linux/linux_util.h> -struct linux_descriptor { - unsigned int entry_number; - unsigned long base_addr; - unsigned int limit; - unsigned int seg_32bit:1; - unsigned int contents:2; - unsigned int read_exec_only:1; - unsigned int limit_in_pages:1; - unsigned int seg_not_present:1; - unsigned int useable:1; +struct l_descriptor { + l_uint entry_number; + l_ulong 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 linux_select_argv { - int nfds; - fd_set *readfds; - fd_set *writefds; - fd_set *exceptfds; - struct timeval *timeout; +struct l_old_select_argv { + l_int nfds; + l_fd_set *readfds; + l_fd_set *writefds; + l_fd_set *exceptfds; + struct l_timeval *timeout; }; int @@ -118,51 +118,142 @@ linux_execve(struct proc *p, struct linux_execve_args *args) return (execve(p, &bsd)); } +struct l_ipc_kludge { + struct l_msgbuf *msgp; + l_long msgtyp; +}; + int linux_ipc(struct proc *p, struct linux_ipc_args *args) { - switch (args->what) { - case LINUX_SEMOP: - return (linux_semop(p, args)); - case LINUX_SEMGET: - return (linux_semget(p, args)); - case LINUX_SEMCTL: - return (linux_semctl(p, args)); - case LINUX_MSGSND: - return (linux_msgsnd(p, args)); - case LINUX_MSGRCV: - return (linux_msgrcv(p, args)); - case LINUX_MSGGET: - return (linux_msgget(p, args)); - case LINUX_MSGCTL: - return (linux_msgctl(p, args)); - case LINUX_SHMAT: - return (linux_shmat(p, args)); - case LINUX_SHMDT: - return (linux_shmdt(p, args)); - case LINUX_SHMGET: - return (linux_shmget(p, args)); - case LINUX_SHMCTL: - return (linux_shmctl(p, args)); + + switch (args->what & 0xFFFF) { + case LINUX_SEMOP: { + struct linux_semop_args a; + + a.semid = args->arg1; + a.tsops = args->ptr; + a.nsops = args->arg2; + return (linux_semop(p, &a)); + } + case LINUX_SEMGET: { + struct linux_semget_args a; + + a.key = args->arg1; + a.nsems = args->arg2; + a.semflg = args->arg3; + return (linux_semget(p, &a)); + } + case LINUX_SEMCTL: { + struct linux_semctl_args a; + int error; + + a.semid = args->arg1; + a.semnum = args->arg2; + a.cmd = args->arg3; + error = copyin((caddr_t)args->ptr, &a.arg, sizeof(a.arg)); + if (error) + return (error); + return (linux_semctl(p, &a)); + } + case LINUX_MSGSND: { + struct linux_msgsnd_args a; + + a.msqid = args->arg1; + a.msgp = args->ptr; + a.msgsz = args->arg2; + a.msgflg = args->arg3; + return (linux_msgsnd(p, &a)); + } + case LINUX_MSGRCV: { + struct linux_msgrcv_args a; + + a.msqid = args->arg1; + a.msgsz = args->arg2; + a.msgflg = args->arg3; + if ((args->what >> 16) == 0) { + struct l_ipc_kludge tmp; + int error; + + if (args->ptr == NULL) + return (EINVAL); + error = copyin((caddr_t)args->ptr, &tmp, sizeof(tmp)); + if (error) + return (error); + a.msgp = tmp.msgp; + a.msgtyp = tmp.msgtyp; + } else { + a.msgp = args->ptr; + a.msgtyp = args->arg5; + } + return (linux_msgrcv(p, &a)); + } + case LINUX_MSGGET: { + struct linux_msgget_args a; + + a.key = args->arg1; + a.msgflg = args->arg2; + return (linux_msgget(p, &a)); + } + case LINUX_MSGCTL: { + struct linux_msgctl_args a; + + a.msqid = args->arg1; + a.cmd = args->arg2; + a.buf = args->ptr; + return (linux_msgctl(p, &a)); + } + case LINUX_SHMAT: { + struct linux_shmat_args a; + + a.shmid = args->arg1; + a.shmaddr = args->ptr; + a.shmflg = args->arg2; + a.raddr = (l_ulong *)args->arg3; + return (linux_shmat(p, &a)); } + case LINUX_SHMDT: { + struct linux_shmdt_args a; - uprintf("LINUX: 'ipc' typ=%d not implemented\n", args->what); - return (ENOSYS); + a.shmaddr = args->ptr; + return (linux_shmdt(p, &a)); + } + case LINUX_SHMGET: { + struct linux_shmget_args a; + + a.key = args->arg1; + a.size = args->arg2; + a.shmflg = args->arg3; + return (linux_shmget(p, &a)); + } + case LINUX_SHMCTL: { + struct linux_shmctl_args a; + + a.shmid = args->arg1; + a.cmd = args->arg2; + a.buf = args->ptr; + return (linux_shmctl(p, &a)); + } + default: + break; + } + + return (EINVAL); } int -linux_select(struct proc *p, struct linux_select_args *args) +linux_old_select(struct proc *p, struct linux_old_select_args *args) { - struct linux_select_argv linux_args; - struct linux_newselect_args newsel; + struct l_old_select_argv linux_args; + struct linux_select_args newsel; int error; -#ifdef SELECT_DEBUG - if (ldebug(select)) - printf(ARGS(select, "%x"), args->ptr); +#ifdef DEBUG + if (ldebug(old_select)) + printf(ARGS(old_select, "%x"), args->ptr); #endif - error = copyin(args->ptr, &linux_args, sizeof(linux_args)); + error = copyin((caddr_t)args->ptr, &linux_args, sizeof(linux_args)); if (error) return (error); @@ -171,7 +262,7 @@ linux_select(struct proc *p, struct linux_select_args *args) newsel.writefds = linux_args.writefds; newsel.exceptfds = linux_args.exceptfds; newsel.timeout = linux_args.timeout; - return (linux_newselect(p, &newsel)); + return (linux_select(p, &newsel)); } int @@ -222,7 +313,6 @@ linux_clone(struct proc *p, struct linux_clone_args *args) int error, ff = RFPROC | RFSTOPPED; struct proc *p2; int exit_signal; - vm_offset_t start; #ifdef DEBUG if (ldebug(clone)) { @@ -243,9 +333,6 @@ linux_clone(struct proc *p, struct linux_clone_args *args) if (exit_signal <= LINUX_SIGTBLSZ) exit_signal = linux_to_bsd_signal[_SIG_IDX(exit_signal)]; - /* RFTHREAD probably not necessary here, but it shouldn't hurt */ - ff |= RFTHREAD; - if (args->flags & CLONE_VM) ff |= RFMEM; if (args->flags & CLONE_SIGHAND) @@ -253,44 +340,44 @@ linux_clone(struct proc *p, struct linux_clone_args *args) if (!(args->flags & CLONE_FILES)) ff |= RFFDG; - error = 0; - start = 0; - - if ((error = fork1(p, ff, &p2)) != 0) - return (error); + mtx_lock(&Giant); + error = fork1(p, ff, &p2); + if (error == 0) { + p->p_retval[0] = p2->p_pid; + p->p_retval[1] = 0; - PROC_LOCK(p2); - p2->p_sigparent = exit_signal; - PROC_UNLOCK(p2); - p2->p_frame->tf_esp = (unsigned int)args->stack; + PROC_LOCK(p2); + p2->p_sigparent = exit_signal; + p2->p_frame->tf_esp = (unsigned int)args->stack; #ifdef DEBUG - if (ldebug(clone)) - printf(LMSG("clone: successful rfork to %ld"), - (long)p2->p_pid); + if (ldebug(clone)) + printf(LMSG("clone: successful rfork to %ld"), + (long)p2->p_pid); #endif - /* - * Make this runnable after we are finished with it. - */ - mtx_lock_spin(&sched_lock); - p2->p_stat = SRUN; - setrunqueue(p2); - mtx_unlock_spin(&sched_lock); + /* + * Make this runnable after we are finished with it. + */ + mtx_lock_spin(&sched_lock); + p2->p_stat = SRUN; + setrunqueue(p2); + mtx_unlock_spin(&sched_lock); + PROC_UNLOCK(p2); + } + mtx_unlock(&Giant); - p->p_retval[0] = p2->p_pid; - p->p_retval[1] = 0; - return (0); + return (error); } /* XXX move */ -struct linux_mmap_argv { - linux_caddr_t addr; - int len; - int prot; - int flags; - int fd; - int pos; +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) @@ -309,9 +396,9 @@ linux_mmap(struct proc *p, struct linux_mmap_args *args) off_t pos; } */ bsd_args; int error; - struct linux_mmap_argv linux_args; + struct l_mmap_argv linux_args; - error = copyin(args->ptr, &linux_args, sizeof(linux_args)); + error = copyin((caddr_t)args->ptr, &linux_args, sizeof(linux_args)); if (error) return (error); @@ -488,7 +575,7 @@ linux_modify_ldt(p, uap) caddr_t sg; struct sysarch_args args; struct i386_ldt_args *ldt; - struct linux_descriptor ld; + struct l_descriptor ld; union descriptor *desc; sg = stackgap_init(); @@ -552,8 +639,8 @@ linux_modify_ldt(p, uap) int linux_sigaction(struct proc *p, struct linux_sigaction_args *args) { - linux_osigaction_t osa; - linux_sigaction_t act, oact; + l_osigaction_t osa; + l_sigaction_t act, oact; int error; #ifdef DEBUG @@ -563,7 +650,8 @@ linux_sigaction(struct proc *p, struct linux_sigaction_args *args) #endif if (args->nsa != NULL) { - error = copyin(args->nsa, &osa, sizeof(linux_osigaction_t)); + error = copyin((caddr_t)args->nsa, &osa, + sizeof(l_osigaction_t)); if (error) return (error); act.lsa_handler = osa.lsa_handler; @@ -581,7 +669,8 @@ linux_sigaction(struct proc *p, struct linux_sigaction_args *args) osa.lsa_flags = oact.lsa_flags; osa.lsa_restorer = oact.lsa_restorer; osa.lsa_mask = oact.lsa_mask.__bits[0]; - error = copyout(&osa, args->osa, sizeof(linux_osigaction_t)); + error = copyout(&osa, (caddr_t)args->osa, + sizeof(l_osigaction_t)); } return (error); @@ -597,7 +686,7 @@ linux_sigsuspend(struct proc *p, struct linux_sigsuspend_args *args) { struct sigsuspend_args bsd; sigset_t *sigmask; - linux_sigset_t mask; + l_sigset_t mask; caddr_t sg = stackgap_init(); #ifdef DEBUG @@ -618,7 +707,7 @@ linux_rt_sigsuspend(p, uap) struct proc *p; struct linux_rt_sigsuspend_args *uap; { - linux_sigset_t lmask; + l_sigset_t lmask; sigset_t *bmask; struct sigsuspend_args bsd; caddr_t sg = stackgap_init(); @@ -630,10 +719,10 @@ linux_rt_sigsuspend(p, uap) (void *)uap->newset, uap->sigsetsize); #endif - if (uap->sigsetsize != sizeof(linux_sigset_t)) + if (uap->sigsetsize != sizeof(l_sigset_t)) return (EINVAL); - error = copyin(uap->newset, &lmask, sizeof(linux_sigset_t)); + error = copyin(uap->newset, &lmask, sizeof(l_sigset_t)); if (error) return (error); @@ -670,7 +759,7 @@ linux_sigaltstack(p, uap) { struct sigaltstack_args bsd; stack_t *ss, *oss; - linux_stack_t lss; + l_stack_t lss; int error; caddr_t sg = stackgap_init(); @@ -682,7 +771,7 @@ linux_sigaltstack(p, uap) if (uap->uss == NULL) { ss = NULL; } else { - error = copyin(uap->uss, &lss, sizeof(linux_stack_t)); + error = copyin(uap->uss, &lss, sizeof(l_stack_t)); if (error) return (error); @@ -703,7 +792,7 @@ linux_sigaltstack(p, uap) lss.ss_sp = oss->ss_sp; lss.ss_size = oss->ss_size; lss.ss_flags = bsd_to_linux_sigaltstack(oss->ss_flags); - error = copyout(&lss, uap->uoss, sizeof(linux_stack_t)); + error = copyout(&lss, uap->uoss, sizeof(l_stack_t)); } return (error); diff --git a/sys/i386/linux/linux_proto.h b/sys/i386/linux/linux_proto.h index 225f638..6105da1 100644 --- a/sys/i386/linux/linux_proto.h +++ b/sys/i386/linux/linux_proto.h @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.40 2001/04/01 06:37:40 alc Exp + * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.43 2001/09/08 18:48:40 marcel Exp */ #ifndef _LINUX_SYSPROTO_H_ @@ -18,548 +18,631 @@ struct proc; #define PAD_(t) (sizeof(register_t) <= sizeof(t) ? \ 0 : sizeof(register_t) - sizeof(t)) -struct linux_setup_args { +#if BYTE_ORDER == LITTLE_ENDIAN +#define PADL_(t) 0 +#define PADR_(t) PAD_(t) +#else +#define PADL_(t) PAD_(t) +#define PADR_(t) 0 +#endif + +struct linux_fork_args { register_t dummy; }; -struct linux_fork_args { - register_t dummy; +struct linux_open_args { + char path_l_[PADL_(char *)]; char * path; char path_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_open_args { - char * path; char path_[PAD_(char *)]; - int flags; char flags_[PAD_(int)]; - int mode; char mode_[PAD_(int)]; +struct linux_waitpid_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char status_l_[PADL_(l_int *)]; l_int * status; char status_r_[PADR_(l_int *)]; + char options_l_[PADL_(l_int)]; l_int options; char options_r_[PADR_(l_int)]; }; -struct linux_waitpid_args { - int pid; char pid_[PAD_(int)]; - int * status; char status_[PAD_(int *)]; - int options; char options_[PAD_(int)]; +struct linux_creat_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; }; -struct linux_creat_args { - char * path; char path_[PAD_(char *)]; - int mode; char mode_[PAD_(int)]; +struct linux_link_args { + 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_link_args { - char * path; char path_[PAD_(char *)]; - char * to; char to_[PAD_(char *)]; +struct linux_unlink_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; }; -struct linux_unlink_args { - char * path; char path_[PAD_(char *)]; +struct linux_execve_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char argp_l_[PADL_(char **)]; char ** argp; char argp_r_[PADR_(char **)]; + char envp_l_[PADL_(char **)]; char ** envp; char envp_r_[PADR_(char **)]; }; -struct linux_execve_args { - char * path; char path_[PAD_(char *)]; - char ** argp; char argp_[PAD_(char **)]; - char ** envp; char envp_[PAD_(char **)]; +struct linux_chdir_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; }; -struct linux_chdir_args { - char * path; char path_[PAD_(char *)]; +struct linux_time_args { + char tm_l_[PADL_(l_time_t *)]; l_time_t * tm; char tm_r_[PADR_(l_time_t *)]; }; -struct linux_time_args { - linux_time_t * tm; char tm_[PAD_(linux_time_t *)]; +struct linux_mknod_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; + char dev_l_[PADL_(l_dev_t)]; l_dev_t dev; char dev_r_[PADR_(l_dev_t)]; }; -struct linux_mknod_args { - char * path; char path_[PAD_(char *)]; - int mode; char mode_[PAD_(int)]; - int dev; char dev_[PAD_(int)]; +struct linux_chmod_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char mode_l_[PADL_(l_mode_t)]; l_mode_t mode; char mode_r_[PADR_(l_mode_t)]; }; -struct linux_chmod_args { - char * path; char path_[PAD_(char *)]; - int mode; char mode_[PAD_(int)]; +struct linux_lchown16_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char uid_l_[PADL_(l_uid16_t)]; l_uid16_t uid; char uid_r_[PADR_(l_uid16_t)]; + char gid_l_[PADL_(l_gid16_t)]; l_gid16_t gid; char gid_r_[PADR_(l_gid16_t)]; }; -struct linux_lchown_args { - char * path; char path_[PAD_(char *)]; - int uid; char uid_[PAD_(int)]; - int gid; char gid_[PAD_(int)]; +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 *)]; }; -struct linux_break_args { - char * nsize; char nsize_[PAD_(char *)]; +struct linux_lseek_args { + char fdes_l_[PADL_(l_uint)]; l_uint fdes; char fdes_r_[PADR_(l_uint)]; + char off_l_[PADL_(l_off_t)]; l_off_t off; char off_r_[PADR_(l_off_t)]; + char whence_l_[PADL_(l_int)]; l_int whence; char whence_r_[PADR_(l_int)]; }; -struct linux_stat_args { - char * path; char path_[PAD_(char *)]; - struct ostat * up; char up_[PAD_(struct ostat *)]; +struct linux_getpid_args { + register_t dummy; }; -struct linux_lseek_args { - int fdes; char fdes_[PAD_(int)]; - long off; char off_[PAD_(long)]; - int whence; char whence_[PAD_(int)]; +struct linux_mount_args { + char specialfile_l_[PADL_(char *)]; char * specialfile; char specialfile_r_[PADR_(char *)]; + char dir_l_[PADL_(char *)]; char * dir; char dir_r_[PADR_(char *)]; + char filesystemtype_l_[PADL_(char *)]; char * filesystemtype; char filesystemtype_r_[PADR_(char *)]; + char rwflag_l_[PADL_(l_ulong)]; l_ulong rwflag; char rwflag_r_[PADR_(l_ulong)]; + char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)]; }; -struct linux_mount_args { - char * specialfile; char specialfile_[PAD_(char *)]; - char * dir; char dir_[PAD_(char *)]; - char * filesystemtype; char filesystemtype_[PAD_(char *)]; - u_long rwflag; char rwflag_[PAD_(u_long)]; - void * data; char data_[PAD_(void *)]; +struct linux_oldumount_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; }; -struct linux_umount_args { - char * path; char path_[PAD_(char *)]; +struct linux_setuid16_args { + char uid_l_[PADL_(l_uid16_t)]; l_uid16_t uid; char uid_r_[PADR_(l_uid16_t)]; }; -struct linux_stime_args { +struct linux_getuid16_args { register_t dummy; }; -struct linux_ptrace_args { +struct linux_stime_args { register_t dummy; }; -struct linux_alarm_args { - unsigned int secs; char secs_[PAD_(unsigned int)]; -}; -struct linux_fstat_args { - int fd; char fd_[PAD_(int)]; - struct ostat * up; char up_[PAD_(struct ostat *)]; -}; -struct linux_pause_args { +struct linux_ptrace_args { register_t dummy; }; -struct linux_utime_args { - char * fname; char fname_[PAD_(char *)]; - struct linux_utimbuf * times; char times_[PAD_(struct linux_utimbuf *)]; +struct linux_alarm_args { + char secs_l_[PADL_(l_uint)]; l_uint secs; char secs_r_[PADR_(l_uint)]; }; -struct linux_stty_args { - register_t dummy; +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 *)]; }; -struct linux_gtty_args { +struct linux_pause_args { register_t dummy; }; -struct linux_access_args { - char * path; char path_[PAD_(char *)]; - int flags; char flags_[PAD_(int)]; +struct linux_utime_args { + char fname_l_[PADL_(char *)]; char * fname; char fname_r_[PADR_(char *)]; + char times_l_[PADL_(struct l_utimbuf *)]; struct l_utimbuf * times; char times_r_[PADR_(struct l_utimbuf *)]; }; -struct linux_nice_args { - int inc; char inc_[PAD_(int)]; +struct linux_access_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; -struct linux_ftime_args { - register_t dummy; +struct linux_nice_args { + char inc_l_[PADL_(l_int)]; l_int inc; char inc_r_[PADR_(l_int)]; }; -struct linux_kill_args { - int pid; char pid_[PAD_(int)]; - int signum; char signum_[PAD_(int)]; +struct linux_kill_args { + char pid_l_[PADL_(l_int)]; l_int pid; char pid_r_[PADR_(l_int)]; + char signum_l_[PADL_(l_int)]; l_int signum; char signum_r_[PADR_(l_int)]; }; -struct linux_rename_args { - char * from; char from_[PAD_(char *)]; - char * to; char to_[PAD_(char *)]; +struct linux_rename_args { + char from_l_[PADL_(char *)]; char * from; char from_r_[PADR_(char *)]; + char to_l_[PADL_(char *)]; char * to; char to_r_[PADR_(char *)]; }; -struct linux_mkdir_args { - char * path; char path_[PAD_(char *)]; - int mode; char mode_[PAD_(int)]; +struct linux_mkdir_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; }; -struct linux_rmdir_args { - char * path; char path_[PAD_(char *)]; +struct linux_rmdir_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; }; -struct linux_pipe_args { - int * pipefds; char pipefds_[PAD_(int *)]; +struct linux_pipe_args { + char pipefds_l_[PADL_(l_ulong *)]; l_ulong * pipefds; char pipefds_r_[PADR_(l_ulong *)]; }; -struct linux_times_args { - struct linux_times_argv * buf; char buf_[PAD_(struct linux_times_argv *)]; +struct linux_times_args { + char buf_l_[PADL_(struct l_times_argv *)]; struct l_times_argv * buf; char buf_r_[PADR_(struct l_times_argv *)]; }; -struct linux_prof_args { - register_t dummy; +struct linux_brk_args { + char dsend_l_[PADL_(l_ulong)]; l_ulong dsend; char dsend_r_[PADR_(l_ulong)]; }; -struct linux_brk_args { - char * dsend; char dsend_[PAD_(char *)]; +struct linux_setgid16_args { + char gid_l_[PADL_(l_gid16_t)]; l_gid16_t gid; char gid_r_[PADR_(l_gid16_t)]; }; -struct linux_signal_args { - int sig; char sig_[PAD_(int)]; - linux_handler_t handler; char handler_[PAD_(linux_handler_t)]; +struct linux_getgid16_args { + register_t dummy; }; -struct linux_umount2_args { - char * path; char path_[PAD_(char *)]; - int flags; char flags_[PAD_(int)]; +struct linux_signal_args { + char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)]; + char handler_l_[PADL_(l_handler_t)]; l_handler_t handler; char handler_r_[PADR_(l_handler_t)]; }; -struct linux_lock_args { +struct linux_geteuid16_args { register_t dummy; }; -struct linux_ioctl_args { - int fd; char fd_[PAD_(int)]; - u_long cmd; char cmd_[PAD_(u_long)]; - int arg; char arg_[PAD_(int)]; +struct linux_getegid16_args { + register_t dummy; }; -struct linux_fcntl_args { - int fd; char fd_[PAD_(int)]; - int cmd; char cmd_[PAD_(int)]; - int arg; char arg_[PAD_(int)]; +struct linux_umount_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; -struct linux_mpx_args { - register_t dummy; +struct linux_ioctl_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char cmd_l_[PADL_(l_uint)]; l_uint cmd; char cmd_r_[PADR_(l_uint)]; + char arg_l_[PADL_(l_ulong)]; l_ulong arg; char arg_r_[PADR_(l_ulong)]; }; -struct linux_ulimit_args { - register_t dummy; +struct linux_fcntl_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char cmd_l_[PADL_(l_uint)]; l_uint cmd; char cmd_r_[PADR_(l_uint)]; + char arg_l_[PADL_(l_ulong)]; l_ulong arg; char arg_r_[PADR_(l_ulong)]; }; -struct linux_olduname_args { +struct linux_olduname_args { register_t dummy; }; -struct linux_ustat_args { - linux_dev_t dev; char dev_[PAD_(linux_dev_t)]; - struct linux_ustat * ubuf; char ubuf_[PAD_(struct linux_ustat *)]; +struct linux_ustat_args { + 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_sigaction_args { - int sig; char sig_[PAD_(int)]; - linux_osigaction_t * nsa; char nsa_[PAD_(linux_osigaction_t *)]; - linux_osigaction_t * osa; char osa_[PAD_(linux_osigaction_t *)]; +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 *)]; + char osa_l_[PADL_(l_osigaction_t *)]; l_osigaction_t * osa; char osa_r_[PADR_(l_osigaction_t *)]; }; -struct linux_siggetmask_args { +struct linux_sgetmask_args { register_t dummy; }; -struct linux_sigsetmask_args { - linux_osigset_t mask; char mask_[PAD_(linux_osigset_t)]; +struct linux_ssetmask_args { + char mask_l_[PADL_(l_osigset_t)]; l_osigset_t mask; char mask_r_[PADR_(l_osigset_t)]; }; -struct linux_sigsuspend_args { - int restart; char restart_[PAD_(int)]; - linux_osigset_t oldmask; char oldmask_[PAD_(linux_osigset_t)]; - linux_osigset_t mask; char mask_[PAD_(linux_osigset_t)]; +struct linux_setreuid16_args { + char ruid_l_[PADL_(l_uid16_t)]; l_uid16_t ruid; char ruid_r_[PADR_(l_uid16_t)]; + char euid_l_[PADL_(l_uid16_t)]; l_uid16_t euid; char euid_r_[PADR_(l_uid16_t)]; }; -struct linux_sigpending_args { - linux_osigset_t * mask; char mask_[PAD_(linux_osigset_t *)]; +struct linux_setregid16_args { + char rgid_l_[PADL_(l_gid16_t)]; l_gid16_t rgid; char rgid_r_[PADR_(l_gid16_t)]; + char egid_l_[PADL_(l_gid16_t)]; l_gid16_t egid; char egid_r_[PADR_(l_gid16_t)]; }; -struct linux_setrlimit_args { - u_int resource; char resource_[PAD_(u_int)]; - struct ogetrlimit * rlim; char rlim_[PAD_(struct ogetrlimit *)]; +struct linux_sigsuspend_args { + char hist0_l_[PADL_(l_int)]; l_int hist0; char hist0_r_[PADR_(l_int)]; + char hist1_l_[PADL_(l_int)]; l_int hist1; char hist1_r_[PADR_(l_int)]; + char mask_l_[PADL_(l_osigset_t)]; l_osigset_t mask; char mask_r_[PADR_(l_osigset_t)]; }; -struct linux_getrlimit_args { - u_int resource; char resource_[PAD_(u_int)]; - struct ogetrlimit * rlim; char rlim_[PAD_(struct ogetrlimit *)]; +struct linux_sigpending_args { + char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; }; -struct linux_getgroups_args { - u_int gidsetsize; char gidsetsize_[PAD_(u_int)]; - linux_gid_t * gidset; char gidset_[PAD_(linux_gid_t *)]; +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 *)]; }; -struct linux_setgroups_args { - u_int gidsetsize; char gidsetsize_[PAD_(u_int)]; - linux_gid_t * gidset; char gidset_[PAD_(linux_gid_t *)]; +struct linux_old_getrlimit_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 *)]; }; -struct linux_select_args { - struct linux_select_argv * ptr; char ptr_[PAD_(struct linux_select_argv *)]; +struct linux_getgroups16_args { + char gidsetsize_l_[PADL_(l_uint)]; l_uint gidsetsize; char gidsetsize_r_[PADR_(l_uint)]; + char gidset_l_[PADL_(l_gid16_t *)]; l_gid16_t * gidset; char gidset_r_[PADR_(l_gid16_t *)]; }; -struct linux_symlink_args { - char * path; char path_[PAD_(char *)]; - char * to; char to_[PAD_(char *)]; +struct linux_setgroups16_args { + char gidsetsize_l_[PADL_(l_uint)]; l_uint gidsetsize; char gidsetsize_r_[PADR_(l_uint)]; + char gidset_l_[PADL_(l_gid16_t *)]; l_gid16_t * gidset; char gidset_r_[PADR_(l_gid16_t *)]; }; -struct linux_readlink_args { - char * name; char name_[PAD_(char *)]; - char * buf; char buf_[PAD_(char *)]; - int count; char count_[PAD_(int)]; +struct linux_old_select_args { + char ptr_l_[PADL_(struct l_old_select_argv *)]; struct l_old_select_argv * ptr; char ptr_r_[PADR_(struct l_old_select_argv *)]; }; -struct linux_uselib_args { - char * library; char library_[PAD_(char *)]; +struct linux_symlink_args { + 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_reboot_args { - int magic1; char magic1_[PAD_(int)]; - int magic2; char magic2_[PAD_(int)]; - int opt; char opt_[PAD_(int)]; +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 *)]; + char count_l_[PADL_(l_int)]; l_int count; char count_r_[PADR_(l_int)]; }; -struct linux_readdir_args { - int fd; char fd_[PAD_(int)]; - struct linux_dirent * dent; char dent_[PAD_(struct linux_dirent *)]; - unsigned int count; char count_[PAD_(unsigned int)]; +struct linux_uselib_args { + char library_l_[PADL_(char *)]; char * library; char library_r_[PADR_(char *)]; }; -struct linux_mmap_args { - struct linux_mmap_argv * ptr; char ptr_[PAD_(struct linux_mmap_argv *)]; +struct linux_reboot_args { + char magic1_l_[PADL_(l_int)]; l_int magic1; char magic1_r_[PADR_(l_int)]; + char magic2_l_[PADL_(l_int)]; l_int magic2; char magic2_r_[PADR_(l_int)]; + char cmd_l_[PADL_(l_uint)]; l_uint cmd; char cmd_r_[PADR_(l_uint)]; + char arg_l_[PADL_(void *)]; void * arg; char arg_r_[PADR_(void *)]; }; -struct linux_truncate_args { - char * path; char path_[PAD_(char *)]; - long length; char length_[PAD_(long)]; +struct linux_readdir_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char dent_l_[PADL_(struct l_dirent *)]; struct l_dirent * dent; char dent_r_[PADR_(struct l_dirent *)]; + char count_l_[PADL_(l_uint)]; l_uint count; char count_r_[PADR_(l_uint)]; }; -struct linux_statfs_args { - char * path; char path_[PAD_(char *)]; - struct linux_statfs_buf * buf; char buf_[PAD_(struct linux_statfs_buf *)]; +struct linux_mmap_args { + char ptr_l_[PADL_(struct l_mmap_argv *)]; struct l_mmap_argv * ptr; char ptr_r_[PADR_(struct l_mmap_argv *)]; }; -struct linux_fstatfs_args { - int fd; char fd_[PAD_(int)]; - struct linux_statfs_buf * buf; char buf_[PAD_(struct linux_statfs_buf *)]; +struct linux_truncate_args { + 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_ioperm_args { - unsigned int start; char start_[PAD_(unsigned int)]; - unsigned int length; char length_[PAD_(unsigned int)]; - int enable; char enable_[PAD_(int)]; +struct linux_statfs_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char buf_l_[PADL_(struct l_statfs_buf *)]; struct l_statfs_buf * buf; char buf_r_[PADR_(struct l_statfs_buf *)]; }; -struct linux_socketcall_args { - int what; char what_[PAD_(int)]; - void * args; char args_[PAD_(void *)]; +struct linux_fstatfs_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char buf_l_[PADL_(struct l_statfs_buf *)]; struct l_statfs_buf * buf; char buf_r_[PADR_(struct l_statfs_buf *)]; }; -struct linux_ksyslog_args { - int what; char what_[PAD_(int)]; +struct linux_ioperm_args { + char start_l_[PADL_(l_ulong)]; l_ulong start; char start_r_[PADR_(l_ulong)]; + char length_l_[PADL_(l_ulong)]; l_ulong length; char length_r_[PADR_(l_ulong)]; + char enable_l_[PADL_(l_int)]; l_int enable; char enable_r_[PADR_(l_int)]; }; -struct linux_setitimer_args { - u_int which; char which_[PAD_(u_int)]; - struct itimerval * itv; char itv_[PAD_(struct itimerval *)]; - struct itimerval * oitv; char oitv_[PAD_(struct itimerval *)]; +struct linux_socketcall_args { + char what_l_[PADL_(l_int)]; l_int what; char what_r_[PADR_(l_int)]; + char args_l_[PADL_(l_ulong)]; l_ulong args; char args_r_[PADR_(l_ulong)]; }; -struct linux_getitimer_args { - u_int which; char which_[PAD_(u_int)]; - struct itimerval * itv; char itv_[PAD_(struct itimerval *)]; +struct linux_syslog_args { + char type_l_[PADL_(l_int)]; l_int type; char type_r_[PADR_(l_int)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char len_l_[PADL_(l_int)]; l_int len; char len_r_[PADR_(l_int)]; }; -struct linux_newstat_args { - char * path; char path_[PAD_(char *)]; - struct linux_newstat * buf; char buf_[PAD_(struct linux_newstat *)]; +struct linux_setitimer_args { + char which_l_[PADL_(l_int)]; l_int which; char which_r_[PADR_(l_int)]; + char itv_l_[PADL_(struct l_itimerval *)]; struct l_itimerval * itv; char itv_r_[PADR_(struct l_itimerval *)]; + char oitv_l_[PADL_(struct l_itimerval *)]; struct l_itimerval * oitv; char oitv_r_[PADR_(struct l_itimerval *)]; }; -struct linux_newlstat_args { - char * path; char path_[PAD_(char *)]; - struct linux_newstat * buf; char buf_[PAD_(struct linux_newstat *)]; +struct linux_getitimer_args { + char which_l_[PADL_(l_int)]; l_int which; char which_r_[PADR_(l_int)]; + char itv_l_[PADL_(struct l_itimerval *)]; struct l_itimerval * itv; char itv_r_[PADR_(struct l_itimerval *)]; }; -struct linux_newfstat_args { - int fd; char fd_[PAD_(int)]; - struct linux_newstat * buf; char buf_[PAD_(struct linux_newstat *)]; +struct linux_newstat_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char buf_l_[PADL_(struct l_newstat *)]; struct l_newstat * buf; char buf_r_[PADR_(struct l_newstat *)]; }; -struct linux_uname_args { - register_t dummy; +struct linux_newlstat_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char buf_l_[PADL_(struct l_newstat *)]; struct l_newstat * buf; char buf_r_[PADR_(struct l_newstat *)]; }; -struct linux_iopl_args { - int level; char level_[PAD_(int)]; +struct linux_newfstat_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char buf_l_[PADL_(struct l_newstat *)]; struct l_newstat * buf; char buf_r_[PADR_(struct l_newstat *)]; }; -struct linux_vhangup_args { +struct linux_uname_args { register_t dummy; }; -struct linux_idle_args { +struct linux_iopl_args { + char level_l_[PADL_(l_ulong)]; l_ulong level; char level_r_[PADR_(l_ulong)]; +}; +struct linux_vhangup_args { register_t dummy; }; -struct linux_vm86old_args { +struct linux_vm86old_args { register_t dummy; }; -struct linux_wait4_args { - int pid; char pid_[PAD_(int)]; - int * status; char status_[PAD_(int *)]; - int options; char options_[PAD_(int)]; - struct rusage * rusage; char rusage_[PAD_(struct rusage *)]; +struct linux_wait4_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char status_l_[PADL_(l_uint *)]; l_uint * status; char status_r_[PADR_(l_uint *)]; + char options_l_[PADL_(l_int)]; l_int options; char options_r_[PADR_(l_int)]; + char rusage_l_[PADL_(struct l_rusage *)]; struct l_rusage * rusage; char rusage_r_[PADR_(struct l_rusage *)]; }; -struct linux_swapoff_args { +struct linux_swapoff_args { register_t dummy; }; -struct linux_sysinfo_args { - struct sysinfo * info; char info_[PAD_(struct sysinfo *)]; +struct linux_sysinfo_args { + char info_l_[PADL_(struct l_sysinfo *)]; struct l_sysinfo * info; char info_r_[PADR_(struct l_sysinfo *)]; }; -struct linux_ipc_args { - int what; char what_[PAD_(int)]; - int arg1; char arg1_[PAD_(int)]; - int arg2; char arg2_[PAD_(int)]; - int arg3; char arg3_[PAD_(int)]; - caddr_t ptr; char ptr_[PAD_(caddr_t)]; +struct linux_ipc_args { + char what_l_[PADL_(l_uint)]; l_uint what; char what_r_[PADR_(l_uint)]; + char arg1_l_[PADL_(l_int)]; l_int arg1; char arg1_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 ptr_l_[PADL_(void *)]; void * ptr; char ptr_r_[PADR_(void *)]; + char arg5_l_[PADL_(l_long)]; l_long arg5; char arg5_r_[PADR_(l_long)]; }; -struct linux_sigreturn_args { - struct linux_sigframe * sfp; char sfp_[PAD_(struct linux_sigframe *)]; +struct linux_sigreturn_args { + char sfp_l_[PADL_(struct l_sigframe *)]; struct l_sigframe * sfp; char sfp_r_[PADR_(struct l_sigframe *)]; }; -struct linux_clone_args { - int flags; char flags_[PAD_(int)]; - void * stack; char stack_[PAD_(void *)]; +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 *)]; }; -struct linux_newuname_args { - struct linux_new_utsname * buf; char buf_[PAD_(struct linux_new_utsname *)]; +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 *)]; }; -struct linux_modify_ldt_args { - int func; char func_[PAD_(int)]; - void * ptr; char ptr_[PAD_(void *)]; - size_t bytecount; char bytecount_[PAD_(size_t)]; +struct linux_modify_ldt_args { + char func_l_[PADL_(l_int)]; l_int func; char func_r_[PADR_(l_int)]; + char ptr_l_[PADL_(void *)]; void * ptr; char ptr_r_[PADR_(void *)]; + char bytecount_l_[PADL_(l_ulong)]; l_ulong bytecount; char bytecount_r_[PADR_(l_ulong)]; }; -struct linux_adjtimex_args { +struct linux_adjtimex_args { register_t dummy; }; -struct linux_sigprocmask_args { - int how; char how_[PAD_(int)]; - linux_osigset_t * mask; char mask_[PAD_(linux_osigset_t *)]; - linux_osigset_t * omask; char omask_[PAD_(linux_osigset_t *)]; +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 *)]; + char omask_l_[PADL_(l_osigset_t *)]; l_osigset_t * omask; char omask_r_[PADR_(l_osigset_t *)]; }; -struct linux_create_module_args { +struct linux_create_module_args { register_t dummy; }; -struct linux_init_module_args { +struct linux_init_module_args { register_t dummy; }; -struct linux_delete_module_args { +struct linux_delete_module_args { register_t dummy; }; -struct linux_get_kernel_syms_args { +struct linux_get_kernel_syms_args { register_t dummy; }; -struct linux_quotactl_args { +struct linux_quotactl_args { register_t dummy; }; -struct linux_getpgid_args { - int pid; char pid_[PAD_(int)]; +struct linux_getpgid_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; }; -struct linux_bdflush_args { +struct linux_bdflush_args { register_t dummy; }; -struct linux_sysfs_args { - int option; char option_[PAD_(int)]; - u_long arg1; char arg1_[PAD_(u_long)]; - u_long arg2; char arg2_[PAD_(u_long)]; +struct linux_sysfs_args { + char option_l_[PADL_(l_int)]; l_int option; char option_r_[PADR_(l_int)]; + char arg1_l_[PADL_(l_ulong)]; l_ulong arg1; char arg1_r_[PADR_(l_ulong)]; + char arg2_l_[PADL_(l_ulong)]; l_ulong arg2; char arg2_r_[PADR_(l_ulong)]; }; -struct linux_personality_args { - int per; char per_[PAD_(int)]; +struct linux_personality_args { + char per_l_[PADL_(l_ulong)]; l_ulong per; char per_r_[PADR_(l_ulong)]; }; -struct linux_afs_syscall_args { - register_t dummy; +struct linux_setfsuid16_args { + char uid_l_[PADL_(l_uid16_t)]; l_uid16_t uid; char uid_r_[PADR_(l_uid16_t)]; }; -struct linux_setfsuid_args { - linux_uid_t uid; char uid_[PAD_(linux_uid_t)]; +struct linux_setfsgid16_args { + char gid_l_[PADL_(l_gid16_t)]; l_gid16_t gid; char gid_r_[PADR_(l_gid16_t)]; }; -struct linux_setfsgid_args { - linux_gid_t gid; char gid_[PAD_(linux_gid_t)]; +struct linux_llseek_args { + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; + char ohigh_l_[PADL_(l_ulong)]; l_ulong ohigh; char ohigh_r_[PADR_(l_ulong)]; + char olow_l_[PADL_(l_ulong)]; l_ulong olow; char olow_r_[PADR_(l_ulong)]; + char res_l_[PADL_(l_loff_t *)]; l_loff_t * res; char res_r_[PADR_(l_loff_t *)]; + char whence_l_[PADL_(l_uint)]; l_uint whence; char whence_r_[PADR_(l_uint)]; }; -struct linux_llseek_args { - int fd; char fd_[PAD_(int)]; - u_int32_t ohigh; char ohigh_[PAD_(u_int32_t)]; - u_int32_t olow; char olow_[PAD_(u_int32_t)]; - caddr_t res; char res_[PAD_(caddr_t)]; - int whence; char whence_[PAD_(int)]; +struct linux_getdents_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char dent_l_[PADL_(void *)]; void * dent; char dent_r_[PADR_(void *)]; + char count_l_[PADL_(l_uint)]; l_uint count; char count_r_[PADR_(l_uint)]; }; -struct linux_getdents_args { - int fd; char fd_[PAD_(int)]; - void * dent; char dent_[PAD_(void *)]; - unsigned count; char count_[PAD_(unsigned)]; +struct linux_select_args { + char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)]; + char readfds_l_[PADL_(l_fd_set *)]; l_fd_set * readfds; char readfds_r_[PADR_(l_fd_set *)]; + char writefds_l_[PADL_(l_fd_set *)]; l_fd_set * writefds; char writefds_r_[PADR_(l_fd_set *)]; + char exceptfds_l_[PADL_(l_fd_set *)]; l_fd_set * exceptfds; char exceptfds_r_[PADR_(l_fd_set *)]; + char timeout_l_[PADL_(struct l_timeval *)]; struct l_timeval * timeout; char timeout_r_[PADR_(struct l_timeval *)]; }; -struct linux_newselect_args { - int nfds; char nfds_[PAD_(int)]; - fd_set * readfds; char readfds_[PAD_(fd_set *)]; - fd_set * writefds; char writefds_[PAD_(fd_set *)]; - fd_set * exceptfds; char exceptfds_[PAD_(fd_set *)]; - struct timeval * timeout; char timeout_[PAD_(struct timeval *)]; +struct linux_msync_args { + char addr_l_[PADL_(l_ulong)]; l_ulong addr; char addr_r_[PADR_(l_ulong)]; + char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)]; + char fl_l_[PADL_(l_int)]; l_int fl; char fl_r_[PADR_(l_int)]; }; -struct linux_msync_args { - caddr_t addr; char addr_[PAD_(caddr_t)]; - int len; char len_[PAD_(int)]; - int fl; char fl_[PAD_(int)]; +struct linux_getsid_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; }; -struct linux_getsid_args { - linux_pid_t pid; char pid_[PAD_(linux_pid_t)]; +struct linux_fdatasync_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; }; -struct linux_fdatasync_args { - int fd; char fd_[PAD_(int)]; +struct linux_sysctl_args { + char args_l_[PADL_(struct l___sysctl_args *)]; struct l___sysctl_args * args; char args_r_[PADR_(struct l___sysctl_args *)]; }; -struct linux_sysctl_args { - register_t dummy; +struct linux_sched_setscheduler_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; + char param_l_[PADL_(struct l_sched_param *)]; struct l_sched_param * param; char param_r_[PADR_(struct l_sched_param *)]; }; -struct linux_sched_setscheduler_args { - pid_t pid; char pid_[PAD_(pid_t)]; - int policy; char policy_[PAD_(int)]; - const struct sched_param * param; char param_[PAD_(const struct sched_param *)]; +struct linux_sched_getscheduler_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; }; -struct linux_sched_getscheduler_args { - pid_t pid; char pid_[PAD_(pid_t)]; +struct linux_sched_get_priority_max_args { + char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; }; -struct linux_sched_get_priority_max_args { - int policy; char policy_[PAD_(int)]; +struct linux_sched_get_priority_min_args { + char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; }; -struct linux_sched_get_priority_min_args { - int policy; char policy_[PAD_(int)]; +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)]; + char new_len_l_[PADL_(l_ulong)]; l_ulong new_len; char new_len_r_[PADR_(l_ulong)]; + char flags_l_[PADL_(l_ulong)]; l_ulong flags; char flags_r_[PADR_(l_ulong)]; + char new_addr_l_[PADL_(l_ulong)]; l_ulong new_addr; char new_addr_r_[PADR_(l_ulong)]; }; -struct linux_mremap_args { - caddr_t addr; char addr_[PAD_(caddr_t)]; - int old_len; char old_len_[PAD_(int)]; - int new_len; char new_len_[PAD_(int)]; - int flags; char flags_[PAD_(int)]; +struct linux_setresuid16_args { + char ruid_l_[PADL_(l_uid16_t)]; l_uid16_t ruid; char ruid_r_[PADR_(l_uid16_t)]; + char euid_l_[PADL_(l_uid16_t)]; l_uid16_t euid; char euid_r_[PADR_(l_uid16_t)]; + char suid_l_[PADL_(l_uid16_t)]; l_uid16_t suid; char suid_r_[PADR_(l_uid16_t)]; }; -struct linux_getresuid_args { - linux_uid_t * ruid; char ruid_[PAD_(linux_uid_t *)]; - linux_uid_t * euid; char euid_[PAD_(linux_uid_t *)]; - linux_uid_t * suid; char suid_[PAD_(linux_uid_t *)]; +struct linux_getresuid16_args { + char ruid_l_[PADL_(l_uid16_t *)]; l_uid16_t * ruid; char ruid_r_[PADR_(l_uid16_t *)]; + char euid_l_[PADL_(l_uid16_t *)]; l_uid16_t * euid; char euid_r_[PADR_(l_uid16_t *)]; + char suid_l_[PADL_(l_uid16_t *)]; l_uid16_t * suid; char suid_r_[PADR_(l_uid16_t *)]; }; -struct linux_vm86_args { +struct linux_vm86_args { register_t dummy; }; -struct linux_query_module_args { +struct linux_query_module_args { register_t dummy; }; -struct linux_nfsservctl_args { +struct linux_nfsservctl_args { register_t dummy; }; -struct linux_getresgid_args { - linux_gid_t * rgid; char rgid_[PAD_(linux_gid_t *)]; - linux_gid_t * egid; char egid_[PAD_(linux_gid_t *)]; - linux_gid_t * sgid; char sgid_[PAD_(linux_gid_t *)]; +struct linux_setresgid16_args { + char rgid_l_[PADL_(l_gid16_t)]; l_gid16_t rgid; char rgid_r_[PADR_(l_gid16_t)]; + char egid_l_[PADL_(l_gid16_t)]; l_gid16_t egid; char egid_r_[PADR_(l_gid16_t)]; + char sgid_l_[PADL_(l_gid16_t)]; l_gid16_t sgid; char sgid_r_[PADR_(l_gid16_t)]; }; -struct linux_prctl_args { +struct linux_getresgid16_args { + char rgid_l_[PADL_(l_gid16_t *)]; l_gid16_t * rgid; char rgid_r_[PADR_(l_gid16_t *)]; + char egid_l_[PADL_(l_gid16_t *)]; l_gid16_t * egid; char egid_r_[PADR_(l_gid16_t *)]; + 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; }; -struct linux_rt_sigreturn_args { - struct linux_ucontext * ucp; char ucp_[PAD_(struct linux_ucontext *)]; +struct linux_rt_sigreturn_args { + char ucp_l_[PADL_(struct l_ucontext *)]; struct l_ucontext * ucp; char ucp_r_[PADR_(struct l_ucontext *)]; }; -struct linux_rt_sigaction_args { - int sig; char sig_[PAD_(int)]; - linux_sigaction_t * act; char act_[PAD_(linux_sigaction_t *)]; - linux_sigaction_t * oact; char oact_[PAD_(linux_sigaction_t *)]; - size_t sigsetsize; char sigsetsize_[PAD_(size_t)]; +struct linux_rt_sigaction_args { + char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)]; + char act_l_[PADL_(l_sigaction_t *)]; l_sigaction_t * act; char act_r_[PADR_(l_sigaction_t *)]; + char oact_l_[PADL_(l_sigaction_t *)]; l_sigaction_t * oact; char oact_r_[PADR_(l_sigaction_t *)]; + char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; }; -struct linux_rt_sigprocmask_args { - int how; char how_[PAD_(int)]; - linux_sigset_t * mask; char mask_[PAD_(linux_sigset_t *)]; - linux_sigset_t * omask; char omask_[PAD_(linux_sigset_t *)]; - size_t sigsetsize; char sigsetsize_[PAD_(size_t)]; +struct linux_rt_sigprocmask_args { + char how_l_[PADL_(l_int)]; l_int how; char how_r_[PADR_(l_int)]; + char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)]; + char omask_l_[PADL_(l_sigset_t *)]; l_sigset_t * omask; char omask_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_sigpending_args { +struct linux_rt_sigpending_args { register_t dummy; }; -struct linux_rt_sigtimedwait_args { +struct linux_rt_sigtimedwait_args { register_t dummy; }; -struct linux_rt_sigqueueinfo_args { +struct linux_rt_sigqueueinfo_args { register_t dummy; }; -struct linux_rt_sigsuspend_args { - linux_sigset_t * newset; char newset_[PAD_(linux_sigset_t *)]; - size_t sigsetsize; char sigsetsize_[PAD_(size_t)]; +struct linux_rt_sigsuspend_args { + char newset_l_[PADL_(l_sigset_t *)]; l_sigset_t * newset; char newset_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_pread_args { - int fd; char fd_[PAD_(int)]; - char * buf; char buf_[PAD_(char *)]; - size_t nbyte; char nbyte_[PAD_(size_t)]; - off_t offset; char offset_[PAD_(off_t)]; +struct linux_pread_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char nbyte_l_[PADL_(l_size_t)]; l_size_t nbyte; char nbyte_r_[PADR_(l_size_t)]; + char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; }; -struct linux_pwrite_args { - int fd; char fd_[PAD_(int)]; - const char * buf; char buf_[PAD_(const char *)]; - size_t nbyte; char nbyte_[PAD_(size_t)]; - off_t offset; char offset_[PAD_(off_t)]; +struct linux_pwrite_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char nbyte_l_[PADL_(l_size_t)]; l_size_t nbyte; char nbyte_r_[PADR_(l_size_t)]; + char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; }; -struct linux_chown_args { - char * path; char path_[PAD_(char *)]; - int uid; char uid_[PAD_(int)]; - int gid; char gid_[PAD_(int)]; +struct linux_chown16_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char uid_l_[PADL_(l_uid16_t)]; l_uid16_t uid; char uid_r_[PADR_(l_uid16_t)]; + char gid_l_[PADL_(l_gid16_t)]; l_gid16_t gid; char gid_r_[PADR_(l_gid16_t)]; }; -struct linux_getcwd_args { - char * buf; char buf_[PAD_(char *)]; - unsigned long bufsize; char bufsize_[PAD_(unsigned long)]; +struct linux_getcwd_args { + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char bufsize_l_[PADL_(l_ulong)]; l_ulong bufsize; char bufsize_r_[PADR_(l_ulong)]; }; -struct linux_capget_args { +struct linux_capget_args { register_t dummy; }; -struct linux_capset_args { +struct linux_capset_args { register_t dummy; }; -struct linux_sigaltstack_args { - const linux_stack_t * uss; char uss_[PAD_(const linux_stack_t *)]; - linux_stack_t * uoss; char uoss_[PAD_(linux_stack_t *)]; +struct linux_sigaltstack_args { + char uss_l_[PADL_(l_stack_t *)]; l_stack_t * uss; char uss_r_[PADR_(l_stack_t *)]; + char uoss_l_[PADL_(l_stack_t *)]; l_stack_t * uoss; char uoss_r_[PADR_(l_stack_t *)]; }; -struct linux_sendfile_args { +struct linux_sendfile_args { register_t dummy; }; -struct linux_getpmsg_args { +struct linux_vfork_args { register_t dummy; }; -struct linux_putpmsg_args { - register_t dummy; +struct linux_getrlimit_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 *)]; }; -struct linux_vfork_args { - register_t dummy; +struct linux_mmap2_args { + char addr_l_[PADL_(l_ulong)]; l_ulong addr; char addr_r_[PADR_(l_ulong)]; + char len_l_[PADL_(l_ulong)]; l_ulong len; char len_r_[PADR_(l_ulong)]; + char prot_l_[PADL_(l_ulong)]; l_ulong prot; char prot_r_[PADR_(l_ulong)]; + char flags_l_[PADL_(l_ulong)]; l_ulong flags; char flags_r_[PADR_(l_ulong)]; + char fd_l_[PADL_(l_ulong)]; l_ulong fd; char fd_r_[PADR_(l_ulong)]; + char pgoff_l_[PADL_(l_ulong)]; l_ulong pgoff; char pgoff_r_[PADR_(l_ulong)]; }; -struct linux_ugetrlimit_args { - register_t dummy; +struct linux_truncate64_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char length_l_[PADL_(l_loff_t)]; l_loff_t length; char length_r_[PADR_(l_loff_t)]; }; -struct linux_mmap2_args { - register_t dummy; +struct linux_ftruncate64_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char length_l_[PADL_(l_loff_t)]; l_loff_t length; char length_r_[PADR_(l_loff_t)]; }; -struct linux_truncate64_args { - register_t dummy; +struct linux_stat64_args { + char filename_l_[PADL_(char *)]; char * filename; char filename_r_[PADR_(char *)]; + char statbuf_l_[PADL_(struct l_stat64 *)]; struct l_stat64 * statbuf; char statbuf_r_[PADR_(struct l_stat64 *)]; + char flags_l_[PADL_(l_long)]; l_long flags; char flags_r_[PADR_(l_long)]; }; -struct linux_ftruncate64_args { - register_t dummy; +struct linux_lstat64_args { + char filename_l_[PADL_(char *)]; char * filename; char filename_r_[PADR_(char *)]; + char statbuf_l_[PADL_(struct l_stat64 *)]; struct l_stat64 * statbuf; char statbuf_r_[PADR_(struct l_stat64 *)]; + char flags_l_[PADL_(l_long)]; l_long flags; char flags_r_[PADR_(l_long)]; +}; +struct linux_fstat64_args { + char fd_l_[PADL_(l_ulong)]; l_ulong fd; char fd_r_[PADR_(l_ulong)]; + char statbuf_l_[PADL_(struct l_stat64 *)]; struct l_stat64 * statbuf; char statbuf_r_[PADR_(struct l_stat64 *)]; + char flags_l_[PADL_(l_long)]; l_long flags; char flags_r_[PADR_(l_long)]; }; -struct linux_stat64_args { +struct linux_lchown_args { + char filename_l_[PADL_(char *)]; char * filename; char filename_r_[PADR_(char *)]; + char user_l_[PADL_(l_uid_t)]; l_uid_t user; char user_r_[PADR_(l_uid_t)]; + char group_l_[PADL_(l_gid_t)]; l_gid_t group; char group_r_[PADR_(l_gid_t)]; +}; +struct linux_getuid_args { register_t dummy; }; -struct linux_lstat64_args { +struct linux_getgid_args { register_t dummy; }; -struct linux_fstat64_args { +struct linux_getgroups_args { + char gidsetsize_l_[PADL_(l_int)]; l_int gidsetsize; char gidsetsize_r_[PADR_(l_int)]; + char grouplist_l_[PADL_(l_gid_t *)]; l_gid_t * grouplist; char grouplist_r_[PADR_(l_gid_t *)]; +}; +struct linux_setgroups_args { + char gidsetsize_l_[PADL_(l_int)]; l_int gidsetsize; char gidsetsize_r_[PADR_(l_int)]; + char grouplist_l_[PADL_(l_gid_t *)]; l_gid_t * grouplist; char grouplist_r_[PADR_(l_gid_t *)]; +}; +struct linux_fchown_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char user_l_[PADL_(l_uid_t)]; l_uid_t user; char user_r_[PADR_(l_uid_t)]; + char group_l_[PADL_(l_gid_t)]; l_gid_t group; char group_r_[PADR_(l_gid_t)]; +}; +struct linux_chown_args { + char filename_l_[PADL_(char *)]; char * filename; char filename_r_[PADR_(char *)]; + char user_l_[PADL_(l_uid_t)]; l_uid_t user; char user_r_[PADR_(l_uid_t)]; + char group_l_[PADL_(l_gid_t)]; l_gid_t group; char group_r_[PADR_(l_gid_t)]; +}; +struct linux_setfsuid_args { + char uid_l_[PADL_(l_uid_t)]; l_uid_t uid; char uid_r_[PADR_(l_uid_t)]; +}; +struct linux_setfsgid_args { + char gid_l_[PADL_(l_gid_t)]; l_gid_t gid; char gid_r_[PADR_(l_gid_t)]; +}; +struct linux_pivot_root_args { + char new_root_l_[PADL_(char *)]; char * new_root; char new_root_r_[PADR_(char *)]; + char put_old_l_[PADL_(char *)]; char * put_old; char put_old_r_[PADR_(char *)]; +}; +struct linux_mincore_args { + char start_l_[PADL_(l_ulong)]; l_ulong start; char start_r_[PADR_(l_ulong)]; + char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)]; + char vec_l_[PADL_(u_char *)]; u_char * vec; char vec_r_[PADR_(u_char *)]; +}; +struct linux_madvise_args { register_t dummy; }; -int linux_setup __P((struct proc *, struct linux_setup_args *)); +struct linux_getdents64_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char dirent_l_[PADL_(void *)]; void * dirent; char dirent_r_[PADR_(void *)]; + char count_l_[PADL_(l_uint)]; l_uint count; char count_r_[PADR_(l_uint)]; +}; +struct linux_fcntl64_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char cmd_l_[PADL_(l_uint)]; l_uint cmd; char cmd_r_[PADR_(l_uint)]; + char arg_l_[PADL_(l_ulong)]; l_ulong arg; char arg_r_[PADR_(l_ulong)]; +}; int linux_fork __P((struct proc *, struct linux_fork_args *)); int linux_open __P((struct proc *, struct linux_open_args *)); int linux_waitpid __P((struct proc *, struct linux_waitpid_args *)); @@ -571,50 +654,51 @@ int linux_chdir __P((struct proc *, struct linux_chdir_args *)); int linux_time __P((struct proc *, struct linux_time_args *)); int linux_mknod __P((struct proc *, struct linux_mknod_args *)); int linux_chmod __P((struct proc *, struct linux_chmod_args *)); -int linux_lchown __P((struct proc *, struct linux_lchown_args *)); -int linux_break __P((struct proc *, struct linux_break_args *)); +int linux_lchown16 __P((struct proc *, struct linux_lchown16_args *)); int linux_stat __P((struct proc *, struct linux_stat_args *)); int linux_lseek __P((struct proc *, struct linux_lseek_args *)); +int linux_getpid __P((struct proc *, struct linux_getpid_args *)); int linux_mount __P((struct proc *, struct linux_mount_args *)); -int linux_umount __P((struct proc *, struct linux_umount_args *)); +int linux_oldumount __P((struct proc *, struct linux_oldumount_args *)); +int linux_setuid16 __P((struct proc *, struct linux_setuid16_args *)); +int linux_getuid16 __P((struct proc *, struct linux_getuid16_args *)); int linux_stime __P((struct proc *, struct linux_stime_args *)); int linux_ptrace __P((struct proc *, struct linux_ptrace_args *)); int linux_alarm __P((struct proc *, struct linux_alarm_args *)); int linux_fstat __P((struct proc *, struct linux_fstat_args *)); int linux_pause __P((struct proc *, struct linux_pause_args *)); int linux_utime __P((struct proc *, struct linux_utime_args *)); -int linux_stty __P((struct proc *, struct linux_stty_args *)); -int linux_gtty __P((struct proc *, struct linux_gtty_args *)); int linux_access __P((struct proc *, struct linux_access_args *)); int linux_nice __P((struct proc *, struct linux_nice_args *)); -int linux_ftime __P((struct proc *, struct linux_ftime_args *)); int linux_kill __P((struct proc *, struct linux_kill_args *)); int linux_rename __P((struct proc *, struct linux_rename_args *)); int linux_mkdir __P((struct proc *, struct linux_mkdir_args *)); int linux_rmdir __P((struct proc *, struct linux_rmdir_args *)); int linux_pipe __P((struct proc *, struct linux_pipe_args *)); int linux_times __P((struct proc *, struct linux_times_args *)); -int linux_prof __P((struct proc *, struct linux_prof_args *)); int linux_brk __P((struct proc *, struct linux_brk_args *)); +int linux_setgid16 __P((struct proc *, struct linux_setgid16_args *)); +int linux_getgid16 __P((struct proc *, struct linux_getgid16_args *)); int linux_signal __P((struct proc *, struct linux_signal_args *)); -int linux_umount2 __P((struct proc *, struct linux_umount2_args *)); -int linux_lock __P((struct proc *, struct linux_lock_args *)); +int linux_geteuid16 __P((struct proc *, struct linux_geteuid16_args *)); +int linux_getegid16 __P((struct proc *, struct linux_getegid16_args *)); +int linux_umount __P((struct proc *, struct linux_umount_args *)); int linux_ioctl __P((struct proc *, struct linux_ioctl_args *)); int linux_fcntl __P((struct proc *, struct linux_fcntl_args *)); -int linux_mpx __P((struct proc *, struct linux_mpx_args *)); -int linux_ulimit __P((struct proc *, struct linux_ulimit_args *)); int linux_olduname __P((struct proc *, struct linux_olduname_args *)); int linux_ustat __P((struct proc *, struct linux_ustat_args *)); int linux_sigaction __P((struct proc *, struct linux_sigaction_args *)); -int linux_siggetmask __P((struct proc *, struct linux_siggetmask_args *)); -int linux_sigsetmask __P((struct proc *, struct linux_sigsetmask_args *)); +int linux_sgetmask __P((struct proc *, struct linux_sgetmask_args *)); +int linux_ssetmask __P((struct proc *, struct linux_ssetmask_args *)); +int linux_setreuid16 __P((struct proc *, struct linux_setreuid16_args *)); +int linux_setregid16 __P((struct proc *, struct linux_setregid16_args *)); int linux_sigsuspend __P((struct proc *, struct linux_sigsuspend_args *)); int linux_sigpending __P((struct proc *, struct linux_sigpending_args *)); int linux_setrlimit __P((struct proc *, struct linux_setrlimit_args *)); -int linux_getrlimit __P((struct proc *, struct linux_getrlimit_args *)); -int linux_getgroups __P((struct proc *, struct linux_getgroups_args *)); -int linux_setgroups __P((struct proc *, struct linux_setgroups_args *)); -int linux_select __P((struct proc *, struct linux_select_args *)); +int linux_old_getrlimit __P((struct proc *, struct linux_old_getrlimit_args *)); +int linux_getgroups16 __P((struct proc *, struct linux_getgroups16_args *)); +int linux_setgroups16 __P((struct proc *, struct linux_setgroups16_args *)); +int linux_old_select __P((struct proc *, struct linux_old_select_args *)); int linux_symlink __P((struct proc *, struct linux_symlink_args *)); int linux_readlink __P((struct proc *, struct linux_readlink_args *)); int linux_uselib __P((struct proc *, struct linux_uselib_args *)); @@ -626,7 +710,7 @@ int linux_statfs __P((struct proc *, struct linux_statfs_args *)); int linux_fstatfs __P((struct proc *, struct linux_fstatfs_args *)); int linux_ioperm __P((struct proc *, struct linux_ioperm_args *)); int linux_socketcall __P((struct proc *, struct linux_socketcall_args *)); -int linux_ksyslog __P((struct proc *, struct linux_ksyslog_args *)); +int linux_syslog __P((struct proc *, struct linux_syslog_args *)); int linux_setitimer __P((struct proc *, struct linux_setitimer_args *)); int linux_getitimer __P((struct proc *, struct linux_getitimer_args *)); int linux_newstat __P((struct proc *, struct linux_newstat_args *)); @@ -635,7 +719,6 @@ int linux_newfstat __P((struct proc *, struct linux_newfstat_args *)); int linux_uname __P((struct proc *, struct linux_uname_args *)); int linux_iopl __P((struct proc *, struct linux_iopl_args *)); int linux_vhangup __P((struct proc *, struct linux_vhangup_args *)); -int linux_idle __P((struct proc *, struct linux_idle_args *)); int linux_vm86old __P((struct proc *, struct linux_vm86old_args *)); int linux_wait4 __P((struct proc *, struct linux_wait4_args *)); int linux_swapoff __P((struct proc *, struct linux_swapoff_args *)); @@ -656,12 +739,11 @@ int linux_getpgid __P((struct proc *, struct linux_getpgid_args *)); int linux_bdflush __P((struct proc *, struct linux_bdflush_args *)); int linux_sysfs __P((struct proc *, struct linux_sysfs_args *)); int linux_personality __P((struct proc *, struct linux_personality_args *)); -int linux_afs_syscall __P((struct proc *, struct linux_afs_syscall_args *)); -int linux_setfsuid __P((struct proc *, struct linux_setfsuid_args *)); -int linux_setfsgid __P((struct proc *, struct linux_setfsgid_args *)); +int linux_setfsuid16 __P((struct proc *, struct linux_setfsuid16_args *)); +int linux_setfsgid16 __P((struct proc *, struct linux_setfsgid16_args *)); int linux_llseek __P((struct proc *, struct linux_llseek_args *)); int linux_getdents __P((struct proc *, struct linux_getdents_args *)); -int linux_newselect __P((struct proc *, struct linux_newselect_args *)); +int linux_select __P((struct proc *, struct linux_select_args *)); int linux_msync __P((struct proc *, struct linux_msync_args *)); int linux_getsid __P((struct proc *, struct linux_getsid_args *)); int linux_fdatasync __P((struct proc *, struct linux_fdatasync_args *)); @@ -671,11 +753,13 @@ int linux_sched_getscheduler __P((struct proc *, struct linux_sched_getscheduler int linux_sched_get_priority_max __P((struct proc *, struct linux_sched_get_priority_max_args *)); int linux_sched_get_priority_min __P((struct proc *, struct linux_sched_get_priority_min_args *)); int linux_mremap __P((struct proc *, struct linux_mremap_args *)); -int linux_getresuid __P((struct proc *, struct linux_getresuid_args *)); +int linux_setresuid16 __P((struct proc *, struct linux_setresuid16_args *)); +int linux_getresuid16 __P((struct proc *, struct linux_getresuid16_args *)); int linux_vm86 __P((struct proc *, struct linux_vm86_args *)); int linux_query_module __P((struct proc *, struct linux_query_module_args *)); int linux_nfsservctl __P((struct proc *, struct linux_nfsservctl_args *)); -int linux_getresgid __P((struct proc *, struct linux_getresgid_args *)); +int linux_setresgid16 __P((struct proc *, struct linux_setresgid16_args *)); +int linux_getresgid16 __P((struct proc *, struct linux_getresgid16_args *)); int linux_prctl __P((struct proc *, struct linux_prctl_args *)); int linux_rt_sigreturn __P((struct proc *, struct linux_rt_sigreturn_args *)); int linux_rt_sigaction __P((struct proc *, struct linux_rt_sigaction_args *)); @@ -686,22 +770,34 @@ int linux_rt_sigqueueinfo __P((struct proc *, struct linux_rt_sigqueueinfo_args int linux_rt_sigsuspend __P((struct proc *, struct linux_rt_sigsuspend_args *)); int linux_pread __P((struct proc *, struct linux_pread_args *)); int linux_pwrite __P((struct proc *, struct linux_pwrite_args *)); -int linux_chown __P((struct proc *, struct linux_chown_args *)); +int linux_chown16 __P((struct proc *, struct linux_chown16_args *)); int linux_getcwd __P((struct proc *, struct linux_getcwd_args *)); int linux_capget __P((struct proc *, struct linux_capget_args *)); int linux_capset __P((struct proc *, struct linux_capset_args *)); int linux_sigaltstack __P((struct proc *, struct linux_sigaltstack_args *)); int linux_sendfile __P((struct proc *, struct linux_sendfile_args *)); -int linux_getpmsg __P((struct proc *, struct linux_getpmsg_args *)); -int linux_putpmsg __P((struct proc *, struct linux_putpmsg_args *)); int linux_vfork __P((struct proc *, struct linux_vfork_args *)); -int linux_ugetrlimit __P((struct proc *, struct linux_ugetrlimit_args *)); +int linux_getrlimit __P((struct proc *, struct linux_getrlimit_args *)); int linux_mmap2 __P((struct proc *, struct linux_mmap2_args *)); int linux_truncate64 __P((struct proc *, struct linux_truncate64_args *)); int linux_ftruncate64 __P((struct proc *, struct linux_ftruncate64_args *)); int linux_stat64 __P((struct proc *, struct linux_stat64_args *)); int linux_lstat64 __P((struct proc *, struct linux_lstat64_args *)); int linux_fstat64 __P((struct proc *, struct linux_fstat64_args *)); +int linux_lchown __P((struct proc *, struct linux_lchown_args *)); +int linux_getuid __P((struct proc *, struct linux_getuid_args *)); +int linux_getgid __P((struct proc *, struct linux_getgid_args *)); +int linux_getgroups __P((struct proc *, struct linux_getgroups_args *)); +int linux_setgroups __P((struct proc *, struct linux_setgroups_args *)); +int linux_fchown __P((struct proc *, struct linux_fchown_args *)); +int linux_chown __P((struct proc *, struct linux_chown_args *)); +int linux_setfsuid __P((struct proc *, struct linux_setfsuid_args *)); +int linux_setfsgid __P((struct proc *, struct linux_setfsgid_args *)); +int linux_pivot_root __P((struct proc *, struct linux_pivot_root_args *)); +int linux_mincore __P((struct proc *, struct linux_mincore_args *)); +int linux_madvise __P((struct proc *, struct linux_madvise_args *)); +int linux_getdents64 __P((struct proc *, struct linux_getdents64_args *)); +int linux_fcntl64 __P((struct proc *, struct linux_fcntl64_args *)); #ifdef COMPAT_43 @@ -709,5 +805,7 @@ int linux_fstat64 __P((struct proc *, struct linux_fstat64_args *)); #endif /* COMPAT_43 */ #undef PAD_ +#undef PADL_ +#undef PADR_ #endif /* !_LINUX_SYSPROTO_H_ */ diff --git a/sys/i386/linux/linux_syscall.h b/sys/i386/linux/linux_syscall.h index c4e3dad..19f4a92 100644 --- a/sys/i386/linux/linux_syscall.h +++ b/sys/i386/linux/linux_syscall.h @@ -3,10 +3,9 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.40 2001/04/01 06:37:40 alc Exp + * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.43 2001/09/08 18:48:40 marcel Exp */ -#define LINUX_SYS_linux_setup 0 #define LINUX_SYS_exit 1 #define LINUX_SYS_linux_fork 2 #define LINUX_SYS_read 3 @@ -22,26 +21,22 @@ #define LINUX_SYS_linux_time 13 #define LINUX_SYS_linux_mknod 14 #define LINUX_SYS_linux_chmod 15 -#define LINUX_SYS_linux_lchown 16 -#define LINUX_SYS_linux_break 17 +#define LINUX_SYS_linux_lchown16 16 #define LINUX_SYS_linux_stat 18 #define LINUX_SYS_linux_lseek 19 -#define LINUX_SYS_getpid 20 +#define LINUX_SYS_linux_getpid 20 #define LINUX_SYS_linux_mount 21 -#define LINUX_SYS_linux_umount 22 -#define LINUX_SYS_setuid 23 -#define LINUX_SYS_getuid 24 +#define LINUX_SYS_linux_oldumount 22 +#define LINUX_SYS_linux_setuid16 23 +#define LINUX_SYS_linux_getuid16 24 #define LINUX_SYS_linux_stime 25 #define LINUX_SYS_linux_ptrace 26 #define LINUX_SYS_linux_alarm 27 #define LINUX_SYS_linux_fstat 28 #define LINUX_SYS_linux_pause 29 #define LINUX_SYS_linux_utime 30 -#define LINUX_SYS_linux_stty 31 -#define LINUX_SYS_linux_gtty 32 #define LINUX_SYS_linux_access 33 #define LINUX_SYS_linux_nice 34 -#define LINUX_SYS_linux_ftime 35 #define LINUX_SYS_sync 36 #define LINUX_SYS_linux_kill 37 #define LINUX_SYS_linux_rename 38 @@ -50,21 +45,17 @@ #define LINUX_SYS_dup 41 #define LINUX_SYS_linux_pipe 42 #define LINUX_SYS_linux_times 43 -#define LINUX_SYS_linux_prof 44 #define LINUX_SYS_linux_brk 45 -#define LINUX_SYS_setgid 46 -#define LINUX_SYS_getgid 47 +#define LINUX_SYS_linux_setgid16 46 +#define LINUX_SYS_linux_getgid16 47 #define LINUX_SYS_linux_signal 48 -#define LINUX_SYS_geteuid 49 -#define LINUX_SYS_getegid 50 +#define LINUX_SYS_linux_geteuid16 49 +#define LINUX_SYS_linux_getegid16 50 #define LINUX_SYS_acct 51 -#define LINUX_SYS_linux_umount2 52 -#define LINUX_SYS_linux_lock 53 +#define LINUX_SYS_linux_umount 52 #define LINUX_SYS_linux_ioctl 54 #define LINUX_SYS_linux_fcntl 55 -#define LINUX_SYS_linux_mpx 56 #define LINUX_SYS_setpgid 57 -#define LINUX_SYS_linux_ulimit 58 #define LINUX_SYS_linux_olduname 59 #define LINUX_SYS_umask 60 #define LINUX_SYS_chroot 61 @@ -74,21 +65,21 @@ #define LINUX_SYS_getpgrp 65 #define LINUX_SYS_setsid 66 #define LINUX_SYS_linux_sigaction 67 -#define LINUX_SYS_linux_siggetmask 68 -#define LINUX_SYS_linux_sigsetmask 69 -#define LINUX_SYS_setreuid 70 -#define LINUX_SYS_setregid 71 +#define LINUX_SYS_linux_sgetmask 68 +#define LINUX_SYS_linux_ssetmask 69 +#define LINUX_SYS_linux_setreuid16 70 +#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_setrlimit 75 -#define LINUX_SYS_linux_getrlimit 76 +#define LINUX_SYS_linux_old_getrlimit 76 #define LINUX_SYS_getrusage 77 #define LINUX_SYS_gettimeofday 78 #define LINUX_SYS_settimeofday 79 -#define LINUX_SYS_linux_getgroups 80 -#define LINUX_SYS_linux_setgroups 81 -#define LINUX_SYS_linux_select 82 +#define LINUX_SYS_linux_getgroups16 80 +#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_readlink 85 @@ -104,12 +95,11 @@ #define LINUX_SYS_fchown 95 #define LINUX_SYS_getpriority 96 #define LINUX_SYS_setpriority 97 -#define LINUX_SYS_profil 98 #define LINUX_SYS_linux_statfs 99 #define LINUX_SYS_linux_fstatfs 100 #define LINUX_SYS_linux_ioperm 101 #define LINUX_SYS_linux_socketcall 102 -#define LINUX_SYS_linux_ksyslog 103 +#define LINUX_SYS_linux_syslog 103 #define LINUX_SYS_linux_setitimer 104 #define LINUX_SYS_linux_getitimer 105 #define LINUX_SYS_linux_newstat 106 @@ -118,7 +108,6 @@ #define LINUX_SYS_linux_uname 109 #define LINUX_SYS_linux_iopl 110 #define LINUX_SYS_linux_vhangup 111 -#define LINUX_SYS_linux_idle 112 #define LINUX_SYS_linux_vm86old 113 #define LINUX_SYS_linux_wait4 114 #define LINUX_SYS_linux_swapoff 115 @@ -143,12 +132,11 @@ #define LINUX_SYS_linux_bdflush 134 #define LINUX_SYS_linux_sysfs 135 #define LINUX_SYS_linux_personality 136 -#define LINUX_SYS_linux_afs_syscall 137 -#define LINUX_SYS_linux_setfsuid 138 -#define LINUX_SYS_linux_setfsgid 139 +#define LINUX_SYS_linux_setfsuid16 138 +#define LINUX_SYS_linux_setfsgid16 139 #define LINUX_SYS_linux_llseek 140 #define LINUX_SYS_linux_getdents 141 -#define LINUX_SYS_linux_newselect 142 +#define LINUX_SYS_linux_select 142 #define LINUX_SYS_flock 143 #define LINUX_SYS_linux_msync 144 #define LINUX_SYS_readv 145 @@ -170,14 +158,14 @@ #define LINUX_SYS_sched_rr_get_interval 161 #define LINUX_SYS_nanosleep 162 #define LINUX_SYS_linux_mremap 163 -#define LINUX_SYS_setresuid 164 -#define LINUX_SYS_linux_getresuid 165 +#define LINUX_SYS_linux_setresuid16 164 +#define LINUX_SYS_linux_getresuid16 165 #define LINUX_SYS_linux_vm86 166 #define LINUX_SYS_linux_query_module 167 #define LINUX_SYS_poll 168 #define LINUX_SYS_linux_nfsservctl 169 -#define LINUX_SYS_setresgid 170 -#define LINUX_SYS_linux_getresgid 171 +#define LINUX_SYS_linux_setresgid16 170 +#define LINUX_SYS_linux_getresgid16 171 #define LINUX_SYS_linux_prctl 172 #define LINUX_SYS_linux_rt_sigreturn 173 #define LINUX_SYS_linux_rt_sigaction 174 @@ -188,20 +176,42 @@ #define LINUX_SYS_linux_rt_sigsuspend 179 #define LINUX_SYS_linux_pread 180 #define LINUX_SYS_linux_pwrite 181 -#define LINUX_SYS_linux_chown 182 +#define LINUX_SYS_linux_chown16 182 #define LINUX_SYS_linux_getcwd 183 #define LINUX_SYS_linux_capget 184 #define LINUX_SYS_linux_capset 185 #define LINUX_SYS_linux_sigaltstack 186 #define LINUX_SYS_linux_sendfile 187 -#define LINUX_SYS_linux_getpmsg 188 -#define LINUX_SYS_linux_putpmsg 189 #define LINUX_SYS_linux_vfork 190 -#define LINUX_SYS_linux_ugetrlimit 191 +#define LINUX_SYS_linux_getrlimit 191 #define LINUX_SYS_linux_mmap2 192 #define LINUX_SYS_linux_truncate64 193 #define LINUX_SYS_linux_ftruncate64 194 #define LINUX_SYS_linux_stat64 195 #define LINUX_SYS_linux_lstat64 196 #define LINUX_SYS_linux_fstat64 197 -#define LINUX_SYS_MAXSYSCALL 198 +#define LINUX_SYS_linux_lchown 198 +#define LINUX_SYS_linux_getuid 199 +#define LINUX_SYS_linux_getgid 200 +#define LINUX_SYS_geteuid 201 +#define LINUX_SYS_getegid 202 +#define LINUX_SYS_setreuid 203 +#define LINUX_SYS_setregid 204 +#define LINUX_SYS_linux_getgroups 205 +#define LINUX_SYS_linux_setgroups 206 +#define LINUX_SYS_linux_fchown 207 +#define LINUX_SYS_setresuid 208 +#define LINUX_SYS_getresuid 209 +#define LINUX_SYS_setresgid 210 +#define LINUX_SYS_getresgid 211 +#define LINUX_SYS_linux_chown 212 +#define LINUX_SYS_setuid 213 +#define LINUX_SYS_setgid 214 +#define LINUX_SYS_linux_setfsuid 215 +#define LINUX_SYS_linux_setfsgid 216 +#define LINUX_SYS_linux_pivot_root 217 +#define LINUX_SYS_linux_mincore 218 +#define LINUX_SYS_linux_madvise 219 +#define LINUX_SYS_linux_getdents64 220 +#define LINUX_SYS_linux_fcntl64 221 +#define LINUX_SYS_MAXSYSCALL 222 diff --git a/sys/i386/linux/linux_sysent.c b/sys/i386/linux/linux_sysent.c index 0c96903..de2af45 100644 --- a/sys/i386/linux/linux_sysent.c +++ b/sys/i386/linux/linux_sysent.c @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.40 2001/04/01 06:37:40 alc Exp + * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.43 2001/09/08 18:48:40 marcel Exp */ #include "opt_compat.h" @@ -17,9 +17,9 @@ /* The casts are bogus but will do for now. */ struct sysent linux_sysent[] = { - { 0, (sy_call_t *)linux_setup }, /* 0 = linux_setup */ - { AS(sys_exit_args), (sy_call_t *)sys_exit }, /* 1 = exit */ - { 0, (sy_call_t *)linux_fork }, /* 2 = linux_fork */ + { 0, (sy_call_t *)nosys }, /* 0 = setup */ + { SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit }, /* 1 = exit */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_fork }, /* 2 = linux_fork */ { AS(read_args), (sy_call_t *)read }, /* 3 = read */ { AS(write_args), (sy_call_t *)write }, /* 4 = write */ { AS(linux_open_args), (sy_call_t *)linux_open }, /* 5 = linux_open */ @@ -33,26 +33,26 @@ struct sysent linux_sysent[] = { { AS(linux_time_args), (sy_call_t *)linux_time }, /* 13 = linux_time */ { AS(linux_mknod_args), (sy_call_t *)linux_mknod }, /* 14 = linux_mknod */ { AS(linux_chmod_args), (sy_call_t *)linux_chmod }, /* 15 = linux_chmod */ - { AS(linux_lchown_args), (sy_call_t *)linux_lchown }, /* 16 = linux_lchown */ - { AS(linux_break_args), (sy_call_t *)linux_break }, /* 17 = linux_break */ + { AS(linux_lchown16_args), (sy_call_t *)linux_lchown16 }, /* 16 = linux_lchown16 */ + { 0, (sy_call_t *)nosys }, /* 17 = break */ { AS(linux_stat_args), (sy_call_t *)linux_stat }, /* 18 = linux_stat */ { AS(linux_lseek_args), (sy_call_t *)linux_lseek }, /* 19 = linux_lseek */ - { 0, (sy_call_t *)getpid }, /* 20 = getpid */ + { 0, (sy_call_t *)linux_getpid }, /* 20 = linux_getpid */ { AS(linux_mount_args), (sy_call_t *)linux_mount }, /* 21 = linux_mount */ - { AS(linux_umount_args), (sy_call_t *)linux_umount }, /* 22 = linux_umount */ - { AS(setuid_args), (sy_call_t *)setuid }, /* 23 = setuid */ - { 0, (sy_call_t *)getuid }, /* 24 = getuid */ + { AS(linux_oldumount_args), (sy_call_t *)linux_oldumount }, /* 22 = linux_oldumount */ + { AS(linux_setuid16_args), (sy_call_t *)linux_setuid16 }, /* 23 = linux_setuid16 */ + { 0, (sy_call_t *)linux_getuid16 }, /* 24 = linux_getuid16 */ { 0, (sy_call_t *)linux_stime }, /* 25 = linux_stime */ { 0, (sy_call_t *)linux_ptrace }, /* 26 = linux_ptrace */ { AS(linux_alarm_args), (sy_call_t *)linux_alarm }, /* 27 = linux_alarm */ { AS(linux_fstat_args), (sy_call_t *)linux_fstat }, /* 28 = linux_fstat */ { 0, (sy_call_t *)linux_pause }, /* 29 = linux_pause */ { AS(linux_utime_args), (sy_call_t *)linux_utime }, /* 30 = linux_utime */ - { 0, (sy_call_t *)linux_stty }, /* 31 = linux_stty */ - { 0, (sy_call_t *)linux_gtty }, /* 32 = linux_gtty */ + { 0, (sy_call_t *)nosys }, /* 31 = stty */ + { 0, (sy_call_t *)nosys }, /* 32 = gtty */ { AS(linux_access_args), (sy_call_t *)linux_access }, /* 33 = linux_access */ { AS(linux_nice_args), (sy_call_t *)linux_nice }, /* 34 = linux_nice */ - { 0, (sy_call_t *)linux_ftime }, /* 35 = linux_ftime */ + { 0, (sy_call_t *)nosys }, /* 35 = ftime */ { 0, (sy_call_t *)sync }, /* 36 = sync */ { AS(linux_kill_args), (sy_call_t *)linux_kill }, /* 37 = linux_kill */ { AS(linux_rename_args), (sy_call_t *)linux_rename }, /* 38 = linux_rename */ @@ -61,21 +61,21 @@ struct sysent linux_sysent[] = { { AS(dup_args), (sy_call_t *)dup }, /* 41 = dup */ { AS(linux_pipe_args), (sy_call_t *)linux_pipe }, /* 42 = linux_pipe */ { AS(linux_times_args), (sy_call_t *)linux_times }, /* 43 = linux_times */ - { 0, (sy_call_t *)linux_prof }, /* 44 = linux_prof */ + { 0, (sy_call_t *)nosys }, /* 44 = prof */ { AS(linux_brk_args), (sy_call_t *)linux_brk }, /* 45 = linux_brk */ - { AS(setgid_args), (sy_call_t *)setgid }, /* 46 = setgid */ - { 0, (sy_call_t *)getgid }, /* 47 = getgid */ + { AS(linux_setgid16_args), (sy_call_t *)linux_setgid16 }, /* 46 = linux_setgid16 */ + { 0, (sy_call_t *)linux_getgid16 }, /* 47 = linux_getgid16 */ { AS(linux_signal_args), (sy_call_t *)linux_signal }, /* 48 = linux_signal */ - { 0, (sy_call_t *)geteuid }, /* 49 = geteuid */ - { 0, (sy_call_t *)getegid }, /* 50 = getegid */ + { 0, (sy_call_t *)linux_geteuid16 }, /* 49 = linux_geteuid16 */ + { 0, (sy_call_t *)linux_getegid16 }, /* 50 = linux_getegid16 */ { AS(acct_args), (sy_call_t *)acct }, /* 51 = acct */ - { AS(linux_umount2_args), (sy_call_t *)linux_umount2 }, /* 52 = linux_umount2 */ - { 0, (sy_call_t *)linux_lock }, /* 53 = linux_lock */ + { AS(linux_umount_args), (sy_call_t *)linux_umount }, /* 52 = linux_umount */ + { 0, (sy_call_t *)nosys }, /* 53 = lock */ { AS(linux_ioctl_args), (sy_call_t *)linux_ioctl }, /* 54 = linux_ioctl */ { AS(linux_fcntl_args), (sy_call_t *)linux_fcntl }, /* 55 = linux_fcntl */ - { 0, (sy_call_t *)linux_mpx }, /* 56 = linux_mpx */ + { 0, (sy_call_t *)nosys }, /* 56 = mpx */ { AS(setpgid_args), (sy_call_t *)setpgid }, /* 57 = setpgid */ - { 0, (sy_call_t *)linux_ulimit }, /* 58 = linux_ulimit */ + { 0, (sy_call_t *)nosys }, /* 58 = ulimit */ { 0, (sy_call_t *)linux_olduname }, /* 59 = linux_olduname */ { AS(umask_args), (sy_call_t *)umask }, /* 60 = umask */ { AS(chroot_args), (sy_call_t *)chroot }, /* 61 = chroot */ @@ -85,21 +85,21 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)getpgrp }, /* 65 = getpgrp */ { 0, (sy_call_t *)setsid }, /* 66 = setsid */ { AS(linux_sigaction_args), (sy_call_t *)linux_sigaction }, /* 67 = linux_sigaction */ - { 0, (sy_call_t *)linux_siggetmask }, /* 68 = linux_siggetmask */ - { AS(linux_sigsetmask_args), (sy_call_t *)linux_sigsetmask }, /* 69 = linux_sigsetmask */ - { AS(setreuid_args), (sy_call_t *)setreuid }, /* 70 = setreuid */ - { AS(setregid_args), (sy_call_t *)setregid }, /* 71 = setregid */ + { 0, (sy_call_t *)linux_sgetmask }, /* 68 = linux_sgetmask */ + { AS(linux_ssetmask_args), (sy_call_t *)linux_ssetmask }, /* 69 = linux_ssetmask */ + { AS(linux_setreuid16_args), (sy_call_t *)linux_setreuid16 }, /* 70 = linux_setreuid16 */ + { AS(linux_setregid16_args), (sy_call_t *)linux_setregid16 }, /* 71 = linux_setregid16 */ { AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend }, /* 72 = linux_sigsuspend */ { AS(linux_sigpending_args), (sy_call_t *)linux_sigpending }, /* 73 = linux_sigpending */ - { AS(sethostname_args), (sy_call_t *)osethostname }, /* 74 = osethostname */ + { SYF_MPSAFE | AS(sethostname_args), (sy_call_t *)osethostname }, /* 74 = osethostname */ { AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit }, /* 75 = linux_setrlimit */ - { AS(linux_getrlimit_args), (sy_call_t *)linux_getrlimit }, /* 76 = linux_getrlimit */ + { AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit }, /* 76 = linux_old_getrlimit */ { AS(getrusage_args), (sy_call_t *)getrusage }, /* 77 = getrusage */ { AS(gettimeofday_args), (sy_call_t *)gettimeofday }, /* 78 = gettimeofday */ - { AS(settimeofday_args), (sy_call_t *)settimeofday }, /* 79 = settimeofday */ - { AS(linux_getgroups_args), (sy_call_t *)linux_getgroups }, /* 80 = linux_getgroups */ - { AS(linux_setgroups_args), (sy_call_t *)linux_setgroups }, /* 81 = linux_setgroups */ - { AS(linux_select_args), (sy_call_t *)linux_select }, /* 82 = linux_select */ + { SYF_MPSAFE | AS(settimeofday_args), (sy_call_t *)settimeofday }, /* 79 = settimeofday */ + { AS(linux_getgroups16_args), (sy_call_t *)linux_getgroups16 }, /* 80 = linux_getgroups16 */ + { AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16 }, /* 81 = linux_setgroups16 */ + { AS(linux_old_select_args), (sy_call_t *)linux_old_select }, /* 82 = linux_old_select */ { AS(linux_symlink_args), (sy_call_t *)linux_symlink }, /* 83 = linux_symlink */ { AS(ostat_args), (sy_call_t *)ostat }, /* 84 = ostat */ { AS(linux_readlink_args), (sy_call_t *)linux_readlink }, /* 85 = linux_readlink */ @@ -115,12 +115,12 @@ struct sysent linux_sysent[] = { { AS(fchown_args), (sy_call_t *)fchown }, /* 95 = fchown */ { AS(getpriority_args), (sy_call_t *)getpriority }, /* 96 = getpriority */ { AS(setpriority_args), (sy_call_t *)setpriority }, /* 97 = setpriority */ - { AS(profil_args), (sy_call_t *)profil }, /* 98 = profil */ + { 0, (sy_call_t *)nosys }, /* 98 = profil */ { AS(linux_statfs_args), (sy_call_t *)linux_statfs }, /* 99 = linux_statfs */ { AS(linux_fstatfs_args), (sy_call_t *)linux_fstatfs }, /* 100 = linux_fstatfs */ { AS(linux_ioperm_args), (sy_call_t *)linux_ioperm }, /* 101 = linux_ioperm */ { AS(linux_socketcall_args), (sy_call_t *)linux_socketcall }, /* 102 = linux_socketcall */ - { AS(linux_ksyslog_args), (sy_call_t *)linux_ksyslog }, /* 103 = linux_ksyslog */ + { AS(linux_syslog_args), (sy_call_t *)linux_syslog }, /* 103 = linux_syslog */ { AS(linux_setitimer_args), (sy_call_t *)linux_setitimer }, /* 104 = linux_setitimer */ { AS(linux_getitimer_args), (sy_call_t *)linux_getitimer }, /* 105 = linux_getitimer */ { AS(linux_newstat_args), (sy_call_t *)linux_newstat }, /* 106 = linux_newstat */ @@ -129,7 +129,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_uname }, /* 109 = linux_uname */ { AS(linux_iopl_args), (sy_call_t *)linux_iopl }, /* 110 = linux_iopl */ { 0, (sy_call_t *)linux_vhangup }, /* 111 = linux_vhangup */ - { 0, (sy_call_t *)linux_idle }, /* 112 = linux_idle */ + { 0, (sy_call_t *)nosys }, /* 112 = idle */ { 0, (sy_call_t *)linux_vm86old }, /* 113 = linux_vm86old */ { AS(linux_wait4_args), (sy_call_t *)linux_wait4 }, /* 114 = linux_wait4 */ { 0, (sy_call_t *)linux_swapoff }, /* 115 = linux_swapoff */ @@ -138,7 +138,7 @@ struct sysent linux_sysent[] = { { AS(fsync_args), (sy_call_t *)fsync }, /* 118 = fsync */ { AS(linux_sigreturn_args), (sy_call_t *)linux_sigreturn }, /* 119 = linux_sigreturn */ { AS(linux_clone_args), (sy_call_t *)linux_clone }, /* 120 = linux_clone */ - { AS(setdomainname_args), (sy_call_t *)setdomainname }, /* 121 = setdomainname */ + { SYF_MPSAFE | AS(setdomainname_args), (sy_call_t *)setdomainname }, /* 121 = setdomainname */ { AS(linux_newuname_args), (sy_call_t *)linux_newuname }, /* 122 = linux_newuname */ { AS(linux_modify_ldt_args), (sy_call_t *)linux_modify_ldt }, /* 123 = linux_modify_ldt */ { 0, (sy_call_t *)linux_adjtimex }, /* 124 = linux_adjtimex */ @@ -154,19 +154,19 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_bdflush }, /* 134 = linux_bdflush */ { AS(linux_sysfs_args), (sy_call_t *)linux_sysfs }, /* 135 = linux_sysfs */ { AS(linux_personality_args), (sy_call_t *)linux_personality }, /* 136 = linux_personality */ - { 0, (sy_call_t *)linux_afs_syscall }, /* 137 = linux_afs_syscall */ - { AS(linux_setfsuid_args), (sy_call_t *)linux_setfsuid }, /* 138 = linux_setfsuid */ - { AS(linux_setfsgid_args), (sy_call_t *)linux_setfsgid }, /* 139 = linux_setfsgid */ + { 0, (sy_call_t *)nosys }, /* 137 = afs_syscall */ + { AS(linux_setfsuid16_args), (sy_call_t *)linux_setfsuid16 }, /* 138 = linux_setfsuid16 */ + { AS(linux_setfsgid16_args), (sy_call_t *)linux_setfsgid16 }, /* 139 = linux_setfsgid16 */ { AS(linux_llseek_args), (sy_call_t *)linux_llseek }, /* 140 = linux_llseek */ { AS(linux_getdents_args), (sy_call_t *)linux_getdents }, /* 141 = linux_getdents */ - { AS(linux_newselect_args), (sy_call_t *)linux_newselect }, /* 142 = linux_newselect */ + { AS(linux_select_args), (sy_call_t *)linux_select }, /* 142 = linux_select */ { AS(flock_args), (sy_call_t *)flock }, /* 143 = flock */ { AS(linux_msync_args), (sy_call_t *)linux_msync }, /* 144 = linux_msync */ { AS(readv_args), (sy_call_t *)readv }, /* 145 = readv */ { AS(writev_args), (sy_call_t *)writev }, /* 146 = writev */ { AS(linux_getsid_args), (sy_call_t *)linux_getsid }, /* 147 = linux_getsid */ { AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync }, /* 148 = linux_fdatasync */ - { 0, (sy_call_t *)linux_sysctl }, /* 149 = linux_sysctl */ + { AS(linux_sysctl_args), (sy_call_t *)linux_sysctl }, /* 149 = linux_sysctl */ { AS(mlock_args), (sy_call_t *)mlock }, /* 150 = mlock */ { AS(munlock_args), (sy_call_t *)munlock }, /* 151 = munlock */ { AS(mlockall_args), (sy_call_t *)mlockall }, /* 152 = mlockall */ @@ -179,16 +179,16 @@ struct sysent linux_sysent[] = { { AS(linux_sched_get_priority_max_args), (sy_call_t *)linux_sched_get_priority_max }, /* 159 = linux_sched_get_priority_max */ { AS(linux_sched_get_priority_min_args), (sy_call_t *)linux_sched_get_priority_min }, /* 160 = linux_sched_get_priority_min */ { AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval }, /* 161 = sched_rr_get_interval */ - { AS(nanosleep_args), (sy_call_t *)nanosleep }, /* 162 = nanosleep */ + { SYF_MPSAFE | AS(nanosleep_args), (sy_call_t *)nanosleep }, /* 162 = nanosleep */ { AS(linux_mremap_args), (sy_call_t *)linux_mremap }, /* 163 = linux_mremap */ - { AS(setresuid_args), (sy_call_t *)setresuid }, /* 164 = setresuid */ - { AS(linux_getresuid_args), (sy_call_t *)linux_getresuid }, /* 165 = linux_getresuid */ + { AS(linux_setresuid16_args), (sy_call_t *)linux_setresuid16 }, /* 164 = linux_setresuid16 */ + { AS(linux_getresuid16_args), (sy_call_t *)linux_getresuid16 }, /* 165 = linux_getresuid16 */ { 0, (sy_call_t *)linux_vm86 }, /* 166 = linux_vm86 */ { 0, (sy_call_t *)linux_query_module }, /* 167 = linux_query_module */ { AS(poll_args), (sy_call_t *)poll }, /* 168 = poll */ { 0, (sy_call_t *)linux_nfsservctl }, /* 169 = linux_nfsservctl */ - { AS(setresgid_args), (sy_call_t *)setresgid }, /* 170 = setresgid */ - { AS(linux_getresgid_args), (sy_call_t *)linux_getresgid }, /* 171 = linux_getresgid */ + { AS(linux_setresgid16_args), (sy_call_t *)linux_setresgid16 }, /* 170 = linux_setresgid16 */ + { AS(linux_getresgid16_args), (sy_call_t *)linux_getresgid16 }, /* 171 = linux_getresgid16 */ { 0, (sy_call_t *)linux_prctl }, /* 172 = linux_prctl */ { AS(linux_rt_sigreturn_args), (sy_call_t *)linux_rt_sigreturn }, /* 173 = linux_rt_sigreturn */ { AS(linux_rt_sigaction_args), (sy_call_t *)linux_rt_sigaction }, /* 174 = linux_rt_sigaction */ @@ -199,20 +199,44 @@ struct sysent linux_sysent[] = { { AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend }, /* 179 = linux_rt_sigsuspend */ { AS(linux_pread_args), (sy_call_t *)linux_pread }, /* 180 = linux_pread */ { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite }, /* 181 = linux_pwrite */ - { AS(linux_chown_args), (sy_call_t *)linux_chown }, /* 182 = linux_chown */ + { AS(linux_chown16_args), (sy_call_t *)linux_chown16 }, /* 182 = linux_chown16 */ { AS(linux_getcwd_args), (sy_call_t *)linux_getcwd }, /* 183 = linux_getcwd */ { 0, (sy_call_t *)linux_capget }, /* 184 = linux_capget */ { 0, (sy_call_t *)linux_capset }, /* 185 = linux_capset */ { AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack }, /* 186 = linux_sigaltstack */ { 0, (sy_call_t *)linux_sendfile }, /* 187 = linux_sendfile */ - { 0, (sy_call_t *)linux_getpmsg }, /* 188 = linux_getpmsg */ - { 0, (sy_call_t *)linux_putpmsg }, /* 189 = linux_putpmsg */ - { 0, (sy_call_t *)linux_vfork }, /* 190 = linux_vfork */ - { 0, (sy_call_t *)linux_ugetrlimit }, /* 191 = linux_ugetrlimit */ - { 0, (sy_call_t *)linux_mmap2 }, /* 192 = linux_mmap2 */ - { 0, (sy_call_t *)linux_truncate64 }, /* 193 = linux_truncate64 */ - { 0, (sy_call_t *)linux_ftruncate64 }, /* 194 = linux_ftruncate64 */ - { 0, (sy_call_t *)linux_stat64 }, /* 195 = linux_stat64 */ - { 0, (sy_call_t *)linux_lstat64 }, /* 196 = linux_lstat64 */ - { 0, (sy_call_t *)linux_fstat64 }, /* 197 = linux_fstat64 */ + { 0, (sy_call_t *)nosys }, /* 188 = getpmsg */ + { 0, (sy_call_t *)nosys }, /* 189 = putpmsg */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_vfork }, /* 190 = linux_vfork */ + { AS(linux_getrlimit_args), (sy_call_t *)linux_getrlimit }, /* 191 = linux_getrlimit */ + { AS(linux_mmap2_args), (sy_call_t *)linux_mmap2 }, /* 192 = linux_mmap2 */ + { AS(linux_truncate64_args), (sy_call_t *)linux_truncate64 }, /* 193 = linux_truncate64 */ + { AS(linux_ftruncate64_args), (sy_call_t *)linux_ftruncate64 }, /* 194 = linux_ftruncate64 */ + { AS(linux_stat64_args), (sy_call_t *)linux_stat64 }, /* 195 = linux_stat64 */ + { AS(linux_lstat64_args), (sy_call_t *)linux_lstat64 }, /* 196 = linux_lstat64 */ + { AS(linux_fstat64_args), (sy_call_t *)linux_fstat64 }, /* 197 = linux_fstat64 */ + { AS(linux_lchown_args), (sy_call_t *)linux_lchown }, /* 198 = linux_lchown */ + { 0, (sy_call_t *)linux_getuid }, /* 199 = linux_getuid */ + { 0, (sy_call_t *)linux_getgid }, /* 200 = linux_getgid */ + { 0, (sy_call_t *)geteuid }, /* 201 = geteuid */ + { 0, (sy_call_t *)getegid }, /* 202 = getegid */ + { AS(setreuid_args), (sy_call_t *)setreuid }, /* 203 = setreuid */ + { AS(setregid_args), (sy_call_t *)setregid }, /* 204 = setregid */ + { AS(linux_getgroups_args), (sy_call_t *)linux_getgroups }, /* 205 = linux_getgroups */ + { AS(linux_setgroups_args), (sy_call_t *)linux_setgroups }, /* 206 = linux_setgroups */ + { AS(linux_fchown_args), (sy_call_t *)linux_fchown }, /* 207 = linux_fchown */ + { AS(setresuid_args), (sy_call_t *)setresuid }, /* 208 = setresuid */ + { AS(getresuid_args), (sy_call_t *)getresuid }, /* 209 = getresuid */ + { AS(setresgid_args), (sy_call_t *)setresgid }, /* 210 = setresgid */ + { AS(getresgid_args), (sy_call_t *)getresgid }, /* 211 = getresgid */ + { AS(linux_chown_args), (sy_call_t *)linux_chown }, /* 212 = linux_chown */ + { AS(setuid_args), (sy_call_t *)setuid }, /* 213 = setuid */ + { AS(setgid_args), (sy_call_t *)setgid }, /* 214 = setgid */ + { AS(linux_setfsuid_args), (sy_call_t *)linux_setfsuid }, /* 215 = linux_setfsuid */ + { AS(linux_setfsgid_args), (sy_call_t *)linux_setfsgid }, /* 216 = linux_setfsgid */ + { AS(linux_pivot_root_args), (sy_call_t *)linux_pivot_root }, /* 217 = linux_pivot_root */ + { AS(linux_mincore_args), (sy_call_t *)linux_mincore }, /* 218 = linux_mincore */ + { 0, (sy_call_t *)linux_madvise }, /* 219 = linux_madvise */ + { AS(linux_getdents64_args), (sy_call_t *)linux_getdents64 }, /* 220 = linux_getdents64 */ + { AS(linux_fcntl64_args), (sy_call_t *)linux_fcntl64 }, /* 221 = linux_fcntl64 */ }; diff --git a/sys/i386/linux/linux_sysvec.c b/sys/i386/linux/linux_sysvec.c index 306b411..eaab863 100644 --- a/sys/i386/linux/linux_sysvec.c +++ b/sys/i386/linux/linux_sysvec.c @@ -212,7 +212,7 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) { register struct proc *p = curproc; register struct trapframe *regs; - struct linux_rt_sigframe *fp, frame; + struct l_rt_sigframe *fp, frame; int oonstack; PROC_LOCK_ASSERT(p, MA_OWNED); @@ -220,7 +220,7 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) oonstack = sigonstack(regs->tf_esp); #ifdef DEBUG - if (ldebug(sigreturn)) + if (ldebug(rt_sendsig)) printf(ARGS(rt_sendsig, "%p, %d, %p, %lu"), catcher, sig, (void*)mask, code); #endif @@ -229,10 +229,10 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) */ if ((p->p_flag & P_ALTSTACK) && !oonstack && SIGISMEMBER(p->p_sigacts->ps_sigonstack, sig)) { - fp = (struct linux_rt_sigframe *)(p->p_sigstk.ss_sp + - p->p_sigstk.ss_size - sizeof(struct linux_rt_sigframe)); + fp = (struct l_rt_sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size - sizeof(struct l_rt_sigframe)); } else - fp = (struct linux_rt_sigframe *)regs->tf_esp - 1; + fp = (struct l_rt_sigframe *)regs->tf_esp - 1; PROC_UNLOCK(p); /* @@ -241,7 +241,7 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) * if access is denied. */ if ((grow_stack (p, (int)fp) == FALSE) || - !useracc((caddr_t)fp, sizeof (struct linux_rt_sigframe), + !useracc((caddr_t)fp, sizeof (struct l_rt_sigframe), VM_PROT_WRITE)) { /* * Process has trashed its stack; give it an illegal @@ -253,7 +253,7 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) SIGDELSET(p->p_sigcatch, SIGILL); SIGDELSET(p->p_sigmask, SIGILL); #ifdef DEBUG - if (ldebug(sigreturn)) + if (ldebug(rt_sendsig)) printf(LMSG("rt_sendsig: bad stack %p, oonstack=%x"), fp, oonstack); #endif @@ -314,7 +314,7 @@ linux_rt_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) frame.sf_sc.uc_mcontext.sc_trapno = code; /* XXX ???? */ #ifdef DEBUG - if (ldebug(sigreturn)) + if (ldebug(rt_sendsig)) printf(LMSG("rt_sendsig flags: 0x%x, sp: %p, ss: 0x%x, mask: 0x%x"), frame.sf_sc.uc_stack.ss_flags, p->p_sigstk.ss_sp, p->p_sigstk.ss_size, frame.sf_sc.uc_mcontext.sc_mask); @@ -362,8 +362,8 @@ linux_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) { register struct proc *p = curproc; register struct trapframe *regs; - struct linux_sigframe *fp, frame; - linux_sigset_t lmask; + struct l_sigframe *fp, frame; + l_sigset_t lmask; int oonstack, i; if (SIGISMEMBER(p->p_sigacts->ps_siginfo, sig)) { @@ -376,7 +376,7 @@ linux_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) oonstack = sigonstack(regs->tf_esp); #ifdef DEBUG - if (ldebug(sigreturn)) + if (ldebug(sendsig)) printf(ARGS(sendsig, "%p, %d, %p, %lu"), catcher, sig, (void*)mask, code); #endif @@ -384,13 +384,12 @@ linux_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) /* * Allocate space for the signal handler context. */ - PROC_LOCK(p); if ((p->p_flag & P_ALTSTACK) && !oonstack && SIGISMEMBER(p->p_sigacts->ps_sigonstack, sig)) { - fp = (struct linux_sigframe *)(p->p_sigstk.ss_sp + - p->p_sigstk.ss_size - sizeof(struct linux_sigframe)); + fp = (struct l_sigframe *)(p->p_sigstk.ss_sp + + p->p_sigstk.ss_size - sizeof(struct l_sigframe)); } else - fp = (struct linux_sigframe *)regs->tf_esp - 1; + fp = (struct l_sigframe *)regs->tf_esp - 1; PROC_UNLOCK(p); /* @@ -399,7 +398,7 @@ linux_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) * if access is denied. */ if ((grow_stack (p, (int)fp) == FALSE) || - !useracc((caddr_t)fp, sizeof (struct linux_sigframe), + !useracc((caddr_t)fp, sizeof (struct l_sigframe), VM_PROT_WRITE)) { /* * Process has trashed its stack; give it an illegal @@ -411,7 +410,6 @@ linux_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) SIGDELSET(p->p_sigcatch, SIGILL); SIGDELSET(p->p_sigmask, SIGILL); psignal(p, SIGILL); - PROC_UNLOCK(p); return; } @@ -450,7 +448,7 @@ linux_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) frame.sf_sc.sc_err = regs->tf_err; frame.sf_sc.sc_trapno = code; /* XXX ???? */ - bzero(&frame.sf_fpstate, sizeof(struct linux_fpstate)); + bzero(&frame.sf_fpstate, sizeof(struct l_fpstate)); for (i = 0; i < (LINUX_NSIG_WORDS-1); i++) frame.sf_extramask[i] = lmask.__bits[i+1]; @@ -476,6 +474,7 @@ linux_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) regs->tf_es = _udatasel; regs->tf_fs = _udatasel; regs->tf_ss = _udatasel; + PROC_LOCK(p); } /* @@ -493,9 +492,9 @@ linux_sigreturn(p, args) struct proc *p; struct linux_sigreturn_args *args; { - struct linux_sigframe frame; + struct l_sigframe frame; register struct trapframe *regs; - linux_sigset_t lmask; + l_sigset_t lmask; int eflags, i; regs = p->p_frame; @@ -589,9 +588,9 @@ linux_rt_sigreturn(p, args) struct linux_rt_sigreturn_args *args; { struct sigaltstack_args sasargs; - struct linux_ucontext uc; - struct linux_sigcontext *context; - linux_stack_t *lss; + struct l_ucontext uc; + struct l_sigcontext *context; + l_stack_t *lss; stack_t *ss; register struct trapframe *regs; int eflags; |