crit_exit_gd man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

CRIT_ENTER(9)		 BSD Kernel Developer's Manual		 CRIT_ENTER(9)

NAME
     crit_enter, crit_enter_gd, crit_enter_id, crit_exit, crit_exit_gd,
     crit_exit_id — enter and exit a critical section

SYNOPSIS
     #include <sys/thread2.h>

     void
     crit_enter(void);

     void
     crit_exit(void);

     void
     crit_enter_gd(globaldata_t gd);

     void
     crit_exit_gd(globaldata_t gd);

     void
     crit_enter_id(const char *id);

     void
     crit_exit_id(const char *id);

DESCRIPTION
     The crit_enter() and crit_exit() functions are used to enter and exit a
     critical section of code.	Entering a critical section will disallow pre‐
     emption of the currently running thread on the current CPU for the dura‐
     tion of the critical section.  While a critical section is active, inter‐
     rupts and IPIs are also prevented from executing on the current CPU.
     Instead, the interrupt code marks the interrupt as deferred and immedi‐
     ately returns (without scheduling any interrupt thread).  If an interrupt
     or an IPI is deferred in this way, it will be processed upon leaving the
     critical section.

     It is possible for a thread to sleep while holding a critical section,
     however this results in the critical section being given up for the time
     of the sleep and being reacquired after waking up.

     If the current CPU's globaldata pointer is available, crit_enter_gd() and
     crit_exit_gd() may be used to reduce the amount of generated code.

     Critical sections are per-CPU entities.  They are typically used to
     interlock operations local to the CPU.  A critical section on one CPU
     will not prevent an interrupt or IPI from occurring on some other CPU.
     If cross-CPU interlocks are required the more heavy weight spinlock(9) or
     serializer(9) lock is recommended instead.

     Unlike spinlocks and serializer locks, critical sections can be nested.

DEBUGGING CRITICAL SECTIONS
     Kernels compiled with DEBUG_CRIT_SECTIONS will report any crit_exit()
     calls that are made from a different function than the crit_enter() that
     they are unnesting.  The crit_enter_id() and crit_exit_id() functions can
     be used to specify a fixed ID in cases where this is done on purpose.
     Identifiers must be string pointers but the debug code only checks the
     pointer address, it does not do a strcmp() to validate the ID.

FILES
     The critical section implementation is in /sys/sys/thread2.h.

SEE ALSO
     serializer(9), spinlock(9)

HISTORY
     These functions were introduced in DragonFly 1.0.

BSD				April 10, 2010				   BSD
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net