comments on proposed uthread_write.c changes

Garrett Wollman wollman at khavrinen.lcs.mit.edu
Tue Sep 9 17:34:37 PDT 2003


<<On Tue, 9 Sep 2003 19:46:12 -0400 (EDT), Daniel Eischen <eischen at 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



More information about the freebsd-standards mailing list