diff --git a/sys/compat/svr4/svr4_misc.c b/sys/compat/svr4/svr4_misc.c index 243bc9fbc2b4..1f8e5b4035d5 100644 --- a/sys/compat/svr4/svr4_misc.c +++ b/sys/compat/svr4/svr4_misc.c @@ -1,4 +1,4 @@ -/* $NetBSD: svr4_misc.c,v 1.30 1996/01/30 20:05:33 mycroft Exp $ */ +/* $NetBSD: svr4_misc.c,v 1.31 1996/02/02 01:17:24 christos Exp $ */ /* * Copyright (c) 1994 Christos Zoulas @@ -92,6 +92,9 @@ static void bsd_statfs_to_svr4_statvfs __P((const struct statfs *, struct svr4_statvfs *)); static struct proc *svr4_pfind __P((pid_t pid)); +static int svr4_mknod __P((struct proc *, register_t *, char *, + svr4_dev_t, svr4_mode_t)); + int svr4_sys_wait(p, v, retval) register struct proc *p; @@ -360,6 +363,32 @@ svr4_sys_fchroot(p, v, retval) return 0; } +static int +svr4_mknod(p, retval, path, dev, mode) + struct proc *p; + register_t *retval; + char *path; + svr4_dev_t dev; + svr4_mode_t mode; +{ + caddr_t sg = stackgap_init(p->p_emul); + + SVR4_CHECK_ALT_EXIST(p, &sg, path); + + if (S_ISFIFO(mode)) { + struct sys_mkfifo_args ap; + SCARG(&ap, path) = path; + SCARG(&ap, mode) = mode; + return sys_mkfifo(p, &ap, retval); + } else { + struct sys_mknod_args ap; + SCARG(&ap, path) = path; + SCARG(&ap, mode) = mode; + SCARG(&ap, dev) = dev; + return sys_mknod(p, &ap, retval); + } +} + int svr4_sys_mknod(p, v, retval) @@ -368,23 +397,23 @@ svr4_sys_mknod(p, v, retval) register_t *retval; { struct svr4_sys_mknod_args *uap = v; - caddr_t sg = stackgap_init(p->p_emul); - SVR4_CHECK_ALT_EXIST(p, &sg, SCARG(uap, path)); - - if (S_ISFIFO(SCARG(uap, mode))) { - struct sys_mkfifo_args ap; - SCARG(&ap, path) = SCARG(uap, path); - SCARG(&ap, mode) = SCARG(uap, mode); - return sys_mkfifo(p, &ap, retval); - } else { - struct sys_mknod_args ap; - SCARG(&ap, path) = SCARG(uap, path); - SCARG(&ap, mode) = SCARG(uap, mode); - SCARG(&ap, dev) = SCARG(uap, dev); - return sys_mknod(p, &ap, retval); - } + return svr4_mknod(p, retval, + SCARG(uap, path), SCARG(uap, dev), SCARG(uap, mode)); } + +int +svr4_sys_xmknod(p, v, retval) + register struct proc *p; + void *v; + register_t *retval; +{ + struct svr4_sys_xmknod_args *uap = v; + return svr4_mknod(p, retval, + SCARG(uap, path), SCARG(uap, dev), SCARG(uap, mode)); +} + + int svr4_sys_vhangup(p, v, retval) struct proc *p; diff --git a/sys/compat/svr4/syscalls.master b/sys/compat/svr4/syscalls.master index fb07135a50df..de5255ed4ec7 100644 --- a/sys/compat/svr4/syscalls.master +++ b/sys/compat/svr4/syscalls.master @@ -1,4 +1,4 @@ - $NetBSD: syscalls.master,v 1.15 1995/12/19 07:13:27 christos Exp $ + $NetBSD: syscalls.master,v 1.16 1996/02/02 01:17:28 christos Exp $ ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 @@ -209,7 +209,8 @@ struct svr4_xstat *ub); } 125 STD { int svr4_sys_fxstat(int two, int fd, \ struct svr4_xstat *sb); } -126 UNIMPL xmknod +126 STD { int svr4_sys_xmknod(int two, char *path, \ + svr4_dev_t dev, svr4_mode_t mode); } 127 UNIMPL clocal 128 STD { int svr4_sys_setrlimit(int which, \ struct ogetrlimit *rlp); }