Skip to content

Per-CPU structure

struct cpu_capability {
enum cpu_class class;
uint32_t uarch_id;
uint32_t issue_width;
uint32_t retire_width;
cpu_perf_t perf_score;
uint32_t energy_score;
uint64_t feature_bits;
};

struct cpu_capability referenced types:

struct core {
struct core *self;
cpu_id_t id;
struct thread *current_thread;
struct cpu_capability cap;
size_t domain_cpu_id;
struct scheduler_domain *domains[TOPOLOGY_LEVEL_MAX];
int32_t group_index[TOPOLOGY_LEVEL_MAX];
atomic_bool executing_dpcs;
atomic_bool idle;
bool in_interrupt;
enum irql current_irql;
enum dpc_event dpc_event;
atomic_bool needs_resched;
atomic_bool in_resched;
atomic_uint scheduler_preemption_disable_depth;
struct domain *domain;
struct domain_arena *domain_arena;
size_t rr_current_domain;
struct tss *tss;
uint32_t lapic_freq;
struct topology_node *topo_node;
struct topology_cache_info llc;
numa_node_t numa_node;
uint32_t package_id;
uint32_t smt_mask;
uint32_t smt_id;
uint32_t core_id;
uint64_t tsc_hz;
uint64_t last_us;
uint64_t last_tsc;
uint64_t pt_seen_epoch;
bool reclaiming_page_tables;
};

struct core referenced types:

enum cpu_class {
CPU_CLASS_UNKNOWN,
CPU_CLASS_PERFORMANCE,
CPU_CLASS_EFFICIENCY,
};
uint64_t smp_core_id();
struct core smp_core(void);

smp_core referenced types:

#define CPU_FEAT_SSE2 (1ULL << 0)
#define CPU_FEAT_AVX (1ULL << 1)
#define CPU_FEAT_AVX2 (1ULL << 2)
#define CPU_FEAT_AVX512F (1ULL << 3)
#define for_each_cpu_struct(__iter) \ for (size_t __id = 0; \ ((__iter = global.cores[__id]), __id < global.core_count); __id++)
#define for_each_cpu_id(__id) for (__id = 0; __id < global.core_count; __id++)