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 noblock, int * err);
ARGUMENTS
- sk
- socket
- flags
- MSG_ flags
- noblock
- blocking operation?
- err
- error code returned
DESCRIPTION
- Get a datagram skbuff, understands the peeking, nonblock
- ing 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 data
- gram 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 * sig
- nificantly 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.