Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Jul 2006 09:59:19 -0700
From:      Julian Elischer <julian@elischer.org>
To:        "David G. Lawrence" <dg@dglawrence.com>
Cc:        Mikhail Teterin <mi+mx@aldan.algebra.com>, net@freebsd.org
Subject:   Re: complement to sendfile()?
Message-ID:  <44BFB667.60106@elischer.org>
In-Reply-To: <20060720025003.GF924@tnn.dglawrence.com>
References:  <200607192230.14939.mi%2Bmx@aldan.algebra.com> <20060720025003.GF924@tnn.dglawrence.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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@freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-net
>To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
>  
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44BFB667.60106>