__SKB_RECV_DATAGRAM(9) Linux Networking __SKB_RECV_DATAGRAM(9)NAME__skb_recv_datagram - Receive a datagram skbuff
SYNOPSIS
struct sk_buff * __skb_recv_datagram(struct sock * sk, unsigned flags,
int * peeked, int * err);
ARGUMENTS
sk
socket
flags
MSG_ flags
peeked
returns non-zero if this packet has been seen before
err
error code returned
DESCRIPTION
Get a datagram skbuff, understands the peeking, nonblocking wakeups and
possible races. This replaces identical code in packet, raw and udp, as
well as the IPX AX.25 and Appletalk. It also finally fixes the long
standing peek and read race for datagram sockets. If you alter this
routine remember it must be re-entrant.
This function will lock the socket if a skb is returned, so the caller
needs to unlock the socket in that case (usually by calling
skb_free_datagram)
* It does not lock socket since today. This function is * free of race
conditions. This measure should/can improve * significantly datagram
socket latencies at high loads, * when data copying to user space takes
lots of time. * (BTW I´ve just killed the last cli in
IP/IPv6/core/netlink/packet * 8) Great win.) * --ANK (980729)
The order of the tests when we find no data waiting are specified quite
explicitly by POSIX 1003.1g, don´t change them without having the
standard around please.
COPYRIGHTKernel Hackers Manual 2.6. November 2013 __SKB_RECV_DATAGRAM(9)