Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
f0ce888c ACM |
2 | #ifndef __PERF_ENV_H |
3 | #define __PERF_ENV_H | |
4 | ||
720e98b5 | 5 | #include <linux/types.h> |
c60da22a | 6 | #include "cpumap.h" |
720e98b5 | 7 | |
f0ce888c ACM |
8 | struct cpu_topology_map { |
9 | int socket_id; | |
10 | int core_id; | |
11 | }; | |
12 | ||
720e98b5 JO |
13 | struct cpu_cache_level { |
14 | u32 level; | |
15 | u32 line_size; | |
16 | u32 sets; | |
17 | u32 ways; | |
18 | char *type; | |
19 | char *size; | |
20 | char *map; | |
21 | }; | |
22 | ||
c60da22a JO |
23 | struct numa_node { |
24 | u32 node; | |
25 | u64 mem_total; | |
26 | u64 mem_free; | |
27 | struct cpu_map *map; | |
28 | }; | |
29 | ||
e2091ced JO |
30 | struct memory_node { |
31 | u64 node; | |
32 | u64 size; | |
33 | unsigned long *set; | |
34 | }; | |
35 | ||
f0ce888c ACM |
36 | struct perf_env { |
37 | char *hostname; | |
38 | char *os_release; | |
39 | char *version; | |
40 | char *arch; | |
41 | int nr_cpus_online; | |
42 | int nr_cpus_avail; | |
43 | char *cpu_desc; | |
44 | char *cpuid; | |
45 | unsigned long long total_mem; | |
e0838e02 | 46 | unsigned int msr_pmu_type; |
f0ce888c ACM |
47 | |
48 | int nr_cmdline; | |
49 | int nr_sibling_cores; | |
50 | int nr_sibling_threads; | |
51 | int nr_numa_nodes; | |
e2091ced | 52 | int nr_memory_nodes; |
f0ce888c ACM |
53 | int nr_pmu_mappings; |
54 | int nr_groups; | |
55 | char *cmdline; | |
56 | const char **cmdline_argv; | |
57 | char *sibling_cores; | |
58 | char *sibling_threads; | |
f0ce888c ACM |
59 | char *pmu_mappings; |
60 | struct cpu_topology_map *cpu; | |
720e98b5 JO |
61 | struct cpu_cache_level *caches; |
62 | int caches_cnt; | |
c60da22a | 63 | struct numa_node *numa_nodes; |
e2091ced JO |
64 | struct memory_node *memory_nodes; |
65 | unsigned long long memory_bsize; | |
cf790516 | 66 | u64 clockid_res_ns; |
f0ce888c ACM |
67 | }; |
68 | ||
b6998692 ACM |
69 | extern struct perf_env perf_env; |
70 | ||
f0ce888c ACM |
71 | void perf_env__exit(struct perf_env *env); |
72 | ||
b6998692 ACM |
73 | int perf_env__set_cmdline(struct perf_env *env, int argc, const char *argv[]); |
74 | ||
aa36ddd7 ACM |
75 | int perf_env__read_cpu_topology_map(struct perf_env *env); |
76 | ||
720e98b5 | 77 | void cpu_cache_level__free(struct cpu_cache_level *cache); |
4e8fbc1c ACM |
78 | |
79 | const char *perf_env__arch(struct perf_env *env); | |
dbbd34a6 | 80 | const char *perf_env__raw_arch(struct perf_env *env); |
9cecca32 | 81 | int perf_env__nr_cpus_avail(struct perf_env *env); |
dbbd34a6 | 82 | |
f0ce888c | 83 | #endif /* __PERF_ENV_H */ |