# FreeBSD 5.3 : socket queues?



## coleb (May 18, 2010)

Hi, 
This pertains to 5.3: Are there queues implemented at any point in the call-tree starting with "send()" - other than the actual hand off to the nic driver? In browsing the source, I can see send()-->_sendto()-->__sys_sendto() but can't find where that picks up in the kernel. Just jumping in to tcp_usr_send(), I see us head down in to tcp_output() and then ip_output(). I'm just wondering if, there's a point at which the caller's "send()" would actually return *before* the nic driver receives the packet for queuing. Thank you.


----------



## expl (May 19, 2010)

If I understand sockets correctly it does not matter if user side (libc) send() returns or not, as the kernel handles the request in entirely different kernel level thread, libc function just blocks until kernel informs that its ok to return. You can set it not to block (return asap if it would block otherwise) if you wanted to (it would not change much what the kernel is doing anyways). Also I don't think there is "socket queue" interface (at least not for send/write), queuing is done in TCP/IP stack.


----------

