From dc5aafeb94ddee4f835e390dffaecbb0eec5d5e2 Mon Sep 17 00:00:00 2001 From: dillon Date: Wed, 27 Mar 2002 05:39:23 +0000 Subject: 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 /include/cpufunc.h to //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 --- sys/conf/files.i386 | 1 + 1 file changed, 1 insertion(+) (limited to 'sys/conf/files.i386') diff --git a/sys/conf/files.i386 b/sys/conf/files.i386 index ecae824..5243412 100644 --- a/sys/conf/files.i386 +++ b/sys/conf/files.i386 @@ -199,6 +199,7 @@ i386/i386/autoconf.c standard i386/i386/bios.c standard i386/i386/bioscall.s standard i386/i386/busdma_machdep.c standard +i386/i386/critical.c standard i386/i386/db_disasm.c optional ddb i386/i386/db_interface.c optional ddb i386/i386/db_trace.c optional ddb -- cgit v1.1