1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2d0b6e04aSLi Zefan #undef TRACE_SYSTEM
3d0b6e04aSLi Zefan #define TRACE_SYSTEM kmem
4d0b6e04aSLi Zefan
5ad8d75ffSSteven Rostedt #if !defined(_TRACE_KMEM_H) || defined(TRACE_HEADER_MULTI_READ)
6ad8d75ffSSteven Rostedt #define _TRACE_KMEM_H
7ad8d75ffSSteven Rostedt
8ad8d75ffSSteven Rostedt #include <linux/types.h>
9ad8d75ffSSteven Rostedt #include <linux/tracepoint.h>
10420adbe9SVlastimil Babka #include <trace/events/mmflags.h>
1162ba180eSSteven Rostedt
122c1d697fSHyeonggon Yoo TRACE_EVENT(kmem_cache_alloc,
13ad8d75ffSSteven Rostedt
14ad8d75ffSSteven Rostedt TP_PROTO(unsigned long call_site,
15ad8d75ffSSteven Rostedt const void *ptr,
16b347aa7bSVasily Averin struct kmem_cache *s,
17ad8d75ffSSteven Rostedt gfp_t gfp_flags,
18ad8d75ffSSteven Rostedt int node),
19ad8d75ffSSteven Rostedt
202c1d697fSHyeonggon Yoo TP_ARGS(call_site, ptr, s, gfp_flags, node),
21ad8d75ffSSteven Rostedt
22ad8d75ffSSteven Rostedt TP_STRUCT__entry(
23ad8d75ffSSteven Rostedt __field( unsigned long, call_site )
24ad8d75ffSSteven Rostedt __field( const void *, ptr )
25ad8d75ffSSteven Rostedt __field( size_t, bytes_req )
26ad8d75ffSSteven Rostedt __field( size_t, bytes_alloc )
27fe573327SVasily Averin __field( unsigned long, gfp_flags )
28ad8d75ffSSteven Rostedt __field( int, node )
29b347aa7bSVasily Averin __field( bool, accounted )
30ad8d75ffSSteven Rostedt ),
31ad8d75ffSSteven Rostedt
32ad8d75ffSSteven Rostedt TP_fast_assign(
33ad8d75ffSSteven Rostedt __entry->call_site = call_site;
34ad8d75ffSSteven Rostedt __entry->ptr = ptr;
352c1d697fSHyeonggon Yoo __entry->bytes_req = s->object_size;
362c1d697fSHyeonggon Yoo __entry->bytes_alloc = s->size;
37fe573327SVasily Averin __entry->gfp_flags = (__force unsigned long)gfp_flags;
38ad8d75ffSSteven Rostedt __entry->node = node;
39b347aa7bSVasily Averin __entry->accounted = IS_ENABLED(CONFIG_MEMCG_KMEM) ?
40b347aa7bSVasily Averin ((gfp_flags & __GFP_ACCOUNT) ||
412c1d697fSHyeonggon Yoo (s->flags & SLAB_ACCOUNT)) : false;
42ad8d75ffSSteven Rostedt ),
43ad8d75ffSSteven Rostedt
44b347aa7bSVasily Averin TP_printk("call_site=%pS ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d accounted=%s",
457e168b9bSJunyong Sun (void *)__entry->call_site,
46ad8d75ffSSteven Rostedt __entry->ptr,
47ad8d75ffSSteven Rostedt __entry->bytes_req,
48ad8d75ffSSteven Rostedt __entry->bytes_alloc,
4962ba180eSSteven Rostedt show_gfp_flags(__entry->gfp_flags),
50b347aa7bSVasily Averin __entry->node,
51b347aa7bSVasily Averin __entry->accounted ? "true" : "false")
52ad8d75ffSSteven Rostedt );
53ad8d75ffSSteven Rostedt
542c1d697fSHyeonggon Yoo TRACE_EVENT(kmalloc,
55ad8d75ffSSteven Rostedt
562c1d697fSHyeonggon Yoo TP_PROTO(unsigned long call_site,
572c1d697fSHyeonggon Yoo const void *ptr,
582c1d697fSHyeonggon Yoo size_t bytes_req,
592c1d697fSHyeonggon Yoo size_t bytes_alloc,
602c1d697fSHyeonggon Yoo gfp_t gfp_flags,
612c1d697fSHyeonggon Yoo int node),
62ad8d75ffSSteven Rostedt
632c1d697fSHyeonggon Yoo TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
64ad8d75ffSSteven Rostedt
652c1d697fSHyeonggon Yoo TP_STRUCT__entry(
662c1d697fSHyeonggon Yoo __field( unsigned long, call_site )
672c1d697fSHyeonggon Yoo __field( const void *, ptr )
682c1d697fSHyeonggon Yoo __field( size_t, bytes_req )
692c1d697fSHyeonggon Yoo __field( size_t, bytes_alloc )
702c1d697fSHyeonggon Yoo __field( unsigned long, gfp_flags )
712c1d697fSHyeonggon Yoo __field( int, node )
722c1d697fSHyeonggon Yoo ),
7353d0422cSLi Zefan
742c1d697fSHyeonggon Yoo TP_fast_assign(
752c1d697fSHyeonggon Yoo __entry->call_site = call_site;
762c1d697fSHyeonggon Yoo __entry->ptr = ptr;
772c1d697fSHyeonggon Yoo __entry->bytes_req = bytes_req;
782c1d697fSHyeonggon Yoo __entry->bytes_alloc = bytes_alloc;
792c1d697fSHyeonggon Yoo __entry->gfp_flags = (__force unsigned long)gfp_flags;
802c1d697fSHyeonggon Yoo __entry->node = node;
812c1d697fSHyeonggon Yoo ),
8253d0422cSLi Zefan
832c1d697fSHyeonggon Yoo TP_printk("call_site=%pS ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d accounted=%s",
842c1d697fSHyeonggon Yoo (void *)__entry->call_site,
852c1d697fSHyeonggon Yoo __entry->ptr,
862c1d697fSHyeonggon Yoo __entry->bytes_req,
872c1d697fSHyeonggon Yoo __entry->bytes_alloc,
882c1d697fSHyeonggon Yoo show_gfp_flags(__entry->gfp_flags),
892c1d697fSHyeonggon Yoo __entry->node,
902c1d697fSHyeonggon Yoo (IS_ENABLED(CONFIG_MEMCG_KMEM) &&
912c1d697fSHyeonggon Yoo (__entry->gfp_flags & (__force unsigned long)__GFP_ACCOUNT)) ? "true" : "false")
9253d0422cSLi Zefan );
9353d0422cSLi Zefan
943544de8eSJacob Wen TRACE_EVENT(kfree,
95ad8d75ffSSteven Rostedt
96ad8d75ffSSteven Rostedt TP_PROTO(unsigned long call_site, const void *ptr),
97ad8d75ffSSteven Rostedt
98ad8d75ffSSteven Rostedt TP_ARGS(call_site, ptr),
99ad8d75ffSSteven Rostedt
100ad8d75ffSSteven Rostedt TP_STRUCT__entry(
101ad8d75ffSSteven Rostedt __field( unsigned long, call_site )
102ad8d75ffSSteven Rostedt __field( const void *, ptr )
103ad8d75ffSSteven Rostedt ),
104ad8d75ffSSteven Rostedt
105ad8d75ffSSteven Rostedt TP_fast_assign(
106ad8d75ffSSteven Rostedt __entry->call_site = call_site;
107ad8d75ffSSteven Rostedt __entry->ptr = ptr;
108ad8d75ffSSteven Rostedt ),
109ad8d75ffSSteven Rostedt
110f7d6316fSChangbin Du TP_printk("call_site=%pS ptr=%p",
111f7d6316fSChangbin Du (void *)__entry->call_site, __entry->ptr)
112ad8d75ffSSteven Rostedt );
113ad8d75ffSSteven Rostedt
1143544de8eSJacob Wen TRACE_EVENT(kmem_cache_free,
115ad8d75ffSSteven Rostedt
1162c1d697fSHyeonggon Yoo TP_PROTO(unsigned long call_site, const void *ptr, const struct kmem_cache *s),
117ad8d75ffSSteven Rostedt
1182c1d697fSHyeonggon Yoo TP_ARGS(call_site, ptr, s),
119ad8d75ffSSteven Rostedt
1203544de8eSJacob Wen TP_STRUCT__entry(
1213544de8eSJacob Wen __field( unsigned long, call_site )
1223544de8eSJacob Wen __field( const void *, ptr )
1232c1d697fSHyeonggon Yoo __string( name, s->name )
1243544de8eSJacob Wen ),
125ad8d75ffSSteven Rostedt
1263544de8eSJacob Wen TP_fast_assign(
1273544de8eSJacob Wen __entry->call_site = call_site;
1283544de8eSJacob Wen __entry->ptr = ptr;
1292c1d697fSHyeonggon Yoo __assign_str(name, s->name);
1303544de8eSJacob Wen ),
131ad8d75ffSSteven Rostedt
1323544de8eSJacob Wen TP_printk("call_site=%pS ptr=%p name=%s",
133d8145679SSteven Rostedt (VMware) (void *)__entry->call_site, __entry->ptr, __get_str(name))
134ad8d75ffSSteven Rostedt );
1354b4f278cSMel Gorman
136633f6f58SSteven Rostedt (Red Hat) TRACE_EVENT(mm_page_free,
1374b4f278cSMel Gorman
1384b4f278cSMel Gorman TP_PROTO(struct page *page, unsigned int order),
1394b4f278cSMel Gorman
1404b4f278cSMel Gorman TP_ARGS(page, order),
1414b4f278cSMel Gorman
1424b4f278cSMel Gorman TP_STRUCT__entry(
1439fdd8a87SNamhyung Kim __field( unsigned long, pfn )
1444b4f278cSMel Gorman __field( unsigned int, order )
1454b4f278cSMel Gorman ),
1464b4f278cSMel Gorman
1474b4f278cSMel Gorman TP_fast_assign(
1489fdd8a87SNamhyung Kim __entry->pfn = page_to_pfn(page);
1494b4f278cSMel Gorman __entry->order = order;
1504b4f278cSMel Gorman ),
1514b4f278cSMel Gorman
15253d884a6SVincent Whitchurch TP_printk("page=%p pfn=0x%lx order=%d",
1539fdd8a87SNamhyung Kim pfn_to_page(__entry->pfn),
1549fdd8a87SNamhyung Kim __entry->pfn,
1554b4f278cSMel Gorman __entry->order)
1564b4f278cSMel Gorman );
1574b4f278cSMel Gorman
158b413d48aSKonstantin Khlebnikov TRACE_EVENT(mm_page_free_batched,
1594b4f278cSMel Gorman
1602d4894b5SMel Gorman TP_PROTO(struct page *page),
1614b4f278cSMel Gorman
1622d4894b5SMel Gorman TP_ARGS(page),
1634b4f278cSMel Gorman
1644b4f278cSMel Gorman TP_STRUCT__entry(
1659fdd8a87SNamhyung Kim __field( unsigned long, pfn )
1664b4f278cSMel Gorman ),
1674b4f278cSMel Gorman
1684b4f278cSMel Gorman TP_fast_assign(
1699fdd8a87SNamhyung Kim __entry->pfn = page_to_pfn(page);
1704b4f278cSMel Gorman ),
1714b4f278cSMel Gorman
17253d884a6SVincent Whitchurch TP_printk("page=%p pfn=0x%lx order=0",
1739fdd8a87SNamhyung Kim pfn_to_page(__entry->pfn),
1742d4894b5SMel Gorman __entry->pfn)
1754b4f278cSMel Gorman );
1764b4f278cSMel Gorman
1774b4f278cSMel Gorman TRACE_EVENT(mm_page_alloc,
1784b4f278cSMel Gorman
1794b4f278cSMel Gorman TP_PROTO(struct page *page, unsigned int order,
1804b4f278cSMel Gorman gfp_t gfp_flags, int migratetype),
1814b4f278cSMel Gorman
1824b4f278cSMel Gorman TP_ARGS(page, order, gfp_flags, migratetype),
1834b4f278cSMel Gorman
1844b4f278cSMel Gorman TP_STRUCT__entry(
1859fdd8a87SNamhyung Kim __field( unsigned long, pfn )
1864b4f278cSMel Gorman __field( unsigned int, order )
187fe573327SVasily Averin __field( unsigned long, gfp_flags )
1884b4f278cSMel Gorman __field( int, migratetype )
1894b4f278cSMel Gorman ),
1904b4f278cSMel Gorman
1914b4f278cSMel Gorman TP_fast_assign(
1929fdd8a87SNamhyung Kim __entry->pfn = page ? page_to_pfn(page) : -1UL;
1934b4f278cSMel Gorman __entry->order = order;
194fe573327SVasily Averin __entry->gfp_flags = (__force unsigned long)gfp_flags;
1954b4f278cSMel Gorman __entry->migratetype = migratetype;
1964b4f278cSMel Gorman ),
1974b4f278cSMel Gorman
19853d884a6SVincent Whitchurch TP_printk("page=%p pfn=0x%lx order=%d migratetype=%d gfp_flags=%s",
1999fdd8a87SNamhyung Kim __entry->pfn != -1UL ? pfn_to_page(__entry->pfn) : NULL,
2009fdd8a87SNamhyung Kim __entry->pfn != -1UL ? __entry->pfn : 0,
2014b4f278cSMel Gorman __entry->order,
2024b4f278cSMel Gorman __entry->migratetype,
2034b4f278cSMel Gorman show_gfp_flags(__entry->gfp_flags))
2044b4f278cSMel Gorman );
2054b4f278cSMel Gorman
20653d0422cSLi Zefan DECLARE_EVENT_CLASS(mm_page,
2070d3d062aSMel Gorman
20810e0f753SWonhyuk Yang TP_PROTO(struct page *page, unsigned int order, int migratetype,
20910e0f753SWonhyuk Yang int percpu_refill),
2100d3d062aSMel Gorman
21110e0f753SWonhyuk Yang TP_ARGS(page, order, migratetype, percpu_refill),
2120d3d062aSMel Gorman
2130d3d062aSMel Gorman TP_STRUCT__entry(
2149fdd8a87SNamhyung Kim __field( unsigned long, pfn )
2150d3d062aSMel Gorman __field( unsigned int, order )
2160d3d062aSMel Gorman __field( int, migratetype )
21710e0f753SWonhyuk Yang __field( int, percpu_refill )
2180d3d062aSMel Gorman ),
2190d3d062aSMel Gorman
2200d3d062aSMel Gorman TP_fast_assign(
2219fdd8a87SNamhyung Kim __entry->pfn = page ? page_to_pfn(page) : -1UL;
2220d3d062aSMel Gorman __entry->order = order;
2230d3d062aSMel Gorman __entry->migratetype = migratetype;
22410e0f753SWonhyuk Yang __entry->percpu_refill = percpu_refill;
2250d3d062aSMel Gorman ),
2260d3d062aSMel Gorman
22753d884a6SVincent Whitchurch TP_printk("page=%p pfn=0x%lx order=%u migratetype=%d percpu_refill=%d",
2289fdd8a87SNamhyung Kim __entry->pfn != -1UL ? pfn_to_page(__entry->pfn) : NULL,
2299fdd8a87SNamhyung Kim __entry->pfn != -1UL ? __entry->pfn : 0,
2300d3d062aSMel Gorman __entry->order,
2310d3d062aSMel Gorman __entry->migratetype,
23210e0f753SWonhyuk Yang __entry->percpu_refill)
2330d3d062aSMel Gorman );
2340d3d062aSMel Gorman
23553d0422cSLi Zefan DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked,
2360d3d062aSMel Gorman
23710e0f753SWonhyuk Yang TP_PROTO(struct page *page, unsigned int order, int migratetype,
23810e0f753SWonhyuk Yang int percpu_refill),
23953d0422cSLi Zefan
24010e0f753SWonhyuk Yang TP_ARGS(page, order, migratetype, percpu_refill)
24153d0422cSLi Zefan );
24253d0422cSLi Zefan
243633f6f58SSteven Rostedt (Red Hat) TRACE_EVENT(mm_page_pcpu_drain,
24453d0422cSLi Zefan
24553d0422cSLi Zefan TP_PROTO(struct page *page, unsigned int order, int migratetype),
2460d3d062aSMel Gorman
2470d3d062aSMel Gorman TP_ARGS(page, order, migratetype),
2480d3d062aSMel Gorman
249649b8de2SShreyas B. Prabhu TP_STRUCT__entry(
250649b8de2SShreyas B. Prabhu __field( unsigned long, pfn )
251649b8de2SShreyas B. Prabhu __field( unsigned int, order )
252649b8de2SShreyas B. Prabhu __field( int, migratetype )
253649b8de2SShreyas B. Prabhu ),
254649b8de2SShreyas B. Prabhu
255649b8de2SShreyas B. Prabhu TP_fast_assign(
256649b8de2SShreyas B. Prabhu __entry->pfn = page ? page_to_pfn(page) : -1UL;
257649b8de2SShreyas B. Prabhu __entry->order = order;
258649b8de2SShreyas B. Prabhu __entry->migratetype = migratetype;
259649b8de2SShreyas B. Prabhu ),
260649b8de2SShreyas B. Prabhu
26153d884a6SVincent Whitchurch TP_printk("page=%p pfn=0x%lx order=%d migratetype=%d",
2629fdd8a87SNamhyung Kim pfn_to_page(__entry->pfn), __entry->pfn,
26353d0422cSLi Zefan __entry->order, __entry->migratetype)
2640d3d062aSMel Gorman );
2650d3d062aSMel Gorman
266e0fff1bdSMel Gorman TRACE_EVENT(mm_page_alloc_extfrag,
267e0fff1bdSMel Gorman
268e0fff1bdSMel Gorman TP_PROTO(struct page *page,
269e0fff1bdSMel Gorman int alloc_order, int fallback_order,
27099592d59SVlastimil Babka int alloc_migratetype, int fallback_migratetype),
271e0fff1bdSMel Gorman
272e0fff1bdSMel Gorman TP_ARGS(page,
273e0fff1bdSMel Gorman alloc_order, fallback_order,
27499592d59SVlastimil Babka alloc_migratetype, fallback_migratetype),
275e0fff1bdSMel Gorman
276e0fff1bdSMel Gorman TP_STRUCT__entry(
2779fdd8a87SNamhyung Kim __field( unsigned long, pfn )
278e0fff1bdSMel Gorman __field( int, alloc_order )
279e0fff1bdSMel Gorman __field( int, fallback_order )
280e0fff1bdSMel Gorman __field( int, alloc_migratetype )
281e0fff1bdSMel Gorman __field( int, fallback_migratetype )
282f92310c1SSrivatsa S. Bhat __field( int, change_ownership )
283e0fff1bdSMel Gorman ),
284e0fff1bdSMel Gorman
285e0fff1bdSMel Gorman TP_fast_assign(
2869fdd8a87SNamhyung Kim __entry->pfn = page_to_pfn(page);
287e0fff1bdSMel Gorman __entry->alloc_order = alloc_order;
288e0fff1bdSMel Gorman __entry->fallback_order = fallback_order;
289e0fff1bdSMel Gorman __entry->alloc_migratetype = alloc_migratetype;
290e0fff1bdSMel Gorman __entry->fallback_migratetype = fallback_migratetype;
29199592d59SVlastimil Babka __entry->change_ownership = (alloc_migratetype ==
29299592d59SVlastimil Babka get_pageblock_migratetype(page));
293e0fff1bdSMel Gorman ),
294e0fff1bdSMel Gorman
29553d884a6SVincent Whitchurch TP_printk("page=%p pfn=0x%lx alloc_order=%d fallback_order=%d pageblock_order=%d alloc_migratetype=%d fallback_migratetype=%d fragmenting=%d change_ownership=%d",
2969fdd8a87SNamhyung Kim pfn_to_page(__entry->pfn),
2979fdd8a87SNamhyung Kim __entry->pfn,
298e0fff1bdSMel Gorman __entry->alloc_order,
299e0fff1bdSMel Gorman __entry->fallback_order,
300e0fff1bdSMel Gorman pageblock_order,
301e0fff1bdSMel Gorman __entry->alloc_migratetype,
302e0fff1bdSMel Gorman __entry->fallback_migratetype,
303e0fff1bdSMel Gorman __entry->fallback_order < pageblock_order,
304f92310c1SSrivatsa S. Bhat __entry->change_ownership)
305e0fff1bdSMel Gorman );
306e0fff1bdSMel Gorman
307e4dcad20SJoel Fernandes (Google) /*
308e4dcad20SJoel Fernandes (Google) * Required for uniquely and securely identifying mm in rss_stat tracepoint.
309e4dcad20SJoel Fernandes (Google) */
310e4dcad20SJoel Fernandes (Google) #ifndef __PTR_TO_HASHVAL
mm_ptr_to_hash(const void * ptr)311e4dcad20SJoel Fernandes (Google) static unsigned int __maybe_unused mm_ptr_to_hash(const void *ptr)
312e4dcad20SJoel Fernandes (Google) {
313e4dcad20SJoel Fernandes (Google) int ret;
314e4dcad20SJoel Fernandes (Google) unsigned long hashval;
315e4dcad20SJoel Fernandes (Google)
316e4dcad20SJoel Fernandes (Google) ret = ptr_to_hashval(ptr, &hashval);
317e4dcad20SJoel Fernandes (Google) if (ret)
318e4dcad20SJoel Fernandes (Google) return 0;
319e4dcad20SJoel Fernandes (Google)
320e4dcad20SJoel Fernandes (Google) /* The hashed value is only 32-bit */
321e4dcad20SJoel Fernandes (Google) return (unsigned int)hashval;
322e4dcad20SJoel Fernandes (Google) }
323e4dcad20SJoel Fernandes (Google) #define __PTR_TO_HASHVAL
324e4dcad20SJoel Fernandes (Google) #endif
325e4dcad20SJoel Fernandes (Google)
326f9001107SOvidiu Panait #define TRACE_MM_PAGES \
327f9001107SOvidiu Panait EM(MM_FILEPAGES) \
328f9001107SOvidiu Panait EM(MM_ANONPAGES) \
329f9001107SOvidiu Panait EM(MM_SWAPENTS) \
330f9001107SOvidiu Panait EMe(MM_SHMEMPAGES)
331f9001107SOvidiu Panait
332f9001107SOvidiu Panait #undef EM
333f9001107SOvidiu Panait #undef EMe
334f9001107SOvidiu Panait
335f9001107SOvidiu Panait #define EM(a) TRACE_DEFINE_ENUM(a);
336f9001107SOvidiu Panait #define EMe(a) TRACE_DEFINE_ENUM(a);
337f9001107SOvidiu Panait
338f9001107SOvidiu Panait TRACE_MM_PAGES
339f9001107SOvidiu Panait
340f9001107SOvidiu Panait #undef EM
341f9001107SOvidiu Panait #undef EMe
342f9001107SOvidiu Panait
343f9001107SOvidiu Panait #define EM(a) { a, #a },
344f9001107SOvidiu Panait #define EMe(a) { a, #a }
345f9001107SOvidiu Panait
346b3d1411bSJoel Fernandes (Google) TRACE_EVENT(rss_stat,
347b3d1411bSJoel Fernandes (Google)
348e4dcad20SJoel Fernandes (Google) TP_PROTO(struct mm_struct *mm,
349*f1a79412SShakeel Butt int member),
350b3d1411bSJoel Fernandes (Google)
351*f1a79412SShakeel Butt TP_ARGS(mm, member),
352b3d1411bSJoel Fernandes (Google)
353b3d1411bSJoel Fernandes (Google) TP_STRUCT__entry(
354e4dcad20SJoel Fernandes (Google) __field(unsigned int, mm_id)
355e4dcad20SJoel Fernandes (Google) __field(unsigned int, curr)
356b3d1411bSJoel Fernandes (Google) __field(int, member)
357b3d1411bSJoel Fernandes (Google) __field(long, size)
358b3d1411bSJoel Fernandes (Google) ),
359b3d1411bSJoel Fernandes (Google)
360b3d1411bSJoel Fernandes (Google) TP_fast_assign(
361e4dcad20SJoel Fernandes (Google) __entry->mm_id = mm_ptr_to_hash(mm);
362e4dcad20SJoel Fernandes (Google) __entry->curr = !!(current->mm == mm);
363b3d1411bSJoel Fernandes (Google) __entry->member = member;
364*f1a79412SShakeel Butt __entry->size = (percpu_counter_sum_positive(&mm->rss_stat[member])
365*f1a79412SShakeel Butt << PAGE_SHIFT);
366b3d1411bSJoel Fernandes (Google) ),
367b3d1411bSJoel Fernandes (Google)
368f9001107SOvidiu Panait TP_printk("mm_id=%u curr=%d type=%s size=%ldB",
369e4dcad20SJoel Fernandes (Google) __entry->mm_id,
370e4dcad20SJoel Fernandes (Google) __entry->curr,
371f9001107SOvidiu Panait __print_symbolic(__entry->member, TRACE_MM_PAGES),
372b3d1411bSJoel Fernandes (Google) __entry->size)
373b3d1411bSJoel Fernandes (Google) );
374ad8d75ffSSteven Rostedt #endif /* _TRACE_KMEM_H */
375ad8d75ffSSteven Rostedt
376ad8d75ffSSteven Rostedt /* This part must be outside protection */
377ad8d75ffSSteven Rostedt #include <trace/define_trace.h>
378