xref: /OK3568_Linux_fs/kernel/include/trace/events/pagemap.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #undef TRACE_SYSTEM
3*4882a593Smuzhiyun #define TRACE_SYSTEM pagemap
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #if !defined(_TRACE_PAGEMAP_H) || defined(TRACE_HEADER_MULTI_READ)
6*4882a593Smuzhiyun #define _TRACE_PAGEMAP_H
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include <linux/tracepoint.h>
9*4882a593Smuzhiyun #include <linux/mm.h>
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define	PAGEMAP_MAPPED		0x0001u
12*4882a593Smuzhiyun #define PAGEMAP_ANONYMOUS	0x0002u
13*4882a593Smuzhiyun #define PAGEMAP_FILE		0x0004u
14*4882a593Smuzhiyun #define PAGEMAP_SWAPCACHE	0x0008u
15*4882a593Smuzhiyun #define PAGEMAP_SWAPBACKED	0x0010u
16*4882a593Smuzhiyun #define PAGEMAP_MAPPEDDISK	0x0020u
17*4882a593Smuzhiyun #define PAGEMAP_BUFFERS		0x0040u
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #define trace_pagemap_flags(page) ( \
20*4882a593Smuzhiyun 	(PageAnon(page)		? PAGEMAP_ANONYMOUS  : PAGEMAP_FILE) | \
21*4882a593Smuzhiyun 	(page_mapped(page)	? PAGEMAP_MAPPED     : 0) | \
22*4882a593Smuzhiyun 	(PageSwapCache(page)	? PAGEMAP_SWAPCACHE  : 0) | \
23*4882a593Smuzhiyun 	(PageSwapBacked(page)	? PAGEMAP_SWAPBACKED : 0) | \
24*4882a593Smuzhiyun 	(PageMappedToDisk(page)	? PAGEMAP_MAPPEDDISK : 0) | \
25*4882a593Smuzhiyun 	(page_has_private(page) ? PAGEMAP_BUFFERS    : 0) \
26*4882a593Smuzhiyun 	)
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun TRACE_EVENT(mm_lru_insertion,
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun 	TP_PROTO(
31*4882a593Smuzhiyun 		struct page *page,
32*4882a593Smuzhiyun 		int lru
33*4882a593Smuzhiyun 	),
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun 	TP_ARGS(page, lru),
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun 	TP_STRUCT__entry(
38*4882a593Smuzhiyun 		__field(struct page *,	page	)
39*4882a593Smuzhiyun 		__field(unsigned long,	pfn	)
40*4882a593Smuzhiyun 		__field(int,		lru	)
41*4882a593Smuzhiyun 		__field(unsigned long,	flags	)
42*4882a593Smuzhiyun 	),
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun 	TP_fast_assign(
45*4882a593Smuzhiyun 		__entry->page	= page;
46*4882a593Smuzhiyun 		__entry->pfn	= page_to_pfn(page);
47*4882a593Smuzhiyun 		__entry->lru	= lru;
48*4882a593Smuzhiyun 		__entry->flags	= trace_pagemap_flags(page);
49*4882a593Smuzhiyun 	),
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun 	/* Flag format is based on page-types.c formatting for pagemap */
52*4882a593Smuzhiyun 	TP_printk("page=%p pfn=%lu lru=%d flags=%s%s%s%s%s%s",
53*4882a593Smuzhiyun 			__entry->page,
54*4882a593Smuzhiyun 			__entry->pfn,
55*4882a593Smuzhiyun 			__entry->lru,
56*4882a593Smuzhiyun 			__entry->flags & PAGEMAP_MAPPED		? "M" : " ",
57*4882a593Smuzhiyun 			__entry->flags & PAGEMAP_ANONYMOUS	? "a" : "f",
58*4882a593Smuzhiyun 			__entry->flags & PAGEMAP_SWAPCACHE	? "s" : " ",
59*4882a593Smuzhiyun 			__entry->flags & PAGEMAP_SWAPBACKED	? "b" : " ",
60*4882a593Smuzhiyun 			__entry->flags & PAGEMAP_MAPPEDDISK	? "d" : " ",
61*4882a593Smuzhiyun 			__entry->flags & PAGEMAP_BUFFERS	? "B" : " ")
62*4882a593Smuzhiyun );
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun TRACE_EVENT(mm_lru_activate,
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun 	TP_PROTO(struct page *page),
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun 	TP_ARGS(page),
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun 	TP_STRUCT__entry(
71*4882a593Smuzhiyun 		__field(struct page *,	page	)
72*4882a593Smuzhiyun 		__field(unsigned long,	pfn	)
73*4882a593Smuzhiyun 	),
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun 	TP_fast_assign(
76*4882a593Smuzhiyun 		__entry->page	= page;
77*4882a593Smuzhiyun 		__entry->pfn	= page_to_pfn(page);
78*4882a593Smuzhiyun 	),
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun 	/* Flag format is based on page-types.c formatting for pagemap */
81*4882a593Smuzhiyun 	TP_printk("page=%p pfn=%lu", __entry->page, __entry->pfn)
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun );
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #endif /* _TRACE_PAGEMAP_H */
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun /* This part must be outside protection */
88*4882a593Smuzhiyun #include <trace/define_trace.h>
89