root/tools/perf/util/env.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __PERF_ENV_H
   3 #define __PERF_ENV_H
   4 
   5 #include <linux/types.h>
   6 #include <linux/rbtree.h>
   7 #include "rwsem.h"
   8 
   9 struct perf_cpu_map;
  10 
  11 struct cpu_topology_map {
  12         int     socket_id;
  13         int     die_id;
  14         int     core_id;
  15 };
  16 
  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 
  27 struct numa_node {
  28         u32              node;
  29         u64              mem_total;
  30         u64              mem_free;
  31         struct perf_cpu_map     *map;
  32 };
  33 
  34 struct memory_node {
  35         u64              node;
  36         u64              size;
  37         unsigned long   *set;
  38 };
  39 
  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;
  50         unsigned int            msr_pmu_type;
  51 
  52         int                     nr_cmdline;
  53         int                     nr_sibling_cores;
  54         int                     nr_sibling_dies;
  55         int                     nr_sibling_threads;
  56         int                     nr_numa_nodes;
  57         int                     nr_memory_nodes;
  58         int                     nr_pmu_mappings;
  59         int                     nr_groups;
  60         char                    *cmdline;
  61         const char              **cmdline_argv;
  62         char                    *sibling_cores;
  63         char                    *sibling_dies;
  64         char                    *sibling_threads;
  65         char                    *pmu_mappings;
  66         struct cpu_topology_map *cpu;
  67         struct cpu_cache_level  *caches;
  68         int                      caches_cnt;
  69         u32                     comp_ratio;
  70         u32                     comp_ver;
  71         u32                     comp_type;
  72         u32                     comp_level;
  73         u32                     comp_mmap_len;
  74         struct numa_node        *numa_nodes;
  75         struct memory_node      *memory_nodes;
  76         unsigned long long       memory_bsize;
  77         u64                     clockid_res_ns;
  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;
  87                 struct rb_root          btfs;
  88                 u32                     btfs_cnt;
  89         } bpf_progs;
  90 };
  91 
  92 enum perf_compress_type {
  93         PERF_COMP_NONE = 0,
  94         PERF_COMP_ZSTD,
  95         PERF_COMP_MAX
  96 };
  97 
  98 struct bpf_prog_info_node;
  99 struct btf_node;
 100 
 101 extern struct perf_env perf_env;
 102 
 103 void perf_env__exit(struct perf_env *env);
 104 
 105 int perf_env__set_cmdline(struct perf_env *env, int argc, const char *argv[]);
 106 
 107 int perf_env__read_cpu_topology_map(struct perf_env *env);
 108 
 109 void cpu_cache_level__free(struct cpu_cache_level *cache);
 110 
 111 const char *perf_env__arch(struct perf_env *env);
 112 const char *perf_env__raw_arch(struct perf_env *env);
 113 int perf_env__nr_cpus_avail(struct perf_env *env);
 114 
 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);
 120 void perf_env__insert_btf(struct perf_env *env, struct btf_node *btf_node);
 121 struct btf_node *perf_env__find_btf(struct perf_env *env, __u32 btf_id);
 122 #endif /* __PERF_ENV_H */

/* [<][>][^][v][top][bottom][index][help] */