Skip to content

Domains

include/smp/domain.h View source View on GitHub
struct domain {
    size_t               id;
    size_t               num_cores;
    struct core          **cores;
    struct numa_node     *associated_node;
    struct slab_domain   *slab_domain;
    struct domain_buddy  *domain_buddy;
    struct cpu_mask      cpu_mask;
};
struct domain domain_local(void);
size_t domain_local_id(void);
void domain_init(void);
struct cpu_mask * domain_create_cpu_mask(struct domain *domain);
void domain_set_cpu_mask(struct cpu_mask *mask, struct domain *domain);
bool domain_idle(struct domain *domain);
size_t domain_for_core(size_t cpu);
void domain_init_after_smp();
void domain_dump(void);
#define CORES_PER_DOMAIN 4
#define domain_for_each_domain(__dom) \
    for (size_t __i = 0; \
         (__dom = global.domains[__i]), (__i < global.domain_count); __i++)
#define domain_for_each_core(__dom, __pos) \
    for (size_t __i = 0; \
         (__pos = __dom->cores[__i]), (__i < __dom->num_cores); __i++)
#define domain_for_each_core_local(__pos) \
    domain_for_each_core(smp_core()->domain, __pos)