Date: Sun, 11 Apr 1999 18:10:45 -0700 From: John Milford <jwm@CSUA.Berkeley.EDU> To: Jason Thorpe <thorpej@nas.nasa.gov> Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: read() and pread() syscalls Message-ID: <199904120110.SAA25240@soda.CSUA.Berkeley.EDU> In-Reply-To: Message from Jason Thorpe <thorpej@nas.nasa.gov> of "Sun, 11 Apr 1999 18:02:08 PDT." <199904120102.SAA24587@lestat.nas.nasa.gov>
next in thread | previous in thread | raw e-mail | index | archive | help
Jason Thorpe <thorpej@nas.nasa.gov> wrote: > On Sun, 11 Apr 1999 14:16:45 -0700 > John Milford <jwm@CSUA.Berkeley.EDU> wrote: > > > Should read() be turned into a library function now that we > > have pread(), and read() is a proper subset of pread()? I am not sure > > Not that I care too much, since read/pread, etc work fine in NetBSD (which > is what I use), but... > > read() is _NOT_ a subset if pread() in the common sense. read() works > from the current file offset, while pread() always takes an explicit offset. > > There is no way to emulate read() with pread() in userspace. > > > if this is a POSIX compliance issue, but I've been digging around in > > this code recently, and it seems that there is a lot of overlap in the > > read system calls, and we might want to consider doing something > > similar to the approach taken with wait(). I could understand that > > this case is different so we may not want to be doing conversion of > > read() or readv() into a hypothetical preadv(), but I can see no issue > > with converting read()'s into pread()'s. > > ...and why not implement preadv()? I did when I implemented pread()/pwrite() > in NetBSD. > > But, see above about it not being possible to emulate read() with pread() > in userspace. > Yeah, I sort let that slip by me. However the concept of emulating read() with readv() and pread() with preadv() does seem valid. I originally was looking at emulating read() with readv() from userspace, but when pread showed up it looked like a better match, unfortuantely I didn't look close enough. It would appear that there is no efficiency trade off in a read() to readv() user space conversion since the kernel essentially does the convertion internally anyway. --JOhn To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199904120110.SAA25240>