env.h 1.6 KB

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