Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Sep 2003 09:34:17 -0400 (EDT)
From:      Daniel Eischen <eischen@vigrid.com>
To:        Kern Sibbald <kern@sibbald.com>
Cc:        Dan Langille <dan@langille.org>
Subject:   Re: comments on proposed uthread_write.c changes
Message-ID:  <Pine.GSO.4.10.10309100932400.6143-100000@pcnet5.pcnet.com>
In-Reply-To: <1063178382.15482.550.camel@rufus>

next in thread | previous in thread | raw e-mail | index | archive | help
On 10 Sep 2003, Kern Sibbald wrote:

> Hello,
> 
> On Wed, 2003-09-10 at 02:34, Garrett Wollman wrote:
> > <<On Tue, 9 Sep 2003 19:46:12 -0400 (EDT), Daniel Eischen <eischen@vigrid.com> said:
> > 
> > >   Libc_r's write treats a return of 0 from __sys_write() as a
> > >   partial write and continues looping.
> > 
> > This is a bug.  The Standard is quite clear that a write of zero bytes
> > is not possible unless the supplied buffer length is zero.  In the
> > specific case of non-blocking files, if data might be written but
> > doing so would cause the calling thread to block, write() must return
> > -1 with errno set to [EAGAIN]; it may not return zero.  Therefore, a
> > zero return from write() always indicates a permanent condition.
> > 
> > -GAWollman
> 
> Can you explain how you came to the conclusion that a non-zero
> write may not return zero?  Keep in mind that from the
> user's or my standpoint, we are talking about blocking
> writes.

He saying that it is an exception and should be returned
as such to the caller.

-- 
Dan Eischen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10309100932400.6143-100000>