Greg Kroah-Hartman | b244131 | 2017-11-01 15:07:57 +0100 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
Mel Gorman | c6286c9 | 2013-07-03 15:02:26 -0700 | [diff] [blame] | 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 | TRACE_EVENT(mm_lru_insertion, |
| 29 | |
| 30 | TP_PROTO( |
| 31 | struct page *page, |
Mel Gorman | 24b7e58 | 2014-08-06 16:07:11 -0700 | [diff] [blame] | 32 | int lru |
Mel Gorman | c6286c9 | 2013-07-03 15:02:26 -0700 | [diff] [blame] | 33 | ), |
| 34 | |
Mel Gorman | 24b7e58 | 2014-08-06 16:07:11 -0700 | [diff] [blame] | 35 | TP_ARGS(page, lru), |
Mel Gorman | c6286c9 | 2013-07-03 15:02:26 -0700 | [diff] [blame] | 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; |
Mel Gorman | 24b7e58 | 2014-08-06 16:07:11 -0700 | [diff] [blame] | 46 | __entry->pfn = page_to_pfn(page); |
Mel Gorman | c6286c9 | 2013-07-03 15:02:26 -0700 | [diff] [blame] | 47 | __entry->lru = lru; |
Mel Gorman | 24b7e58 | 2014-08-06 16:07:11 -0700 | [diff] [blame] | 48 | __entry->flags = trace_pagemap_flags(page); |
Mel Gorman | c6286c9 | 2013-07-03 15:02:26 -0700 | [diff] [blame] | 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 | TRACE_EVENT(mm_lru_activate, |
| 65 | |
Mel Gorman | 24b7e58 | 2014-08-06 16:07:11 -0700 | [diff] [blame] | 66 | TP_PROTO(struct page *page), |
Mel Gorman | c6286c9 | 2013-07-03 15:02:26 -0700 | [diff] [blame] | 67 | |
Mel Gorman | 24b7e58 | 2014-08-06 16:07:11 -0700 | [diff] [blame] | 68 | TP_ARGS(page), |
Mel Gorman | c6286c9 | 2013-07-03 15:02:26 -0700 | [diff] [blame] | 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; |
Mel Gorman | 24b7e58 | 2014-08-06 16:07:11 -0700 | [diff] [blame] | 77 | __entry->pfn = page_to_pfn(page); |
Mel Gorman | c6286c9 | 2013-07-03 15:02:26 -0700 | [diff] [blame] | 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> |