Messages in this thread | | | Date | Wed, 18 Jul 2012 17:59:39 +0200 | From | Eugen Dedu <> | Subject | Re: getsockopt/setsockopt with SO_RCVBUF and SO_SNDBUF "non-standard" behaviour |
| |
Any idea?
On 17/07/12 11:27, Eugen Dedu wrote: > Hi all, > > I looked on Internet and at the old thread > http://lkml.indiana.edu/hypermail/linux/kernel/0108.0/0275.html, but the > issue is still not settled as far as I see. > > I need to have the highest memory available for snd/rcv buffer and I > need to know/confirm how much it allocated for my process (how much I > can use). > > So with Linux we need to do something like: > setsockopt (..., SO_RCVBUF, 256000, ...) > getsockopt (..., SO_RCVBUF, &i, ...) > i /= 2; > > where i is the size I am looking for. > > Now, to make this code work for other OSes it should be changed to: > setsockopt (..., SO_RCVBUF, 256000, ...) > getsockopt (..., SO_RCVBUF, &i, ...) > #ifdef LINUX > i /= 2; > #endif > > First question, is this code correct? If not, what code gives the amount > of memory useable for my process? > > Second, it seems to me that linux is definitely "non-standard" here. > Saying that linux uses twice as memory has nothing to do with that, > since getsockopt should return what the application can count on, not > what is the internal use. It is like a hypothetical malloc (10) would > return not 10, but 20 (including meta-information). Is that right? > > Cheers,
| |