#undef TRACE_SYSTEM #define TRACE_SYSTEM page_ref #if !defined(_TRACE_PAGE_REF_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_PAGE_REF_H #include <linux/types.h> #include <linux/page_ref.h> #include <linux/tracepoint.h> #include <trace/events/mmflags.h> DECLARE_EVENT_CLASS(page_ref_mod_template, TP_PROTO(struct page *page, int v), TP_ARGS(page, v), TP_STRUCT__entry( __field(unsigned long, pfn) __field(unsigned long, flags) __field(int, count) __field(int, mapcount) __field(void *, mapping) __field(int, mt) __field(int, val) ), TP_fast_assign( __entry->pfn = page_to_pfn(page); __entry->flags = page->flags; __entry->count = page_ref_count(page); __entry->mapcount = page_mapcount(page); __entry->mapping = page->mapping; __entry->mt = get_pageblock_migratetype(page); __entry->val = v; ), TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d", __entry->pfn, show_page_flags(__entry->flags & ((1UL << NR_PAGEFLAGS) - 1)), __entry->count, __entry->mapcount, __entry->mapping, __entry->mt, __entry->val) ); DEFINE_EVENT(page_ref_mod_template, page_ref_set, TP_PROTO(struct page *page, int v), TP_ARGS(page, v) ); DEFINE_EVENT(page_ref_mod_template, page_ref_mod, TP_PROTO(struct page *page, int v), TP_ARGS(page, v) ); DECLARE_EVENT_CLASS(page_ref_mod_and_test_template, TP_PROTO(struct page *page, int v, int ret), TP_ARGS(page, v, ret), TP_STRUCT__entry( __field(unsigned long, pfn) __field(unsigned long, flags) __field(int, count) __field(int, mapcount) __field(void *, mapping) __field(int, mt) __field(int, val) __field(int, ret) ), TP_fast_assign( __entry->pfn = page_to_pfn(page); __entry->flags = page->flags; __entry->count = page_ref_count(page); __entry->mapcount = page_mapcount(page); __entry->mapping = page->mapping; __entry->mt = get_pageblock_migratetype(page); __entry->val = v; __entry->ret = ret; ), TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d ret=%d", __entry->pfn, show_page_flags(__entry->flags & ((1UL << NR_PAGEFLAGS) - 1)), __entry->count, __entry->mapcount, __entry->mapping, __entry->mt, __entry->val, __entry->ret) ); DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_and_test, TP_PROTO(struct page *page, int v, int ret), TP_ARGS(page, v, ret) ); DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_and_return, TP_PROTO(struct page *page, int v, int ret), TP_ARGS(page, v, ret) ); DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_mod_unless, TP_PROTO(struct page *page, int v, int ret), TP_ARGS(page, v, ret) ); DEFINE_EVENT(page_ref_mod_and_test_template, page_ref_freeze, TP_PROTO(struct page *page, int v, int ret), TP_ARGS(page, v, ret) ); DEFINE_EVENT(page_ref_mod_template, page_ref_unfreeze, TP_PROTO(struct page *page, int v), TP_ARGS(page, v) ); #endif /* _TRACE_PAGE_COUNT_H */ /* This part must be outside protection */ #include <trace/define_trace.h> ;id2=4d6308aac3258ecad8444811a16951a919adc131'>net</a>/<a href='/cgit.cgi/linux/net-next.git/diff/net/ipv6?id=3976001c9db0354a0bcbd77e324fdf1bc04e110f&id2=4d6308aac3258ecad8444811a16951a919adc131'>ipv6</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='id' value='3976001c9db0354a0bcbd77e324fdf1bc04e110f'/><input type='hidden' name='id2' value='4d6308aac3258ecad8444811a16951a919adc131'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><div class='diffstat-header'><a href='/cgit.cgi/linux/net-next.git/diff/?id=3976001c9db0354a0bcbd77e324fdf1bc04e110f&id2=4d6308aac3258ecad8444811a16951a919adc131'>Diffstat</a> (limited to 'net/ipv6')</div><table summary='diffstat' class='diffstat'><tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/cgit.cgi/linux/net-next.git/diff/net/ipv6/ip6_fib.c?id=3976001c9db0354a0bcbd77e324fdf1bc04e110f&id2=4d6308aac3258ecad8444811a16951a919adc131'>net/ipv6/ip6_fib.c</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 7.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 91.7%;'/></tr></table></td></tr> <tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/cgit.cgi/linux/net-next.git/diff/net/ipv6/route.c?id=3976001c9db0354a0bcbd77e324fdf1bc04e110f&id2=4d6308aac3258ecad8444811a16951a919adc131'>net/ipv6/route.c</a></td><td class='right'>228</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 90.8%;'/><td class='rem' style='width: 9.2%;'/><td class='none' style='width: 0.0%;'/></tr></table></td></tr> </table><div class='diffstat-summary'>2 files changed, 223 insertions, 24 deletions</div><table summary='diff' class='diff'><tr><td><div class='head'>diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c