Skip to content

DPCs

include/thread/dpc.h View source View on GitHub
struct dpc {
    dpc_func_t              func;
    void                    *ctx;
    _Atomic (struct dpc *)  next;
    _Atomic bool            enqueued;
};
struct dpc_queue {
    _Atomic (struct dpc *)  head;
    _Atomic size_t          count;
};
struct dpc_cpu {
    _Atomic bool      ipi_queued;
    struct dpc_queue  queue;
};
typedef void (*dpc_func_t)(void * ctx);
void dpc_drain_local(void);
void dpc_run_local(void);
void dpc_run_dpcs_from_irq(void);
struct dpc * dpc_create(dpc_func_t fn, void *ctx);
struct dpc * dpc_init(struct dpc *d, dpc_func_t fn, void *ctx);
void dpc_init_percpu(void);
bool dpc_enqueue_local(struct dpc *d);
bool dpc_enqueue_on_cpu(size_t cpu, struct dpc *d);