Linux Audio

Check our new training course

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>