title: What's the purpose of the socket option SO_SNDLOWAT
body: <p>I'm currently porting a software in C from Tru64 to Linux Suse 11.
  On Tru64 they are setting the value of <code>SO_SNDLOWAT</code> socket option to <code>1024 * 64</code>. On Linux this option is not changeable and its value is 1.</p>
  
  <p>I want to figure out, what will be the impact of not setting <code>SO_SNDLOWAT</code> to <code>1024 * 64</code> on the software execution on Linux.</p>
  
  <p>The problem is that I found two definitions (interpretations) of the purpose of <code>SO_SNDLOWAT</code>:</p>
  
  <ol>
  <li><p>Found on the man page of socket on Linux :</p>
  
  <blockquote>
    <p>SO_SNDLOWAT<br>
              Specify  the  minimum  number  of  bytes in the buffer until the
              socket layer will pass the data to the protocol</p>
  </blockquote>
  
  <p>I understood that it specifies the minimum number of bytes in the buffer to proceed (in this case for sending the message). The buffer needs to be filled at least for <code>SO_SNDLOWAT</code> bytes to proceed</p></li>
  <li><p>Found in the book "<em>UNIX Network Programming: The sockets networking API of W. Richard Stevens, Bill Fenner, Andrew M. Rudoff</em>"</p>
  
  <blockquote>
    <p>The send low-water mark is the amount of available space that must exist in the socket send buffer for select to return "writable".</p>
  </blockquote>
  
  <p>I understood that, if I want to write in the socket buffer (no matter of the size of what I'm writing) the buffer needs to have at least <code>SO_SNDLOWAT</code> bytes free.</p></li>
  </ol>
  
  <p>I don't know what to make of <code>SO_SNDLOWAT</code>.</p>