После просмотра исходного кода Linux. Я считаю, что мои предположения верны, и кажется, насколько я мог понять, что они используют физический _идентификатор пакета _для идентификации кластера в драйвере для архитектур big.LITTLE в два следующих метода.
static inline int raw_cpu_to_cluster(int cpu)
{
return topology_physical_package_id(cpu);
}
static inline int cpu_to_cluster(int cpu)
{
return is_bL_switching_enabled() ?
MAX_CLUSTERS : raw_cpu_to_cluster(cpu);
}
А затем использовать его для получения таблицы частот другим методом, который я тоже хочу сделать:
static int bL_cpufreq_init(struct cpufreq_policy *policy)
{
u32 cur_cluster = cpu_to_cluster(policy->cpu);
/* Some code here */
policy->freq_table = freq_table[cur_cluster];
/* Some more code here */
}
Итак, я думаю, что могу подсчитать количество ядер ЦП в каждом кластере, взглянув на физический _идентификатор пакета _для каждого из них.