DPCs
include/thread/dpc.h View source View on GitHubStructs
Section titled “Structs” struct dpc (5 fields) source
dpc_context
Section titled “dpc_context”dpc_queue
Section titled “dpc_queue”Per-cpu DPC data
dpc_cpu
Section titled “dpc_cpu”Type Aliases
Section titled “Type Aliases”dpc_func_t
Section titled “dpc_func_t”typedef void (*dpc_func_t)(struct dpc_context * d, void * a, void * b) source dpc_fanout_fn_t
Section titled “dpc_fanout_fn_t”typedef void (*dpc_fanout_fn_t)(void) source Functions
Section titled “Functions”dpc_drain_local
Section titled “dpc_drain_local”void dpc_drain_local(void) source dpc_run_local
Section titled “dpc_run_local”void dpc_run_local(void) source dpc_run_dpcs_from_irq
Section titled “dpc_run_dpcs_from_irq”void dpc_run_dpcs_from_irq(void) source dpc_create
Section titled “dpc_create”struct dpc * dpc_create(dpc_func_t fn, void *a, void *b) source dpc_init
Section titled “dpc_init”struct dpc * dpc_init(struct dpc *d, dpc_func_t fn, void *a, void *b) source dpc_fanout
Section titled “dpc_fanout”void dpc_fanout(
struct dpc *cc_nonnull_ptr,
struct cpu_mask cpus,
dpc_fanout_fn_t cc_nonnull_ptr
) source Run fn once on every CPU in cpus, returning only after all of them complete.
NOTE
storage must hold at least popcount(cpus) DPCs, this is what the caller must uphold. storage entries get overwritten every call as well
dpc_init_percpu
Section titled “dpc_init_percpu”void dpc_init_percpu(void) source dpc_enqueue_local
Section titled “dpc_enqueue_local”dpc_enqueue_on_cpu
Section titled “dpc_enqueue_on_cpu”bool dpc_enqueue_on_cpu(size_t cpu, struct dpc *cc_nonnull_ptr) source