]>
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> |
e4378f0c | 6 | #include <linux/rbtree.h> |
e4378f0c | 7 | #include "rwsem.h" |
720e98b5 | 8 | |
87ffb6c6 ACM |
9 | struct perf_cpu_map; |
10 | ||
f0ce888c ACM |
11 | struct cpu_topology_map { |
12 | int socket_id; | |
acae8b36 | 13 | int die_id; |
f0ce888c ACM |
14 | int core_id; |
15 | }; | |
16 | ||
720e98b5 JO |
17 | struct cpu_cache_level { |
18 | u32 level; | |
19 | u32 line_size; | |
20 | u32 sets; | |
21 | u32 ways; | |
22 | char *type; | |
23 | char *size; | |
24 | char *map; | |
25 | }; | |
26 | ||
c60da22a JO |
27 | struct numa_node { |
28 | u32 node; | |
29 | u64 mem_total; | |
30 | u64 mem_free; | |
f854839b | 31 | struct perf_cpu_map *map; |
c60da22a JO |
32 | }; |
33 | ||
e2091ced JO |
34 | struct memory_node { |
35 | u64 node; | |
36 | u64 size; | |
37 | unsigned long *set; | |
38 | }; | |
39 | ||
f0ce888c ACM |
40 | struct perf_env { |
41 | char *hostname; | |
42 | char *os_release; | |
43 | char *version; | |
44 | char *arch; | |
45 | int nr_cpus_online; | |
46 | int nr_cpus_avail; | |
47 | char *cpu_desc; | |
48 | char *cpuid; | |
49 | unsigned long long total_mem; | |
e0838e02 | 50 | unsigned int msr_pmu_type; |
f0ce888c ACM |
51 | |
52 | int nr_cmdline; | |
53 | int nr_sibling_cores; | |
acae8b36 | 54 | int nr_sibling_dies; |
f0ce888c ACM |
55 | int nr_sibling_threads; |
56 | int nr_numa_nodes; | |
e2091ced | 57 | int nr_memory_nodes; |
f0ce888c ACM |
58 | int nr_pmu_mappings; |
59 | int nr_groups; | |
60 | char *cmdline; | |
61 | const char **cmdline_argv; | |
62 | char *sibling_cores; | |
acae8b36 | 63 | char *sibling_dies; |
f0ce888c | 64 | char *sibling_threads; |
f0ce888c ACM |
65 | char *pmu_mappings; |
66 | struct cpu_topology_map *cpu; | |
720e98b5 JO |
67 | struct cpu_cache_level *caches; |
68 | int caches_cnt; | |
d3c8c08e | 69 | u32 comp_ratio; |
42e1fd80 AB |
70 | u32 comp_ver; |
71 | u32 comp_type; | |
72 | u32 comp_level; | |
73 | u32 comp_mmap_len; | |
c60da22a | 74 | struct numa_node *numa_nodes; |
e2091ced JO |
75 | struct memory_node *memory_nodes; |
76 | unsigned long long memory_bsize; | |
cf790516 | 77 | u64 clockid_res_ns; |
e4378f0c SL |
78 | |
79 | /* | |
80 | * bpf_info_lock protects bpf rbtrees. This is needed because the | |
81 | * trees are accessed by different threads in perf-top | |
82 | */ | |
83 | struct { | |
84 | struct rw_semaphore lock; | |
85 | struct rb_root infos; | |
86 | u32 infos_cnt; | |
3792cb2f SL |
87 | struct rb_root btfs; |
88 | u32 btfs_cnt; | |
e4378f0c | 89 | } bpf_progs; |
f0ce888c ACM |
90 | }; |
91 | ||
42e1fd80 AB |
92 | enum perf_compress_type { |
93 | PERF_COMP_NONE = 0, | |
94 | PERF_COMP_ZSTD, | |
95 | PERF_COMP_MAX | |
96 | }; | |
97 | ||
e4378f0c | 98 | struct bpf_prog_info_node; |
3792cb2f | 99 | struct btf_node; |
e4378f0c | 100 | |
b6998692 ACM |
101 | extern struct perf_env perf_env; |
102 | ||
f0ce888c ACM |
103 | void perf_env__exit(struct perf_env *env); |
104 | ||
b6998692 ACM |
105 | int perf_env__set_cmdline(struct perf_env *env, int argc, const char *argv[]); |
106 | ||
aa36ddd7 ACM |
107 | int perf_env__read_cpu_topology_map(struct perf_env *env); |
108 | ||
720e98b5 | 109 | void cpu_cache_level__free(struct cpu_cache_level *cache); |
4e8fbc1c ACM |
110 | |
111 | const char *perf_env__arch(struct perf_env *env); | |
dbbd34a6 | 112 | const char *perf_env__raw_arch(struct perf_env *env); |
9cecca32 | 113 | int perf_env__nr_cpus_avail(struct perf_env *env); |
dbbd34a6 | 114 | |
e4378f0c SL |
115 | void perf_env__init(struct perf_env *env); |
116 | void perf_env__insert_bpf_prog_info(struct perf_env *env, | |
117 | struct bpf_prog_info_node *info_node); | |
118 | struct bpf_prog_info_node *perf_env__find_bpf_prog_info(struct perf_env *env, | |
119 | __u32 prog_id); | |
67b6b215 | 120 | bool perf_env__insert_btf(struct perf_env *env, struct btf_node *btf_node); |
3792cb2f | 121 | struct btf_node *perf_env__find_btf(struct perf_env *env, __u32 btf_id); |
f0ce888c | 122 | #endif /* __PERF_ENV_H */ |