malc wrote:
> On Fri, 12 Feb 2010, Christoph Hellwig wrote:
> 
> > On Thu, Feb 11, 2010 at 07:06:08PM +0000, Richard W.M. Jones wrote:
> > > One interesting thing is that qemu has its own preadv emulation (which
> > > does the emulation correctly), but this is never used because qemu
> > > never gets ENOSYS back from preadv.
> > 
> > At this point the amount of bugs in the glibc preadv/pwritev code really
> > make me want to go to use the raw system calls on Linux only.  Any
> > opinions from the maintainers if that is acceptable?
> 
> There are more than one way to parse the first sentence, if it should be
> read as:
>   On linux and on linux only avoid using pread/write[v] and talk to the
>   kernel directly.
> 
> Then i agree.

Do we know if BSDs have the same bug in some versions?

There have been (very ancient now) unixes where libc "emulated"
readv/writev, with the result that sending UDP packets broke, and TCP
streams were excessively segmented.  There have been more recently
very dodgy libc emulations of pselect (not signal safe like it's
entire point for existing).  For that matter pread/pwrite having
broken libc emulation too (not thread safe despite that being a main
reason for existing).

Did I mention I really, really hate libc "emulating" system calls badly.

-- Jamie


Reply via email to