brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · 8d42f61 Raw
79 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __PERF_CPUTOPO_H3#define __PERF_CPUTOPO_H4 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 from16	 * /sys/devices/system/cpu/cpuX/topology/package_cpus_list. From the ABI17	 * each of these is a human-readable list of CPUs sharing the same18	 * 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 from23	 * /sys/devices/system/cpu/cpuX/topology/die_cpus_list. From the ABI24	 * 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 from30	 * /sys/devices/system/cpu/cpuX/topology/core_cpus_list. From the ABI31	 * each of these is a human-readable list of CPUs within the same32	 * 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 59/*60 * The topology for online CPUs, lazily created.61 */62const struct cpu_topology *online_topology(void);63 64struct cpu_topology *cpu_topology__new(void);65void cpu_topology__delete(struct cpu_topology *tp);66/* Determine from the core list whether SMT was enabled. */67bool cpu_topology__smt_on(const struct cpu_topology *topology);68/* Are the sets of SMT siblings all enabled or all disabled in user_requested_cpus. */69bool cpu_topology__core_wide(const struct cpu_topology *topology,70			     const char *user_requested_cpu_list);71 72struct numa_topology *numa_topology__new(void);73void numa_topology__delete(struct numa_topology *tp);74 75struct hybrid_topology *hybrid_topology__new(void);76void hybrid_topology__delete(struct hybrid_topology *tp);77 78#endif /* __PERF_CPUTOPO_H */79