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