2 #define TRACE_SYSTEM kmem
4 #if !defined(_TRACE_KMEM_H) || defined(TRACE_HEADER_MULTI_READ)
7 DECLARE_EVENT_CLASS(kmem_alloc
,
9 TP_PROTO(unsigned long call_site
,
15 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
),
18 __field( unsigned long, call_site
)
19 __field( const void *, ptr
)
20 __field( size_t, bytes_req
)
21 __field( size_t, bytes_alloc
)
22 __field( gfp_t
, gfp_flags
)
26 tp_assign(call_site
, call_site
);
28 tp_assign(bytes_req
, bytes_req
);
29 tp_assign(bytes_alloc
, bytes_alloc
);
30 tp_assign(gfp_flags
, gfp_flags
);
33 TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
38 show_gfp_flags(__entry
->gfp_flags
))
41 DEFINE_EVENT(kmem_alloc
, kmalloc
,
43 TP_PROTO(unsigned long call_site
, const void *ptr
,
44 size_t bytes_req
, size_t bytes_alloc
, gfp_t gfp_flags
),
46 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
)
49 DEFINE_EVENT(kmem_alloc
, kmem_cache_alloc
,
51 TP_PROTO(unsigned long call_site
, const void *ptr
,
52 size_t bytes_req
, size_t bytes_alloc
, gfp_t gfp_flags
),
54 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
)
57 DECLARE_EVENT_CLASS(kmem_alloc_node
,
59 TP_PROTO(unsigned long call_site
,
66 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
, node
),
69 __field( unsigned long, call_site
)
70 __field( const void *, ptr
)
71 __field( size_t, bytes_req
)
72 __field( size_t, bytes_alloc
)
73 __field( gfp_t
, gfp_flags
)
78 tp_assign(call_site
, call_site
);
80 tp_assign(bytes_req
, bytes_req
);
81 tp_assign(bytes_alloc
, bytes_alloc
);
82 tp_assign(gfp_flags
, gfp_flags
);
83 tp_assign(node
, node
);
86 TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d",
91 show_gfp_flags(__entry
->gfp_flags
),
95 DEFINE_EVENT(kmem_alloc_node
, kmalloc_node
,
97 TP_PROTO(unsigned long call_site
, const void *ptr
,
98 size_t bytes_req
, size_t bytes_alloc
,
99 gfp_t gfp_flags
, int node
),
101 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
, node
)
104 DEFINE_EVENT(kmem_alloc_node
, kmem_cache_alloc_node
,
106 TP_PROTO(unsigned long call_site
, const void *ptr
,
107 size_t bytes_req
, size_t bytes_alloc
,
108 gfp_t gfp_flags
, int node
),
110 TP_ARGS(call_site
, ptr
, bytes_req
, bytes_alloc
, gfp_flags
, node
)
113 DECLARE_EVENT_CLASS(kmem_free
,
115 TP_PROTO(unsigned long call_site
, const void *ptr
),
117 TP_ARGS(call_site
, ptr
),
120 __field( unsigned long, call_site
)
121 __field( const void *, ptr
)
125 tp_assign(call_site
, call_site
);
129 TP_printk("call_site=%lx ptr=%p", __entry
->call_site
, __entry
->ptr
)
132 DEFINE_EVENT(kmem_free
, kfree
,
134 TP_PROTO(unsigned long call_site
, const void *ptr
),
136 TP_ARGS(call_site
, ptr
)
139 DEFINE_EVENT(kmem_free
, kmem_cache_free
,
141 TP_PROTO(unsigned long call_site
, const void *ptr
),
143 TP_ARGS(call_site
, ptr
)
146 TRACE_EVENT(mm_page_free_direct
,
148 TP_PROTO(struct page
*page
, unsigned int order
),
150 TP_ARGS(page
, order
),
153 __field( struct page
*, page
)
154 __field( unsigned int, order
)
158 tp_assign(page
, page
);
159 tp_assign(order
, order
);
162 TP_printk("page=%p pfn=%lu order=%d",
164 page_to_pfn(__entry
->page
),
168 TRACE_EVENT(mm_pagevec_free
,
170 TP_PROTO(struct page
*page
, int cold
),
175 __field( struct page
*, page
)
180 tp_assign(page
, page
);
181 tp_assign(cold
, cold
);
184 TP_printk("page=%p pfn=%lu order=0 cold=%d",
186 page_to_pfn(__entry
->page
),
190 TRACE_EVENT(mm_page_alloc
,
192 TP_PROTO(struct page
*page
, unsigned int order
,
193 gfp_t gfp_flags
, int migratetype
),
195 TP_ARGS(page
, order
, gfp_flags
, migratetype
),
198 __field( struct page
*, page
)
199 __field( unsigned int, order
)
200 __field( gfp_t
, gfp_flags
)
201 __field( int, migratetype
)
205 tp_assign(page
, page
);
206 tp_assign(order
, order
);
207 tp_assign(gfp_flags
, gfp_flags
);
208 tp_assign(migratetype
, migratetype
);
211 TP_printk("page=%p pfn=%lu order=%d migratetype=%d gfp_flags=%s",
213 page_to_pfn(__entry
->page
),
215 __entry
->migratetype
,
216 show_gfp_flags(__entry
->gfp_flags
))
219 DECLARE_EVENT_CLASS(mm_page
,
221 TP_PROTO(struct page
*page
, unsigned int order
, int migratetype
),
223 TP_ARGS(page
, order
, migratetype
),
226 __field( struct page
*, page
)
227 __field( unsigned int, order
)
228 __field( int, migratetype
)
232 tp_assign(page
, page
);
233 tp_assign(order
, order
);
234 tp_assign(migratetype
, migratetype
);
237 TP_printk("page=%p pfn=%lu order=%u migratetype=%d percpu_refill=%d",
239 page_to_pfn(__entry
->page
),
241 __entry
->migratetype
,
245 DEFINE_EVENT(mm_page
, mm_page_alloc_zone_locked
,
247 TP_PROTO(struct page
*page
, unsigned int order
, int migratetype
),
249 TP_ARGS(page
, order
, migratetype
)
252 DEFINE_EVENT_PRINT(mm_page
, mm_page_pcpu_drain
,
254 TP_PROTO(struct page
*page
, unsigned int order
, int migratetype
),
256 TP_ARGS(page
, order
, migratetype
),
258 TP_printk("page=%p pfn=%lu order=%d migratetype=%d",
259 __entry
->page
, page_to_pfn(__entry
->page
),
260 __entry
->order
, __entry
->migratetype
)
263 TRACE_EVENT(mm_page_alloc_extfrag
,
265 TP_PROTO(struct page
*page
,
266 int alloc_order
, int fallback_order
,
267 int alloc_migratetype
, int fallback_migratetype
),
270 alloc_order
, fallback_order
,
271 alloc_migratetype
, fallback_migratetype
),
274 __field( struct page
*, page
)
275 __field( int, alloc_order
)
276 __field( int, fallback_order
)
277 __field( int, alloc_migratetype
)
278 __field( int, fallback_migratetype
)
282 tp_assign(page
, page
);
283 tp_assign(alloc_order
, alloc_order
);
284 tp_assign(fallback_order
, fallback_order
);
285 tp_assign(alloc_migratetype
, alloc_migratetype
);
286 tp_assign(fallback_migratetype
, fallback_migratetype
);
289 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",
291 page_to_pfn(__entry
->page
),
292 __entry
->alloc_order
,
293 __entry
->fallback_order
,
295 __entry
->alloc_migratetype
,
296 __entry
->fallback_migratetype
,
297 __entry
->fallback_order
< pageblock_order
,
298 __entry
->alloc_migratetype
== __entry
->fallback_migratetype
)
301 #endif /* _TRACE_KMEM_H */
303 /* This part must be outside protection */
304 #include "../../../probes/define_trace.h"