Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM page_ref
0004 
0005 #if !defined(_TRACE_PAGE_REF_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_PAGE_REF_H
0007 
0008 #include <linux/types.h>
0009 #include <linux/page_ref.h>
0010 #include <linux/tracepoint.h>
0011 #include <trace/events/mmflags.h>
0012 
0013 DECLARE_EVENT_CLASS(page_ref_mod_template,
0014 
0015     TP_PROTO(struct page *page, int v),
0016 
0017     TP_ARGS(page, v),
0018 
0019     TP_STRUCT__entry(
0020         __field(unsigned long, pfn)
0021         __field(unsigned long, flags)
0022         __field(int, count)
0023         __field(int, mapcount)
0024         __field(void *, mapping)
0025         __field(int, mt)
0026         __field(int, val)
0027     ),
0028 
0029     TP_fast_assign(
0030         __entry->pfn = page_to_pfn(page);
0031         __entry->flags = page->flags;
0032         __entry->count = page_ref_count(page);
0033         __entry->mapcount = page_mapcount(page);
0034         __entry->mapping = page->mapping;
0035         __entry->mt = get_pageblock_migratetype(page);
0036         __entry->val = v;
0037     ),
0038 
0039     TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d",
0040         __entry->pfn,
0041         show_page_flags(__entry->flags & PAGEFLAGS_MASK),
0042         __entry->count,
0043         __entry->mapcount, __entry->mapping, __entry->mt,
0044         __entry->val)
0045 );
0046 
0047 DEFINE_EVENT(page_ref_mod_template, page_ref_set,
0048 
0049     TP_PROTO(struct page *page, int v),
0050 
0051     TP_ARGS(page, v)
0052 );
0053 
0054 DEFINE_EVENT(page_ref_mod_template, page_ref_mod,
0055 
0056     TP_PROTO(struct page *page, int v),
0057 
0058     TP_ARGS(page, v)
0059 );
0060 
0061 DECLARE_EVENT_CLASS(page_ref_mod_and_test_template,
0062 
0063     TP_PROTO(struct page *page, int v, int ret),
0064 
0065     TP_ARGS(page, v, ret),
0066 
0067     TP_STRUCT__entry(
0068         __field(unsigned long, pfn)
0069         __field(unsigned long, flags)
0070         __field(int, count)
0071         __field(int, mapcount)
0072         __field(void *, mapping)
0073         __field(int, mt)
0074         __field(int, val)
0075         __field(int, ret)
0076     ),
0077 
0078     TP_fast_assign(
0079         __entry->pfn = page_to_pfn(page);
0080         __entry->flags = page->flags;
0081         __entry->count = page_ref_count(page);
0082         __entry->mapcount = page_mapcount(page);
0083         __entry->mapping = page->mapping;
0084         __entry->mt = get_pageblock_migratetype(page);
0085         __entry->val = v;
0086         __entry->ret = ret;
0087     ),
0088 
0089     TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d ret=%d",
0090         __entry->pfn,
0091         show_page_flags(__entry->flags & PAGEFLAGS_MASK),
0092         __entry->count,
0093         __entry->mapcount, __entry->mapping, __entry->mt,
0094         __entry->val, __entry->ret)
0095 );
0096 
0097 DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_and_test,
0098 
0099     TP_PROTO(struct page *page, int v, int ret),
0100 
0101     TP_ARGS(page, v, ret)
0102 );
0103 
0104 DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_and_return,
0105 
0106     TP_PROTO(struct page *page, int v, int ret),
0107 
0108     TP_ARGS(page, v, ret)
0109 );
0110 
0111 DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_unless,
0112 
0113     TP_PROTO(struct page *page, int v, int ret),
0114 
0115     TP_ARGS(page, v, ret)
0116 );
0117 
0118 DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_freeze,
0119 
0120     TP_PROTO(struct page *page, int v, int ret),
0121 
0122     TP_ARGS(page, v, ret)
0123 );
0124 
0125 DEFINE_EVENT(page_ref_mod_template, page_ref_unfreeze,
0126 
0127     TP_PROTO(struct page *page, int v),
0128 
0129     TP_ARGS(page, v)
0130 );
0131 
0132 #endif /* _TRACE_PAGE_COUNT_H */
0133 
0134 /* This part must be outside protection */
0135 #include <trace/define_trace.h>