memcg.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM memcg
  4. #if !defined(_TRACE_MEMCG_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_MEMCG_H
  6. #include <linux/memcontrol.h>
  7. #include <linux/tracepoint.h>
  8. DECLARE_EVENT_CLASS(memcg_rstat_stats,
  9. TP_PROTO(struct mem_cgroup *memcg, int item, int val),
  10. TP_ARGS(memcg, item, val),
  11. TP_STRUCT__entry(
  12. __field(u64, id)
  13. __field(int, item)
  14. __field(int, val)
  15. ),
  16. TP_fast_assign(
  17. __entry->id = cgroup_id(memcg->css.cgroup);
  18. __entry->item = item;
  19. __entry->val = val;
  20. ),
  21. TP_printk("memcg_id=%llu item=%d val=%d",
  22. __entry->id, __entry->item, __entry->val)
  23. );
  24. DEFINE_EVENT(memcg_rstat_stats, mod_memcg_state,
  25. TP_PROTO(struct mem_cgroup *memcg, int item, int val),
  26. TP_ARGS(memcg, item, val)
  27. );
  28. DEFINE_EVENT(memcg_rstat_stats, mod_memcg_lruvec_state,
  29. TP_PROTO(struct mem_cgroup *memcg, int item, int val),
  30. TP_ARGS(memcg, item, val)
  31. );
  32. DECLARE_EVENT_CLASS(memcg_rstat_events,
  33. TP_PROTO(struct mem_cgroup *memcg, int item, unsigned long val),
  34. TP_ARGS(memcg, item, val),
  35. TP_STRUCT__entry(
  36. __field(u64, id)
  37. __field(int, item)
  38. __field(unsigned long, val)
  39. ),
  40. TP_fast_assign(
  41. __entry->id = cgroup_id(memcg->css.cgroup);
  42. __entry->item = item;
  43. __entry->val = val;
  44. ),
  45. TP_printk("memcg_id=%llu item=%d val=%lu",
  46. __entry->id, __entry->item, __entry->val)
  47. );
  48. DEFINE_EVENT(memcg_rstat_events, count_memcg_events,
  49. TP_PROTO(struct mem_cgroup *memcg, int item, unsigned long val),
  50. TP_ARGS(memcg, item, val)
  51. );
  52. TRACE_EVENT(memcg_flush_stats,
  53. TP_PROTO(struct mem_cgroup *memcg, s64 stats_updates,
  54. bool force, bool needs_flush),
  55. TP_ARGS(memcg, stats_updates, force, needs_flush),
  56. TP_STRUCT__entry(
  57. __field(u64, id)
  58. __field(s64, stats_updates)
  59. __field(bool, force)
  60. __field(bool, needs_flush)
  61. ),
  62. TP_fast_assign(
  63. __entry->id = cgroup_id(memcg->css.cgroup);
  64. __entry->stats_updates = stats_updates;
  65. __entry->force = force;
  66. __entry->needs_flush = needs_flush;
  67. ),
  68. TP_printk("memcg_id=%llu stats_updates=%lld force=%d needs_flush=%d",
  69. __entry->id, __entry->stats_updates,
  70. __entry->force, __entry->needs_flush)
  71. );
  72. #endif /* _TRACE_MEMCG_H */
  73. /* This part must be outside protection */
  74. #include <trace/define_trace.h>