Subject: CVS commit: src/sys
To: None <source-changes@NetBSD.org>
From: Jaromir Dolecek <jdolecek@netbsd.org>
List: source-changes
Date: 01/04/2004 11:33:32
Module Name:	src
Committed By:	jdolecek
Date:		Sun Jan  4 11:33:32 UTC 2004

Modified Files:
	src/sys/arch/acorn26/acorn26: vm_machdep.c
	src/sys/arch/alpha/alpha: vm_machdep.c
	src/sys/arch/alpha/include: cpu.h
	src/sys/arch/amd64/amd64: vm_machdep.c
	src/sys/arch/amiga/include: cpu.h
	src/sys/arch/amigappc/include: cpu.h
	src/sys/arch/arm/arm32: vm_machdep.c
	src/sys/arch/arm/include: cpu.h
	src/sys/arch/atari/include: cpu.h
	src/sys/arch/cesfic/include: cpu.h
	src/sys/arch/hp300/include: cpu.h
	src/sys/arch/hp700/include: cpu.h
	src/sys/arch/hppa/hppa: vm_machdep.c
	src/sys/arch/i386/i386: vm_machdep.c
	src/sys/arch/luna68k/include: cpu.h
	src/sys/arch/m68k/m68k: switch_subr.s vm_machdep.c
	src/sys/arch/mac68k/include: cpu.h
	src/sys/arch/mips/include: cpu.h
	src/sys/arch/mips/mips: vm_machdep.c
	src/sys/arch/mvme68k/include: cpu.h
	src/sys/arch/news68k/include: cpu.h
	src/sys/arch/next68k/include: cpu.h
	src/sys/arch/pc532/include: cpu.h
	src/sys/arch/pc532/pc532: vm_machdep.c
	src/sys/arch/pdp10/pdp10: machdep.c
	src/sys/arch/powerpc/include: cpu.h
	src/sys/arch/powerpc/powerpc: vm_machdep.c
	src/sys/arch/sh3/include: cpu.h
	src/sys/arch/sh3/sh3: vm_machdep.c
	src/sys/arch/sh5/include: cpu.h
	src/sys/arch/sh5/sh5: vm_machdep.c
	src/sys/arch/sparc/include: cpu.h
	src/sys/arch/sparc/sparc: vm_machdep.c
	src/sys/arch/sparc64/include: cpu.h
	src/sys/arch/sparc64/sparc64: vm_machdep.c
	src/sys/arch/sun3/include: cpu.h
	src/sys/arch/sun68k/include: cpu.h
	src/sys/arch/vax/include: cpu.h
	src/sys/arch/vax/vax: subr.S
	src/sys/arch/x68k/include: cpu.h
	src/sys/kern: init_main.c kern_exit.c kern_lwp.c kern_proc.c
	src/sys/sys: lwp.h proc.h
	src/sys/uvm: uvm_extern.h uvm_glue.c uvm_pdaemon.c

Log Message:
Rearrange process exit path to avoid need to free resources from different
process context ('reaper').

From within the exiting process context:
* deactivate pmap and free vmspace while we can still block
* introduce MD cpu_lwp_free() - this cleans all MD-specific context (such
  as FPU state), and is the last potentially blocking operation;
  all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free()
* process is now immediatelly marked as zombie and made available for pickup
  by parent; the remaining last lwp continues the exit as fully detached
* MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same
  for both 'process' and 'lwp' exit

uvm_lwp_exit() is modified to never block; the u-area memory is now
always just linked to the list of available u-areas. Introduce (blocking)
uvm_uarea_drain(), which is called to release the excessive u-area memory;
this is called by parent within wait4(), or by pagedaemon on memory shortage.
uvm_uarea_free() is now private function within uvm_glue.c.

MD process/lwp exit code now always calls lwp_exit2() immediatelly after
switching away from the exiting lwp.

g/c now unneeded routines and variables, including the reaper kernel thread


To generate a diff of this commit:
cvs rdiff -r1.6 -r1.7 src/sys/arch/acorn26/acorn26/vm_machdep.c
cvs rdiff -r1.80 -r1.81 src/sys/arch/alpha/alpha/vm_machdep.c
cvs rdiff -r1.61 -r1.62 src/sys/arch/alpha/include/cpu.h
cvs rdiff -r1.3 -r1.4 src/sys/arch/amd64/amd64/vm_machdep.c
cvs rdiff -r1.56 -r1.57 src/sys/arch/amiga/include/cpu.h
cvs rdiff -r1.10 -r1.11 src/sys/arch/amigappc/include/cpu.h
cvs rdiff -r1.30 -r1.31 src/sys/arch/arm/arm32/vm_machdep.c
cvs rdiff -r1.34 -r1.35 src/sys/arch/arm/include/cpu.h
cvs rdiff -r1.42 -r1.43 src/sys/arch/atari/include/cpu.h
cvs rdiff -r1.7 -r1.8 src/sys/arch/cesfic/include/cpu.h
cvs rdiff -r1.42 -r1.43 src/sys/arch/hp300/include/cpu.h
cvs rdiff -r1.9 -r1.10 src/sys/arch/hp700/include/cpu.h
cvs rdiff -r1.8 -r1.9 src/sys/arch/hppa/hppa/vm_machdep.c
cvs rdiff -r1.112 -r1.113 src/sys/arch/i386/i386/vm_machdep.c
cvs rdiff -r1.7 -r1.8 src/sys/arch/luna68k/include/cpu.h
cvs rdiff -r1.8 -r1.9 src/sys/arch/m68k/m68k/switch_subr.s
cvs rdiff -r1.6 -r1.7 src/sys/arch/m68k/m68k/vm_machdep.c
cvs rdiff -r1.73 -r1.74 src/sys/arch/mac68k/include/cpu.h
cvs rdiff -r1.71 -r1.72 src/sys/arch/mips/include/cpu.h
cvs rdiff -r1.99 -r1.100 src/sys/arch/mips/mips/vm_machdep.c
cvs rdiff -r1.28 -r1.29 src/sys/arch/mvme68k/include/cpu.h
cvs rdiff -r1.16 -r1.17 src/sys/arch/news68k/include/cpu.h
cvs rdiff -r1.25 -r1.26 src/sys/arch/next68k/include/cpu.h
cvs rdiff -r1.37 -r1.38 src/sys/arch/pc532/include/cpu.h
cvs rdiff -r1.58 -r1.59 src/sys/arch/pc532/pc532/vm_machdep.c
cvs rdiff -r1.4 -r1.5 src/sys/arch/pdp10/pdp10/machdep.c
cvs rdiff -r1.38 -r1.39 src/sys/arch/powerpc/include/cpu.h
cvs rdiff -r1.57 -r1.58 src/sys/arch/powerpc/powerpc/vm_machdep.c
cvs rdiff -r1.32 -r1.33 src/sys/arch/sh3/include/cpu.h
cvs rdiff -r1.39 -r1.40 src/sys/arch/sh3/sh3/vm_machdep.c
cvs rdiff -r1.11 -r1.12 src/sys/arch/sh5/include/cpu.h
cvs rdiff -r1.7 -r1.8 src/sys/arch/sh5/sh5/vm_machdep.c
cvs rdiff -r1.65 -r1.66 src/sys/arch/sparc/include/cpu.h
cvs rdiff -r1.77 -r1.78 src/sys/arch/sparc/sparc/vm_machdep.c
cvs rdiff -r1.40 -r1.41 src/sys/arch/sparc64/include/cpu.h
cvs rdiff -r1.52 -r1.53 src/sys/arch/sparc64/sparc64/vm_machdep.c
cvs rdiff -r1.34 -r1.35 src/sys/arch/sun3/include/cpu.h
cvs rdiff -r1.6 -r1.7 src/sys/arch/sun68k/include/cpu.h
cvs rdiff -r1.66 -r1.67 src/sys/arch/vax/include/cpu.h
cvs rdiff -r1.9 -r1.10 src/sys/arch/vax/vax/subr.S
cvs rdiff -r1.29 -r1.30 src/sys/arch/x68k/include/cpu.h
cvs rdiff -r1.229 -r1.230 src/sys/kern/init_main.c
cvs rdiff -r1.132 -r1.133 src/sys/kern/kern_exit.c
cvs rdiff -r1.18 -r1.19 src/sys/kern/kern_lwp.c
cvs rdiff -r1.69 -r1.70 src/sys/kern/kern_proc.c
cvs rdiff -r1.17 -r1.18 src/sys/sys/lwp.h
cvs rdiff -r1.185 -r1.186 src/sys/sys/proc.h
cvs rdiff -r1.87 -r1.88 src/sys/uvm/uvm_extern.h
cvs rdiff -r1.74 -r1.75 src/sys/uvm/uvm_glue.c
cvs rdiff -r1.56 -r1.57 src/sys/uvm/uvm_pdaemon.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.