Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM pagemap
0004 
0005 #if !defined(_TRACE_PAGEMAP_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_PAGEMAP_H
0007 
0008 #include <linux/tracepoint.h>
0009 #include <linux/mm.h>
0010 
0011 #define PAGEMAP_MAPPED      0x0001u
0012 #define PAGEMAP_ANONYMOUS   0x0002u
0013 #define PAGEMAP_FILE        0x0004u
0014 #define PAGEMAP_SWAPCACHE   0x0008u
0015 #define PAGEMAP_SWAPBACKED  0x0010u
0016 #define PAGEMAP_MAPPEDDISK  0x0020u
0017 #define PAGEMAP_BUFFERS     0x0040u
0018 
0019 #define trace_pagemap_flags(folio) ( \
0020     (folio_test_anon(folio)     ? PAGEMAP_ANONYMOUS  : PAGEMAP_FILE) | \
0021     (folio_mapped(folio)        ? PAGEMAP_MAPPED     : 0) | \
0022     (folio_test_swapcache(folio)    ? PAGEMAP_SWAPCACHE  : 0) | \
0023     (folio_test_swapbacked(folio)   ? PAGEMAP_SWAPBACKED : 0) | \
0024     (folio_test_mappedtodisk(folio) ? PAGEMAP_MAPPEDDISK : 0) | \
0025     (folio_test_private(folio)  ? PAGEMAP_BUFFERS    : 0) \
0026     )
0027 
0028 TRACE_EVENT(mm_lru_insertion,
0029 
0030     TP_PROTO(struct folio *folio),
0031 
0032     TP_ARGS(folio),
0033 
0034     TP_STRUCT__entry(
0035         __field(struct folio *, folio   )
0036         __field(unsigned long,  pfn )
0037         __field(enum lru_list,  lru )
0038         __field(unsigned long,  flags   )
0039     ),
0040 
0041     TP_fast_assign(
0042         __entry->folio  = folio;
0043         __entry->pfn    = folio_pfn(folio);
0044         __entry->lru    = folio_lru_list(folio);
0045         __entry->flags  = trace_pagemap_flags(folio);
0046     ),
0047 
0048     /* Flag format is based on page-types.c formatting for pagemap */
0049     TP_printk("folio=%p pfn=0x%lx lru=%d flags=%s%s%s%s%s%s",
0050             __entry->folio,
0051             __entry->pfn,
0052             __entry->lru,
0053             __entry->flags & PAGEMAP_MAPPED     ? "M" : " ",
0054             __entry->flags & PAGEMAP_ANONYMOUS  ? "a" : "f",
0055             __entry->flags & PAGEMAP_SWAPCACHE  ? "s" : " ",
0056             __entry->flags & PAGEMAP_SWAPBACKED ? "b" : " ",
0057             __entry->flags & PAGEMAP_MAPPEDDISK ? "d" : " ",
0058             __entry->flags & PAGEMAP_BUFFERS    ? "B" : " ")
0059 );
0060 
0061 TRACE_EVENT(mm_lru_activate,
0062 
0063     TP_PROTO(struct folio *folio),
0064 
0065     TP_ARGS(folio),
0066 
0067     TP_STRUCT__entry(
0068         __field(struct folio *, folio   )
0069         __field(unsigned long,  pfn )
0070     ),
0071 
0072     TP_fast_assign(
0073         __entry->folio  = folio;
0074         __entry->pfn    = folio_pfn(folio);
0075     ),
0076 
0077     TP_printk("folio=%p pfn=0x%lx", __entry->folio, __entry->pfn)
0078 );
0079 
0080 #endif /* _TRACE_PAGEMAP_H */
0081 
0082 /* This part must be outside protection */
0083 #include <trace/define_trace.h>