xref: /linux/include/trace/events/page_ref.h (revision fbc872c38c8fed31948c85683b5326ee5ab9fccc)
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM page_ref
3 
4 #if !defined(_TRACE_PAGE_REF_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_PAGE_REF_H
6 
7 #include <linux/types.h>
8 #include <linux/page_ref.h>
9 #include <linux/tracepoint.h>
10 #include <trace/events/mmflags.h>
11 
12 DECLARE_EVENT_CLASS(page_ref_mod_template,
13 
14 	TP_PROTO(struct page *page, int v),
15 
16 	TP_ARGS(page, v),
17 
18 	TP_STRUCT__entry(
19 		__field(unsigned long, pfn)
20 		__field(unsigned long, flags)
21 		__field(int, count)
22 		__field(int, mapcount)
23 		__field(void *, mapping)
24 		__field(int, mt)
25 		__field(int, val)
26 	),
27 
28 	TP_fast_assign(
29 		__entry->pfn = page_to_pfn(page);
30 		__entry->flags = page->flags;
31 		__entry->count = page_ref_count(page);
32 		__entry->mapcount = page_mapcount(page);
33 		__entry->mapping = page->mapping;
34 		__entry->mt = get_pageblock_migratetype(page);
35 		__entry->val = v;
36 	),
37 
38 	TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d",
39 		__entry->pfn,
40 		show_page_flags(__entry->flags & ((1UL << NR_PAGEFLAGS) - 1)),
41 		__entry->count,
42 		__entry->mapcount, __entry->mapping, __entry->mt,
43 		__entry->val)
44 );
45 
46 DEFINE_EVENT(page_ref_mod_template, page_ref_set,
47 
48 	TP_PROTO(struct page *page, int v),
49 
50 	TP_ARGS(page, v)
51 );
52 
53 DEFINE_EVENT(page_ref_mod_template, page_ref_mod,
54 
55 	TP_PROTO(struct page *page, int v),
56 
57 	TP_ARGS(page, v)
58 );
59 
60 DECLARE_EVENT_CLASS(page_ref_mod_and_test_template,
61 
62 	TP_PROTO(struct page *page, int v, int ret),
63 
64 	TP_ARGS(page, v, ret),
65 
66 	TP_STRUCT__entry(
67 		__field(unsigned long, pfn)
68 		__field(unsigned long, flags)
69 		__field(int, count)
70 		__field(int, mapcount)
71 		__field(void *, mapping)
72 		__field(int, mt)
73 		__field(int, val)
74 		__field(int, ret)
75 	),
76 
77 	TP_fast_assign(
78 		__entry->pfn = page_to_pfn(page);
79 		__entry->flags = page->flags;
80 		__entry->count = page_ref_count(page);
81 		__entry->mapcount = page_mapcount(page);
82 		__entry->mapping = page->mapping;
83 		__entry->mt = get_pageblock_migratetype(page);
84 		__entry->val = v;
85 		__entry->ret = ret;
86 	),
87 
88 	TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d ret=%d",
89 		__entry->pfn,
90 		show_page_flags(__entry->flags & ((1UL << NR_PAGEFLAGS) - 1)),
91 		__entry->count,
92 		__entry->mapcount, __entry->mapping, __entry->mt,
93 		__entry->val, __entry->ret)
94 );
95 
96 DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_and_test,
97 
98 	TP_PROTO(struct page *page, int v, int ret),
99 
100 	TP_ARGS(page, v, ret)
101 );
102 
103 DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_and_return,
104 
105 	TP_PROTO(struct page *page, int v, int ret),
106 
107 	TP_ARGS(page, v, ret)
108 );
109 
110 DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_unless,
111 
112 	TP_PROTO(struct page *page, int v, int ret),
113 
114 	TP_ARGS(page, v, ret)
115 );
116 
117 DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_freeze,
118 
119 	TP_PROTO(struct page *page, int v, int ret),
120 
121 	TP_ARGS(page, v, ret)
122 );
123 
124 DEFINE_EVENT(page_ref_mod_template, page_ref_unfreeze,
125 
126 	TP_PROTO(struct page *page, int v),
127 
128 	TP_ARGS(page, v)
129 );
130 
131 #endif /* _TRACE_PAGE_COUNT_H */
132 
133 /* This part must be outside protection */
134 #include <trace/define_trace.h>
135