Manpage of 'critical_enter' on UHLU - BSD System Documentation,
Programming Reference, Manual Pages and Source Code
All manual pages         All RFC pages
Common page
for critical_enter
Other pages
for critical_enter
More pages
containing critical_enter

Section 9 manual page or howto for 'critical_enter'  

CRITICAL_ENTER(9)      FreeBSD Kernel Developer's Manual     CRITICAL_ENTER(9)

NAME
     critical_enter, critical_exit -- enter and exit a critical region

SYNOPSIS
     #include <sys/param.h>
     #include <sys/systm.h>

     void
     critical_enter(void);

     void
     critical_exit(void);

DESCRIPTION
     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 syn-
     chronization, data protection, or memory ordering guarantees and thus
     should not be used to protect shared data structures.

     These functions should be used with care as an infinite loop within a
     critical region will deadlock the CPU.  Also, they should not be inter-
     locked with operations on mutexes, sx locks, semaphores, or other syn-
     chronization primitives.  One exception to this is that spin mutexes
     include a critical section, so in certain cases critical sections may be
     interlocked with spin mutexes.

HISTORY
     These functions were introduced in FreeBSD 5.0.

FreeBSD 7.2			October 5, 2005 		   FreeBSD 7.2

NAME - SYNOPSIS - DESCRIPTION - HISTORY -  
All manual pages         All RFC pages
Common page
for critical_enter
Other pages
for critical_enter
More pages
containing critical_enter
A random manual page         All manual pages        All RFC pages