tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: sleeping instead of ENOBUFS on write to socket?



On Fri, May 27, 2011 at 01:08:05PM +0000, Emmanuel Dreyfus wrote:
> The questions:
> - did I miss a way to sleep on write when kernel is out of buffer memory?
> - if this is impossible, what about adding a socket option for that?
> - would it make sense to have such an option be the default for 
> SOCK_STREAM and SOCK_SEQPACKET? 

You could use select(2), poll(2), or kqueue(2) to sleep until a socket
is ready for writing, however, I don't know if any of those will put
your program to sleep until a threshold number of bytes can be written.
I.e., if you need to write 5 bytes, your program may wake when it can
write just 1.

I hope the FUSE filesystems cannot deadlock with the kernel in the
following way: the kernel exhausts buffers queueing buffers for your
filesystem to read; meanwhile, the filesystem waits to write until
buffers are free.

Dave

-- 
David Young             OJC Technologies
dyoung%ojctech.com@localhost      Urbana, IL * (217) 344-0444 x24


Home | Main Index | Thread Index | Old Index