Date: Thu, 5 Nov 1998 20:01:20 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Joseph Koshy <jkoshy@FreeBSD.ORG> Cc: dag-erli@ifi.uio.no (Dag-Erling C. =?iso-8859-1?Q?Sm=F8rgrav?= ), cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG Subject: Re: sendfile.2 (was Re: cvs commit: ...) Message-ID: <199811060401.UAA00767@apollo.backplane.com> References: <199811060342.TAA11021@hub.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
:> would be to actually use it in the stdio library for read operations :> on plain files: [f]getc(), fgets(), and fread(). The only difficulty :> here is in how to deal with file truncation issues, since accessing :> mmap'd pages beyond the file's size will segfault. : :For what its worth, the SFIO library from AT&T already supports :this. I don't remember what copyright it is released under though. : :Koshy :<jkoshy@freebsd.org> Well, it isn't that difficult to do... it would take maybe 20 minutes to implement. A simple MAP_PRIVATE replacement of __srefill() and maybe a little code to avoid unnecessary copy-on-write ops. There are two problems: First, how to deal with unexpected file truncation issues. Second, the extra syscalls involved: fstat(), mmap(), and munmap() would have to be called quite often (fstat() to check for file size changes). On the bright side, a relatively large map (e.g. 128K) could be used. Maybe a sequential operation detect flag to revert the behavior if there is excessive seeking/small-reads where syscall overhead is killer verses the read() overhead. -Matt Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet Communications & God knows what else. <dillon@backplane.com> (Please include original email in any response) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811060401.UAA00767>