complement to sendfile()?

Julian Elischer julian at elischer.org
Thu Jul 20 16:59:21 UTC 2006


David G. Lawrence wrote:

>>Hello!
>>
>>My program receives data from the socket and writes it to a file -- with the 
>>usual read()/write() tedium.
>>
>>Is there anything zero-copying like sendfile() for the socket->file direction?
>>
>>In fact, sendfile's API may allow to use it in any direction, but the manual 
>>is quite explicit, that the second (destination) argument must be socket.
>>
>>recvfile()? Thanks!
>>    
>>
>
>   sendfile() could be extended to allow arbitrary file descriptor types as
>the source and destination, but the zero-copy nature of it can only work
>in the file to socket direction. This is because network buffers can be made
>out of filesystem buffers (file->network direction), but for the network to
>file direction network packets arrive non-deterministically. With the right
>network hardware it would in theory be possible to have the TCP code run
>on the network card and it could DMA the TCP stream directly into file
>buffers. If pigs had wings, they could fly. :-)
>  
>


We used to do something like this in BSD4.3 (not FreeBSD 4.3) in 1991, 
but we used
a propriatary filesystem and a proprietary protocol that knew each 
other's data types.

>-DG
>
>David G. Lawrence
>President
>Download Technologies, Inc. - http://www.downloadtech.com - (866) 399 8500
>The FreeBSD Project - http://www.freebsd.org
>Pave the road of life with opportunities.
>_______________________________________________
>freebsd-net at freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-net
>To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
>  
>


More information about the freebsd-net mailing list