1 #ifndef _CPU_TOPOLOGY_H_ 2 #define _CPU_TOPOLOGY_H_ 3 4 #ifdef _KERNEL 5 6 /* CPU TOPOLOGY DATA AND FUNCTIONS */ 7 struct cpu_node { 8 struct cpu_node * parent_node; 9 struct cpu_node * child_node[MAXCPU]; 10 uint32_t child_no; 11 cpumask_t members; 12 uint8_t type; 13 uint8_t compute_unit_id; /* AMD compute unit ID */ 14 }; 15 typedef struct cpu_node cpu_node_t; 16 17 extern int cpu_topology_levels_number; 18 extern cpu_node_t *root_cpu_node; 19 20 cpumask_t get_cpumask_from_level(int cpuid, uint8_t level_type); 21 cpu_node_t *get_cpu_node_by_cpuid(int cpuid); 22 const cpu_node_t *get_cpu_node_by_chipid(int chip_id); 23 24 #define LEVEL_NO 4 25 26 /* Level type for CPU siblings */ 27 #define PACKAGE_LEVEL 1 28 #define CHIP_LEVEL 2 29 #define CORE_LEVEL 3 30 #define THREAD_LEVEL 4 31 32 #define CPUSET_FOREACH(cpu, mask) \ 33 for ((cpu) = 0; (cpu) < ncpus; (cpu)++) \ 34 if (CPUMASK_TESTBIT(mask, cpu)) 35 36 37 #endif /* _KERNEL */ 38 #endif /* _CPU_TOPOLOGY_H_ */ 39