Subject: Re: Socket buffers allocations
To: Bharat Joshi <firstname.lastname@example.org>
From: Rui Paulo <email@example.com>
Date: 01/12/2007 11:17:49
On 12 Jan 2007, at 04:16, Bharat Joshi wrote:
> Couple of related questions:
> I am developing an application where I need to check whether a
> socket is ready for write or not. I can do that using select, poll or
> kqueue and I have chosen 'kqueue' to do it.
Maybe you already know this, but you'll only benefit from kqueue if
you have multiple file descriptors (sockets).
> Before adding the socket to 'kqueue', I want to check if there
> is enough space in socket buffer for a write to be successful. My
> first question is that is there a IOCTL/GETSOCKOPT option using which
> I can find out the space available in the send socket buffer?
> I was also looking to increase the size of the socket buffers
> after opening the socket. But I wanted to confirm that Kernel does not
> pre-allocate the memory for socket buffers and so I looked at the
> kernel code and it seems to me that kernel does not pre-allocate these
> buffers and the mbufs get allocated as and when a message is sent. Can
> someone please confirm this behaviour for me?
You can use setsockopt(3) with options SO_SNDBUF or SO_RCVBUF. I
think this is what you are referring to.
> If the answer to the above question is that 'buffers are not
> pre-allocated" than another question is that if I increase the size
> of the socket buffers, will it adversely affect any kernel
None that I'm aware of.