1#ifndef __PERF_ENV_H 2#define __PERF_ENV_H 3 4#include <linux/types.h> 5 6struct cpu_topology_map { 7 int socket_id; 8 int core_id; 9}; 10 11struct cpu_cache_level { 12 u32 level; 13 u32 line_size; 14 u32 sets; 15 u32 ways; 16 char *type; 17 char *size; 18 char *map; 19}; 20 21struct perf_env { 22 char *hostname; 23 char *os_release; 24 char *version; 25 char *arch; 26 int nr_cpus_online; 27 int nr_cpus_avail; 28 char *cpu_desc; 29 char *cpuid; 30 unsigned long long total_mem; 31 unsigned int msr_pmu_type; 32 33 int nr_cmdline; 34 int nr_sibling_cores; 35 int nr_sibling_threads; 36 int nr_numa_nodes; 37 int nr_pmu_mappings; 38 int nr_groups; 39 char *cmdline; 40 const char **cmdline_argv; 41 char *sibling_cores; 42 char *sibling_threads; 43 char *numa_nodes; 44 char *pmu_mappings; 45 struct cpu_topology_map *cpu; 46 struct cpu_cache_level *caches; 47 int caches_cnt; 48}; 49 50extern struct perf_env perf_env; 51 52void perf_env__exit(struct perf_env *env); 53 54int perf_env__set_cmdline(struct perf_env *env, int argc, const char *argv[]); 55 56int perf_env__read_cpu_topology_map(struct perf_env *env); 57 58void cpu_cache_level__free(struct cpu_cache_level *cache); 59#endif /* __PERF_ENV_H */ 60