Keyronex Keyronex manual pages

DPC(9) Kernel Developer's Manual DPC(9)

dpc, ke_dpc_enqueuedeferred procedure call mechanism

#include <kdk/kern.h>

void
ke_dpc_enqueue(kdpc_t *dpc);

The Deferred Procedure Call (DPC) mechanism is a mechanism for scheduling work to be carried out at the IPL 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

ipl(9)

The DPC interface has always been in Keyronex.

October 6, 2024 Debian