from netbsd:
authorderaadt <deraadt@openbsd.org>
Mon, 8 Jan 1996 19:30:21 +0000 (19:30 +0000)
committerderaadt <deraadt@openbsd.org>
Mon, 8 Jan 1996 19:30:21 +0000 (19:30 +0000)
Add '/emul/ultrix' pathname processing to Ultrix emulation, and move
Ultrix syscalls that require that processing out of ultrix_misc.c
to ultrix_pathname.c.

sys/compat/ultrix/files.ultrix
sys/compat/ultrix/syscalls.master
sys/compat/ultrix/ultrix_misc.c
sys/compat/ultrix/ultrix_pathname.c [new file with mode: 0644]
sys/compat/ultrix/ultrix_syscall.h
sys/compat/ultrix/ultrix_syscallargs.h
sys/compat/ultrix/ultrix_syscalls.c
sys/compat/ultrix/ultrix_sysent.c
sys/compat/ultrix/ultrix_util.h [new file with mode: 0644]

index 1e2fc3d..7425a11 100644 (file)
@@ -1,4 +1,4 @@
-#      $NetBSD: files.ultrix,v 1.2 1995/12/26 04:22:30 jonathan Exp $
+#      $NetBSD: files.ultrix,v 1.3 1996/01/07 13:38:49 jonathan Exp $
 #
 # Config file description for machine-independent Ultrix compat code.
 # Included by ports that need it.
@@ -6,6 +6,7 @@
 # ports should define any machine-specific files they need in their
 # own file lists.
 
+file   compat/ultrix/ultrix_pathname.c         compat_ultrix
 file   compat/ultrix/ultrix_ioctl.c            compat_ultrix
 file   compat/ultrix/ultrix_misc.c             compat_ultrix
 file   compat/ultrix/ultrix_syscalls.c         compat_ultrix
index 7fb63c6..d37a971 100644 (file)
@@ -1,4 +1,4 @@
-       $NetBSD: syscalls.master,v 1.14 1995/12/26 10:06:15 jonathan Exp $
+       $NetBSD: syscalls.master,v 1.15 1996/01/07 13:38:57 jonathan Exp $
 
 ;      @(#)syscalls.master     8.1 (Berkeley) 7/19/93
 
@@ -47,7 +47,7 @@
                            int mode); }
 6      NOARGS          { int sys_close(int fd); }
 7      NOARGS          { int compat_43_sys_wait(void); } owait
-8      NOARGS          { int compat_43_sys_creat(char *path, int mode); }
+8      STD             { int ultrix_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); }
 30     OBSOL           v7 utime
 31     OBSOL           v7 stty
 32     OBSOL           v7 gtty
-33     NOARGS          { int sys_access(char *path, int flags); }
+33     STD             { int ultrix_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, \
+38     STD             { int ultrix_sys_stat(char *path, \
                            struct ostat *ub); } ostat
 39     OBSOL           v7 setpgrp
-40     NOARGS          { int compat_43_sys_lstat(char *path, \
+40     STD             { int ultrix_sys_lstat(char *path, \
                            struct ostat *ub); } olstat
 41     NOARGS          { int sys_dup(u_int fd); }
 42     NOARGS          { int sys_pipe(void); }
index eca5fa1..1f5b534 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: ultrix_misc.c,v 1.19 1996/01/03 21:07:33 jonathan Exp $        */
+/*     $NetBSD: ultrix_misc.c,v 1.20 1996/01/07 13:38:51 jonathan Exp $        */
 
 /*
  * Copyright (c) 1992, 1993
@@ -60,9 +60,9 @@
 #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/stat.h>*/
+/*#include <sys/ioctl.h>*/
 #include <sys/kernel.h>
 #include <sys/exec.h>
 #include <sys/malloc.h>
@@ -79,6 +79,7 @@
 #include <sys/wait.h>
 #include <sys/utsname.h>
 #include <sys/unistd.h>
+
 #include <sys/syscallargs.h>
 
 #include <compat/ultrix/ultrix_syscall.h>
@@ -111,7 +112,6 @@ struct emul emul_ultrix = {
        0,
        copyargs,
        cpu_exec_ecoff_setregs,
-       /* 0, 0, */
        sigcode,
        esigcode,
 };
@@ -181,21 +181,11 @@ ultrix_sys_wait3(p, v, retval)
        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));
-}
-
+/*
+ * Ultrix binaries pass in FD_MAX as the first arg to select().
+ * On Ultrix, that is 4096, which is more than the NetBSD sys_select()
+ * can handle.
+ */
 ultrix_sys_select(p, v, retval)
        struct proc *p;
        void *v;
@@ -260,6 +250,7 @@ struct dirent {
 
 #define        SUN__MAP_NEW    0x80000000      /* if not, old mmap & cannot handle */
 
+int
 ultrix_sys_mmap(p, v, retval)
        register struct proc *p;
        void *v;
@@ -357,6 +348,7 @@ struct ultrix_utsname {
        char    machine[9];
 };
 
+int
 ultrix_sys_uname(p, v, retval)
        struct proc *p;
        void *v;
@@ -400,40 +392,8 @@ ultrix_sys_setpgrp(p, v, retval)
                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 open flags into NetBSD flags */
-       l = SCARG(uap, flags);
-       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)
+int
 ultrix_sys_nfssvc(p, v, retval)
        struct proc *p;
        void *v;
@@ -473,6 +433,7 @@ struct ultrix_ustat {
        char    f_fpack[6];     /* filsys pack name */
 };
 
+int
 ultrix_sys_ustat(p, v, retval)
        struct proc *p;
        void *v;
@@ -494,6 +455,7 @@ ultrix_sys_ustat(p, v, retval)
        return 0;
 }
 
+int
 ultrix_sys_quotactl(p, v, retval)
        struct proc *p;
        void *v;
@@ -504,6 +466,7 @@ ultrix_sys_quotactl(p, v, retval)
        return EINVAL;
 }
 
+int
 ultrix_sys_vhangup(p, v, retval)
        struct proc *p;
        void *v;
@@ -513,81 +476,7 @@ ultrix_sys_vhangup(p, v, 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));
-}
-
+int
 ultrix_sys_exportfs(p, v, retval)
        struct proc *p;
        void *v;
@@ -602,20 +491,6 @@ ultrix_sys_exportfs(p, v, retval)
        return 0;
 }
 
-int
-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_sigpending(p, v, retval)
        struct proc *p;
diff --git a/sys/compat/ultrix/ultrix_pathname.c b/sys/compat/ultrix/ultrix_pathname.c
new file mode 100644 (file)
index 0000000..2175ac4
--- /dev/null
@@ -0,0 +1,304 @@
+/*     $NetBSD: ultrix_pathname.c,v 1.1 1996/01/07 13:38:52 jonathan 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 
+ */
+
+
+/*
+ * Ultrix emulation filesystem-namespace compatibility module.
+ *
+ * Ultrix system calls that examine the filesysten namespace
+ * are implemented here.  Each system call has a wrapper that
+ * first checks if the given file exists at a special `emulation'
+ * pathname: the given path, prefixex with '/emul/ultrix', and
+ * if that pathname exists, it is used instead of the providd pathname.
+ *
+ * Used to locate OS-specific files (shared libraries, config files,
+ * etc) used by emul processes at their `normal' pathnames, without
+ * polluting, or conflicting with, the native filesysten namespace.
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/namei.h>
+#include <sys/file.h>
+#include <sys/filedesc.h>
+#include <sys/ioctl.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/vnode.h>
+#include <sys/syscallargs.h>
+
+#include <compat/ultrix/ultrix_syscallargs.h>
+#include <compat/ultrix/ultrix_util.h>
+
+const char ultrix_emul_path[] = "/emul/ultrix";
+
+int
+ultrix_sys_creat(p, v, retval)
+       struct proc *p;
+       void *v;
+       register_t *retval;
+{
+       struct ultrix_sys_creat_args *uap = v;
+       struct sys_open_args ouap;
+
+       caddr_t sg = stackgap_init(p->p_emul);
+       ULTRIX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
+
+       SCARG(&ouap, path) = SCARG(uap, path);
+       SCARG(&ouap, flags) = O_WRONLY | O_CREAT | O_TRUNC;
+       SCARG(&ouap, mode) = SCARG(uap, mode);
+
+       return (sys_open(p, &ouap, retval));
+}
+
+
+int
+ultrix_sys_access(p, v, retval)
+       struct proc *p;
+       void *v;
+       register_t *retval;
+{
+       struct ultrix_sys_access_args *uap = v;
+       caddr_t sg = stackgap_init(p->p_emul);
+       ULTRIX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
+
+       return (sys_access(p, uap, retval));
+}
+
+int
+ultrix_sys_stat(p, v, retval)
+       struct proc *p;
+       void *v;
+       register_t *retval;
+{
+       struct ultrix_sys_stat_args *uap = v;
+       caddr_t sg = stackgap_init(p->p_emul);
+       ULTRIX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
+
+       return (compat_43_sys_stat(p, uap, retval));
+}
+
+int
+ultrix_sys_lstat(p, v, retval)
+       struct proc *p;
+       void *v;
+       register_t *retval;
+{
+       struct ultrix_sys_lstat_args *uap = v;
+       caddr_t sg = stackgap_init(p->p_emul);
+       ULTRIX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
+
+       return (compat_43_sys_lstat(p, uap, retval));
+}
+
+int
+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;
+
+       caddr_t sg = stackgap_init(p->p_emul);
+       ULTRIX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
+
+       SCARG(&ouap, path) = SCARG(uap, path);
+       SCARG(&ouap, argp) = SCARG(uap, argp);
+       SCARG(&ouap, envp) = NULL;
+
+       return (sys_execve(p, &ouap, retval));
+}
+
+int
+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;
+       
+       caddr_t sg = stackgap_init(p->p_emul);
+       ULTRIX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
+
+       /* convert open flags into NetBSD flags */
+       l = SCARG(uap, flags);
+       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;
+}
+
+
+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 */
+};
+
+/*
+ * Custruct ultrix statfs result from native. 
+ * XXX should this be the same as returned by Ultrix getmnt(2)?
+ * XXX Ultrix predates DEV_BSIZE.  Is  conversion of disk space from 1k
+ *  block units to DEV_BSIZE necessary? 
+ */
+static int
+ultrixstatfs(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);
+}
+
+
+int
+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;
+
+       caddr_t sg = stackgap_init(p->p_emul);
+       ULTRIX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
+
+       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 ultrixstatfs(sp, (caddr_t)SCARG(uap, buf));
+}
+
+/*
+ * sys_fstatfs() takes an fd, not a path, and so needs no emul
+ * pathname processing;  but it's similar enough to sys_statfs() that
+ * it goes here anyway.
+ */
+int
+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 ultrixstatfs(sp, (caddr_t)SCARG(uap, buf));
+}
+
+int
+ultrix_sys_mknod(p, v, retval)
+       struct proc *p;
+       void *v;
+       register_t *retval;
+{
+       struct ultrix_sys_mknod_args *uap = v;
+
+       caddr_t sg = stackgap_init(p->p_emul);
+       ULTRIX_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path));
+
+       if (S_ISFIFO(SCARG(uap, mode)))
+               return sys_mkfifo(p, uap, retval);
+
+       return sys_mknod(p, (struct sys_mknod_args *)uap, retval);
+}
index ecf9d58..97d853e 100644 (file)
@@ -2,7 +2,7 @@
  * 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 
+ * created from        NetBSD: syscalls.master,v 1.14 1995/12/26 10:06:15 jonathan Exp 
  */
 
 #define        ULTRIX_SYS_syscall      0
index 0b30b52..06a3470 100644 (file)
@@ -2,7 +2,7 @@
  * 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 
+ * created from        NetBSD: syscalls.master,v 1.14 1995/12/26 10:06:15 jonathan Exp 
  */
 
 #define        syscallarg(x)   union { x datum; register_t pad; }
@@ -13,6 +13,11 @@ struct ultrix_sys_open_args {
        syscallarg(int) mode;
 };
 
+struct ultrix_sys_creat_args {
+       syscallarg(char *) path;
+       syscallarg(int) mode;
+};
+
 struct ultrix_sys_execv_args {
        syscallarg(char *) path;
        syscallarg(char **) argp;
@@ -32,6 +37,21 @@ struct ultrix_sys_mount_args {
        syscallarg(caddr_t) data;
 };
 
+struct ultrix_sys_access_args {
+       syscallarg(char *) path;
+       syscallarg(int) flags;
+};
+
+struct ultrix_sys_stat_args {
+       syscallarg(char *) path;
+       syscallarg(struct ostat *) ub;
+};
+
+struct ultrix_sys_lstat_args {
+       syscallarg(char *) path;
+       syscallarg(struct ostat *) ub;
+};
+
 struct ultrix_sys_ioctl_args {
        syscallarg(int) fd;
        syscallarg(u_long) com;
@@ -159,7 +179,7 @@ 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_wait      __P((struct proc *, void *, register_t *));
-int    compat_43_sys_creat     __P((struct proc *, void *, register_t *));
+int    ultrix_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 *));
@@ -173,11 +193,11 @@ int       sys_getpid      __P((struct proc *, void *, register_t *));
 int    ultrix_sys_mount        __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    ultrix_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    ultrix_sys_stat __P((struct proc *, void *, register_t *));
+int    ultrix_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 *));
index cd6cfe6..b606612 100644 (file)
@@ -2,7 +2,7 @@
  * 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 
+ * created from        NetBSD: syscalls.master,v 1.14 1995/12/26 10:06:15 jonathan Exp 
  */
 
 char *ultrix_syscallnames[] = {
index 13a5395..4ccde20 100644 (file)
@@ -2,7 +2,7 @@
  * 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 
+ * created from        NetBSD: syscalls.master,v 1.14 1995/12/26 10:06:15 jonathan Exp 
  */
 
 #include <sys/param.h>
@@ -49,8 +49,8 @@ struct sysent ultrix_sysent[] = {
            sys_close },                        /* 6 = close */
        { 0, 0,
            compat_43_sys_wait },               /* 7 = owait */
-       { 2, s(struct compat_43_sys_creat_args),
-           compat_43_sys_creat },              /* 8 = creat */
+       { 2, s(struct ultrix_sys_creat_args),
+           ultrix_sys_creat },                 /* 8 = creat */
        { 2, s(struct sys_link_args),
            sys_link },                         /* 9 = link */
        { 1, s(struct sys_unlink_args),
@@ -99,8 +99,8 @@ struct sysent ultrix_sysent[] = {
            sys_nosys },                        /* 31 = obsolete v7 stty */
        { 0, 0,
            sys_nosys },                        /* 32 = obsolete v7 gtty */
-       { 2, s(struct sys_access_args),
-           sys_access },                       /* 33 = access */
+       { 2, s(struct ultrix_sys_access_args),
+           ultrix_sys_access },                /* 33 = access */
        { 0, 0,
            sys_nosys },                        /* 34 = obsolete v7 nice */
        { 0, 0,
@@ -109,12 +109,12 @@ struct sysent ultrix_sysent[] = {
            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 */
+       { 2, s(struct ultrix_sys_stat_args),
+           ultrix_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 */
+       { 2, s(struct ultrix_sys_lstat_args),
+           ultrix_sys_lstat },                 /* 40 = olstat */
        { 1, s(struct sys_dup_args),
            sys_dup },                          /* 41 = dup */
        { 0, 0,
diff --git a/sys/compat/ultrix/ultrix_util.h b/sys/compat/ultrix/ultrix_util.h
new file mode 100644 (file)
index 0000000..fe908ae
--- /dev/null
@@ -0,0 +1,41 @@
+/*     $NetBSD: ultrix_util.h,v 1.1 1996/01/07 13:38:57 jonathan Exp $ */
+
+/*
+ * Copyright (c) 1994 Christos Zoulas
+ * Copyright (c) 1995 Matthew Green
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#ifndef        _ULTRIX_UTIL_H_
+#define        _ULTRIX_UTIL_H_
+
+#include <compat/common/compat_util.h>
+
+extern const char ultrix_emul_path[];
+
+#define ULTRIX_CHECK_ALT_EXIST(p, sgp, path) \
+    CHECK_ALT_EXIST(p, sgp, ultrix_emul_path, path)
+
+#endif /* !_ULTRIX_UTIL_H_ */