RE: [PATCH] [2.5] Non-blocking write can block

From: Ed Vance (
Date: Wed Jun 04 2003 - 19:04:46 EST

On Wed, June 04, 2003 at 4:47 PM, Davide Libenzi wrote:
> On Thu, 5 Jun 2003, Russell King wrote:
> > On Wed, Jun 04, 2003 at 08:46:51PM +0100, P. Benie wrote:
> > > The problem isn't to do with large writes. It's to do
> with any sequence of
> > > writes that fills up the receive buffer, which is only 4K
> for N_TTY. If
> > > the receiving program is suspended, the buffer will fill
> sooner or later.
> >
> > If the tty drivers buffer fills, we don't sleep in
> tty->driver->write,
> > but we return zero instead. If we are in non-blocking mode, and we
> > haven't written any characters, we return -EAGAIN. If we have, we
> > return the number of characters which the tty driver accepted.
> >
> > However, the problem you are referring to is what happens
> if you have
> > a blocking process blocked in write_chan() in n_tty.c, and we have
> > a non-blocking process trying to write to the same tty.
> >
> > Reading POSIX, it doesn't seem to be clear about our area
> of interest,
> > and I'd even say that it seems to be unspecified.
> Given that a problem exist for certain apps, and given that
> the proposed
> fix will *at least* have existing apps to behave funny, couldn't this
> implemented as a feature of the fd (default off).
> Something like O_REALLYNONBLOCK :)


Do you mean something like the separate O_NDELAY flag under Solar*s? IIRC
they also use return code EWOULDBLOCK to differentiate the "could not get
resource" cases from the "no room for more data" cases when O_NONBLOCK is

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Sat Jun 07 2003 - 22:00:25 EST