<dec f='src/src/sys/sys/socketvar.h' l='319' type='int sosend(struct socket * , struct sockaddr * , struct uio * , struct mbuf * , struct mbuf * , int , struct lwp * )'/>
<use f='src/src/sys/kern/uipc_socket.c' l='534' u='r' c='socreate'/>
<def f='src/src/sys/kern/uipc_socket.c' l='894' ll='1097' type='int sosend(struct socket * so, struct sockaddr * addr, struct uio * uio, struct mbuf * top, struct mbuf * control, int flags, struct lwp * l)'/>
<doc f='src/src/sys/kern/uipc_socket.c' l='877'>/*
 * Send on a socket.
 * If send must go all at once and message is larger than
 * send buffering, then hard error.
 * Lock against other senders.
 * If must go all at once and not enough room now, then
 * inform user that this would block and do nothing.
 * Otherwise, if nonblocking, send as much as possible.
 * The data to be sent is described by &quot;uio&quot; if nonzero,
 * otherwise by the mbuf chain &quot;top&quot; (which must be null
 * if uio is not).  Data provided in mbuf chain must be small
 * enough to send all at once.
 *
 * Returns nonzero on error, timeout or signal; callers
 * must check for short counts if EINTR/ERESTART are returned.
 * Data and control buffers are freed on return.
 */</doc>
