DATAGRAM_POLL(9) Linux Networking DATAGRAM_POLL(9)NAME
datagram_poll - generic datagram poll
SYNOPSIS
unsigned int datagram_poll(struct file * file, struct socket * sock, poll_table * wait);
ARGUMENTS
file
file struct
sock
socket
wait
poll table
DATAGRAM POLL
Again totally generic. This also handles sequenced packet sockets providing the socket receive queue is only ever holding data ready to
receive.
NOTE
when you _don't_ use this routine for this protocol, and you use a different write policy from sock_writeable then please supply your own
write_space callback.
COPYRIGHT Kernel Hackers Manual 2.6. July 2010 DATAGRAM_POLL(9)
Check Out this Related Man Page
STRUCT SOCK(9) Linux Networking STRUCT SOCK(9)NAME
struct_sock - network layer representation of sockets
SYNOPSIS
struct sock {
struct sock_common __sk_common;
#define sk_node __sk_common.skc_node
#define sk_nulls_node __sk_common.skc_nulls_node
#define sk_refcnt __sk_common.skc_refcnt
#define sk_tx_queue_mapping __sk_common.skc_tx_queue_mapping
#define sk_copy_start __sk_common.skc_hash
#define sk_hash __sk_common.skc_hash
#define sk_family __sk_common.skc_family
#define sk_state __sk_common.skc_state
#define sk_reuse __sk_common.skc_reuse
#define sk_bound_dev_if __sk_common.skc_bound_dev_if
#define sk_bind_node __sk_common.skc_bind_node
#define sk_prot __sk_common.skc_prot
#define sk_net __sk_common.skc_net
unsigned int sk_shutdown:2;
unsigned int sk_no_check:2;
unsigned int sk_userlocks:4;
unsigned int sk_protocol:8;
unsigned int sk_type:16;
int sk_rcvbuf;
socket_lock_t sk_lock;
struct sk_backlog;
wait_queue_head_t * sk_sleep;
struct dst_entry * sk_dst_cache;
#ifdef CONFIG_XFRM
struct xfrm_policy * sk_policy[2];
#endif
rwlock_t sk_dst_lock;
atomic_t sk_rmem_alloc;
atomic_t sk_wmem_alloc;
atomic_t sk_omem_alloc;
int sk_sndbuf;
struct sk_buff_head sk_receive_queue;
struct sk_buff_head sk_write_queue;
#ifdef CONFIG_NET_DMA
struct sk_buff_head sk_async_wait_queue;
#endif
int sk_wmem_queued;
int sk_forward_alloc;
gfp_t sk_allocation;
int sk_route_caps;
int sk_gso_type;
unsigned int sk_gso_max_size;
int sk_rcvlowat;
unsigned long sk_flags;
unsigned long sk_lingertime;
struct sk_buff_head sk_error_queue;
struct proto * sk_prot_creator;
rwlock_t sk_callback_lock;
int sk_err;
int sk_err_soft;
atomic_t sk_drops;
unsigned short sk_ack_backlog;
unsigned short sk_max_ack_backlog;
__u32 sk_priority;
struct ucred sk_peercred;
long sk_rcvtimeo;
long sk_sndtimeo;
struct sk_filter * sk_filter;
void * sk_protinfo;
struct timer_list sk_timer;
ktime_t sk_stamp;
struct socket * sk_socket;
void * sk_user_data;
struct page * sk_sndmsg_page;
struct sk_buff * sk_send_head;
__u32 sk_sndmsg_off;
int sk_write_pending;
#ifdef CONFIG_SECURITY
void * sk_security;
#endif
__u32 sk_mark;
void (* sk_state_change) (struct sock *sk);
void (* sk_data_ready) (struct sock *sk, int bytes);
void (* sk_write_space) (struct sock *sk);
void (* sk_error_report) (struct sock *sk);
int (* sk_backlog_rcv) (struct sock *sk,struct sk_buff *skb);
void (* sk_destruct) (struct sock *sk);
};
MEMBERS
__sk_common
shared layout with inet_timewait_sock
sk_shutdown
mask of SEND_SHUTDOWN and/or RCV_SHUTDOWN
sk_no_check
SO_NO_CHECK setting, wether or not checkup packets
sk_userlocks
SO_SNDBUF and SO_RCVBUF settings
sk_protocol
which protocol this socket belongs in this network family
sk_type
socket type (SOCK_STREAM, etc)
sk_rcvbuf
size of receive buffer in bytes
sk_lock
synchronizer
sk_backlog
always used with the per-socket spinlock held
sk_sleep
sock wait queue
sk_dst_cache
destination cache
sk_policy[2]
flow policy
sk_dst_lock
destination cache lock
sk_rmem_alloc
receive queue bytes committed
sk_wmem_alloc
transmit queue bytes committed
sk_omem_alloc
"o" is "option" or "other"
sk_sndbuf
size of send buffer in bytes
sk_receive_queue
incoming packets
sk_write_queue
Packet sending queue
sk_async_wait_queue
DMA copied packets
sk_wmem_queued
persistent queue size
sk_forward_alloc
space allocated forward
sk_allocation
allocation mode
sk_route_caps
route capabilities (e.g. NETIF_F_TSO)
sk_gso_type
GSO type (e.g. SKB_GSO_TCPV4)
sk_gso_max_size
Maximum GSO segment size to build
sk_rcvlowat
SO_RCVLOWAT setting
sk_flags
SO_LINGER (l_onoff), SO_BROADCAST, SO_KEEPALIVE, SO_OOBINLINE settings, SO_TIMESTAMPING settings
sk_lingertime
SO_LINGER l_linger setting
sk_error_queue
rarely used
sk_prot_creator
sk_prot of original sock creator (see ipv6_setsockopt, IPV6_ADDRFORM for instance)
sk_callback_lock
used with the callbacks in the end of this struct
sk_err
last error
sk_err_soft
errors that don't cause failure but are the cause of a persistent failure not just 'timed out'
sk_drops
raw/udp drops counter
sk_ack_backlog
current listen backlog
sk_max_ack_backlog
listen backlog set in listen
sk_priority
SO_PRIORITY setting
sk_peercred
SO_PEERCRED setting
sk_rcvtimeo
SO_RCVTIMEO setting
sk_sndtimeo
SO_SNDTIMEO setting
sk_filter
socket filtering instructions
sk_protinfo
private area, net family specific, when not using slab
sk_timer
sock cleanup timer
sk_stamp
time stamp of last packet received
sk_socket
Identd and reporting IO signals
sk_user_data
RPC layer private data
sk_sndmsg_page
cached page for sendmsg
sk_send_head
front of stuff to transmit
sk_sndmsg_off
cached offset for sendmsg
sk_write_pending
a write to stream socket waits to start
sk_security
used by security modules
sk_mark
generic packet mark
sk_state_change
callback to indicate change in the state of the sock
sk_data_ready
callback to indicate there is data to be processed
sk_write_space
callback to indicate there is bf sending space available
sk_error_report
callback to indicate errors (e.g. MSG_ERRQUEUE)
sk_backlog_rcv
callback to process the backlog
sk_destruct
called at sock freeing time, i.e. when all refcnt == 0
COPYRIGHT Kernel Hackers Manual 2.6. July 2010 STRUCT SOCK(9)