0001
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM page_pool
0004
0005 #if !defined(_TRACE_PAGE_POOL_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_PAGE_POOL_H
0007
0008 #include <linux/types.h>
0009 #include <linux/tracepoint.h>
0010
0011 #include <trace/events/mmflags.h>
0012 #include <net/page_pool.h>
0013
0014 TRACE_EVENT(page_pool_release,
0015
0016 TP_PROTO(const struct page_pool *pool,
0017 s32 inflight, u32 hold, u32 release),
0018
0019 TP_ARGS(pool, inflight, hold, release),
0020
0021 TP_STRUCT__entry(
0022 __field(const struct page_pool *, pool)
0023 __field(s32, inflight)
0024 __field(u32, hold)
0025 __field(u32, release)
0026 __field(u64, cnt)
0027 ),
0028
0029 TP_fast_assign(
0030 __entry->pool = pool;
0031 __entry->inflight = inflight;
0032 __entry->hold = hold;
0033 __entry->release = release;
0034 __entry->cnt = pool->destroy_cnt;
0035 ),
0036
0037 TP_printk("page_pool=%p inflight=%d hold=%u release=%u cnt=%llu",
0038 __entry->pool, __entry->inflight, __entry->hold,
0039 __entry->release, __entry->cnt)
0040 );
0041
0042 TRACE_EVENT(page_pool_state_release,
0043
0044 TP_PROTO(const struct page_pool *pool,
0045 const struct page *page, u32 release),
0046
0047 TP_ARGS(pool, page, release),
0048
0049 TP_STRUCT__entry(
0050 __field(const struct page_pool *, pool)
0051 __field(const struct page *, page)
0052 __field(u32, release)
0053 __field(unsigned long, pfn)
0054 ),
0055
0056 TP_fast_assign(
0057 __entry->pool = pool;
0058 __entry->page = page;
0059 __entry->release = release;
0060 __entry->pfn = page_to_pfn(page);
0061 ),
0062
0063 TP_printk("page_pool=%p page=%p pfn=0x%lx release=%u",
0064 __entry->pool, __entry->page, __entry->pfn, __entry->release)
0065 );
0066
0067 TRACE_EVENT(page_pool_state_hold,
0068
0069 TP_PROTO(const struct page_pool *pool,
0070 const struct page *page, u32 hold),
0071
0072 TP_ARGS(pool, page, hold),
0073
0074 TP_STRUCT__entry(
0075 __field(const struct page_pool *, pool)
0076 __field(const struct page *, page)
0077 __field(u32, hold)
0078 __field(unsigned long, pfn)
0079 ),
0080
0081 TP_fast_assign(
0082 __entry->pool = pool;
0083 __entry->page = page;
0084 __entry->hold = hold;
0085 __entry->pfn = page_to_pfn(page);
0086 ),
0087
0088 TP_printk("page_pool=%p page=%p pfn=0x%lx hold=%u",
0089 __entry->pool, __entry->page, __entry->pfn, __entry->hold)
0090 );
0091
0092 TRACE_EVENT(page_pool_update_nid,
0093
0094 TP_PROTO(const struct page_pool *pool, int new_nid),
0095
0096 TP_ARGS(pool, new_nid),
0097
0098 TP_STRUCT__entry(
0099 __field(const struct page_pool *, pool)
0100 __field(int, pool_nid)
0101 __field(int, new_nid)
0102 ),
0103
0104 TP_fast_assign(
0105 __entry->pool = pool;
0106 __entry->pool_nid = pool->p.nid;
0107 __entry->new_nid = new_nid;
0108 ),
0109
0110 TP_printk("page_pool=%p pool_nid=%d new_nid=%d",
0111 __entry->pool, __entry->pool_nid, __entry->new_nid)
0112 );
0113
0114 #endif
0115
0116
0117 #include <trace/define_trace.h>