Skip to content

Scheduling domains

include/sch/domain.h View source View on GitHub
struct scheduler_group {
    struct cpu_mask  cpus;
    struct cpu_mask  idle;
    uint64_t         load;
    uint32_t         capacity;
    int32_t          parent_index;
    int32_t          topo_index;
};
struct scheduler_domain {
    enum topology_level      level;
    struct scheduler_group   *groups;
    size_t                   ngroups;
    struct scheduler_domain  *parent;
};
void scheduler_domains_init(void);
void scheduler_domain_mark_self_idle(bool idle);
int32_t scheduler_push_target(struct core *from);
int32_t scheduler_find_idle_cpu_near(struct core *from);
int32_t scheduler_group_find_idle_cpu(struct scheduler_group *g);
struct scheduler_group * scheduler_domain_find_sibling_group(struct core *c, size_t domain_idx);