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); }