linux/include/trace/events/page_ref.h
<<
>>
Prefs
   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 & ((1UL << NR_PAGEFLAGS) - 1)),
  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 & ((1UL << NR_PAGEFLAGS) - 1)),
  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>
 136