#undef TRACE_SYSTEM
#define TRACE_SYSTEM sock

#if !defined(_TRACE_SOCK_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_SOCK_H

#include <net/sock.h>
#include <linux/tracepoint.h>

TRACE_EVENT(sock_rcvqueue_full,

	TP_PROTO(struct sock *sk, struct sk_buff *skb),

	TP_ARGS(sk, skb),

	TP_STRUCT__entry(
		__field(int, rmem_alloc)
		__field(unsigned int, truesize)
		__field(int, sk_rcvbuf)
	),

	TP_fast_assign(
		__entry->rmem_alloc = atomic_read(&sk->sk_rmem_alloc);
		__entry->truesize   = skb->truesize;
		__entry->sk_rcvbuf  = sk->sk_rcvbuf;
	),

	TP_printk("rmem_alloc=%d truesize=%u sk_rcvbuf=%d",
		__entry->rmem_alloc, __entry->truesize, __entry->sk_rcvbuf)
);

TRACE_EVENT(sock_exceed_buf_limit,

	TP_PROTO(struct sock *sk, struct proto *prot, long allocated),

	TP_ARGS(sk, prot, allocated),

	TP_STRUCT__entry(
		__array(char, name, 32)
		__field(long *, sysctl_mem)
		__field(long, allocated)
		__field(int, sysctl_rmem)
		__field(int, rmem_alloc)
	),

	TP_fast_assign(
		strncpy(__entry->name, prot->name, 32);
		__entry->sysctl_mem = prot->sysctl_mem;
		__entry->allocated = allocated;
		__entry->sysctl_rmem = prot->sysctl_rmem[0];
		__entry->rmem_alloc = atomic_read(&sk->sk_rmem_alloc);
	),

	TP_printk("proto:%s sysctl_mem=%ld,%ld,%ld allocated=%ld "
		"sysctl_rmem=%d rmem_alloc=%d",
		__entry->name,
		__entry->sysctl_mem[0],
		__entry->sysctl_mem[1],
		__entry->sysctl_mem[2],
		__entry->allocated,
		__entry->sysctl_rmem,
		__entry->rmem_alloc)
);

#endif /* _TRACE_SOCK_H */

/* This part must be outside protection */
#include <trace/define_trace.h>
/cgit.cgi/linux/net-next.git/refs/?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca'>refs</a><a class='active' href='/cgit.cgi/linux/net-next.git/log/tools/objtool/Makefile?h=nds-private-remove'>log</a><a href='/cgit.cgi/linux/net-next.git/tree/tools/objtool/Makefile?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca'>tree</a><a href='/cgit.cgi/linux/net-next.git/commit/tools/objtool/Makefile?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca'>commit</a><a href='/cgit.cgi/linux/net-next.git/diff/tools/objtool/Makefile?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/tools/objtool/Makefile'>
<input type='hidden' name='h' value='nds-private-remove'/><input type='hidden' name='id' value='9665b74562ab95bcf1b0684d599bc6779c433fca'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca'>tools</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools/objtool?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca'>objtool</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools/objtool/Makefile?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca'>Makefile</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/tools/objtool/Makefile?h=nds-private-remove&amp;id=9665b74562ab95bcf1b0684d599bc6779c433fca&amp;showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>