diff options
Diffstat (limited to 'sys/compat/ultrix')
-rw-r--r-- | sys/compat/ultrix/files.ultrix | 11 | ||||
-rw-r--r-- | sys/compat/ultrix/syscalls.conf | 12 | ||||
-rw-r--r-- | sys/compat/ultrix/syscalls.master | 355 | ||||
-rw-r--r-- | sys/compat/ultrix/ultrix_misc.c | 598 | ||||
-rw-r--r-- | sys/compat/ultrix/ultrix_syscall.h | 156 | ||||
-rw-r--r-- | sys/compat/ultrix/ultrix_syscallargs.h | 257 | ||||
-rw-r--r-- | sys/compat/ultrix/ultrix_syscalls.c | 276 | ||||
-rw-r--r-- | sys/compat/ultrix/ultrix_sysent.c | 565 |
8 files changed, 2230 insertions, 0 deletions
diff --git a/sys/compat/ultrix/files.ultrix b/sys/compat/ultrix/files.ultrix new file mode 100644 index 00000000000..d54c76ef9e3 --- /dev/null +++ b/sys/compat/ultrix/files.ultrix @@ -0,0 +1,11 @@ +# $NetBSD: files.ultrix,v 1.1 1995/09/20 00:15:19 thorpej Exp $ +# +# Config file description for machine-independent Ultrix compat code. +# Included by ports that need it. + +# ports should define any machine-specific files they need in their +# own file lists. + +file compat/ultrix/ultrix_misc.c compat_ultrix +file compat/ultrix/ultrix_syscalls.c compat_ultrix +file compat/ultrix/ultrix_sysent.c compat_ultrix diff --git a/sys/compat/ultrix/syscalls.conf b/sys/compat/ultrix/syscalls.conf new file mode 100644 index 00000000000..6b5702359e9 --- /dev/null +++ b/sys/compat/ultrix/syscalls.conf @@ -0,0 +1,12 @@ +# $NetBSD: syscalls.conf,v 1.1 1994/11/23 17:49:06 dean Exp $ + +sysnames="ultrix_syscalls.c" +sysnumhdr="ultrix_syscall.h" +syssw="ultrix_sysent.c" +sysarghdr="ultrix_syscallargs.h" +compatopts="compat_43 compat_09 compat_10" +libcompatopts="" + +switchname="ultrix_sysent" +namesname="ultrix_syscallnames" +constprefix="ULTRIX_SYS_" diff --git a/sys/compat/ultrix/syscalls.master b/sys/compat/ultrix/syscalls.master new file mode 100644 index 00000000000..6b203215e58 --- /dev/null +++ b/sys/compat/ultrix/syscalls.master @@ -0,0 +1,355 @@ + $NetBSD: syscalls.master,v 1.11 1995/10/07 06:28:00 mycroft Exp $ + +; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 + +; NetBSD COMPAT_ULTRIX system call name/number "master" file. +; (See syscalls.conf to see what it is processed into.) +; +; Fields: number type [type-dependent ...] +; number system call number, must be in order +; type one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of +; the compatibility options defined in syscalls.conf. +; +; types: +; STD always included +; OBSOL obsolete, not included in system +; UNIMPL unimplemented, not included in system +; NODEF included, but don't define the syscall number +; NOARGS included, but don't define the syscall args structure +; +; The compat options are defined in the syscalls.conf file, and the +; compat option name is prefixed to the syscall name. Other than +; that, they're like NODEF (for 'compat' options), or STD (for +; 'libcompat' options). +; +; The type-dependent arguments are as follows: +; For STD, NODEF, NOARGS, and compat syscalls: +; { pseudo-proto } [alias] +; For other syscalls: +; [comment] +; +; #ifdef's, etc. may be included, and are copied to the output files. +; #include's are copied to the syscall switch definition file only. + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/signal.h> +#include <sys/mount.h> +#include <sys/syscallargs.h> +#include <compat/ultrix/ultrix_syscallargs.h> + +0 NOARGS { int sys_nosys(void); } syscall +1 NOARGS { int sys_exit(int rval); } +2 NOARGS { int sys_fork(void); } +3 NOARGS { int sys_read(int fd, char *buf, u_int nbyte); } +4 NOARGS { int sys_write(int fd, char *buf, u_int nbyte); } +5 STD { int ultrix_sys_open(char *path, int flags, \ + int mode); } +6 NOARGS { int sys_close(int fd); } +7 UNIMPL old_wait +8 NOARGS { int compat_43_sys_creat(char *path, int mode); } +9 NOARGS { int sys_link(char *path, char *link); } +10 NOARGS { int sys_unlink(char *path); } +11 STD { int ultrix_sys_execv(char *path, char **argp); } +12 NOARGS { int sys_chdir(char *path); } +13 OBSOL time +14 STD { int ultrix_sys_mknod(char *path, int mode, int dev); } +15 NOARGS { int sys_chmod(char *path, int mode); } +16 NOARGS { int sys_chown(char *path, int uid, int gid); } +17 NOARGS { int sys_obreak(char *nsize); } break +18 OBSOL stat +19 NOARGS { long compat_43_sys_lseek(int fd, long offset, \ + int whence); } +20 NOARGS { pid_t sys_getpid(void); } +21 OBSOL mount +22 OBSOL sysV_unmount +23 NOARGS { int sys_setuid(uid_t uid); } +24 NOARGS { uid_t sys_getuid(void); } +25 OBSOL v7 stime +26 OBSOL v7 ptrace +27 OBSOL v7 alarm +28 OBSOL v7 fstat +29 OBSOL v7 pause +30 OBSOL v7 utime +31 OBSOL v7 stty +32 OBSOL v7 gtty +33 NOARGS { int sys_access(char *path, int flags); } +34 OBSOL v7 nice +35 OBSOL v7 ftime +36 NOARGS { int sys_sync(void); } +37 NOARGS { int sys_kill(int pid, int signum); } +38 NOARGS { int compat_43_sys_stat(char *path, \ + struct ostat *ub); } ostat +39 OBSOL v7 setpgrp +40 NOARGS { int compat_43_sys_lstat(char *path, \ + struct ostat *ub); } olstat +41 NOARGS { int sys_dup(u_int fd); } +42 NOARGS { int sys_pipe(void); } +43 OBSOL v7 times +44 NOARGS { int sys_profil(caddr_t samples, u_int size, \ + u_int offset, u_int scale); } +45 UNIMPL +46 OBSOL v7 setgid +47 NOARGS { gid_t sys_getgid(void); } +48 UNIMPL ssig +49 UNIMPL reserved for USG +50 UNIMPL reserved for USG +51 NOARGS { int sys_acct(char *path); } +52 UNIMPL +53 UNIMPL syslock +54 NOARGS { int sys_ioctl(int fd, u_long com, caddr_t data); } +55 NOARGS { int sys_reboot(int opt); } +56 UNIMPL v7 mpxchan +57 NOARGS { int sys_symlink(char *path, char *link); } +58 NOARGS { int sys_readlink(char *path, char *buf, int count); } +59 NOARGS { int sys_execve(char *path, char **argp, \ + char **envp); } +60 NOARGS { int sys_umask(int newmask); } +61 NOARGS { int sys_chroot(char *path); } +62 NOARGS { int compat_43_sys_fstat(int fd, struct ostat *sb); } +63 UNIMPL +64 NOARGS { int compat_43_sys_getpagesize(void); } +65 UNIMPL mremap +66 NOARGS { int sys_vfork(void); } +67 OBSOL vread +68 OBSOL vwrite +69 NOARGS { int sys_sbrk(int incr); } +70 NOARGS { int sys_sstk(int incr); } +71 STD { int ultrix_sys_mmap(caddr_t addr, size_t len, \ + int prot, u_int flags, int fd, long pos); } +72 NOARGS { int sys_ovadvise(int anom); } vadvise +73 NOARGS { int sys_munmap(caddr_t addr, size_t len); } +74 NOARGS { int sys_mprotect(caddr_t addr, size_t len, \ + int prot); } +75 NOARGS { int sys_madvise(caddr_t addr, size_t len, \ + int behav); } +76 STD { int ultrix_sys_vhangup(void); } +77 UNIMPL old vlimit +78 NOARGS { int sys_mincore(caddr_t addr, int len, char *vec); } +79 NOARGS { int sys_getgroups(u_int gidsetsize, gid_t *gidset); } +80 NOARGS { int sys_setgroups(u_int gidsetsize, gid_t *gidset); } +81 NOARGS { int sys_getpgrp(void); } +82 STD { int ultrix_sys_setpgrp(int pid, int pgid); } +83 NOARGS { int sys_setitimer(u_int which, \ + struct itimerval *itv, struct itimerval *oitv); } +84 STD { int ultrix_sys_wait3(int *status, int options, \ + struct rusage *rusage);} +85 NOARGS { int sys_swapon(char *name); } +86 NOARGS { int sys_getitimer(u_int which, \ + struct itimerval *itv); } +87 NOARGS { int compat_43_sys_gethostname(char *hostname, \ + u_int len); } +88 NOARGS { int compat_43_sys_sethostname(char *hostname, \ + u_int len); } +89 NOARGS { int compat_43_sys_getdtablesize(void); } +90 NOARGS { int sys_dup2(u_int from, u_int to); } +91 UNIMPL getdopt +92 NOARGS { int sys_fcntl(int fd, int cmd, void *arg); } +93 NOARGS { int sys_select(u_int nd, fd_set *in, fd_set *ou, \ + fd_set *ex, struct timeval *tv); } +94 UNIMPL setdopt +95 NOARGS { int sys_fsync(int fd); } +96 NOARGS { int sys_setpriority(int which, int who, int prio); } +97 NOARGS { int sys_socket(int domain, int type, int protocol); } +98 NOARGS { int sys_connect(int s, caddr_t name, int namelen); } +99 NOARGS { int compat_43_sys_accept(int s, caddr_t name, \ + int *anamelen); } +100 NOARGS { int sys_getpriority(int which, int who); } +101 NOARGS { int compat_43_sys_send(int s, caddr_t buf, int len, \ + int flags); } +102 NOARGS { int compat_43_sys_recv(int s, caddr_t buf, int len, \ + int flags); } +103 NOARGS { int sys_sigreturn(struct sigcontext *sigcntxp); } +104 NOARGS { int sys_bind(int s, caddr_t name, int namelen); } +105 STD { int ultrix_sys_setsockopt(int s, int level, \ + int name, caddr_t val, int valsize); } +106 NOARGS { int sys_listen(int s, int backlog); } +107 UNIMPL vtimes +108 NOARGS { int compat_43_sys_sigvec(int signum, \ + struct sigvec *nsv, struct sigvec *osv); } +109 NOARGS { int compat_43_sys_sigblock(int mask); } +110 NOARGS { int compat_43_sys_sigsetmask(int mask); } +111 NOARGS { int sys_sigsuspend(int mask); } +112 NOARGS { int compat_43_sys_sigstack(struct sigstack *nss, \ + struct sigstack *oss); } +113 NOARGS { int compat_43_sys_recvmsg(int s, \ + struct omsghdr *msg, int flags); } +114 NOARGS { int compat_43_sys_sendmsg(int s, caddr_t msg, \ + int flags); } +115 OBSOL vtrace +116 NOARGS { int sys_gettimeofday(struct timeval *tp, \ + struct timezone *tzp); } +117 NOARGS { int sys_getrusage(int who, struct rusage *rusage); } +118 NOARGS { int sys_getsockopt(int s, int level, int name, \ + caddr_t val, int *avalsize); } +119 UNIMPL resuba +120 NOARGS { int sys_readv(int fd, struct iovec *iovp, \ + u_int iovcnt); } +121 NOARGS { int sys_writev(int fd, struct iovec *iovp, \ + u_int iovcnt); } +122 NOARGS { int sys_settimeofday(struct timeval *tv, \ + struct timezone *tzp); } +123 NOARGS { int sys_fchown(int fd, int uid, int gid); } +124 NOARGS { int sys_fchmod(int fd, int mode); } +125 NOARGS { int compat_43_sys_recvfrom(int s, caddr_t buf, \ + size_t len, int flags, caddr_t from, \ + int *fromlenaddr); } +126 NOARGS { int compat_43_sys_setreuid(int ruid, int euid); } +127 NOARGS { int compat_43_sys_setregid(int rgid, int egid); } +128 NOARGS { int sys_rename(char *from, char *to); } +129 NOARGS { int compat_43_sys_truncate(char *path, long length); } +130 NOARGS { int compat_43_sys_ftruncate(int fd, long length); } +131 NOARGS { int sys_flock(int fd, int how); } +132 UNIMPL +133 NOARGS { int sys_sendto(int s, caddr_t buf, size_t len, \ + int flags, caddr_t to, int tolen); } +134 NOARGS { int sys_shutdown(int s, int how); } +135 NOARGS { int sys_socketpair(int domain, int type, \ + int protocol, int *rsv); } +136 NOARGS { int sys_mkdir(char *path, int mode); } +137 NOARGS { int sys_rmdir(char *path); } +138 NOARGS { int sys_utimes(char *path, struct timeval *tptr); } +139 STD { int ultrix_sys_sigcleanup(struct sigcontext *sigcntxp); } +140 NOARGS { int sys_adjtime(struct timeval *delta, \ + struct timeval *olddelta); } +141 NOARGS { int compat_43_sys_getpeername(int fdes, caddr_t asa, \ + int *alen); } +142 NOARGS { int compat_43_sys_gethostid(void); } +143 UNIMPL old sethostid +144 NOARGS { int compat_43_sys_getrlimit(u_int which, \ + struct orlimit *rlp); } +145 NOARGS { int compat_43_sys_setrlimit(u_int which, \ + struct orlimit *rlp); } +146 NOARGS { int compat_43_sys_killpg(int pgid, int signum); } +147 UNIMPL +148 UNIMPL setquota +149 UNIMPL quota /* needs to be nullop to boot on Ultrix root partition*/ +150 NOARGS { int compat_43_sys_getsockname(int fdes, caddr_t asa, \ + int *alen); } +151 UNIMPL sysmips /* 4 args */ +152 UNIMPL cacheflush /* 4 args */ +153 UNIMPL cachectl /* 3 args */ +154 UNIMPL +155 UNIMPL atomic_op +156 UNIMPL +157 UNIMPL +#ifdef NFSSERVER +158 STD { int ultrix_sys_nfssvc(int fd); } +#else +158 UNIMPL +#endif +159 NOARGS { int compat_43_sys_getdirentries(int fd, char *buf, \ + u_int count, long *basep); } +160 STD { int ultrix_sys_statfs(char *path, \ + struct ultrix_statfs *buf); } +161 STD { int ultrix_sys_fstatfs(int fd, \ + struct ultrix_statfs *buf); } +162 UNIMPL umount +#ifdef NFSCLIENT +163 NOARGS { int async_daemon(void); } +164 NOARGS { int sys_getfh(char *fname, fhandle_t *fhp); } +#else +163 UNIMPL async_daemon +164 UNIMPL getfh +#endif +165 NOARGS { int compat_09_sys_getdomainname(char *domainname, \ + int len); } +166 NOARGS { int compat_09_sys_setdomainname(char *domainname, \ + int len); } +167 UNIMPL +168 STD { int ultrix_sys_quotactl(int cmd, char *special, \ + int uid, caddr_t addr); } +169 STD { int ultrix_sys_exportfs(char *path, char *ex); } +170 UNIMPL mount +171 UNIMPL 4 hdwconf +172 UNIMPL msgctl +173 UNIMPL msgget +174 UNIMPL msgrcv +175 UNIMPL msgsnd +176 UNIMPL semctl +177 UNIMPL semget +178 UNIMPL semop +179 STD { int ultrix_sys_uname(struct ultrix_utsname *name); } +180 UNIMPL shmsys +181 UNIMPL 0 plock +182 UNIMPL 0 lockf +183 STD { int ultrix_sys_ustat(int dev, \ + struct ultrix_ustat *buf); } +184 UNIMPL getmnt +185 UNIMPL notdef +186 UNIMPL notdef +187 STD { int ultrix_sys_sigpending(int *mask); } +188 NOARGS { int sys_setsid(void); } +189 STD { int ultrix_sys_waitpid(int pid, int *status, \ + int options); } +190 UNIMPL +191 UNIMPL +192 UNIMPL +193 UNIMPL +194 UNIMPL +195 UNIMPL +196 UNIMPL +197 UNIMPL +198 UNIMPL +199 UNIMPL +200 UNIMPL +201 UNIMPL +202 UNIMPL +203 UNIMPL +204 UNIMPL +205 UNIMPL +206 UNIMPL +207 UNIMPL +208 UNIMPL +209 UNIMPL +210 UNIMPL +211 UNIMPL +212 UNIMPL +213 UNIMPL +214 UNIMPL +215 UNIMPL +216 UNIMPL +217 UNIMPL +218 UNIMPL +219 UNIMPL +220 UNIMPL +221 UNIMPL +222 UNIMPL +223 UNIMPL +224 UNIMPL +225 UNIMPL +226 UNIMPL +227 UNIMPL +228 UNIMPL +229 UNIMPL +230 UNIMPL +231 UNIMPL +232 UNIMPL +233 UNIMPL 1 utc_gettime +234 UNIMPL 2 utc_adjtime +235 UNIMPL +236 UNIMPL +237 UNIMPL +238 UNIMPL +239 UNIMPL +240 UNIMPL +241 UNIMPL +242 UNIMPL +243 UNIMPL +244 UNIMPL +245 UNIMPL +246 UNIMPL +247 UNIMPL +248 UNIMPL +249 UNIMPL +250 UNIMPL +251 UNIMPL +252 UNIMPL audctl /*Make no-op for installation on Ultrix rootpartition?*/ +253 UNIMPL audgen /*Make no-op for installation on Ultrix rootpartition?*/ +254 UNIMPL startcpu +255 UNIMPL stopcpu +256 STD { int ultrix_sys_getsysinfo(unsigned op, char *buffer, \ + unsigned nbytes, int *start, char *arg); } +257 STD { int ultrix_sys_setsysinfo(unsigned op, char *buffer, \ + unsigned nbytes, unsigned arg, unsigned flag); } + diff --git a/sys/compat/ultrix/ultrix_misc.c b/sys/compat/ultrix/ultrix_misc.c new file mode 100644 index 00000000000..620d3fef5d1 --- /dev/null +++ b/sys/compat/ultrix/ultrix_misc.c @@ -0,0 +1,598 @@ +/* $NetBSD: ultrix_misc.c,v 1.16 1995/10/07 06:28:02 mycroft Exp $ */ + +/* + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Lawrence Berkeley Laboratory. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * + * @(#)sun_misc.c 8.1 (Berkeley) 6/18/93 + * + * from: Header: sun_misc.c,v 1.16 93/04/07 02:46:27 torek Exp + */ + +/* + * SunOS compatibility module. + * + * SunOS system calls that are implemented differently in BSD are + * handled here. + */ + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/namei.h> +#include <sys/dir.h> +#include <sys/proc.h> +#include <sys/file.h> +#include <sys/stat.h> +#include <sys/filedesc.h> +#include <sys/ioctl.h> +#include <sys/kernel.h> +#include <sys/exec.h> +#include <sys/malloc.h> +#include <sys/mbuf.h> +#include <sys/mman.h> +#include <sys/mount.h> +#include <sys/resource.h> +#include <sys/resourcevar.h> +#include <sys/signal.h> +#include <sys/signalvar.h> +#include <sys/socket.h> +#include <sys/vnode.h> +#include <sys/uio.h> +#include <sys/wait.h> +#include <sys/utsname.h> +#include <sys/unistd.h> +#include <sys/syscallargs.h> + +#include <compat/ultrix/ultrix_syscall.h> +#include <compat/ultrix/ultrix_syscallargs.h> + +#include <netinet/in.h> + +#include <miscfs/specfs/specdev.h> + +#include <nfs/rpcv2.h> +#include <nfs/nfsv2.h> +#include <nfs/nfs.h> + +#include <vm/vm.h> + +extern struct sysent ultrix_sysent[]; +extern char *ultrix_syscallnames[]; +extern void cpu_exec_ecoff_setregs __P((struct proc *, struct exec_package *, + u_long, register_t *)); +struct emul emul_ultrix = { + "ultrix", + NULL, + sendsig, + ULTRIX_SYS_syscall, + ULTRIX_SYS_MAXSYSCALL, + ultrix_sysent, + ultrix_syscallnames, + 0, + copyargs, + cpu_exec_ecoff_setregs, + 0, + 0, +}; + +#define GSI_PROG_ENV 1 + +ultrix_sys_getsysinfo(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_getsysinfo_args *uap = v; + static short progenv = 0; + + switch (SCARG(uap, op)) { + /* operations implemented: */ + case GSI_PROG_ENV: + if (SCARG(uap, nbytes) < sizeof(short)) + return EINVAL; + *retval = 1; + return (copyout(&progenv, SCARG(uap, buffer), sizeof(short))); + default: + *retval = 0; /* info unavail */ + return 0; + } +} + +ultrix_sys_setsysinfo(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_setsysinfo_args *uap = v; + *retval = 0; + return 0; +} + +ultrix_sys_waitpid(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_waitpid_args *uap = v; + struct sys_wait4_args ua; + + SCARG(&ua, pid) = SCARG(uap, pid); + SCARG(&ua, status) = SCARG(uap, status); + SCARG(&ua, options) = SCARG(uap, options); + SCARG(&ua, rusage) = 0; + + return (sys_wait4(p, &ua, retval)); +} + +ultrix_sys_wait3(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_wait3_args *uap = v; + struct sys_wait4_args ua; + + SCARG(&ua, pid) = -1; + SCARG(&ua, status) = SCARG(uap, status); + SCARG(&ua, options) = SCARG(uap, options); + SCARG(&ua, rusage) = SCARG(uap, rusage); + + return (sys_wait4(p, &ua, retval)); +} + +ultrix_sys_execv(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_execv_args *uap = v; + struct sys_execve_args ouap; + + SCARG(&ouap, path) = SCARG(uap, path); + SCARG(&ouap, argp) = SCARG(uap, argp); + SCARG(&ouap, envp) = NULL; + + return (sys_execve(p, &ouap, retval)); +} + +#if defined(NFSCLIENT) +async_daemon(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct sys_nfssvc_args ouap; + + SCARG(&ouap, flag) = NFSSVC_BIOD; + SCARG(&ouap, argp) = NULL; + + return (sys_nfssvc(p, &ouap, retval)); +} +#endif /* NFSCLIENT */ + +ultrix_sys_sigpending(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_sigpending_args *uap = v; + int mask = p->p_siglist & p->p_sigmask; + + return (copyout((caddr_t)&mask, (caddr_t)SCARG(uap, mask), sizeof(int))); +} + +#if 0 +/* XXX: Temporary until sys/dir.h, include/dirent.h and sys/dirent.h are fixed */ +struct dirent { + u_long d_fileno; /* file number of entry */ + u_short d_reclen; /* length of this record */ + u_short d_namlen; /* length of string in d_name */ + char d_name[255 + 1]; /* name must be no longer than this */ +}; +#endif + +#define SUN__MAP_NEW 0x80000000 /* if not, old mmap & cannot handle */ + +ultrix_sys_mmap(p, v, retval) + register struct proc *p; + void *v; + register_t *retval; +{ + register struct ultrix_sys_mmap_args *uap = v; + struct sys_mmap_args ouap; + register struct filedesc *fdp; + register struct file *fp; + register struct vnode *vp; + + /* + * Verify the arguments. + */ + if (SCARG(uap, prot) & ~(PROT_READ|PROT_WRITE|PROT_EXEC)) + return (EINVAL); /* XXX still needed? */ + + if ((SCARG(uap, flags) & SUN__MAP_NEW) == 0) + return (EINVAL); + + SCARG(&ouap, flags) = SCARG(uap, flags) & ~SUN__MAP_NEW; + SCARG(&ouap, addr) = SCARG(uap, addr); + + if ((SCARG(&ouap, flags) & MAP_FIXED) == 0 && + SCARG(&ouap, addr) != 0 && + SCARG(&ouap, addr) < (caddr_t)round_page(p->p_vmspace->vm_daddr+MAXDSIZ)) + SCARG(&ouap, addr) = (caddr_t)round_page(p->p_vmspace->vm_daddr+MAXDSIZ); + + SCARG(&ouap, len) = SCARG(uap, len); + SCARG(&ouap, prot) = SCARG(uap, prot); + SCARG(&ouap, fd) = SCARG(uap, fd); + SCARG(&ouap, pos) = SCARG(uap, pos); + + /* + * Special case: if fd refers to /dev/zero, map as MAP_ANON. (XXX) + */ + fdp = p->p_fd; + if ((unsigned)SCARG(&ouap, fd) < fdp->fd_nfiles && /*XXX*/ + (fp = fdp->fd_ofiles[SCARG(&ouap, fd)]) != NULL && /*XXX*/ + fp->f_type == DTYPE_VNODE && /*XXX*/ + (vp = (struct vnode *)fp->f_data)->v_type == VCHR && /*XXX*/ + iszerodev(vp->v_rdev)) { /*XXX*/ + SCARG(&ouap, flags) |= MAP_ANON; + SCARG(&ouap, fd) = -1; + } + + return (sys_mmap(p, &ouap, retval)); +} + +ultrix_sys_setsockopt(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + register struct ultrix_sys_setsockopt_args *uap = v; + struct file *fp; + struct mbuf *m = NULL; + int error; + + if (error = getsock(p->p_fd, SCARG(uap, s), &fp)) + return (error); +#define SO_DONTLINGER (~SO_LINGER) + if (SCARG(uap, name) == SO_DONTLINGER) { + m = m_get(M_WAIT, MT_SOOPTS); + if (m == NULL) + return (ENOBUFS); + mtod(m, struct linger *)->l_onoff = 0; + m->m_len = sizeof(struct linger); + return (sosetopt((struct socket *)fp->f_data, SCARG(uap, level), + SO_LINGER, m)); + } + if (SCARG(uap, valsize) > MLEN) + return (EINVAL); + if (SCARG(uap, val)) { + m = m_get(M_WAIT, MT_SOOPTS); + if (m == NULL) + return (ENOBUFS); + if (error = copyin(SCARG(uap, val), mtod(m, caddr_t), + (u_int)SCARG(uap, valsize))) { + (void) m_free(m); + return (error); + } + m->m_len = SCARG(uap, valsize); + } + return (sosetopt((struct socket *)fp->f_data, SCARG(uap, level), + SCARG(uap, name), m)); +} + +struct ultrix_utsname { + char sysname[9]; + char nodename[9]; + char nodeext[65-9]; + char release[9]; + char version[9]; + char machine[9]; +}; + +ultrix_sys_uname(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_uname_args *uap = v; + struct ultrix_utsname sut; + extern char ostype[], machine[], osrelease[]; + + bzero(&sut, sizeof(sut)); + + bcopy(ostype, sut.sysname, sizeof(sut.sysname) - 1); + bcopy(hostname, sut.nodename, sizeof(sut.nodename)); + sut.nodename[sizeof(sut.nodename)-1] = '\0'; + bcopy(osrelease, sut.release, sizeof(sut.release) - 1); + bcopy("1", sut.version, sizeof(sut.version) - 1); + bcopy(machine, sut.machine, sizeof(sut.machine) - 1); + + return copyout((caddr_t)&sut, (caddr_t)SCARG(uap, name), + sizeof(struct ultrix_utsname)); +} + +int +ultrix_sys_setpgrp(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_setpgrp_args *uap = v; + + /* + * difference to our setpgid call is to include backwards + * compatibility to pre-setsid() binaries. Do setsid() + * instead of setpgid() in those cases where the process + * tries to create a new session the old way. + */ + if (!SCARG(uap, pgid) && + (!SCARG(uap, pid) || SCARG(uap, pid) == p->p_pid)) + return sys_setsid(p, uap, retval); + else + return sys_setpgid(p, uap, retval); +} + +ultrix_sys_open(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_open_args *uap = v; + int l, r; + int noctty; + int ret; + + /* convert mode into NetBSD mode */ + l = SCARG(uap, mode); + noctty = l & 0x8000; + r = (l & (0x0001 | 0x0002 | 0x0008 | 0x0040 | 0x0200 | 0x0400 | 0x0800)); + r |= ((l & (0x0004 | 0x1000 | 0x4000)) ? O_NONBLOCK : 0); + r |= ((l & 0x0080) ? O_SHLOCK : 0); + r |= ((l & 0x0100) ? O_EXLOCK : 0); + r |= ((l & 0x2000) ? O_FSYNC : 0); + + SCARG(uap, flags) = r; + ret = sys_open(p, (struct sys_open_args *)uap, retval); + + if (!ret && !noctty && SESS_LEADER(p) && !(p->p_flag & P_CONTROLT)) { + struct filedesc *fdp = p->p_fd; + struct file *fp = fdp->fd_ofiles[*retval]; + + /* ignore any error, just give it a try */ + if (fp->f_type == DTYPE_VNODE) + (fp->f_ops->fo_ioctl)(fp, TIOCSCTTY, (caddr_t)0, p); + } + return ret; +} + +#if defined (NFSSERVER) +ultrix_sys_nfssvc(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_nfssvc_args *uap = v; + struct emul *e = p->p_emul; + struct sys_nfssvc_args outuap; + struct sockaddr sa; + int error; + +#if 0 + bzero(&outuap, sizeof outuap); + SCARG(&outuap, fd) = SCARG(uap, fd); + SCARG(&outuap, mskval) = STACKGAPBASE; + SCARG(&outuap, msklen) = sizeof sa; + SCARG(&outuap, mtchval) = outuap.mskval + sizeof sa; + SCARG(&outuap, mtchlen) = sizeof sa; + + bzero(&sa, sizeof sa); + if (error = copyout(&sa, SCARG(&outuap, mskval), SCARG(&outuap, msklen))) + return (error); + if (error = copyout(&sa, SCARG(&outuap, mtchval), SCARG(&outuap, mtchlen))) + return (error); + + return nfssvc(p, &outuap, retval); +#else + return (ENOSYS); +#endif +} +#endif /* NFSSERVER */ + +struct ultrix_ustat { + daddr_t f_tfree; /* total free */ + ino_t f_tinode; /* total inodes free */ + char f_fname[6]; /* filsys name */ + char f_fpack[6]; /* filsys pack name */ +}; + +ultrix_sys_ustat(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_ustat_args *uap = v; + struct ultrix_ustat us; + int error; + + bzero(&us, sizeof us); + + /* + * XXX: should set f_tfree and f_tinode at least + * How do we translate dev -> fstat? (and then to ultrix_ustat) + */ + + if (error = copyout(&us, SCARG(uap, buf), sizeof us)) + return (error); + return 0; +} + +ultrix_sys_quotactl(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_quotactl_args *uap = v; + + return EINVAL; +} + +ultrix_sys_vhangup(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + + return 0; +} + +struct ultrix_statfs { + long f_type; /* type of info, zero for now */ + long f_bsize; /* fundamental file system block size */ + long f_blocks; /* total blocks in file system */ + long f_bfree; /* free blocks */ + long f_bavail; /* free blocks available to non-super-user */ + long f_files; /* total file nodes in file system */ + long f_ffree; /* free file nodes in fs */ + fsid_t f_fsid; /* file system id */ + long f_spare[7]; /* spare for later */ +}; + +static +sunstatfs(sp, buf) + struct statfs *sp; + caddr_t buf; +{ + struct ultrix_statfs ssfs; + + bzero(&ssfs, sizeof ssfs); + ssfs.f_type = 0; + ssfs.f_bsize = sp->f_bsize; + ssfs.f_blocks = sp->f_blocks; + ssfs.f_bfree = sp->f_bfree; + ssfs.f_bavail = sp->f_bavail; + ssfs.f_files = sp->f_files; + ssfs.f_ffree = sp->f_ffree; + ssfs.f_fsid = sp->f_fsid; + return copyout((caddr_t)&ssfs, buf, sizeof ssfs); +} + +ultrix_sys_statfs(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_statfs_args *uap = v; + register struct mount *mp; + register struct statfs *sp; + int error; + struct nameidata nd; + + NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), p); + if (error = namei(&nd)) + return (error); + mp = nd.ni_vp->v_mount; + sp = &mp->mnt_stat; + vrele(nd.ni_vp); + if (error = VFS_STATFS(mp, sp, p)) + return (error); + sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; + return sunstatfs(sp, (caddr_t)SCARG(uap, buf)); +} + +ultrix_sys_fstatfs(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_fstatfs_args *uap = v; + struct file *fp; + struct mount *mp; + register struct statfs *sp; + int error; + + if (error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) + return (error); + mp = ((struct vnode *)fp->f_data)->v_mount; + sp = &mp->mnt_stat; + if (error = VFS_STATFS(mp, sp, p)) + return (error); + sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; + return sunstatfs(sp, (caddr_t)SCARG(uap, buf)); +} + +ultrix_sys_exportfs(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_exportfs_args *uap = v; + + /* + * XXX: should perhaps translate into a mount(2) + * with MOUNT_EXPORT? + */ + return 0; +} + +ultrix_sys_mknod(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_mknod_args *uap = v; + + if (S_ISFIFO(SCARG(uap, mode))) + return sys_mkfifo(p, uap, retval); + + return sys_mknod(p, (struct sys_mknod_args *)uap, retval); +} + +int +ultrix_sys_sigcleanup(p, v, retval) + struct proc *p; + void *v; + register_t *retval; +{ + struct ultrix_sys_sigcleanup_args *uap = v; + + return sys_sigreturn(p, (struct sys_sigreturn_args *)uap, retval); +} diff --git a/sys/compat/ultrix/ultrix_syscall.h b/sys/compat/ultrix/ultrix_syscall.h new file mode 100644 index 00000000000..3ac40c25b31 --- /dev/null +++ b/sys/compat/ultrix/ultrix_syscall.h @@ -0,0 +1,156 @@ +/* + * System call numbers. + * + * DO NOT EDIT-- this file is automatically generated. + * created from NetBSD: syscalls.master,v 1.11 1995/10/07 06:28:00 mycroft Exp + */ + +#define ULTRIX_SYS_syscall 0 +#define ULTRIX_SYS_exit 1 +#define ULTRIX_SYS_fork 2 +#define ULTRIX_SYS_read 3 +#define ULTRIX_SYS_write 4 +#define ULTRIX_SYS_open 5 +#define ULTRIX_SYS_close 6 +#define ULTRIX_SYS_creat 8 +#define ULTRIX_SYS_link 9 +#define ULTRIX_SYS_unlink 10 +#define ULTRIX_SYS_execv 11 +#define ULTRIX_SYS_chdir 12 + /* 13 is obsolete time */ +#define ULTRIX_SYS_mknod 14 +#define ULTRIX_SYS_chmod 15 +#define ULTRIX_SYS_chown 16 +#define ULTRIX_SYS_break 17 + /* 18 is obsolete stat */ +#define ULTRIX_SYS_lseek 19 +#define ULTRIX_SYS_getpid 20 + /* 21 is obsolete mount */ + /* 22 is obsolete sysV_unmount */ +#define ULTRIX_SYS_setuid 23 +#define ULTRIX_SYS_getuid 24 + /* 25 is obsolete v7 stime */ + /* 26 is obsolete v7 ptrace */ + /* 27 is obsolete v7 alarm */ + /* 28 is obsolete v7 fstat */ + /* 29 is obsolete v7 pause */ + /* 30 is obsolete v7 utime */ + /* 31 is obsolete v7 stty */ + /* 32 is obsolete v7 gtty */ +#define ULTRIX_SYS_access 33 + /* 34 is obsolete v7 nice */ + /* 35 is obsolete v7 ftime */ +#define ULTRIX_SYS_sync 36 +#define ULTRIX_SYS_kill 37 +#define ULTRIX_SYS_ostat 38 + /* 39 is obsolete v7 setpgrp */ +#define ULTRIX_SYS_olstat 40 +#define ULTRIX_SYS_dup 41 +#define ULTRIX_SYS_pipe 42 + /* 43 is obsolete v7 times */ +#define ULTRIX_SYS_profil 44 + /* 46 is obsolete v7 setgid */ +#define ULTRIX_SYS_getgid 47 +#define ULTRIX_SYS_acct 51 +#define ULTRIX_SYS_ioctl 54 +#define ULTRIX_SYS_reboot 55 +#define ULTRIX_SYS_symlink 57 +#define ULTRIX_SYS_readlink 58 +#define ULTRIX_SYS_execve 59 +#define ULTRIX_SYS_umask 60 +#define ULTRIX_SYS_chroot 61 +#define ULTRIX_SYS_fstat 62 +#define ULTRIX_SYS_getpagesize 64 +#define ULTRIX_SYS_vfork 66 + /* 67 is obsolete vread */ + /* 68 is obsolete vwrite */ +#define ULTRIX_SYS_sbrk 69 +#define ULTRIX_SYS_sstk 70 +#define ULTRIX_SYS_mmap 71 +#define ULTRIX_SYS_vadvise 72 +#define ULTRIX_SYS_munmap 73 +#define ULTRIX_SYS_mprotect 74 +#define ULTRIX_SYS_madvise 75 +#define ULTRIX_SYS_vhangup 76 +#define ULTRIX_SYS_mincore 78 +#define ULTRIX_SYS_getgroups 79 +#define ULTRIX_SYS_setgroups 80 +#define ULTRIX_SYS_getpgrp 81 +#define ULTRIX_SYS_setpgrp 82 +#define ULTRIX_SYS_setitimer 83 +#define ULTRIX_SYS_wait3 84 +#define ULTRIX_SYS_swapon 85 +#define ULTRIX_SYS_getitimer 86 +#define ULTRIX_SYS_gethostname 87 +#define ULTRIX_SYS_sethostname 88 +#define ULTRIX_SYS_getdtablesize 89 +#define ULTRIX_SYS_dup2 90 +#define ULTRIX_SYS_fcntl 92 +#define ULTRIX_SYS_select 93 +#define ULTRIX_SYS_fsync 95 +#define ULTRIX_SYS_setpriority 96 +#define ULTRIX_SYS_socket 97 +#define ULTRIX_SYS_connect 98 +#define ULTRIX_SYS_accept 99 +#define ULTRIX_SYS_getpriority 100 +#define ULTRIX_SYS_send 101 +#define ULTRIX_SYS_recv 102 +#define ULTRIX_SYS_sigreturn 103 +#define ULTRIX_SYS_bind 104 +#define ULTRIX_SYS_setsockopt 105 +#define ULTRIX_SYS_listen 106 +#define ULTRIX_SYS_sigvec 108 +#define ULTRIX_SYS_sigblock 109 +#define ULTRIX_SYS_sigsetmask 110 +#define ULTRIX_SYS_sigsuspend 111 +#define ULTRIX_SYS_sigstack 112 +#define ULTRIX_SYS_recvmsg 113 +#define ULTRIX_SYS_sendmsg 114 + /* 115 is obsolete vtrace */ +#define ULTRIX_SYS_gettimeofday 116 +#define ULTRIX_SYS_getrusage 117 +#define ULTRIX_SYS_getsockopt 118 +#define ULTRIX_SYS_readv 120 +#define ULTRIX_SYS_writev 121 +#define ULTRIX_SYS_settimeofday 122 +#define ULTRIX_SYS_fchown 123 +#define ULTRIX_SYS_fchmod 124 +#define ULTRIX_SYS_recvfrom 125 +#define ULTRIX_SYS_setreuid 126 +#define ULTRIX_SYS_setregid 127 +#define ULTRIX_SYS_rename 128 +#define ULTRIX_SYS_truncate 129 +#define ULTRIX_SYS_ftruncate 130 +#define ULTRIX_SYS_flock 131 +#define ULTRIX_SYS_sendto 133 +#define ULTRIX_SYS_shutdown 134 +#define ULTRIX_SYS_socketpair 135 +#define ULTRIX_SYS_mkdir 136 +#define ULTRIX_SYS_rmdir 137 +#define ULTRIX_SYS_utimes 138 +#define ULTRIX_SYS_sigcleanup 139 +#define ULTRIX_SYS_adjtime 140 +#define ULTRIX_SYS_getpeername 141 +#define ULTRIX_SYS_gethostid 142 +#define ULTRIX_SYS_getrlimit 144 +#define ULTRIX_SYS_setrlimit 145 +#define ULTRIX_SYS_killpg 146 +#define ULTRIX_SYS_getsockname 150 +#define ULTRIX_SYS_nfssvc 158 +#define ULTRIX_SYS_getdirentries 159 +#define ULTRIX_SYS_statfs 160 +#define ULTRIX_SYS_fstatfs 161 +#define ULTRIX_SYS_async_daemon 163 +#define ULTRIX_SYS_getfh 164 +#define ULTRIX_SYS_getdomainname 165 +#define ULTRIX_SYS_setdomainname 166 +#define ULTRIX_SYS_quotactl 168 +#define ULTRIX_SYS_exportfs 169 +#define ULTRIX_SYS_uname 179 +#define ULTRIX_SYS_ustat 183 +#define ULTRIX_SYS_sigpending 187 +#define ULTRIX_SYS_setsid 188 +#define ULTRIX_SYS_waitpid 189 +#define ULTRIX_SYS_getsysinfo 256 +#define ULTRIX_SYS_setsysinfo 257 +#define ULTRIX_SYS_MAXSYSCALL 258 diff --git a/sys/compat/ultrix/ultrix_syscallargs.h b/sys/compat/ultrix/ultrix_syscallargs.h new file mode 100644 index 00000000000..ac03a0be564 --- /dev/null +++ b/sys/compat/ultrix/ultrix_syscallargs.h @@ -0,0 +1,257 @@ +/* + * System call argument lists. + * + * DO NOT EDIT-- this file is automatically generated. + * created from NetBSD: syscalls.master,v 1.11 1995/10/07 06:28:00 mycroft Exp + */ + +#define syscallarg(x) union { x datum; register_t pad; } + +struct ultrix_sys_open_args { + syscallarg(char *) path; + syscallarg(int) flags; + syscallarg(int) mode; +}; + +struct ultrix_sys_execv_args { + syscallarg(char *) path; + syscallarg(char **) argp; +}; + +struct ultrix_sys_mknod_args { + syscallarg(char *) path; + syscallarg(int) mode; + syscallarg(int) dev; +}; + +struct ultrix_sys_mmap_args { + syscallarg(caddr_t) addr; + syscallarg(size_t) len; + syscallarg(int) prot; + syscallarg(u_int) flags; + syscallarg(int) fd; + syscallarg(long) pos; +}; + +struct ultrix_sys_setpgrp_args { + syscallarg(int) pid; + syscallarg(int) pgid; +}; + +struct ultrix_sys_wait3_args { + syscallarg(int *) status; + syscallarg(int) options; + syscallarg(struct rusage *) rusage; +}; + +struct ultrix_sys_setsockopt_args { + syscallarg(int) s; + syscallarg(int) level; + syscallarg(int) name; + syscallarg(caddr_t) val; + syscallarg(int) valsize; +}; + +struct ultrix_sys_sigcleanup_args { + syscallarg(struct sigcontext *) sigcntxp; +}; + +struct ultrix_sys_nfssvc_args { + syscallarg(int) fd; +}; + +struct ultrix_sys_statfs_args { + syscallarg(char *) path; + syscallarg(struct ultrix_statfs *) buf; +}; + +struct ultrix_sys_fstatfs_args { + syscallarg(int) fd; + syscallarg(struct ultrix_statfs *) buf; +}; + +struct ultrix_sys_quotactl_args { + syscallarg(int) cmd; + syscallarg(char *) special; + syscallarg(int) uid; + syscallarg(caddr_t) addr; +}; + +struct ultrix_sys_exportfs_args { + syscallarg(char *) path; + syscallarg(char *) ex; +}; + +struct ultrix_sys_uname_args { + syscallarg(struct ultrix_utsname *) name; +}; + +struct ultrix_sys_ustat_args { + syscallarg(int) dev; + syscallarg(struct ultrix_ustat *) buf; +}; + +struct ultrix_sys_sigpending_args { + syscallarg(int *) mask; +}; + +struct ultrix_sys_waitpid_args { + syscallarg(int) pid; + syscallarg(int *) status; + syscallarg(int) options; +}; + +struct ultrix_sys_getsysinfo_args { + syscallarg(unsigned) op; + syscallarg(char *) buffer; + syscallarg(unsigned) nbytes; + syscallarg(int *) start; + syscallarg(char *) arg; +}; + +struct ultrix_sys_setsysinfo_args { + syscallarg(unsigned) op; + syscallarg(char *) buffer; + syscallarg(unsigned) nbytes; + syscallarg(unsigned) arg; + syscallarg(unsigned) flag; +}; + +/* + * System call prototypes. + */ + +int sys_nosys __P((struct proc *, void *, register_t *)); +int sys_exit __P((struct proc *, void *, register_t *)); +int sys_fork __P((struct proc *, void *, register_t *)); +int sys_read __P((struct proc *, void *, register_t *)); +int sys_write __P((struct proc *, void *, register_t *)); +int ultrix_sys_open __P((struct proc *, void *, register_t *)); +int sys_close __P((struct proc *, void *, register_t *)); +int compat_43_sys_creat __P((struct proc *, void *, register_t *)); +int sys_link __P((struct proc *, void *, register_t *)); +int sys_unlink __P((struct proc *, void *, register_t *)); +int ultrix_sys_execv __P((struct proc *, void *, register_t *)); +int sys_chdir __P((struct proc *, void *, register_t *)); +int ultrix_sys_mknod __P((struct proc *, void *, register_t *)); +int sys_chmod __P((struct proc *, void *, register_t *)); +int sys_chown __P((struct proc *, void *, register_t *)); +int sys_obreak __P((struct proc *, void *, register_t *)); +int compat_43_sys_lseek __P((struct proc *, void *, register_t *)); +int sys_getpid __P((struct proc *, void *, register_t *)); +int sys_setuid __P((struct proc *, void *, register_t *)); +int sys_getuid __P((struct proc *, void *, register_t *)); +int sys_access __P((struct proc *, void *, register_t *)); +int sys_sync __P((struct proc *, void *, register_t *)); +int sys_kill __P((struct proc *, void *, register_t *)); +int compat_43_sys_stat __P((struct proc *, void *, register_t *)); +int compat_43_sys_lstat __P((struct proc *, void *, register_t *)); +int sys_dup __P((struct proc *, void *, register_t *)); +int sys_pipe __P((struct proc *, void *, register_t *)); +int sys_profil __P((struct proc *, void *, register_t *)); +int sys_getgid __P((struct proc *, void *, register_t *)); +int sys_acct __P((struct proc *, void *, register_t *)); +int sys_ioctl __P((struct proc *, void *, register_t *)); +int sys_reboot __P((struct proc *, void *, register_t *)); +int sys_symlink __P((struct proc *, void *, register_t *)); +int sys_readlink __P((struct proc *, void *, register_t *)); +int sys_execve __P((struct proc *, void *, register_t *)); +int sys_umask __P((struct proc *, void *, register_t *)); +int sys_chroot __P((struct proc *, void *, register_t *)); +int compat_43_sys_fstat __P((struct proc *, void *, register_t *)); +int compat_43_sys_getpagesize __P((struct proc *, void *, register_t *)); +int sys_vfork __P((struct proc *, void *, register_t *)); +int sys_sbrk __P((struct proc *, void *, register_t *)); +int sys_sstk __P((struct proc *, void *, register_t *)); +int ultrix_sys_mmap __P((struct proc *, void *, register_t *)); +int sys_ovadvise __P((struct proc *, void *, register_t *)); +int sys_munmap __P((struct proc *, void *, register_t *)); +int sys_mprotect __P((struct proc *, void *, register_t *)); +int sys_madvise __P((struct proc *, void *, register_t *)); +int ultrix_sys_vhangup __P((struct proc *, void *, register_t *)); +int sys_mincore __P((struct proc *, void *, register_t *)); +int sys_getgroups __P((struct proc *, void *, register_t *)); +int sys_setgroups __P((struct proc *, void *, register_t *)); +int sys_getpgrp __P((struct proc *, void *, register_t *)); +int ultrix_sys_setpgrp __P((struct proc *, void *, register_t *)); +int sys_setitimer __P((struct proc *, void *, register_t *)); +int ultrix_sys_wait3 __P((struct proc *, void *, register_t *)); +int sys_swapon __P((struct proc *, void *, register_t *)); +int sys_getitimer __P((struct proc *, void *, register_t *)); +int compat_43_sys_gethostname __P((struct proc *, void *, register_t *)); +int compat_43_sys_sethostname __P((struct proc *, void *, register_t *)); +int compat_43_sys_getdtablesize __P((struct proc *, void *, register_t *)); +int sys_dup2 __P((struct proc *, void *, register_t *)); +int sys_fcntl __P((struct proc *, void *, register_t *)); +int sys_select __P((struct proc *, void *, register_t *)); +int sys_fsync __P((struct proc *, void *, register_t *)); +int sys_setpriority __P((struct proc *, void *, register_t *)); +int sys_socket __P((struct proc *, void *, register_t *)); +int sys_connect __P((struct proc *, void *, register_t *)); +int compat_43_sys_accept __P((struct proc *, void *, register_t *)); +int sys_getpriority __P((struct proc *, void *, register_t *)); +int compat_43_sys_send __P((struct proc *, void *, register_t *)); +int compat_43_sys_recv __P((struct proc *, void *, register_t *)); +int sys_sigreturn __P((struct proc *, void *, register_t *)); +int sys_bind __P((struct proc *, void *, register_t *)); +int ultrix_sys_setsockopt __P((struct proc *, void *, register_t *)); +int sys_listen __P((struct proc *, void *, register_t *)); +int compat_43_sys_sigvec __P((struct proc *, void *, register_t *)); +int compat_43_sys_sigblock __P((struct proc *, void *, register_t *)); +int compat_43_sys_sigsetmask __P((struct proc *, void *, register_t *)); +int sys_sigsuspend __P((struct proc *, void *, register_t *)); +int compat_43_sys_sigstack __P((struct proc *, void *, register_t *)); +int compat_43_sys_recvmsg __P((struct proc *, void *, register_t *)); +int compat_43_sys_sendmsg __P((struct proc *, void *, register_t *)); +int sys_gettimeofday __P((struct proc *, void *, register_t *)); +int sys_getrusage __P((struct proc *, void *, register_t *)); +int sys_getsockopt __P((struct proc *, void *, register_t *)); +int sys_readv __P((struct proc *, void *, register_t *)); +int sys_writev __P((struct proc *, void *, register_t *)); +int sys_settimeofday __P((struct proc *, void *, register_t *)); +int sys_fchown __P((struct proc *, void *, register_t *)); +int sys_fchmod __P((struct proc *, void *, register_t *)); +int compat_43_sys_recvfrom __P((struct proc *, void *, register_t *)); +int compat_43_sys_setreuid __P((struct proc *, void *, register_t *)); +int compat_43_sys_setregid __P((struct proc *, void *, register_t *)); +int sys_rename __P((struct proc *, void *, register_t *)); +int compat_43_sys_truncate __P((struct proc *, void *, register_t *)); +int compat_43_sys_ftruncate __P((struct proc *, void *, register_t *)); +int sys_flock __P((struct proc *, void *, register_t *)); +int sys_sendto __P((struct proc *, void *, register_t *)); +int sys_shutdown __P((struct proc *, void *, register_t *)); +int sys_socketpair __P((struct proc *, void *, register_t *)); +int sys_mkdir __P((struct proc *, void *, register_t *)); +int sys_rmdir __P((struct proc *, void *, register_t *)); +int sys_utimes __P((struct proc *, void *, register_t *)); +int ultrix_sys_sigcleanup __P((struct proc *, void *, register_t *)); +int sys_adjtime __P((struct proc *, void *, register_t *)); +int compat_43_sys_getpeername __P((struct proc *, void *, register_t *)); +int compat_43_sys_gethostid __P((struct proc *, void *, register_t *)); +int compat_43_sys_getrlimit __P((struct proc *, void *, register_t *)); +int compat_43_sys_setrlimit __P((struct proc *, void *, register_t *)); +int compat_43_sys_killpg __P((struct proc *, void *, register_t *)); +int compat_43_sys_getsockname __P((struct proc *, void *, register_t *)); +#ifdef NFSSERVER +int ultrix_sys_nfssvc __P((struct proc *, void *, register_t *)); +#else +#endif +int compat_43_sys_getdirentries __P((struct proc *, void *, register_t *)); +int ultrix_sys_statfs __P((struct proc *, void *, register_t *)); +int ultrix_sys_fstatfs __P((struct proc *, void *, register_t *)); +#ifdef NFSCLIENT +int async_daemon __P((struct proc *, void *, register_t *)); +int sys_getfh __P((struct proc *, void *, register_t *)); +#else +#endif +int compat_09_sys_getdomainname __P((struct proc *, void *, register_t *)); +int compat_09_sys_setdomainname __P((struct proc *, void *, register_t *)); +int ultrix_sys_quotactl __P((struct proc *, void *, register_t *)); +int ultrix_sys_exportfs __P((struct proc *, void *, register_t *)); +int ultrix_sys_uname __P((struct proc *, void *, register_t *)); +int ultrix_sys_ustat __P((struct proc *, void *, register_t *)); +int ultrix_sys_sigpending __P((struct proc *, void *, register_t *)); +int sys_setsid __P((struct proc *, void *, register_t *)); +int ultrix_sys_waitpid __P((struct proc *, void *, register_t *)); +int ultrix_sys_getsysinfo __P((struct proc *, void *, register_t *)); +int ultrix_sys_setsysinfo __P((struct proc *, void *, register_t *)); diff --git a/sys/compat/ultrix/ultrix_syscalls.c b/sys/compat/ultrix/ultrix_syscalls.c new file mode 100644 index 00000000000..f0695ed78f2 --- /dev/null +++ b/sys/compat/ultrix/ultrix_syscalls.c @@ -0,0 +1,276 @@ +/* + * System call names. + * + * DO NOT EDIT-- this file is automatically generated. + * created from NetBSD: syscalls.master,v 1.11 1995/10/07 06:28:00 mycroft Exp + */ + +char *ultrix_syscallnames[] = { + "syscall", /* 0 = syscall */ + "exit", /* 1 = exit */ + "fork", /* 2 = fork */ + "read", /* 3 = read */ + "write", /* 4 = write */ + "open", /* 5 = open */ + "close", /* 6 = close */ + "#7 (unimplemented old_wait)", /* 7 = unimplemented old_wait */ + "creat", /* 8 = creat */ + "link", /* 9 = link */ + "unlink", /* 10 = unlink */ + "execv", /* 11 = execv */ + "chdir", /* 12 = chdir */ + "#13 (obsolete time)", /* 13 = obsolete time */ + "mknod", /* 14 = mknod */ + "chmod", /* 15 = chmod */ + "chown", /* 16 = chown */ + "break", /* 17 = break */ + "#18 (obsolete stat)", /* 18 = obsolete stat */ + "lseek", /* 19 = lseek */ + "getpid", /* 20 = getpid */ + "#21 (obsolete mount)", /* 21 = obsolete mount */ + "#22 (obsolete sysV_unmount)", /* 22 = obsolete sysV_unmount */ + "setuid", /* 23 = setuid */ + "getuid", /* 24 = getuid */ + "#25 (obsolete v7 stime)", /* 25 = obsolete v7 stime */ + "#26 (obsolete v7 ptrace)", /* 26 = obsolete v7 ptrace */ + "#27 (obsolete v7 alarm)", /* 27 = obsolete v7 alarm */ + "#28 (obsolete v7 fstat)", /* 28 = obsolete v7 fstat */ + "#29 (obsolete v7 pause)", /* 29 = obsolete v7 pause */ + "#30 (obsolete v7 utime)", /* 30 = obsolete v7 utime */ + "#31 (obsolete v7 stty)", /* 31 = obsolete v7 stty */ + "#32 (obsolete v7 gtty)", /* 32 = obsolete v7 gtty */ + "access", /* 33 = access */ + "#34 (obsolete v7 nice)", /* 34 = obsolete v7 nice */ + "#35 (obsolete v7 ftime)", /* 35 = obsolete v7 ftime */ + "sync", /* 36 = sync */ + "kill", /* 37 = kill */ + "ostat", /* 38 = ostat */ + "#39 (obsolete v7 setpgrp)", /* 39 = obsolete v7 setpgrp */ + "olstat", /* 40 = olstat */ + "dup", /* 41 = dup */ + "pipe", /* 42 = pipe */ + "#43 (obsolete v7 times)", /* 43 = obsolete v7 times */ + "profil", /* 44 = profil */ + "#45 (unimplemented)", /* 45 = unimplemented */ + "#46 (obsolete v7 setgid)", /* 46 = obsolete v7 setgid */ + "getgid", /* 47 = getgid */ + "#48 (unimplemented ssig)", /* 48 = unimplemented ssig */ + "#49 (unimplemented reserved for USG)", /* 49 = unimplemented reserved for USG */ + "#50 (unimplemented reserved for USG)", /* 50 = unimplemented reserved for USG */ + "acct", /* 51 = acct */ + "#52 (unimplemented)", /* 52 = unimplemented */ + "#53 (unimplemented syslock)", /* 53 = unimplemented syslock */ + "ioctl", /* 54 = ioctl */ + "reboot", /* 55 = reboot */ + "#56 (unimplemented v7 mpxchan)", /* 56 = unimplemented v7 mpxchan */ + "symlink", /* 57 = symlink */ + "readlink", /* 58 = readlink */ + "execve", /* 59 = execve */ + "umask", /* 60 = umask */ + "chroot", /* 61 = chroot */ + "fstat", /* 62 = fstat */ + "#63 (unimplemented)", /* 63 = unimplemented */ + "getpagesize", /* 64 = getpagesize */ + "#65 (unimplemented mremap)", /* 65 = unimplemented mremap */ + "vfork", /* 66 = vfork */ + "#67 (obsolete vread)", /* 67 = obsolete vread */ + "#68 (obsolete vwrite)", /* 68 = obsolete vwrite */ + "sbrk", /* 69 = sbrk */ + "sstk", /* 70 = sstk */ + "mmap", /* 71 = mmap */ + "vadvise", /* 72 = vadvise */ + "munmap", /* 73 = munmap */ + "mprotect", /* 74 = mprotect */ + "madvise", /* 75 = madvise */ + "vhangup", /* 76 = vhangup */ + "#77 (unimplemented old vlimit)", /* 77 = unimplemented old vlimit */ + "mincore", /* 78 = mincore */ + "getgroups", /* 79 = getgroups */ + "setgroups", /* 80 = setgroups */ + "getpgrp", /* 81 = getpgrp */ + "setpgrp", /* 82 = setpgrp */ + "setitimer", /* 83 = setitimer */ + "wait3", /* 84 = wait3 */ + "swapon", /* 85 = swapon */ + "getitimer", /* 86 = getitimer */ + "gethostname", /* 87 = gethostname */ + "sethostname", /* 88 = sethostname */ + "getdtablesize", /* 89 = getdtablesize */ + "dup2", /* 90 = dup2 */ + "#91 (unimplemented getdopt)", /* 91 = unimplemented getdopt */ + "fcntl", /* 92 = fcntl */ + "select", /* 93 = select */ + "#94 (unimplemented setdopt)", /* 94 = unimplemented setdopt */ + "fsync", /* 95 = fsync */ + "setpriority", /* 96 = setpriority */ + "socket", /* 97 = socket */ + "connect", /* 98 = connect */ + "accept", /* 99 = accept */ + "getpriority", /* 100 = getpriority */ + "send", /* 101 = send */ + "recv", /* 102 = recv */ + "sigreturn", /* 103 = sigreturn */ + "bind", /* 104 = bind */ + "setsockopt", /* 105 = setsockopt */ + "listen", /* 106 = listen */ + "#107 (unimplemented vtimes)", /* 107 = unimplemented vtimes */ + "sigvec", /* 108 = sigvec */ + "sigblock", /* 109 = sigblock */ + "sigsetmask", /* 110 = sigsetmask */ + "sigsuspend", /* 111 = sigsuspend */ + "sigstack", /* 112 = sigstack */ + "recvmsg", /* 113 = recvmsg */ + "sendmsg", /* 114 = sendmsg */ + "#115 (obsolete vtrace)", /* 115 = obsolete vtrace */ + "gettimeofday", /* 116 = gettimeofday */ + "getrusage", /* 117 = getrusage */ + "getsockopt", /* 118 = getsockopt */ + "#119 (unimplemented resuba)", /* 119 = unimplemented resuba */ + "readv", /* 120 = readv */ + "writev", /* 121 = writev */ + "settimeofday", /* 122 = settimeofday */ + "fchown", /* 123 = fchown */ + "fchmod", /* 124 = fchmod */ + "recvfrom", /* 125 = recvfrom */ + "setreuid", /* 126 = setreuid */ + "setregid", /* 127 = setregid */ + "rename", /* 128 = rename */ + "truncate", /* 129 = truncate */ + "ftruncate", /* 130 = ftruncate */ + "flock", /* 131 = flock */ + "#132 (unimplemented)", /* 132 = unimplemented */ + "sendto", /* 133 = sendto */ + "shutdown", /* 134 = shutdown */ + "socketpair", /* 135 = socketpair */ + "mkdir", /* 136 = mkdir */ + "rmdir", /* 137 = rmdir */ + "utimes", /* 138 = utimes */ + "sigcleanup", /* 139 = sigcleanup */ + "adjtime", /* 140 = adjtime */ + "getpeername", /* 141 = getpeername */ + "gethostid", /* 142 = gethostid */ + "#143 (unimplemented old sethostid)", /* 143 = unimplemented old sethostid */ + "getrlimit", /* 144 = getrlimit */ + "setrlimit", /* 145 = setrlimit */ + "killpg", /* 146 = killpg */ + "#147 (unimplemented)", /* 147 = unimplemented */ + "#148 (unimplemented setquota)", /* 148 = unimplemented setquota */ + "#149 (unimplemented quota / * needs to be nullop to boot on Ultrix root partition * /)", /* 149 = unimplemented quota / * needs to be nullop to boot on Ultrix root partition * / */ + "getsockname", /* 150 = getsockname */ + "#151 (unimplemented sysmips / * 4 args * /)", /* 151 = unimplemented sysmips / * 4 args * / */ + "#152 (unimplemented cacheflush / * 4 args * /)", /* 152 = unimplemented cacheflush / * 4 args * / */ + "#153 (unimplemented cachectl / * 3 args * /)", /* 153 = unimplemented cachectl / * 3 args * / */ + "#154 (unimplemented)", /* 154 = unimplemented */ + "#155 (unimplemented atomic_op)", /* 155 = unimplemented atomic_op */ + "#156 (unimplemented)", /* 156 = unimplemented */ + "#157 (unimplemented)", /* 157 = unimplemented */ +#ifdef NFSSERVER + "nfssvc", /* 158 = nfssvc */ +#else + "#158 (unimplemented)", /* 158 = unimplemented */ +#endif + "getdirentries", /* 159 = getdirentries */ + "statfs", /* 160 = statfs */ + "fstatfs", /* 161 = fstatfs */ + "#162 (unimplemented umount)", /* 162 = unimplemented umount */ +#ifdef NFSCLIENT + "async_daemon", /* 163 = async_daemon */ + "getfh", /* 164 = getfh */ +#else + "#163 (unimplemented async_daemon)", /* 163 = unimplemented async_daemon */ + "#164 (unimplemented getfh)", /* 164 = unimplemented getfh */ +#endif + "getdomainname", /* 165 = getdomainname */ + "setdomainname", /* 166 = setdomainname */ + "#167 (unimplemented)", /* 167 = unimplemented */ + "quotactl", /* 168 = quotactl */ + "exportfs", /* 169 = exportfs */ + "#170 (unimplemented mount)", /* 170 = unimplemented mount */ + "#171 (unimplemented 4 hdwconf)", /* 171 = unimplemented 4 hdwconf */ + "#172 (unimplemented msgctl)", /* 172 = unimplemented msgctl */ + "#173 (unimplemented msgget)", /* 173 = unimplemented msgget */ + "#174 (unimplemented msgrcv)", /* 174 = unimplemented msgrcv */ + "#175 (unimplemented msgsnd)", /* 175 = unimplemented msgsnd */ + "#176 (unimplemented semctl)", /* 176 = unimplemented semctl */ + "#177 (unimplemented semget)", /* 177 = unimplemented semget */ + "#178 (unimplemented semop)", /* 178 = unimplemented semop */ + "uname", /* 179 = uname */ + "#180 (unimplemented shmsys)", /* 180 = unimplemented shmsys */ + "#181 (unimplemented 0 plock)", /* 181 = unimplemented 0 plock */ + "#182 (unimplemented 0 lockf)", /* 182 = unimplemented 0 lockf */ + "ustat", /* 183 = ustat */ + "#184 (unimplemented getmnt)", /* 184 = unimplemented getmnt */ + "#185 (unimplemented notdef)", /* 185 = unimplemented notdef */ + "#186 (unimplemented notdef)", /* 186 = unimplemented notdef */ + "sigpending", /* 187 = sigpending */ + "setsid", /* 188 = setsid */ + "waitpid", /* 189 = waitpid */ + "#190 (unimplemented)", /* 190 = unimplemented */ + "#191 (unimplemented)", /* 191 = unimplemented */ + "#192 (unimplemented)", /* 192 = unimplemented */ + "#193 (unimplemented)", /* 193 = unimplemented */ + "#194 (unimplemented)", /* 194 = unimplemented */ + "#195 (unimplemented)", /* 195 = unimplemented */ + "#196 (unimplemented)", /* 196 = unimplemented */ + "#197 (unimplemented)", /* 197 = unimplemented */ + "#198 (unimplemented)", /* 198 = unimplemented */ + "#199 (unimplemented)", /* 199 = unimplemented */ + "#200 (unimplemented)", /* 200 = unimplemented */ + "#201 (unimplemented)", /* 201 = unimplemented */ + "#202 (unimplemented)", /* 202 = unimplemented */ + "#203 (unimplemented)", /* 203 = unimplemented */ + "#204 (unimplemented)", /* 204 = unimplemented */ + "#205 (unimplemented)", /* 205 = unimplemented */ + "#206 (unimplemented)", /* 206 = unimplemented */ + "#207 (unimplemented)", /* 207 = unimplemented */ + "#208 (unimplemented)", /* 208 = unimplemented */ + "#209 (unimplemented)", /* 209 = unimplemented */ + "#210 (unimplemented)", /* 210 = unimplemented */ + "#211 (unimplemented)", /* 211 = unimplemented */ + "#212 (unimplemented)", /* 212 = unimplemented */ + "#213 (unimplemented)", /* 213 = unimplemented */ + "#214 (unimplemented)", /* 214 = unimplemented */ + "#215 (unimplemented)", /* 215 = unimplemented */ + "#216 (unimplemented)", /* 216 = unimplemented */ + "#217 (unimplemented)", /* 217 = unimplemented */ + "#218 (unimplemented)", /* 218 = unimplemented */ + "#219 (unimplemented)", /* 219 = unimplemented */ + "#220 (unimplemented)", /* 220 = unimplemented */ + "#221 (unimplemented)", /* 221 = unimplemented */ + "#222 (unimplemented)", /* 222 = unimplemented */ + "#223 (unimplemented)", /* 223 = unimplemented */ + "#224 (unimplemented)", /* 224 = unimplemented */ + "#225 (unimplemented)", /* 225 = unimplemented */ + "#226 (unimplemented)", /* 226 = unimplemented */ + "#227 (unimplemented)", /* 227 = unimplemented */ + "#228 (unimplemented)", /* 228 = unimplemented */ + "#229 (unimplemented)", /* 229 = unimplemented */ + "#230 (unimplemented)", /* 230 = unimplemented */ + "#231 (unimplemented)", /* 231 = unimplemented */ + "#232 (unimplemented)", /* 232 = unimplemented */ + "#233 (unimplemented 1 utc_gettime)", /* 233 = unimplemented 1 utc_gettime */ + "#234 (unimplemented 2 utc_adjtime)", /* 234 = unimplemented 2 utc_adjtime */ + "#235 (unimplemented)", /* 235 = unimplemented */ + "#236 (unimplemented)", /* 236 = unimplemented */ + "#237 (unimplemented)", /* 237 = unimplemented */ + "#238 (unimplemented)", /* 238 = unimplemented */ + "#239 (unimplemented)", /* 239 = unimplemented */ + "#240 (unimplemented)", /* 240 = unimplemented */ + "#241 (unimplemented)", /* 241 = unimplemented */ + "#242 (unimplemented)", /* 242 = unimplemented */ + "#243 (unimplemented)", /* 243 = unimplemented */ + "#244 (unimplemented)", /* 244 = unimplemented */ + "#245 (unimplemented)", /* 245 = unimplemented */ + "#246 (unimplemented)", /* 246 = unimplemented */ + "#247 (unimplemented)", /* 247 = unimplemented */ + "#248 (unimplemented)", /* 248 = unimplemented */ + "#249 (unimplemented)", /* 249 = unimplemented */ + "#250 (unimplemented)", /* 250 = unimplemented */ + "#251 (unimplemented)", /* 251 = unimplemented */ + "#252 (unimplemented audctl / * Make no-op for installation on Ultrix rootpartition? * /)", /* 252 = unimplemented audctl / * Make no-op for installation on Ultrix rootpartition? * / */ + "#253 (unimplemented audgen / * Make no-op for installation on Ultrix rootpartition? * /)", /* 253 = unimplemented audgen / * Make no-op for installation on Ultrix rootpartition? * / */ + "#254 (unimplemented startcpu)", /* 254 = unimplemented startcpu */ + "#255 (unimplemented stopcpu)", /* 255 = unimplemented stopcpu */ + "getsysinfo", /* 256 = getsysinfo */ + "setsysinfo", /* 257 = setsysinfo */ +}; diff --git a/sys/compat/ultrix/ultrix_sysent.c b/sys/compat/ultrix/ultrix_sysent.c new file mode 100644 index 00000000000..fdf44822eb1 --- /dev/null +++ b/sys/compat/ultrix/ultrix_sysent.c @@ -0,0 +1,565 @@ +/* + * System call switch table. + * + * DO NOT EDIT-- this file is automatically generated. + * created from NetBSD: syscalls.master,v 1.11 1995/10/07 06:28:00 mycroft Exp + */ + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/signal.h> +#include <sys/mount.h> +#include <sys/syscallargs.h> +#include <compat/ultrix/ultrix_syscallargs.h> + +#ifdef COMPAT_43 +#define compat_43(func) __CONCAT(compat_43_,func) +#else +#define compat_43(func) sys_nosys +#endif + +#ifdef COMPAT_09 +#define compat_09(func) __CONCAT(compat_09_,func) +#else +#define compat_09(func) sys_nosys +#endif + +#ifdef COMPAT_10 +#define compat_10(func) __CONCAT(compat_10_,func) +#else +#define compat_10(func) sys_nosys +#endif + +#define s(type) sizeof(type) + +struct sysent ultrix_sysent[] = { + { 0, 0, + sys_nosys }, /* 0 = syscall */ + { 1, s(struct sys_exit_args), + sys_exit }, /* 1 = exit */ + { 0, 0, + sys_fork }, /* 2 = fork */ + { 3, s(struct sys_read_args), + sys_read }, /* 3 = read */ + { 3, s(struct sys_write_args), + sys_write }, /* 4 = write */ + { 3, s(struct ultrix_sys_open_args), + ultrix_sys_open }, /* 5 = open */ + { 1, s(struct sys_close_args), + sys_close }, /* 6 = close */ + { 0, 0, + sys_nosys }, /* 7 = unimplemented old_wait */ + { 2, s(struct compat_43_sys_creat_args), + compat_43_sys_creat }, /* 8 = creat */ + { 2, s(struct sys_link_args), + sys_link }, /* 9 = link */ + { 1, s(struct sys_unlink_args), + sys_unlink }, /* 10 = unlink */ + { 2, s(struct ultrix_sys_execv_args), + ultrix_sys_execv }, /* 11 = execv */ + { 1, s(struct sys_chdir_args), + sys_chdir }, /* 12 = chdir */ + { 0, 0, + sys_nosys }, /* 13 = obsolete time */ + { 3, s(struct ultrix_sys_mknod_args), + ultrix_sys_mknod }, /* 14 = mknod */ + { 2, s(struct sys_chmod_args), + sys_chmod }, /* 15 = chmod */ + { 3, s(struct sys_chown_args), + sys_chown }, /* 16 = chown */ + { 1, s(struct sys_obreak_args), + sys_obreak }, /* 17 = break */ + { 0, 0, + sys_nosys }, /* 18 = obsolete stat */ + { 3, s(struct compat_43_sys_lseek_args), + compat_43_sys_lseek }, /* 19 = lseek */ + { 0, 0, + sys_getpid }, /* 20 = getpid */ + { 0, 0, + sys_nosys }, /* 21 = obsolete mount */ + { 0, 0, + sys_nosys }, /* 22 = obsolete sysV_unmount */ + { 1, s(struct sys_setuid_args), + sys_setuid }, /* 23 = setuid */ + { 0, 0, + sys_getuid }, /* 24 = getuid */ + { 0, 0, + sys_nosys }, /* 25 = obsolete v7 stime */ + { 0, 0, + sys_nosys }, /* 26 = obsolete v7 ptrace */ + { 0, 0, + sys_nosys }, /* 27 = obsolete v7 alarm */ + { 0, 0, + sys_nosys }, /* 28 = obsolete v7 fstat */ + { 0, 0, + sys_nosys }, /* 29 = obsolete v7 pause */ + { 0, 0, + sys_nosys }, /* 30 = obsolete v7 utime */ + { 0, 0, + sys_nosys }, /* 31 = obsolete v7 stty */ + { 0, 0, + sys_nosys }, /* 32 = obsolete v7 gtty */ + { 2, s(struct sys_access_args), + sys_access }, /* 33 = access */ + { 0, 0, + sys_nosys }, /* 34 = obsolete v7 nice */ + { 0, 0, + sys_nosys }, /* 35 = obsolete v7 ftime */ + { 0, 0, + sys_sync }, /* 36 = sync */ + { 2, s(struct sys_kill_args), + sys_kill }, /* 37 = kill */ + { 2, s(struct compat_43_sys_stat_args), + compat_43_sys_stat }, /* 38 = ostat */ + { 0, 0, + sys_nosys }, /* 39 = obsolete v7 setpgrp */ + { 2, s(struct compat_43_sys_lstat_args), + compat_43_sys_lstat }, /* 40 = olstat */ + { 1, s(struct sys_dup_args), + sys_dup }, /* 41 = dup */ + { 0, 0, + sys_pipe }, /* 42 = pipe */ + { 0, 0, + sys_nosys }, /* 43 = obsolete v7 times */ + { 4, s(struct sys_profil_args), + sys_profil }, /* 44 = profil */ + { 0, 0, + sys_nosys }, /* 45 = unimplemented */ + { 0, 0, + sys_nosys }, /* 46 = obsolete v7 setgid */ + { 0, 0, + sys_getgid }, /* 47 = getgid */ + { 0, 0, + sys_nosys }, /* 48 = unimplemented ssig */ + { 0, 0, + sys_nosys }, /* 49 = unimplemented reserved for USG */ + { 0, 0, + sys_nosys }, /* 50 = unimplemented reserved for USG */ + { 1, s(struct sys_acct_args), + sys_acct }, /* 51 = acct */ + { 0, 0, + sys_nosys }, /* 52 = unimplemented */ + { 0, 0, + sys_nosys }, /* 53 = unimplemented syslock */ + { 3, s(struct sys_ioctl_args), + sys_ioctl }, /* 54 = ioctl */ + { 1, s(struct sys_reboot_args), + sys_reboot }, /* 55 = reboot */ + { 0, 0, + sys_nosys }, /* 56 = unimplemented v7 mpxchan */ + { 2, s(struct sys_symlink_args), + sys_symlink }, /* 57 = symlink */ + { 3, s(struct sys_readlink_args), + sys_readlink }, /* 58 = readlink */ + { 3, s(struct sys_execve_args), + sys_execve }, /* 59 = execve */ + { 1, s(struct sys_umask_args), + sys_umask }, /* 60 = umask */ + { 1, s(struct sys_chroot_args), + sys_chroot }, /* 61 = chroot */ + { 2, s(struct compat_43_sys_fstat_args), + compat_43_sys_fstat }, /* 62 = fstat */ + { 0, 0, + sys_nosys }, /* 63 = unimplemented */ + { 0, 0, + compat_43_sys_getpagesize }, /* 64 = getpagesize */ + { 0, 0, + sys_nosys }, /* 65 = unimplemented mremap */ + { 0, 0, + sys_vfork }, /* 66 = vfork */ + { 0, 0, + sys_nosys }, /* 67 = obsolete vread */ + { 0, 0, + sys_nosys }, /* 68 = obsolete vwrite */ + { 1, s(struct sys_sbrk_args), + sys_sbrk }, /* 69 = sbrk */ + { 1, s(struct sys_sstk_args), + sys_sstk }, /* 70 = sstk */ + { 6, s(struct ultrix_sys_mmap_args), + ultrix_sys_mmap }, /* 71 = mmap */ + { 1, s(struct sys_ovadvise_args), + sys_ovadvise }, /* 72 = vadvise */ + { 2, s(struct sys_munmap_args), + sys_munmap }, /* 73 = munmap */ + { 3, s(struct sys_mprotect_args), + sys_mprotect }, /* 74 = mprotect */ + { 3, s(struct sys_madvise_args), + sys_madvise }, /* 75 = madvise */ + { 0, 0, + ultrix_sys_vhangup }, /* 76 = vhangup */ + { 0, 0, + sys_nosys }, /* 77 = unimplemented old vlimit */ + { 3, s(struct sys_mincore_args), + sys_mincore }, /* 78 = mincore */ + { 2, s(struct sys_getgroups_args), + sys_getgroups }, /* 79 = getgroups */ + { 2, s(struct sys_setgroups_args), + sys_setgroups }, /* 80 = setgroups */ + { 0, 0, + sys_getpgrp }, /* 81 = getpgrp */ + { 2, s(struct ultrix_sys_setpgrp_args), + ultrix_sys_setpgrp }, /* 82 = setpgrp */ + { 3, s(struct sys_setitimer_args), + sys_setitimer }, /* 83 = setitimer */ + { 3, s(struct ultrix_sys_wait3_args), + ultrix_sys_wait3 }, /* 84 = wait3 */ + { 1, s(struct sys_swapon_args), + sys_swapon }, /* 85 = swapon */ + { 2, s(struct sys_getitimer_args), + sys_getitimer }, /* 86 = getitimer */ + { 2, s(struct compat_43_sys_gethostname_args), + compat_43_sys_gethostname }, /* 87 = gethostname */ + { 2, s(struct compat_43_sys_sethostname_args), + compat_43_sys_sethostname }, /* 88 = sethostname */ + { 0, 0, + compat_43_sys_getdtablesize }, /* 89 = getdtablesize */ + { 2, s(struct sys_dup2_args), + sys_dup2 }, /* 90 = dup2 */ + { 0, 0, + sys_nosys }, /* 91 = unimplemented getdopt */ + { 3, s(struct sys_fcntl_args), + sys_fcntl }, /* 92 = fcntl */ + { 5, s(struct sys_select_args), + sys_select }, /* 93 = select */ + { 0, 0, + sys_nosys }, /* 94 = unimplemented setdopt */ + { 1, s(struct sys_fsync_args), + sys_fsync }, /* 95 = fsync */ + { 3, s(struct sys_setpriority_args), + sys_setpriority }, /* 96 = setpriority */ + { 3, s(struct sys_socket_args), + sys_socket }, /* 97 = socket */ + { 3, s(struct sys_connect_args), + sys_connect }, /* 98 = connect */ + { 3, s(struct compat_43_sys_accept_args), + compat_43_sys_accept }, /* 99 = accept */ + { 2, s(struct sys_getpriority_args), + sys_getpriority }, /* 100 = getpriority */ + { 4, s(struct compat_43_sys_send_args), + compat_43_sys_send }, /* 101 = send */ + { 4, s(struct compat_43_sys_recv_args), + compat_43_sys_recv }, /* 102 = recv */ + { 1, s(struct sys_sigreturn_args), + sys_sigreturn }, /* 103 = sigreturn */ + { 3, s(struct sys_bind_args), + sys_bind }, /* 104 = bind */ + { 5, s(struct ultrix_sys_setsockopt_args), + ultrix_sys_setsockopt }, /* 105 = setsockopt */ + { 2, s(struct sys_listen_args), + sys_listen }, /* 106 = listen */ + { 0, 0, + sys_nosys }, /* 107 = unimplemented vtimes */ + { 3, s(struct compat_43_sys_sigvec_args), + compat_43_sys_sigvec }, /* 108 = sigvec */ + { 1, s(struct compat_43_sys_sigblock_args), + compat_43_sys_sigblock }, /* 109 = sigblock */ + { 1, s(struct compat_43_sys_sigsetmask_args), + compat_43_sys_sigsetmask }, /* 110 = sigsetmask */ + { 1, s(struct sys_sigsuspend_args), + sys_sigsuspend }, /* 111 = sigsuspend */ + { 2, s(struct compat_43_sys_sigstack_args), + compat_43_sys_sigstack }, /* 112 = sigstack */ + { 3, s(struct compat_43_sys_recvmsg_args), + compat_43_sys_recvmsg }, /* 113 = recvmsg */ + { 3, s(struct compat_43_sys_sendmsg_args), + compat_43_sys_sendmsg }, /* 114 = sendmsg */ + { 0, 0, + sys_nosys }, /* 115 = obsolete vtrace */ + { 2, s(struct sys_gettimeofday_args), + sys_gettimeofday }, /* 116 = gettimeofday */ + { 2, s(struct sys_getrusage_args), + sys_getrusage }, /* 117 = getrusage */ + { 5, s(struct sys_getsockopt_args), + sys_getsockopt }, /* 118 = getsockopt */ + { 0, 0, + sys_nosys }, /* 119 = unimplemented resuba */ + { 3, s(struct sys_readv_args), + sys_readv }, /* 120 = readv */ + { 3, s(struct sys_writev_args), + sys_writev }, /* 121 = writev */ + { 2, s(struct sys_settimeofday_args), + sys_settimeofday }, /* 122 = settimeofday */ + { 3, s(struct sys_fchown_args), + sys_fchown }, /* 123 = fchown */ + { 2, s(struct sys_fchmod_args), + sys_fchmod }, /* 124 = fchmod */ + { 6, s(struct compat_43_sys_recvfrom_args), + compat_43_sys_recvfrom }, /* 125 = recvfrom */ + { 2, s(struct compat_43_sys_setreuid_args), + compat_43_sys_setreuid }, /* 126 = setreuid */ + { 2, s(struct compat_43_sys_setregid_args), + compat_43_sys_setregid }, /* 127 = setregid */ + { 2, s(struct sys_rename_args), + sys_rename }, /* 128 = rename */ + { 2, s(struct compat_43_sys_truncate_args), + compat_43_sys_truncate }, /* 129 = truncate */ + { 2, s(struct compat_43_sys_ftruncate_args), + compat_43_sys_ftruncate }, /* 130 = ftruncate */ + { 2, s(struct sys_flock_args), + sys_flock }, /* 131 = flock */ + { 0, 0, + sys_nosys }, /* 132 = unimplemented */ + { 6, s(struct sys_sendto_args), + sys_sendto }, /* 133 = sendto */ + { 2, s(struct sys_shutdown_args), + sys_shutdown }, /* 134 = shutdown */ + { 4, s(struct sys_socketpair_args), + sys_socketpair }, /* 135 = socketpair */ + { 2, s(struct sys_mkdir_args), + sys_mkdir }, /* 136 = mkdir */ + { 1, s(struct sys_rmdir_args), + sys_rmdir }, /* 137 = rmdir */ + { 2, s(struct sys_utimes_args), + sys_utimes }, /* 138 = utimes */ + { 1, s(struct ultrix_sys_sigcleanup_args), + ultrix_sys_sigcleanup }, /* 139 = sigcleanup */ + { 2, s(struct sys_adjtime_args), + sys_adjtime }, /* 140 = adjtime */ + { 3, s(struct compat_43_sys_getpeername_args), + compat_43_sys_getpeername }, /* 141 = getpeername */ + { 0, 0, + compat_43_sys_gethostid }, /* 142 = gethostid */ + { 0, 0, + sys_nosys }, /* 143 = unimplemented old sethostid */ + { 2, s(struct compat_43_sys_getrlimit_args), + compat_43_sys_getrlimit }, /* 144 = getrlimit */ + { 2, s(struct compat_43_sys_setrlimit_args), + compat_43_sys_setrlimit }, /* 145 = setrlimit */ + { 2, s(struct compat_43_sys_killpg_args), + compat_43_sys_killpg }, /* 146 = killpg */ + { 0, 0, + sys_nosys }, /* 147 = unimplemented */ + { 0, 0, + sys_nosys }, /* 148 = unimplemented setquota */ + { 0, 0, + sys_nosys }, /* 149 = unimplemented quota / * needs to be nullop to boot on Ultrix root partition * / */ + { 3, s(struct compat_43_sys_getsockname_args), + compat_43_sys_getsockname }, /* 150 = getsockname */ + { 0, 0, + sys_nosys }, /* 151 = unimplemented sysmips / * 4 args * / */ + { 0, 0, + sys_nosys }, /* 152 = unimplemented cacheflush / * 4 args * / */ + { 0, 0, + sys_nosys }, /* 153 = unimplemented cachectl / * 3 args * / */ + { 0, 0, + sys_nosys }, /* 154 = unimplemented */ + { 0, 0, + sys_nosys }, /* 155 = unimplemented atomic_op */ + { 0, 0, + sys_nosys }, /* 156 = unimplemented */ + { 0, 0, + sys_nosys }, /* 157 = unimplemented */ +#ifdef NFSSERVER + { 1, s(struct ultrix_sys_nfssvc_args), + ultrix_sys_nfssvc }, /* 158 = nfssvc */ +#else + { 0, 0, + sys_nosys }, /* 158 = unimplemented */ +#endif + { 4, s(struct compat_43_sys_getdirentries_args), + compat_43_sys_getdirentries }, /* 159 = getdirentries */ + { 2, s(struct ultrix_sys_statfs_args), + ultrix_sys_statfs }, /* 160 = statfs */ + { 2, s(struct ultrix_sys_fstatfs_args), + ultrix_sys_fstatfs }, /* 161 = fstatfs */ + { 0, 0, + sys_nosys }, /* 162 = unimplemented umount */ +#ifdef NFSCLIENT + { 0, 0, + async_daemon }, /* 163 = async_daemon */ + { 2, s(struct sys_getfh_args), + sys_getfh }, /* 164 = getfh */ +#else + { 0, 0, + sys_nosys }, /* 163 = unimplemented async_daemon */ + { 0, 0, + sys_nosys }, /* 164 = unimplemented getfh */ +#endif + { 2, s(struct compat_09_sys_getdomainname_args), + compat_09_sys_getdomainname }, /* 165 = getdomainname */ + { 2, s(struct compat_09_sys_setdomainname_args), + compat_09_sys_setdomainname }, /* 166 = setdomainname */ + { 0, 0, + sys_nosys }, /* 167 = unimplemented */ + { 4, s(struct ultrix_sys_quotactl_args), + ultrix_sys_quotactl }, /* 168 = quotactl */ + { 2, s(struct ultrix_sys_exportfs_args), + ultrix_sys_exportfs }, /* 169 = exportfs */ + { 0, 0, + sys_nosys }, /* 170 = unimplemented mount */ + { 0, 0, + sys_nosys }, /* 171 = unimplemented 4 hdwconf */ + { 0, 0, + sys_nosys }, /* 172 = unimplemented msgctl */ + { 0, 0, + sys_nosys }, /* 173 = unimplemented msgget */ + { 0, 0, + sys_nosys }, /* 174 = unimplemented msgrcv */ + { 0, 0, + sys_nosys }, /* 175 = unimplemented msgsnd */ + { 0, 0, + sys_nosys }, /* 176 = unimplemented semctl */ + { 0, 0, + sys_nosys }, /* 177 = unimplemented semget */ + { 0, 0, + sys_nosys }, /* 178 = unimplemented semop */ + { 1, s(struct ultrix_sys_uname_args), + ultrix_sys_uname }, /* 179 = uname */ + { 0, 0, + sys_nosys }, /* 180 = unimplemented shmsys */ + { 0, 0, + sys_nosys }, /* 181 = unimplemented 0 plock */ + { 0, 0, + sys_nosys }, /* 182 = unimplemented 0 lockf */ + { 2, s(struct ultrix_sys_ustat_args), + ultrix_sys_ustat }, /* 183 = ustat */ + { 0, 0, + sys_nosys }, /* 184 = unimplemented getmnt */ + { 0, 0, + sys_nosys }, /* 185 = unimplemented notdef */ + { 0, 0, + sys_nosys }, /* 186 = unimplemented notdef */ + { 1, s(struct ultrix_sys_sigpending_args), + ultrix_sys_sigpending }, /* 187 = sigpending */ + { 0, 0, + sys_setsid }, /* 188 = setsid */ + { 3, s(struct ultrix_sys_waitpid_args), + ultrix_sys_waitpid }, /* 189 = waitpid */ + { 0, 0, + sys_nosys }, /* 190 = unimplemented */ + { 0, 0, + sys_nosys }, /* 191 = unimplemented */ + { 0, 0, + sys_nosys }, /* 192 = unimplemented */ + { 0, 0, + sys_nosys }, /* 193 = unimplemented */ + { 0, 0, + sys_nosys }, /* 194 = unimplemented */ + { 0, 0, + sys_nosys }, /* 195 = unimplemented */ + { 0, 0, + sys_nosys }, /* 196 = unimplemented */ + { 0, 0, + sys_nosys }, /* 197 = unimplemented */ + { 0, 0, + sys_nosys }, /* 198 = unimplemented */ + { 0, 0, + sys_nosys }, /* 199 = unimplemented */ + { 0, 0, + sys_nosys }, /* 200 = unimplemented */ + { 0, 0, + sys_nosys }, /* 201 = unimplemented */ + { 0, 0, + sys_nosys }, /* 202 = unimplemented */ + { 0, 0, + sys_nosys }, /* 203 = unimplemented */ + { 0, 0, + sys_nosys }, /* 204 = unimplemented */ + { 0, 0, + sys_nosys }, /* 205 = unimplemented */ + { 0, 0, + sys_nosys }, /* 206 = unimplemented */ + { 0, 0, + sys_nosys }, /* 207 = unimplemented */ + { 0, 0, + sys_nosys }, /* 208 = unimplemented */ + { 0, 0, + sys_nosys }, /* 209 = unimplemented */ + { 0, 0, + sys_nosys }, /* 210 = unimplemented */ + { 0, 0, + sys_nosys }, /* 211 = unimplemented */ + { 0, 0, + sys_nosys }, /* 212 = unimplemented */ + { 0, 0, + sys_nosys }, /* 213 = unimplemented */ + { 0, 0, + sys_nosys }, /* 214 = unimplemented */ + { 0, 0, + sys_nosys }, /* 215 = unimplemented */ + { 0, 0, + sys_nosys }, /* 216 = unimplemented */ + { 0, 0, + sys_nosys }, /* 217 = unimplemented */ + { 0, 0, + sys_nosys }, /* 218 = unimplemented */ + { 0, 0, + sys_nosys }, /* 219 = unimplemented */ + { 0, 0, + sys_nosys }, /* 220 = unimplemented */ + { 0, 0, + sys_nosys }, /* 221 = unimplemented */ + { 0, 0, + sys_nosys }, /* 222 = unimplemented */ + { 0, 0, + sys_nosys }, /* 223 = unimplemented */ + { 0, 0, + sys_nosys }, /* 224 = unimplemented */ + { 0, 0, + sys_nosys }, /* 225 = unimplemented */ + { 0, 0, + sys_nosys }, /* 226 = unimplemented */ + { 0, 0, + sys_nosys }, /* 227 = unimplemented */ + { 0, 0, + sys_nosys }, /* 228 = unimplemented */ + { 0, 0, + sys_nosys }, /* 229 = unimplemented */ + { 0, 0, + sys_nosys }, /* 230 = unimplemented */ + { 0, 0, + sys_nosys }, /* 231 = unimplemented */ + { 0, 0, + sys_nosys }, /* 232 = unimplemented */ + { 0, 0, + sys_nosys }, /* 233 = unimplemented 1 utc_gettime */ + { 0, 0, + sys_nosys }, /* 234 = unimplemented 2 utc_adjtime */ + { 0, 0, + sys_nosys }, /* 235 = unimplemented */ + { 0, 0, + sys_nosys }, /* 236 = unimplemented */ + { 0, 0, + sys_nosys }, /* 237 = unimplemented */ + { 0, 0, + sys_nosys }, /* 238 = unimplemented */ + { 0, 0, + sys_nosys }, /* 239 = unimplemented */ + { 0, 0, + sys_nosys }, /* 240 = unimplemented */ + { 0, 0, + sys_nosys }, /* 241 = unimplemented */ + { 0, 0, + sys_nosys }, /* 242 = unimplemented */ + { 0, 0, + sys_nosys }, /* 243 = unimplemented */ + { 0, 0, + sys_nosys }, /* 244 = unimplemented */ + { 0, 0, + sys_nosys }, /* 245 = unimplemented */ + { 0, 0, + sys_nosys }, /* 246 = unimplemented */ + { 0, 0, + sys_nosys }, /* 247 = unimplemented */ + { 0, 0, + sys_nosys }, /* 248 = unimplemented */ + { 0, 0, + sys_nosys }, /* 249 = unimplemented */ + { 0, 0, + sys_nosys }, /* 250 = unimplemented */ + { 0, 0, + sys_nosys }, /* 251 = unimplemented */ + { 0, 0, + sys_nosys }, /* 252 = unimplemented audctl / * Make no-op for installation on Ultrix rootpartition? * / */ + { 0, 0, + sys_nosys }, /* 253 = unimplemented audgen / * Make no-op for installation on Ultrix rootpartition? * / */ + { 0, 0, + sys_nosys }, /* 254 = unimplemented startcpu */ + { 0, 0, + sys_nosys }, /* 255 = unimplemented stopcpu */ + { 5, s(struct ultrix_sys_getsysinfo_args), + ultrix_sys_getsysinfo }, /* 256 = getsysinfo */ + { 5, s(struct ultrix_sys_setsysinfo_args), + ultrix_sys_setsysinfo }, /* 257 = setsysinfo */ +}; + |