Add vfork() system call

-Same semantics as fork() as it's really just a stub
-Eases porting of BSD utilities
This commit is contained in:
Arun Thomas 2011-07-22 10:55:30 +02:00
parent 159b8f71b7
commit f9ccc501f8
5 changed files with 19 additions and 6 deletions

View file

@ -91,11 +91,7 @@ system(command)
}
(void)__readlockenv();
#ifdef __minix
switch(pid = fork() ) {
#else /* !__minix */
switch(pid = vfork()) {
#endif /* !__minix */
case -1: /* error */
(void)__unlockenv();
sigaction(SIGINT, &intsa, NULL);

View file

@ -76,4 +76,3 @@ futimes
utrace
uuidgen
vadvise
vfork

View file

@ -16,7 +16,7 @@ SRCS+= accept.c access.c bind.c brk.c sbrk.c compat.S \
vectorio.c shutdown.c sigaction.c sigpending.c sigreturn.c sigsuspend.c\
sigprocmask.c socket.c socketpair.c stat.c statvfs.c symlink.c \
sync.c syscall.c sysuname.c truncate.c umask.c unlink.c write.c \
_exit.c _ucontext.c environ.c __getcwd.c
_exit.c _ucontext.c environ.c __getcwd.c vfork.c
# Minix specific syscalls.
SRCS+= cprofile.c lseek64.c sprofile.c _mcontext.c

View file

@ -0,0 +1,16 @@
#include <sys/cdefs.h>
#include "namespace.h"
#include <lib.h>
#include <unistd.h>
#ifdef __weak_alias
__weak_alias(vfork, _vfork)
#endif
PUBLIC pid_t vfork()
{
message m;
return(_syscall(PM_PROC_NR, FORK, &m));
}

View file

@ -289,6 +289,8 @@ int usleep(useconds_t);
#ifndef __LIBC12_SOURCE__
pid_t vfork(void) __RENAME(__vfork14);
#endif
#else
pid_t vfork(void);
#endif /* !__minix */
#ifndef __AUDIT__