net: skb ftracer - add tracepoint to skb_copy_datagram_iovec (v3)
skb allocation / cosumption tracer - Add consumption tracepoint This patch adds a tracepoint to skb_copy_datagram_iovec, which is called each time a userspace process copies a frame from a socket receive queue to a user space buffer. It allows us to hook in and examine each sk_buff that the system receives on a per-socket bases, and can be use to compile a list of which skb's were received by which processes. Signed-off-by: Neil Horman <nhorman@tuxdriver.com> include/trace/events/skb.h | 20 ++++++++++++++++++++ net/core/datagram.c | 3 +++ 2 files changed, 23 insertions(+) Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									1e5053b763
								
							
						
					
					
						commit
						e9b3cc1b37
					
				| @ -5,6 +5,7 @@ | ||||
| #define _TRACE_SKB_H | ||||
| 
 | ||||
| #include <linux/skbuff.h> | ||||
| #include <linux/netdevice.h> | ||||
| #include <linux/tracepoint.h> | ||||
| 
 | ||||
| /*
 | ||||
| @ -34,6 +35,25 @@ TRACE_EVENT(kfree_skb, | ||||
| 		__entry->skbaddr, __entry->protocol, __entry->location) | ||||
| ); | ||||
| 
 | ||||
| TRACE_EVENT(skb_copy_datagram_iovec, | ||||
| 
 | ||||
| 	TP_PROTO(const struct sk_buff *skb, int len), | ||||
| 
 | ||||
| 	TP_ARGS(skb, len), | ||||
| 
 | ||||
| 	TP_STRUCT__entry( | ||||
| 		__field(	const void *,		skbaddr		) | ||||
| 		__field(	int,			len		) | ||||
| 	), | ||||
| 
 | ||||
| 	TP_fast_assign( | ||||
| 		__entry->skbaddr = skb; | ||||
| 		__entry->len = len; | ||||
| 	), | ||||
| 
 | ||||
| 	TP_printk("skbaddr=%p len=%d", __entry->skbaddr, __entry->len) | ||||
| ); | ||||
| 
 | ||||
| #endif /* _TRACE_SKB_H */ | ||||
| 
 | ||||
| /* This part must be outside protection */ | ||||
|  | ||||
| @ -55,6 +55,7 @@ | ||||
| #include <net/checksum.h> | ||||
| #include <net/sock.h> | ||||
| #include <net/tcp_states.h> | ||||
| #include <trace/events/skb.h> | ||||
| 
 | ||||
| /*
 | ||||
|  *	Is a socket 'connection oriented' ? | ||||
| @ -284,6 +285,8 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, | ||||
| 	int i, copy = start - offset; | ||||
| 	struct sk_buff *frag_iter; | ||||
| 
 | ||||
| 	trace_skb_copy_datagram_iovec(skb, len); | ||||
| 
 | ||||
| 	/* Copy header. */ | ||||
| 	if (copy > 0) { | ||||
| 		if (copy > len) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user