Skip site navigation (1)Skip section navigation (2)
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>