| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | #ifndef __PERF_ENV_H | 
 | #define __PERF_ENV_H | 
 |  | 
 | #include <linux/types.h> | 
 | #include "cpumap.h" | 
 |  | 
 | struct cpu_topology_map { | 
 | 	int	socket_id; | 
 | 	int	core_id; | 
 | }; | 
 |  | 
 | struct cpu_cache_level { | 
 | 	u32	level; | 
 | 	u32	line_size; | 
 | 	u32	sets; | 
 | 	u32	ways; | 
 | 	char	*type; | 
 | 	char	*size; | 
 | 	char	*map; | 
 | }; | 
 |  | 
 | struct numa_node { | 
 | 	u32		 node; | 
 | 	u64		 mem_total; | 
 | 	u64		 mem_free; | 
 | 	struct cpu_map	*map; | 
 | }; | 
 |  | 
 | struct memory_node { | 
 | 	u64		 node; | 
 | 	u64		 size; | 
 | 	unsigned long	*set; | 
 | }; | 
 |  | 
 | struct perf_env { | 
 | 	char			*hostname; | 
 | 	char			*os_release; | 
 | 	char			*version; | 
 | 	char			*arch; | 
 | 	int			nr_cpus_online; | 
 | 	int			nr_cpus_avail; | 
 | 	char			*cpu_desc; | 
 | 	char			*cpuid; | 
 | 	unsigned long long	total_mem; | 
 | 	unsigned int		msr_pmu_type; | 
 |  | 
 | 	int			nr_cmdline; | 
 | 	int			nr_sibling_cores; | 
 | 	int			nr_sibling_threads; | 
 | 	int			nr_numa_nodes; | 
 | 	int			nr_memory_nodes; | 
 | 	int			nr_pmu_mappings; | 
 | 	int			nr_groups; | 
 | 	char			*cmdline; | 
 | 	const char		**cmdline_argv; | 
 | 	char			*sibling_cores; | 
 | 	char			*sibling_threads; | 
 | 	char			*pmu_mappings; | 
 | 	struct cpu_topology_map	*cpu; | 
 | 	struct cpu_cache_level	*caches; | 
 | 	int			 caches_cnt; | 
 | 	struct numa_node	*numa_nodes; | 
 | 	struct memory_node	*memory_nodes; | 
 | 	unsigned long long	 memory_bsize; | 
 | }; | 
 |  | 
 | extern struct perf_env perf_env; | 
 |  | 
 | void perf_env__exit(struct perf_env *env); | 
 |  | 
 | int perf_env__set_cmdline(struct perf_env *env, int argc, const char *argv[]); | 
 |  | 
 | int perf_env__read_cpu_topology_map(struct perf_env *env); | 
 |  | 
 | void cpu_cache_level__free(struct cpu_cache_level *cache); | 
 |  | 
 | const char *perf_env__arch(struct perf_env *env); | 
 | const char *perf_env__raw_arch(struct perf_env *env); | 
 | int perf_env__nr_cpus_avail(struct perf_env *env); | 
 |  | 
 | #endif /* __PERF_ENV_H */ |