Subject: Re: X and Solaris 2.4 X binaries, good and the bad.
To: None <netbsd-help@NetBSD.ORG>
From: Christos Zoulas <christos@deshaw.com>
List: netbsd-help
Date: 02/02/1996 01:17:32
In article <310FFF25@ms-mail.datastorm.com> JohnAM@datastorm.com (John Maier) writes:
>
>I did ktrace + kdump and this is what I get at the end of the file.
>
> 13756 filemgr CALL #126 (unimplemented xmknod)
> 13756 filemgr PSIG SIGSYS SIG_DFL
> 13756 filemgr NAMI "filemgr.core"
>
>Can anyone identify if this is a Solaris(svr4) system call or is in
>suppose to be in the kernel?
>
It is supposed to be in the kernel and I just committed a fix for it.
christos
*** svr4_misc.c.dist Thu Feb 1 19:19:21 1996
--- svr4_misc.c Thu Feb 1 19:58:45 1996
***************
*** 92,97 ****
--- 92,100 ----
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;
***************
*** 363,393 ****
return 0;
}
!
! int
! svr4_sys_mknod(p, v, retval)
! register struct proc *p;
! void *v;
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);
}
}
int
svr4_sys_vhangup(p, v, retval)
struct proc *p;
--- 366,422 ----
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)
+ register struct proc *p;
+ void *v;
+ register_t *retval;
+ {
+ struct svr4_sys_mknod_args *uap = v;
+ 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;
*** syscalls.master.dist Mon Jan 8 14:40:38 1996
--- syscalls.master Thu Feb 1 19:33:08 1996
***************
*** 209,215 ****
struct svr4_xstat *ub); }
125 STD { int svr4_sys_fxstat(int two, int fd, \
struct svr4_xstat *sb); }
! 126 UNIMPL xmknod
127 UNIMPL clocal
128 STD { int svr4_sys_setrlimit(int which, \
struct ogetrlimit *rlp); }
--- 209,216 ----
struct svr4_xstat *ub); }
125 STD { int svr4_sys_fxstat(int two, int fd, \
struct svr4_xstat *sb); }
! 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); }