diff options
Diffstat (limited to 'sys/kern/kern_fork.c')
-rw-r--r-- | sys/kern/kern_fork.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index ef16a476ee7..364e767b3f6 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_fork.c,v 1.23 1999/08/15 00:07:43 pjanzen Exp $ */ +/* $OpenBSD: kern_fork.c,v 1.24 1999/08/17 10:32:18 niklas Exp $ */ /* $NetBSD: kern_fork.c,v 1.29 1996/02/09 18:59:34 christos Exp $ */ /* @@ -78,7 +78,7 @@ sys_fork(p, v, retval) void *v; register_t *retval; { - return (fork1(p, ISFORK, 0, retval)); + return (fork1(p, ISFORK, 0, NULL, 0, retval)); } /*ARGSUSED*/ @@ -88,7 +88,7 @@ sys_vfork(p, v, retval) void *v; register_t *retval; { - return (fork1(p, ISVFORK, 0, retval)); + return (fork1(p, ISVFORK, 0, NULL, 0, retval)); } int @@ -101,14 +101,16 @@ sys_rfork(p, v, retval) syscallarg(int) flags; } */ *uap = v; - return (fork1(p, ISRFORK, SCARG(uap, flags), retval)); + return (fork1(p, ISRFORK, SCARG(uap, flags), NULL, 0, retval)); } int -fork1(p1, forktype, rforkflags, retval) +fork1(p1, forktype, rforkflags, stack, stacksize, retval) register struct proc *p1; int forktype; int rforkflags; + void *stack; + size_t stacksize; register_t *retval; { register struct proc *p2; @@ -334,7 +336,7 @@ again: */ retval[0] = 0; retval[1] = 1; - if (vm_fork(p1, p2)) + if (vm_fork(p1, p2, stack, stacksize)) return (0); #else /* @@ -342,9 +344,11 @@ again: * different path later. */ #if defined(UVM) - uvm_fork(p1, p2, (forktype == ISRFORK && (rforkflags & RFMEM)) ? TRUE : FALSE); + uvm_fork(p1, p2, + (forktype == ISRFORK && (rforkflags & RFMEM)) ? TRUE : FALSE, + stack, stacksize); #else /* UVM */ - vm_fork(p1, p2); + vm_fork(p1, p2, stack, stacksize); #endif /* UVM */ #endif vm = p2->p_vmspace; |