Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Sep 2003 20:34:29 -0400 (EDT)
From:      Garrett Wollman <wollman@khavrinen.lcs.mit.edu>
To:        deischen@freebsd.org
Cc:        freebsd-standards@freebsd.org
Subject:   Re: comments on proposed uthread_write.c changes
Message-ID:  <200309100034.h8A0YTdY066678@khavrinen.lcs.mit.edu>
In-Reply-To: <Pine.GSO.4.10.10309091929500.13114-100000@pcnet5.pcnet.com>
References:  <3F5B89B3.11367.112C1E2D@localhost> <Pine.GSO.4.10.10309091929500.13114-100000@pcnet5.pcnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
<<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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309100034.h8A0YTdY066678>