xref: /linux/include/trace/events/damon.h (revision beace86e61e465dba204a268ab3f3377153a4973)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM damon
4 
5 #if !defined(_TRACE_DAMON_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_DAMON_H
7 
8 #include <linux/damon.h>
9 #include <linux/types.h>
10 #include <linux/tracepoint.h>
11 
12 TRACE_EVENT(damos_esz,
13 
14 	TP_PROTO(unsigned int context_idx, unsigned int scheme_idx,
15 		unsigned long esz),
16 
17 	TP_ARGS(context_idx, scheme_idx, esz),
18 
19 	TP_STRUCT__entry(
20 		__field(unsigned int, context_idx)
21 		__field(unsigned int, scheme_idx)
22 		__field(unsigned long, esz)
23 	),
24 
25 	TP_fast_assign(
26 		__entry->context_idx = context_idx;
27 		__entry->scheme_idx = scheme_idx;
28 		__entry->esz = esz;
29 	),
30 
31 	TP_printk("ctx_idx=%u scheme_idx=%u esz=%lu",
32 			__entry->context_idx, __entry->scheme_idx,
33 			__entry->esz)
34 );
35 
36 TRACE_EVENT_CONDITION(damos_before_apply,
37 
38 	TP_PROTO(unsigned int context_idx, unsigned int scheme_idx,
39 		unsigned int target_idx, struct damon_region *r,
40 		unsigned int nr_regions, bool do_trace),
41 
42 	TP_ARGS(context_idx, scheme_idx, target_idx, r, nr_regions, do_trace),
43 
44 	TP_CONDITION(do_trace),
45 
46 	TP_STRUCT__entry(
47 		__field(unsigned int, context_idx)
48 		__field(unsigned int, scheme_idx)
49 		__field(unsigned long, target_idx)
50 		__field(unsigned long, start)
51 		__field(unsigned long, end)
52 		__field(unsigned int, nr_accesses)
53 		__field(unsigned int, age)
54 		__field(unsigned int, nr_regions)
55 	),
56 
57 	TP_fast_assign(
58 		__entry->context_idx = context_idx;
59 		__entry->scheme_idx = scheme_idx;
60 		__entry->target_idx = target_idx;
61 		__entry->start = r->ar.start;
62 		__entry->end = r->ar.end;
63 		__entry->nr_accesses = r->nr_accesses_bp / 10000;
64 		__entry->age = r->age;
65 		__entry->nr_regions = nr_regions;
66 	),
67 
68 	TP_printk("ctx_idx=%u scheme_idx=%u target_idx=%lu nr_regions=%u %lu-%lu: %u %u",
69 			__entry->context_idx, __entry->scheme_idx,
70 			__entry->target_idx, __entry->nr_regions,
71 			__entry->start, __entry->end,
72 			__entry->nr_accesses, __entry->age)
73 );
74 
75 TRACE_EVENT(damon_monitor_intervals_tune,
76 
77 	TP_PROTO(unsigned long sample_us),
78 
79 	TP_ARGS(sample_us),
80 
81 	TP_STRUCT__entry(
82 		__field(unsigned long, sample_us)
83 	),
84 
85 	TP_fast_assign(
86 		__entry->sample_us = sample_us;
87 	),
88 
89 	TP_printk("sample_us=%lu", __entry->sample_us)
90 );
91 
92 TRACE_EVENT(damon_aggregated,
93 
94 	TP_PROTO(unsigned int target_id, struct damon_region *r,
95 		unsigned int nr_regions),
96 
97 	TP_ARGS(target_id, r, nr_regions),
98 
99 	TP_STRUCT__entry(
100 		__field(unsigned long, target_id)
101 		__field(unsigned int, nr_regions)
102 		__field(unsigned long, start)
103 		__field(unsigned long, end)
104 		__field(unsigned int, nr_accesses)
105 		__field(unsigned int, age)
106 	),
107 
108 	TP_fast_assign(
109 		__entry->target_id = target_id;
110 		__entry->nr_regions = nr_regions;
111 		__entry->start = r->ar.start;
112 		__entry->end = r->ar.end;
113 		__entry->nr_accesses = r->nr_accesses;
114 		__entry->age = r->age;
115 	),
116 
117 	TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u %u",
118 			__entry->target_id, __entry->nr_regions,
119 			__entry->start, __entry->end,
120 			__entry->nr_accesses, __entry->age)
121 );
122 
123 #endif /* _TRACE_DAMON_H */
124 
125 /* This part must be outside protection */
126 #include <trace/define_trace.h>
127