Skip site navigation (1)Skip section navigation (2)
Date:      10 Sep 2003 09:19:43 +0200
From:      Kern Sibbald <kern@sibbald.com>
To:        Garrett Wollman <wollman@khavrinen.lcs.mit.edu>
Cc:        Nate Lawson <nate@root.org>
Subject:   Re: comments on proposed uthread_write.c changes
Message-ID:  <1063178382.15482.550.camel@rufus>
In-Reply-To: <200309100034.h8A0YTdY066678@khavrinen.lcs.mit.edu>
References:  <3F5B89B3.11367.112C1E2D@localhost> <Pine.GSO.4.10.10309091929500.13114-100000@pcnet5.pcnet.com> <200309100034.h8A0YTdY066678@khavrinen.lcs.mit.edu>

next in thread | previous in thread | raw e-mail | index | archive | help

--=-dQwOkbSDWJuqMz0oqlSu
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

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:
>=20
> >   Libc_r's write treats a return of 0 from __sys_write() as a
> >   partial write and continues looping.
>=20
> 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.
>=20
> -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.

In reading the standard, the paragraph cited below permits a
zero to be returned.=20

    If a write() requests that more bytes be written than there is room
for (for example, [XSI] [Option Start]  the process' file size limit   =20
or [Option End] the physical end of a medium), only as many bytes     as
there is room for shall be written.



Best regards,

--=-dQwOkbSDWJuqMz0oqlSu
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQA/XtCONgfoSvWqwEgRApwFAJ94WujQGeGZzrHVrW/qCZt7P8wIUwCgtzsF
SNJ4mzYtOq/Jzhvrq+JK7F8=
=Y3zY
-----END PGP SIGNATURE-----

--=-dQwOkbSDWJuqMz0oqlSu--



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