xref: /openbmc/linux/tools/power/cpupower/lib/cpupower.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
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