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