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