From owner-cvs-sys Sat Apr 12 18:48:44 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id SAA09406 for cvs-sys-outgoing; Sat, 12 Apr 1997 18:48:44 -0700 (PDT) Received: (from dyson@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id SAA09397; Sat, 12 Apr 1997 18:48:40 -0700 (PDT) Date: Sat, 12 Apr 1997 18:48:40 -0700 (PDT) From: John Dyson Message-Id: <199704130148.SAA09397@freefall.freebsd.org> To: CVS-committers, cvs-all, cvs-sys Subject: cvs commit: src/sys/i386/ibcs2 imgact_coff.c src/sys/i386/i386 pmap.c src/sys/i386/linux imgact_linux.c src/sys/kern imgact_aout.c imgact_elf.c imgact_gzip.c kern_exec.c kern_fork.c src/sys/vm pmap.h vm_extern.h vm_glue.c vm_map.c Sender: owner-cvs-sys@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk dyson 97/04/12 18:48:39 Modified: sys/i386/i386 pmap.c sys/i386/ibcs2 imgact_coff.c sys/i386/linux imgact_linux.c sys/kern imgact_aout.c imgact_elf.c imgact_gzip.c kern_exec.c kern_fork.c sys/vm pmap.h vm_extern.h vm_glue.c vm_map.c Log: Fully implement vfork. Vfork is now much much faster than even our fork. (On my machine, fork is about 240usecs, vfork is 78usecs.) Implement rfork(!RFPROC !RFMEM), which allows a thread to divorce its memory from the other threads of a group. Implement rfork(!RFPROC RFCFDG), which closes all file descriptors, eliminating possible existing shares with other threads/processes. Implement rfork(!RFPROC RFFDG), which divorces the file descriptors for a thread from the rest of the group. Fix the case where a thread does an exec. It is almost nonsense for a thread to modify the other threads address space by an exec, so we now automatically divorce the address space before modifying it. Revision Changes Path 1.140 +10 -1 src/sys/i386/i386/pmap.c 1.24 +3 -2 src/sys/i386/ibcs2/imgact_coff.c 1.22 +3 -2 src/sys/i386/linux/imgact_linux.c 1.34 +7 -2 src/sys/kern/imgact_aout.c 1.19 +4 -2 src/sys/kern/imgact_elf.c 1.29 +4 -2 src/sys/kern/imgact_gzip.c 1.60 +3 -1 src/sys/kern/kern_exec.c 1.35 +44 -4 src/sys/kern/kern_fork.c 1.20 +2 -1 src/sys/vm/pmap.h 1.34 +3 -1 src/sys/vm/vm_extern.h 1.63 +7 -5 src/sys/vm/vm_glue.c 1.76 +53 -1 src/sys/vm/vm_map.c