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