2 #define TRACE_SYSTEM kmem
4 #if !defined(_TRACE_KMEM_H) || defined(TRACE_HEADER_MULTI_READ)
7 #include <linux/types.h>
8 #include <linux/tracepoint.h>
9 #include <linux/version.h>
10 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
11 #include <trace/events/gfpflags.h>
14 DECLARE_EVENT_CLASS(kmem_alloc
,
16 TP_PROTO(unsigned long call_site
,
22 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
),
25 __field_hex( unsigned long, call_site
)
26 __field_hex( const void *, ptr
)
27 __field( size_t, bytes_req
)
28 __field( size_t, bytes_alloc
)
29 __field( gfp_t
, gfp_flags
)
33 tp_assign(call_site
, call_site
)
35 tp_assign(bytes_req
, bytes_req
)
36 tp_assign(bytes_alloc
, bytes_alloc
)
37 tp_assign(gfp_flags
, gfp_flags
)
40 TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
45 show_gfp_flags(__entry
->gfp_flags
))
48 DEFINE_EVENT(kmem_alloc
, kmalloc
,
50 TP_PROTO(unsigned long call_site
, const void *ptr
,
51 size_t bytes_req
, size_t bytes_alloc
, gfp_t gfp_flags
),
53 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
)
56 DEFINE_EVENT(kmem_alloc
, kmem_cache_alloc
,
58 TP_PROTO(unsigned long call_site
, const void *ptr
,
59 size_t bytes_req
, size_t bytes_alloc
, gfp_t gfp_flags
),
61 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
)
64 DECLARE_EVENT_CLASS(kmem_alloc_node
,
66 TP_PROTO(unsigned long call_site
,
73 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
, node
),
76 __field_hex( unsigned long, call_site
)
77 __field_hex( const void *, ptr
)
78 __field( size_t, bytes_req
)
79 __field( size_t, bytes_alloc
)
80 __field( gfp_t
, gfp_flags
)
85 tp_assign(call_site
, call_site
)
87 tp_assign(bytes_req
, bytes_req
)
88 tp_assign(bytes_alloc
, bytes_alloc
)
89 tp_assign(gfp_flags
, gfp_flags
)
93 TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d",
98 show_gfp_flags(__entry
->gfp_flags
),
102 DEFINE_EVENT(kmem_alloc_node
, kmalloc_node
,
104 TP_PROTO(unsigned long call_site
, const void *ptr
,
105 size_t bytes_req
, size_t bytes_alloc
,
106 gfp_t gfp_flags
, int node
),
108 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
, node
)
111 DEFINE_EVENT(kmem_alloc_node
, kmem_cache_alloc_node
,
113 TP_PROTO(unsigned long call_site
, const void *ptr
,
114 size_t bytes_req
, size_t bytes_alloc
,
115 gfp_t gfp_flags
, int node
),
117 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
, node
)
120 DECLARE_EVENT_CLASS(kmem_free
,
122 TP_PROTO(unsigned long call_site
, const void *ptr
),
124 TP_ARGS(call_site
, ptr
),
127 __field_hex( unsigned long, call_site
)
128 __field_hex( const void *, ptr
)
132 tp_assign(call_site
, call_site
)
136 TP_printk("call_site=%lx ptr=%p", __entry
->call_site
, __entry
->ptr
)
139 DEFINE_EVENT(kmem_free
, kfree
,
141 TP_PROTO(unsigned long call_site
, const void *ptr
),
143 TP_ARGS(call_site
, ptr
)
146 DEFINE_EVENT(kmem_free
, kmem_cache_free
,
148 TP_PROTO(unsigned long call_site
, const void *ptr
),
150 TP_ARGS(call_site
, ptr
)
153 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
154 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
155 TRACE_EVENT(mm_page_free
,
157 TRACE_EVENT(mm_page_free_direct
,
160 TP_PROTO(struct page
*page
, unsigned int order
),
162 TP_ARGS(page
, order
),
165 __field_hex( struct page
*, page
)
166 __field( unsigned int, order
)
170 tp_assign(page
, page
)
171 tp_assign(order
, order
)
174 TP_printk("page=%p pfn=%lu order=%d",
176 page_to_pfn(__entry
->page
),
180 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
181 TRACE_EVENT(mm_page_free_batched
,
183 TRACE_EVENT(mm_pagevec_free
,
186 TP_PROTO(struct page
*page
, int cold
),
191 __field_hex( struct page
*, page
)
196 tp_assign(page
, page
)
197 tp_assign(cold
, cold
)
200 TP_printk("page=%p pfn=%lu order=0 cold=%d",
202 page_to_pfn(__entry
->page
),
206 TRACE_EVENT(mm_page_alloc
,
208 TP_PROTO(struct page
*page
, unsigned int order
,
209 gfp_t gfp_flags
, int migratetype
),
211 TP_ARGS(page
, order
, gfp_flags
, migratetype
),
214 __field_hex( struct page
*, page
)
215 __field( unsigned int, order
)
216 __field( gfp_t
, gfp_flags
)
217 __field( int, migratetype
)
221 tp_assign(page
, page
)
222 tp_assign(order
, order
)
223 tp_assign(gfp_flags
, gfp_flags
)
224 tp_assign(migratetype
, migratetype
)
227 TP_printk("page=%p pfn=%lu order=%d migratetype=%d gfp_flags=%s",
229 __entry
->page
? page_to_pfn(__entry
->page
) : 0,
231 __entry
->migratetype
,
232 show_gfp_flags(__entry
->gfp_flags
))
235 DECLARE_EVENT_CLASS(mm_page
,
237 TP_PROTO(struct page
*page
, unsigned int order
, int migratetype
),
239 TP_ARGS(page
, order
, migratetype
),
242 __field_hex( struct page
*, page
)
243 __field( unsigned int, order
)
244 __field( int, migratetype
)
248 tp_assign(page
, page
)
249 tp_assign(order
, order
)
250 tp_assign(migratetype
, migratetype
)
253 TP_printk("page=%p pfn=%lu order=%u migratetype=%d percpu_refill=%d",
255 __entry
->page
? page_to_pfn(__entry
->page
) : 0,
257 __entry
->migratetype
,
261 DEFINE_EVENT(mm_page
, mm_page_alloc_zone_locked
,
263 TP_PROTO(struct page
*page
, unsigned int order
, int migratetype
),
265 TP_ARGS(page
, order
, migratetype
)
268 DEFINE_EVENT_PRINT(mm_page
, mm_page_pcpu_drain
,
270 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
271 TP_PROTO(struct page
*page
, unsigned int order
, int migratetype
),
273 TP_PROTO(struct page
*page
, int order
, int migratetype
),
276 TP_ARGS(page
, order
, migratetype
),
278 TP_printk("page=%p pfn=%lu order=%d migratetype=%d",
279 __entry
->page
, page_to_pfn(__entry
->page
),
280 __entry
->order
, __entry
->migratetype
)
283 TRACE_EVENT(mm_page_alloc_extfrag
,
285 TP_PROTO(struct page
*page
,
286 int alloc_order
, int fallback_order
,
287 int alloc_migratetype
, int fallback_migratetype
),
290 alloc_order
, fallback_order
,
291 alloc_migratetype
, fallback_migratetype
),
294 __field_hex( struct page
*, page
)
295 __field( int, alloc_order
)
296 __field( int, fallback_order
)
297 __field( int, alloc_migratetype
)
298 __field( int, fallback_migratetype
)
302 tp_assign(page
, page
)
303 tp_assign(alloc_order
, alloc_order
)
304 tp_assign(fallback_order
, fallback_order
)
305 tp_assign(alloc_migratetype
, alloc_migratetype
)
306 tp_assign(fallback_migratetype
, fallback_migratetype
)
309 TP_printk("page=%p pfn=%lu alloc_order=%d fallback_order=%d pageblock_order=%d alloc_migratetype=%d fallback_migratetype=%d fragmenting=%d change_ownership=%d",
311 page_to_pfn(__entry
->page
),
312 __entry
->alloc_order
,
313 __entry
->fallback_order
,
315 __entry
->alloc_migratetype
,
316 __entry
->fallback_migratetype
,
317 __entry
->fallback_order
< pageblock_order
,
318 __entry
->alloc_migratetype
== __entry
->fallback_migratetype
)
322 #endif /* _TRACE_KMEM_H */
324 /* This part must be outside protection */
325 #include "../../../probes/define_trace.h"