/* 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); | |
#endif /* __PERF_ENV_H */ |