ddeeffeerr() -- Accessible Kernel Routine

vvooiidd
ddeeffeerr(_f_u_n_c, _a_r_g)
vvooiidd (*_f_u_n_c)();
cchhaarr *_a_r_g;

ddeeffeerr() defers execution of  function _f_u_n_c with argument _a_r_g.  Execution of
_f_u_n_c remains deferred until the next context switch, transition from kernel
to user mode, or invocation of the function ddeeffeenndd.

Deferred functions  should never call  sleep or access the  uu area, because
the kernel  can switch  uu areas  as part of  context switching.  Up  to 127
functions can be  deferred at any one time.  Exceeding  this limit may lose
all deferred functions.

ddeeffeerr()  is  normally  used  to  minimize  interrupt latency  by  deferring
operations  from  interrupt  level,  where  lower priority  interrupts  are
disabled, to  background level, where all  interrupts are normally enabled.
It is also useful in eliminating critical race conditions between task- and
interrupt-related   operations,    because   deferred   functions   execute
synchronously with each other, with timed functions, and with system calls.

_S_e_e _A_l_s_o
aacccceessssiibbllee kkeerrnneell rroouuttiinneess
