DPC(9) | Kernel Developer's Manual | DPC(9) |
dpc
,
ke_dpc_enqueue
— deferred
procedure call mechanism
#include
<kdk/kern.h>
void
ke_dpc_enqueue
(kdpc_t
*dpc);
kIPLDPC
. (See
ipl(9) for more information on IPL, as the
DPC mechanism emerges naturally from it.)
DPCs consist of an object of type kdpc_t,
which contains a function pointer and an argument. When a DPC is enqueued,
it is executed immediately if the IPL is low; if the IPL is above
kIPLDPC
, the DPC is appended to a per-processor
queue, the elements of which are executed in order when the IPL falls below
kIPLDPC
.
DPCs are used primarily to carry out work that has been deferred
from a device interrupt handler. Device interrupt handlers run at an even
higher IPL, and hence are unable to perform tasks like signalling
synchronisation objects. It is also undesirable to spend too much time in
these handlers, as they block other interrupts at
kIPLDevice
.
The DPC interface is declared in kernel/include/kdk/kern.h
The DPC
interface has always been in
Keyronex.
October 6, 2024 | Debian |