| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef __CPUPOWER_CPUPOWER_H__ |
| #define __CPUPOWER_CPUPOWER_H__ |
| |
| struct cpupower_topology { |
| /* Amount of CPU cores, packages and threads per core in the system */ |
| unsigned int cores; |
| unsigned int pkgs; |
| unsigned int threads; /* per core */ |
| |
| /* Array gets mallocated with cores entries, holding per core info */ |
| struct cpuid_core_info *core_info; |
| }; |
| |
| struct cpuid_core_info { |
| int pkg; |
| int core; |
| int cpu; |
| |
| /* flags */ |
| unsigned int is_online:1; |
| }; |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| int get_cpu_topology(struct cpupower_topology *cpu_top); |
| void cpu_topology_release(struct cpupower_topology cpu_top); |
| int cpupower_is_cpu_online(unsigned int cpu); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |