1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2ac5a181dSThomas Renninger #ifndef __CPUPOWER_CPUPOWER_H__ 3ac5a181dSThomas Renninger #define __CPUPOWER_CPUPOWER_H__ 4ac5a181dSThomas Renninger 5ac5a181dSThomas Renninger struct cpupower_topology { 6ac5a181dSThomas Renninger /* Amount of CPU cores, packages and threads per core in the system */ 7ac5a181dSThomas Renninger unsigned int cores; 8ac5a181dSThomas Renninger unsigned int pkgs; 9ac5a181dSThomas Renninger unsigned int threads; /* per core */ 10ac5a181dSThomas Renninger 11ac5a181dSThomas Renninger /* Array gets mallocated with cores entries, holding per core info */ 12ac5a181dSThomas Renninger struct cpuid_core_info *core_info; 13ac5a181dSThomas Renninger }; 14ac5a181dSThomas Renninger 15ac5a181dSThomas Renninger struct cpuid_core_info { 16ac5a181dSThomas Renninger int pkg; 17ac5a181dSThomas Renninger int core; 18ac5a181dSThomas Renninger int cpu; 19ac5a181dSThomas Renninger 20ac5a181dSThomas Renninger /* flags */ 21ac5a181dSThomas Renninger unsigned int is_online:1; 22ac5a181dSThomas Renninger }; 23ac5a181dSThomas Renninger 24ac5a181dSThomas Renninger #ifdef __cplusplus 25ac5a181dSThomas Renninger extern "C" { 26ac5a181dSThomas Renninger #endif 27ac5a181dSThomas Renninger 28ac5a181dSThomas Renninger int get_cpu_topology(struct cpupower_topology *cpu_top); 29ac5a181dSThomas Renninger void cpu_topology_release(struct cpupower_topology cpu_top); 30ac5a181dSThomas Renninger int cpupower_is_cpu_online(unsigned int cpu); 31ac5a181dSThomas Renninger 32ac5a181dSThomas Renninger #ifdef __cplusplus 33ac5a181dSThomas Renninger } 34ac5a181dSThomas Renninger #endif 35ac5a181dSThomas Renninger 36ac5a181dSThomas Renninger #endif 37