page_ref.h (3034B)
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>