Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Feb 1999 17:09:00 -0800
From:      Don Lewis <Don.Lewis@tsc.tdk.com>
To:        Terry Lambert <tlambert@primenet.com>, kuku@gilberto.physik.RWTH-Aachen.DE (Christoph Kukulies)
Cc:        hackers@FreeBSD.ORG
Subject:   Re: portability of shm, mmap, pipes and socket IPC
Message-ID:  <199902150109.RAA09078@salsa.gv.tsc.tdk.com>
In-Reply-To: Terry Lambert <tlambert@primenet.com> "Re: portability of shm, mmap, pipes and socket IPC" (Feb  9, 10:46pm)

next in thread | previous in thread | raw e-mail | index | archive | help
On Feb 9, 10:46pm, Terry Lambert wrote:
} Subject: Re: portability of shm, mmap, pipes and socket IPC

} FreeBSD does not select writeable on sockets.

This does not appear to be correct.  What about the call path:
	select()
	    selscan()
		(*fp->f_ops->fo_poll)()   [ soo_poll() for sockets ]
		    so->so_proto->pr_usrreqs->pru_sopoll()  [ sopoll() for TCP ]
			sowriteable()

}       Sockets can be
} 	written if there are mbuf's available, and mbuf's can
} 	become unavailable asynchronously between the select
} 	coming true and the subsequent write.

While it is certainly possible to get an occasional false positive if
an mbuf isn't available, selecting for write is still useful to keep
from spinning on a socket that isn't writeable because its TCP send
window is full.  This condition can persist indefinitely and the socket
won't become writeable again until the peer consumes some data.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199902150109.RAA09078>