dillon dc5aafeb94 Compromise for critical*()/cpu_critical*() recommit. Cleanup the interrupt
disablement assumptions in kern_fork.c by adding another API call,
cpu_critical_fork_exit().  Cleanup the td_savecrit field by moving it
from MI to MD.  Temporarily move cpu_critical*() from <arch>/include/cpufunc.h
to <arch>/<arch>/critical.c (stage-2 will clean this up).

Implement interrupt deferral for i386 that allows interrupts to remain
enabled inside critical sections.  This also fixes an IPI interlock bug,
and requires uses of icu_lock to be enclosed in a true interrupt disablement.

This is the stage-1 commit.  Stage-2 will occur after stage-1 has stabilized,
and will move cpu_critical*() into its own header file(s) + other things.
This commit may break non-i386 architectures in trivial ways.  This should
be temporary.

Reviewed by:	core
Approved by:	core
2002-03-27 05:39:23 +00:00
..
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-25 13:52:45 +00:00
2002-03-25 13:52:45 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 11:02:06 +00:00
2002-03-19 21:25:46 +00:00
2002-02-07 20:58:47 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2001-09-12 08:38:13 +00:00
2002-03-19 20:48:32 +00:00
2000-09-29 13:36:47 +00:00
2002-02-07 20:58:47 +00:00
2002-03-19 11:02:06 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2001-09-12 08:38:13 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-02-10 22:07:41 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2001-09-12 08:38:13 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 11:02:06 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-19 21:25:46 +00:00
2002-03-26 18:07:10 +00:00
2002-03-26 18:07:10 +00:00