cputopo.h (1903B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __PERF_CPUTOPO_H 3#define __PERF_CPUTOPO_H 4 5#include <linux/types.h> 6 7struct cpu_topology { 8 /* The number of unique package_cpus_lists below. */ 9 u32 package_cpus_lists; 10 /* The number of unique die_cpu_lists below. */ 11 u32 die_cpus_lists; 12 /* The number of unique core_cpu_lists below. */ 13 u32 core_cpus_lists; 14 /* 15 * An array of strings where each string is unique and read from 16 * /sys/devices/system/cpu/cpuX/topology/package_cpus_list. From the ABI 17 * each of these is a human-readable list of CPUs sharing the same 18 * physical_package_id. The format is like 0-3, 8-11, 14,17. 19 */ 20 const char **package_cpus_list; 21 /* 22 * An array of string where each string is unique and from 23 * /sys/devices/system/cpu/cpuX/topology/die_cpus_list. From the ABI 24 * each of these is a human-readable list of CPUs within the same die. 25 * The format is like 0-3, 8-11, 14,17. 26 */ 27 const char **die_cpus_list; 28 /* 29 * An array of string where each string is unique and from 30 * /sys/devices/system/cpu/cpuX/topology/core_cpus_list. From the ABI 31 * each of these is a human-readable list of CPUs within the same 32 * core. The format is like 0-3, 8-11, 14,17. 33 */ 34 const char **core_cpus_list; 35}; 36 37struct numa_topology_node { 38 char *cpus; 39 u32 node; 40 u64 mem_total; 41 u64 mem_free; 42}; 43 44struct numa_topology { 45 u32 nr; 46 struct numa_topology_node nodes[]; 47}; 48 49struct hybrid_topology_node { 50 char *pmu_name; 51 char *cpus; 52}; 53 54struct hybrid_topology { 55 u32 nr; 56 struct hybrid_topology_node nodes[]; 57}; 58 59struct cpu_topology *cpu_topology__new(void); 60void cpu_topology__delete(struct cpu_topology *tp); 61 62struct numa_topology *numa_topology__new(void); 63void numa_topology__delete(struct numa_topology *tp); 64 65struct hybrid_topology *hybrid_topology__new(void); 66void hybrid_topology__delete(struct hybrid_topology *tp); 67 68#endif /* __PERF_CPUTOPO_H */