Unless an unforseen problem arises, I am going to commit this tomorrow
and then start working on a cleanup patch. I have decided to
keep the sysctl instrumentation intact for the moment so people who
experience panics or lockups can turn it off to see whether that was the
cause or not.
The cleanup patch will deal with moving the critical_*() functions
from MI to MD, inlining, and the removal of the (old) CRITICAL_FORK and
(new) MACHINE_CRITICAL_ENTER hacks. I'll probably wind up adding
<machine/critical.h> (i.e. /usr/src/sys/<arch>/include/critical.h)
and for i386 sys/i386/i386/critical.c to hold unpend() and other
I've looked at cleaning up cpu_critical_enter() & exit but its use
pollutes a number of MI source files: kern/kern_ktr.c, kern/subr_trap.c,
and kern/subr_witness.c are all misusing the functions. If these
functions can safely be changed to use critical_enter() and critical_exit()
I will rename the i386's cpu_critical*() functions into intr_disable()
and intr_restore() and then use the new names for internal i386 use.
Is there any reason why the above uses of cpu_critical*() cannot be
changed to use standard critical*()? I believe we *always* have a
curthread structure to play with so it should just work.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message