Provided by: freebsd-manpages_8.0-1_all critical_enter,
critical_exit - enter and exit a critical region These functions
are used to prevent preemption in a critical region of code. All
that is guaranteed is that the thread currently executing on a
CPU will not be preempted. Specifically, a thread in a critical
region will not migrate to another CPU while it is in a critical
region. The current CPU may still trigger faults and exceptions
during a critical section; however, these faults are usually
fatal. The critical_enter() and critical_exit() functions manage
a per-thread counter to handle nested critical sections. If a
thread is made runnable that would normally preempt the current
thread while the current thread is in a critical section, then
the preemption will be deferred until the current thread exits
the outermost critical section. Note that these functions are
not required to provide any inter-CPU synchronization, data
protection, or memory ordering guarantees and thus should not be
used to protect s