1*ad8d75ffSSteven Rostedt #if !defined(_TRACE_SKB_H) || defined(TRACE_HEADER_MULTI_READ) 2*ad8d75ffSSteven Rostedt #define _TRACE_SKB_H 3*ad8d75ffSSteven Rostedt 4*ad8d75ffSSteven Rostedt #include <linux/skbuff.h> 5*ad8d75ffSSteven Rostedt #include <linux/tracepoint.h> 6*ad8d75ffSSteven Rostedt 7*ad8d75ffSSteven Rostedt #undef TRACE_SYSTEM 8*ad8d75ffSSteven Rostedt #define TRACE_SYSTEM skb 9*ad8d75ffSSteven Rostedt 10*ad8d75ffSSteven Rostedt /* 11*ad8d75ffSSteven Rostedt * Tracepoint for free an sk_buff: 12*ad8d75ffSSteven Rostedt */ 13*ad8d75ffSSteven Rostedt TRACE_EVENT(kfree_skb, 14*ad8d75ffSSteven Rostedt 15*ad8d75ffSSteven Rostedt TP_PROTO(struct sk_buff *skb, void *location), 16*ad8d75ffSSteven Rostedt 17*ad8d75ffSSteven Rostedt TP_ARGS(skb, location), 18*ad8d75ffSSteven Rostedt 19*ad8d75ffSSteven Rostedt TP_STRUCT__entry( 20*ad8d75ffSSteven Rostedt __field( void *, skbaddr ) 21*ad8d75ffSSteven Rostedt __field( unsigned short, protocol ) 22*ad8d75ffSSteven Rostedt __field( void *, location ) 23*ad8d75ffSSteven Rostedt ), 24*ad8d75ffSSteven Rostedt 25*ad8d75ffSSteven Rostedt TP_fast_assign( 26*ad8d75ffSSteven Rostedt __entry->skbaddr = skb; 27*ad8d75ffSSteven Rostedt if (skb) { 28*ad8d75ffSSteven Rostedt __entry->protocol = ntohs(skb->protocol); 29*ad8d75ffSSteven Rostedt } 30*ad8d75ffSSteven Rostedt __entry->location = location; 31*ad8d75ffSSteven Rostedt ), 32*ad8d75ffSSteven Rostedt 33*ad8d75ffSSteven Rostedt TP_printk("skbaddr=%p protocol=%u location=%p", 34*ad8d75ffSSteven Rostedt __entry->skbaddr, __entry->protocol, __entry->location) 35*ad8d75ffSSteven Rostedt ); 36*ad8d75ffSSteven Rostedt 37*ad8d75ffSSteven Rostedt #endif /* _TRACE_SKB_H */ 38*ad8d75ffSSteven Rostedt 39*ad8d75ffSSteven Rostedt /* This part must be outside protection */ 40*ad8d75ffSSteven Rostedt #include <trace/define_trace.h> 41