18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __CPUPOWER_CPUPOWER_H__ 38c2ecf20Sopenharmony_ci#define __CPUPOWER_CPUPOWER_H__ 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_cistruct cpupower_topology { 68c2ecf20Sopenharmony_ci /* Amount of CPU cores, packages and threads per core in the system */ 78c2ecf20Sopenharmony_ci unsigned int cores; 88c2ecf20Sopenharmony_ci unsigned int pkgs; 98c2ecf20Sopenharmony_ci unsigned int threads; /* per core */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci /* Array gets mallocated with cores entries, holding per core info */ 128c2ecf20Sopenharmony_ci struct cpuid_core_info *core_info; 138c2ecf20Sopenharmony_ci}; 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_cistruct cpuid_core_info { 168c2ecf20Sopenharmony_ci int pkg; 178c2ecf20Sopenharmony_ci int core; 188c2ecf20Sopenharmony_ci int cpu; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci /* flags */ 218c2ecf20Sopenharmony_ci unsigned int is_online:1; 228c2ecf20Sopenharmony_ci}; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci#ifdef __cplusplus 258c2ecf20Sopenharmony_ciextern "C" { 268c2ecf20Sopenharmony_ci#endif 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ciint get_cpu_topology(struct cpupower_topology *cpu_top); 298c2ecf20Sopenharmony_civoid cpu_topology_release(struct cpupower_topology cpu_top); 308c2ecf20Sopenharmony_ciint cpupower_is_cpu_online(unsigned int cpu); 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci#ifdef __cplusplus 338c2ecf20Sopenharmony_ci} 348c2ecf20Sopenharmony_ci#endif 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci#endif 37