···23932393} platform_counters_odd, platform_counters_even;2394239423952395struct cpu_topology {23962396- int core_id;23962396+ int core_id; /* unique within a package */23972397 int package_id;23982398 int die_id;23992399 int l3_id;···24092409 int num_packages;24102410 int num_die;24112411 int num_cpus;24122412- int num_cores;24122412+ int num_cores; /* system wide */24132413 int allowed_packages;24142414 int allowed_cpus;24152415 int allowed_cores;24162416 int max_cpu_num;24172417- int max_core_id;24172417+ int max_core_id; /* within a package */24182418 int max_package_id;24192419 int max_die_id;24202420 int max_l3_id;···24462446 return !CPU_ISSET_S(cpu, cpu_allowed_setsize, cpu_allowed_set);24472447}2448244824492449+#define GLOBAL_CORE_ID(core_id, pkg_id) (core_id + pkg_id * (topo.max_core_id + 1))24492450/*24502451 * run func(thread, core, package) in topology order24512452 * skip non-present cpus···51585157/* Rapl domain enumeration helpers */51595158static inline int get_rapl_num_domains(void)51605159{51615161- int num_packages = topo.max_package_id + 1;51625162- int num_cores_per_package;51635163- int num_cores;51645164-51655160 if (!platform->has_per_core_rapl)51665166- return num_packages;51615161+ return topo.num_packages;5167516251685168- num_cores_per_package = topo.max_core_id + 1;51695169- num_cores = num_cores_per_package * num_packages;51705170-51715171- return num_cores;51635163+ return topo.num_cores;51725164}5173516551745166static inline int get_rapl_domain_id(int cpu)51755167{51765176- int nr_cores_per_package = topo.max_core_id + 1;51775177- int rapl_core_id;51785178-51795168 if (!platform->has_per_core_rapl)51805169 return cpus[cpu].package_id;5181517051825182- /* Compute the system-wide unique core-id for @cpu */51835183- rapl_core_id = cpus[cpu].core_id;51845184- rapl_core_id += cpus[cpu].package_id * nr_cores_per_package;51855185-51865186- return rapl_core_id;51715171+ return GLOBAL_CORE_ID(cpu, cpus[cpu].package_id);51875172}5188517351895174/*