summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_fork.c
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2004-04-02 19:08:58 +0000
committertedu <tedu@openbsd.org>2004-04-02 19:08:58 +0000
commitf40a091c8af42940d612a106d1511d3117939c3c (patch)
treeee11dc484e1bdf68f94d5d582fb1c01e42791188 /sys/kern/kern_fork.c
parentDocument --line-buffered (diff)
downloadwireguard-openbsd-f40a091c8af42940d612a106d1511d3117939c3c.tar.xz
wireguard-openbsd-f40a091c8af42940d612a106d1511d3117939c3c.zip
rfork(RFMEM) shares complete vmspace. much more useful, and in line with
other projects' implementations.
Diffstat (limited to 'sys/kern/kern_fork.c')
-rw-r--r--sys/kern/kern_fork.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
index f137d22b431..cbcbc568c91 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_fork.c,v 1.63 2003/09/23 20:26:18 millert Exp $ */
+/* $OpenBSD: kern_fork.c,v 1.64 2004/04/02 19:08:58 tedu Exp $ */
/* $NetBSD: kern_fork.c,v 1.29 1996/02/09 18:59:34 christos Exp $ */
/*
@@ -44,6 +44,7 @@
#include <sys/malloc.h>
#include <sys/mount.h>
#include <sys/proc.h>
+#include <sys/exec.h>
#include <sys/resourcevar.h>
#include <sys/signalvar.h>
#include <sys/vnode.h>
@@ -118,7 +119,7 @@ sys_rfork(struct proc *p, void *v, register_t *retval)
flags |= FORK_NOZOMBIE;
if (rforkflags & RFMEM)
- flags |= FORK_VMNOSTACK;
+ flags |= FORK_SHAREVM;
return (fork1(p, SIGCHLD, flags, NULL, 0, NULL, NULL, retval));
}
@@ -292,23 +293,6 @@ fork1(struct proc *p1, int exitsig, int flags, void *stack, size_t stacksize,
*/
PHOLD(p1);
- if (flags & FORK_VMNOSTACK) {
- /* share everything, but ... */
- uvm_map_inherit(&p1->p_vmspace->vm_map,
- VM_MIN_ADDRESS, VM_MAXUSER_ADDRESS,
- MAP_INHERIT_SHARE);
- /* ... don't share stack */
-#ifdef MACHINE_STACK_GROWS_UP
- uvm_map_inherit(&p1->p_vmspace->vm_map,
- USRSTACK, USRSTACK + MAXSSIZ,
- MAP_INHERIT_COPY);
-#else
- uvm_map_inherit(&p1->p_vmspace->vm_map,
- USRSTACK - MAXSSIZ, USRSTACK,
- MAP_INHERIT_COPY);
-#endif
- }
-
p2->p_addr = (struct user *)uaddr;
/*