Subject: Re: rendrib (Linux) aborts with "Bad system call"
To: None <bsieker@techfak.uni-bielefeld.de>
From: None <drochner@zel459.zel.kfa-juelich.de>
List: port-i386
Date: 01/31/1999 13:48:20
bsieker@techfak.uni-bielefeld.de said:
> What irritates me is that there is a nanosleep man page, and the
> message seems to indicate that the kernel knows about the nanosleep
> function, but it is not (yet?) implemented. 

It is implemented as NetBSD syscall, only the Linux emulation
does not know that it has to be called as Linux syscall #162.

A fix could be as easy as:

Index: syscalls.master
===================================================================
RCS file: /cvsroot/src/sys/compat/linux/Attic/syscalls.master,v
retrieving revision 1.21
diff -c -r1.21 syscalls.master
*** syscalls.master	1997/10/16 23:53:07	1.21
--- syscalls.master	1999/01/31 12:44:20
***************
*** 253,258 ****
  159	UNIMPL		sched_get_priority_max
  160	UNIMPL		sched_get_priority_min
  161	UNIMPL		sched_rr_get_interval
! 162	UNIMPL		nanosleep
  163	STD		{ void *linux_sys_mremap(void *old_address, \
  			    size_t old_size, size_t new_size, u_long flags); }
--- 253,259 ----
  159	UNIMPL		sched_get_priority_max
  160	UNIMPL		sched_get_priority_min
  161	UNIMPL		sched_rr_get_interval
! 162	NOARGS		{ int sys_nanosleep(const struct timespec *rqtp, \
! 				struct timespec *rmtp); }
  163	STD		{ void *linux_sys_mremap(void *old_address, \
  			    size_t old_size, size_t new_size, u_long flags); }

Then run "make" in sys/compat/linux and recompile the kernel.

best regards
Matthias