]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Fully implement vfork. Vfork is now much much faster than even our
authorJohn Dyson <dyson@FreeBSD.org>
Sun, 13 Apr 1997 01:48:35 +0000 (01:48 +0000)
committerJohn Dyson <dyson@FreeBSD.org>
Sun, 13 Apr 1997 01:48:35 +0000 (01:48 +0000)
commit5856e12e6950cdbbf627ab23ddc0d10006d8dd75
treebddd380f285bf7d3a8f4c326934ea585723eec61
parent4ff323dd450fa95949901235c99189a25477521d
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.
13 files changed:
sys/amd64/amd64/pmap.c
sys/i386/i386/pmap.c
sys/i386/ibcs2/imgact_coff.c
sys/i386/linux/imgact_linux.c
sys/kern/imgact_aout.c
sys/kern/imgact_elf.c
sys/kern/imgact_gzip.c
sys/kern/kern_exec.c
sys/kern/kern_fork.c
sys/vm/pmap.h
sys/vm/vm_extern.h
sys/vm/vm_glue.c
sys/vm/vm_map.c