Scheduler Periodic Work
include/sch/periodic_work.h View source View on GitHubStructs
Section titled “Structs”scheduler_periodic_work_linker_record
Section titled “scheduler_periodic_work_linker_record” struct scheduler_periodic_work_linker_record (5 fields) source
scheduler_periodic_work
Section titled “scheduler_periodic_work” struct scheduler_periodic_work (10 fields) source
§
enum scheduler_periodic_work_type type §
enum scheduler_periodic_work_prio prio §
char *name §
void (*fn)(void) §
union §
size_t executed_times §
size_t interval_latency total_loss / executed_times
§
struct pairing_node pnode ordered by expected_next
scheduler_periodic_work_limits
Section titled “scheduler_periodic_work_limits” struct scheduler_periodic_work_limits (2 fields) source
scheduler_periodic_work_percpu
Section titled “scheduler_periodic_work_percpu” struct scheduler_periodic_work_percpu (7 fields) source
§
struct pairing_heap period_based_works[PERIODIC_WORK_MAX] §
struct pairing_heap time_based_works[PERIODIC_WORK_MAX] §
size_t period_based_work_count[PERIODIC_WORK_MAX] §
size_t time_based_work_count[PERIODIC_WORK_MAX] §
struct scheduler_periodic_work_limits limits §
bool executing scheduler_periodic_work_prio
Section titled “scheduler_periodic_work_prio” enum scheduler_periodic_work_prio (4 variants) source
scheduler_periodic_work_type
Section titled “scheduler_periodic_work_type” enum scheduler_periodic_work_type (2 variants) source
Functions
Section titled “Functions”scheduler_periodic_work_init
Section titled “scheduler_periodic_work_init”void scheduler_periodic_work_init(void) source scheduler_periodic_work_execute
Section titled “scheduler_periodic_work_execute”void scheduler_periodic_work_execute(enum scheduler_periodic_work_type type) source scheduler_in_periodic_work
Section titled “scheduler_in_periodic_work”bool scheduler_in_periodic_work(void) source prevent irql_lower work execution recursion
Macros
Section titled “Macros”SCHEDULER_PERIODIC_WORK_REGISTER
Section titled “SCHEDULER_PERIODIC_WORK_REGISTER”#define SCHEDULER_PERIODIC_WORK_REGISTER(_fn, _type, _prio, _interval) source Expansion
#define SCHEDULER_PERIODIC_WORK_REGISTER(_fn, _type, _prio, _interval) \
LINKER_SECTION_OBJECT(struct scheduler_periodic_work_linker_record, \
sched_periodic_work) \
__spw_##_fn = {.name = #_fn, \
.fn = _fn, \
.type = _type, \
.interval = _interval, \
.prio = _prio} SCHEDULER_PERIODIC_WORK_REGISTER_PER_PERIOD
Section titled “SCHEDULER_PERIODIC_WORK_REGISTER_PER_PERIOD”#define SCHEDULER_PERIODIC_WORK_REGISTER_PER_PERIOD(_fn, _prio) source Expansion
#define SCHEDULER_PERIODIC_WORK_REGISTER_PER_PERIOD(_fn, _prio) \
SCHEDULER_PERIODIC_WORK_REGISTER(_fn, PERIODIC_WORK_PERIOD_BASED, _prio, 1)