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