mem-events.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __PERF_MEM_EVENTS_H
  3. #define __PERF_MEM_EVENTS_H
  4. #include <stdbool.h>
  5. #include <stdint.h>
  6. #include <stdio.h>
  7. #include <linux/types.h>
  8. #include "stat.h"
  9. struct perf_mem_event {
  10. bool record;
  11. bool supported;
  12. const char *tag;
  13. const char *name;
  14. const char *sysfs_name;
  15. };
  16. enum {
  17. PERF_MEM_EVENTS__LOAD,
  18. PERF_MEM_EVENTS__STORE,
  19. PERF_MEM_EVENTS__MAX,
  20. };
  21. extern struct perf_mem_event perf_mem_events[PERF_MEM_EVENTS__MAX];
  22. extern unsigned int perf_mem_events__loads_ldlat;
  23. int perf_mem_events__parse(const char *str);
  24. int perf_mem_events__init(void);
  25. char *perf_mem_events__name(int i);
  26. struct mem_info;
  27. int perf_mem__tlb_scnprintf(char *out, size_t sz, struct mem_info *mem_info);
  28. int perf_mem__lvl_scnprintf(char *out, size_t sz, struct mem_info *mem_info);
  29. int perf_mem__snp_scnprintf(char *out, size_t sz, struct mem_info *mem_info);
  30. int perf_mem__lck_scnprintf(char *out, size_t sz, struct mem_info *mem_info);
  31. int perf_script__meminfo_scnprintf(char *bf, size_t size, struct mem_info *mem_info);
  32. struct c2c_stats {
  33. u32 nr_entries;
  34. u32 locks; /* count of 'lock' transactions */
  35. u32 store; /* count of all stores in trace */
  36. u32 st_uncache; /* stores to uncacheable address */
  37. u32 st_noadrs; /* cacheable store with no address */
  38. u32 st_l1hit; /* count of stores that hit L1D */
  39. u32 st_l1miss; /* count of stores that miss L1D */
  40. u32 load; /* count of all loads in trace */
  41. u32 ld_excl; /* exclusive loads, rmt/lcl DRAM - snp none/miss */
  42. u32 ld_shared; /* shared loads, rmt/lcl DRAM - snp hit */
  43. u32 ld_uncache; /* loads to uncacheable address */
  44. u32 ld_io; /* loads to io address */
  45. u32 ld_miss; /* loads miss */
  46. u32 ld_noadrs; /* cacheable load with no address */
  47. u32 ld_fbhit; /* count of loads hitting Fill Buffer */
  48. u32 ld_l1hit; /* count of loads that hit L1D */
  49. u32 ld_l2hit; /* count of loads that hit L2D */
  50. u32 ld_llchit; /* count of loads that hit LLC */
  51. u32 lcl_hitm; /* count of loads with local HITM */
  52. u32 rmt_hitm; /* count of loads with remote HITM */
  53. u32 tot_hitm; /* count of loads with local and remote HITM */
  54. u32 rmt_hit; /* count of loads with remote hit clean; */
  55. u32 lcl_dram; /* count of loads miss to local DRAM */
  56. u32 rmt_dram; /* count of loads miss to remote DRAM */
  57. u32 nomap; /* count of load/stores with no phys adrs */
  58. u32 noparse; /* count of unparsable data sources */
  59. };
  60. struct hist_entry;
  61. int c2c_decode_stats(struct c2c_stats *stats, struct mem_info *mi);
  62. void c2c_add_stats(struct c2c_stats *stats, struct c2c_stats *add);
  63. #endif /* __PERF_MEM_EVENTS_H */