sk_has_sleeper man page on Scientific

Man page or keyword search:  
man Server   26626 pages
apropos Keyword Search (all sections)
Output format
Scientific logo
[printable version]

SK_HAS_SLEEPER(9)	       Linux Networking		     SK_HAS_SLEEPER(9)

NAME
       sk_has_sleeper - check if there are any waiting processes

SYNOPSIS
       int sk_has_sleeper(struct sock * sk);

ARGUMENTS
       sk
	   socket

DESCRIPTION
       Returns true if socket has waiting processes

       The purpose of the sk_has_sleeper and sock_poll_wait is to wrap the
       memory barrier call. They were added due to the race found within the
       tcp code.

CONSIDER FOLLOWING TCP CODE PATHS
       CPU1 CPU2

       sys_select receive packet ... ... __add_wait_queue update tp->rcv_nxt
       ... ... tp->rcv_nxt check sock_def_readable ... { schedule ... if
       (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
       wake_up_interruptible(sk->sk_sleep) ... }

       The race for tcp fires when the __add_wait_queue changes done by CPU1
       stay in its cache, and so does the tp->rcv_nxt update on CPU2 side. The
       CPU1 could then endup calling schedule and sleep forever if there are
       no more data on the socket.

       The sk_has_sleeper is always called right after a call to read_lock, so
       we can use smp_mb__after_lock barrier.

COPYRIGHT
Kernel Hackers Manual 2.6.	 November 2013		     SK_HAS_SLEEPER(9)
[top]

List of man pages available for Scientific

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net