2 #define TRACE_SYSTEM compaction
4 #if !defined(LTTNG_TRACE_COMPACTION_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define LTTNG_TRACE_COMPACTION_H
7 #include "../../../probes/lttng-tracepoint-event.h"
8 #include <linux/types.h>
9 #include <linux/version.h>
10 #include <trace/events/gfpflags.h>
12 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0)
14 LTTNG_TRACEPOINT_EVENT_CLASS(mm_compaction_isolate_template
,
16 TP_PROTO(unsigned long start_pfn
,
17 unsigned long end_pfn
,
18 unsigned long nr_scanned
,
19 unsigned long nr_taken
),
21 TP_ARGS(start_pfn
, end_pfn
, nr_scanned
, nr_taken
),
24 __field(unsigned long, start_pfn
)
25 __field(unsigned long, end_pfn
)
26 __field(unsigned long, nr_scanned
)
27 __field(unsigned long, nr_taken
)
31 tp_assign(start_pfn
, start_pfn
)
32 tp_assign(end_pfn
, end_pfn
)
33 tp_assign(nr_scanned
, nr_scanned
)
34 tp_assign(nr_taken
, nr_taken
)
37 TP_printk("range=(0x%lx ~ 0x%lx) nr_scanned=%lu nr_taken=%lu",
44 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_compaction_isolate_template
, mm_compaction_isolate_migratepages
,
46 TP_PROTO(unsigned long start_pfn
,
47 unsigned long end_pfn
,
48 unsigned long nr_scanned
,
49 unsigned long nr_taken
),
51 TP_ARGS(start_pfn
, end_pfn
, nr_scanned
, nr_taken
)
54 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_compaction_isolate_template
, mm_compaction_isolate_freepages
,
56 TP_PROTO(unsigned long start_pfn
,
57 unsigned long end_pfn
,
58 unsigned long nr_scanned
,
59 unsigned long nr_taken
),
61 TP_ARGS(start_pfn
, end_pfn
, nr_scanned
, nr_taken
)
64 #else /* #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0) */
66 LTTNG_TRACEPOINT_EVENT_CLASS(mm_compaction_isolate_template
,
68 TP_PROTO(unsigned long nr_scanned
,
69 unsigned long nr_taken
),
71 TP_ARGS(nr_scanned
, nr_taken
),
74 __field(unsigned long, nr_scanned
)
75 __field(unsigned long, nr_taken
)
79 tp_assign(nr_scanned
, nr_scanned
)
80 tp_assign(nr_taken
, nr_taken
)
83 TP_printk("nr_scanned=%lu nr_taken=%lu",
88 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_compaction_isolate_template
, mm_compaction_isolate_migratepages
,
90 TP_PROTO(unsigned long nr_scanned
,
91 unsigned long nr_taken
),
93 TP_ARGS(nr_scanned
, nr_taken
)
96 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_compaction_isolate_template
, mm_compaction_isolate_freepages
,
97 TP_PROTO(unsigned long nr_scanned
,
98 unsigned long nr_taken
),
100 TP_ARGS(nr_scanned
, nr_taken
)
103 #endif /* #else #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0) */
105 #if LTTNG_KERNEL_RANGE(3,12,30, 3,13,0) || \
106 LTTNG_KERNEL_RANGE(3,14,25, 3,15,0) || \
107 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0))
108 LTTNG_TRACEPOINT_EVENT(mm_compaction_migratepages
,
110 TP_PROTO(unsigned long nr_all
,
112 struct list_head
*migratepages
),
114 TP_ARGS(nr_all
, migrate_rc
, migratepages
),
117 __field(unsigned long, nr_migrated
)
118 __field(unsigned long, nr_failed
)
122 tp_assign(nr_migrated
,
124 (migrate_rc
>= 0 ? migrate_rc
:
126 unsigned long nr_failed
= 0;
127 struct list_head
*page_lru
;
129 list_for_each(page_lru
, migratepages
)
135 unsigned long nr_failed
= 0;
136 struct list_head
*page_lru
;
138 list_for_each(page_lru
, migratepages
)
144 TP_printk("nr_migrated=%lu nr_failed=%lu",
145 __entry
->nr_migrated
,
148 #else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0)) */
149 LTTNG_TRACEPOINT_EVENT(mm_compaction_migratepages
,
151 TP_PROTO(unsigned long nr_migrated
,
152 unsigned long nr_failed
),
154 TP_ARGS(nr_migrated
, nr_failed
),
157 __field(unsigned long, nr_migrated
)
158 __field(unsigned long, nr_failed
)
162 tp_assign(nr_migrated
, nr_migrated
)
163 tp_assign(nr_failed
, nr_failed
)
166 TP_printk("nr_migrated=%lu nr_failed=%lu",
167 __entry
->nr_migrated
,
170 #endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0)) */
172 #endif /* LTTNG_TRACE_COMPACTION_H */
174 /* This part must be outside protection */
175 #include "../../../probes/define_trace.h"