public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk@arm.linux.org.uk>
To: "P. Benie" <pjb1008@eng.cam.ac.uk>
Cc: Linus Torvalds <torvalds@transmeta.com>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Christoph Hellwig <hch@infradead.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] [2.5] Non-blocking write can block
Date: Thu, 5 Jun 2003 00:42:47 +0100	[thread overview]
Message-ID: <20030605004246.H22460@flint.arm.linux.org.uk> (raw)
In-Reply-To: <Pine.HPX.4.33L.0306041937290.18475-100000@punch.eng.cam.ac.uk>; from pjb1008@eng.cam.ac.uk on Wed, Jun 04, 2003 at 08:46:51PM +0100

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.

What are the pipe semantics in this case?  According to my reading of
POSIX write(), if you have a blocked non-blocking writer, a non-blocking
writer should receive EAGAIN.  It would seem sensible to apply the
same rules to terminal devices as well as pipes.

-- 
Russell King (rmk@arm.linux.org.uk)                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html


  parent reply	other threads:[~2003-06-04 23:29 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-04  0:58 [PATCH] [2.5] Non-blocking write can block P. Benie
2003-06-04  5:53 ` Christoph Hellwig
2003-06-04 14:35   ` Linus Torvalds
2003-06-04 14:58     ` P. Benie
2003-06-04 16:47     ` Alan Cox
2003-06-04 17:57       ` Linus Torvalds
2003-06-04 19:46         ` P. Benie
2003-06-04 19:56           ` Linus Torvalds
2003-06-04 20:48             ` P. Benie
2003-06-11  0:19               ` Robert White
2003-06-04 20:43           ` Hua Zhong
2003-06-04 23:42           ` Russell King [this message]
2003-06-04 23:47             ` Davide Libenzi
2003-06-04 21:29         ` Alan Cox
2003-06-04 17:14     ` Hua Zhong
2003-06-04 17:41       ` Linus Torvalds
2003-06-04 18:44         ` Hua Zhong
2003-06-04 18:47           ` P. Benie
2003-06-04 19:23             ` P. Benie
2003-06-04 19:20           ` Linus Torvalds
2003-06-04 17:53       ` Mike Dresser
2003-06-04 15:21   ` Coding standards. (Was: Re: [PATCH] [2.5] Non-blocking write can block) Timothy Miller
2003-06-07  0:12     ` Greg KH
2003-06-07  0:59       ` Alex Goddard
2003-06-09 16:24       ` Timothy Miller
2003-06-09 16:39         ` Jörn Engel
2003-06-09 17:15           ` Davide Libenzi
2003-06-09 17:33             ` Eli Carter
2003-06-09 17:49               ` Richard B. Johnson
2003-06-09 18:07                 ` Davide Libenzi
2003-06-09 18:22                   ` Jörn Engel
2003-06-09 18:55             ` Timothy Miller
2003-06-09 18:58               ` Davide Libenzi
2003-06-09 21:35                 ` David Schwartz
2003-06-09 22:55                   ` Davide Libenzi
2003-06-09 23:21                     ` Nigel Cunningham
2003-06-09 21:54                 ` Jörn Engel
2003-06-10 18:17                 ` Jesse Pollard
2003-06-10 18:41                   ` Davide Libenzi
2003-06-10 18:14               ` Jesse Pollard
2003-06-09 23:50             ` James Stevenson
2003-06-09 18:44           ` Timothy Miller
2003-06-09 22:00             ` Jörn Engel
     [not found] <20030604172026$296c@gated-at.bofh.it>
     [not found] ` <20030604175013$3a4d@gated-at.bofh.it>
2003-06-04 19:13   ` [PATCH] [2.5] Non-blocking write can block Ben Pfaff
  -- strict thread matches above, loose matches on Subject: below --
2003-06-04 19:36 Hua Zhong
2003-06-04 20:09 ` Hua Zhong
2003-06-05  0:04 Ed Vance
2003-06-05  0:19 ` Davide Libenzi
2003-06-05 18:34   ` Mike Fedyk
2003-06-05 19:15     ` Richard B. Johnson
2003-06-05 21:46       ` Joe Korty
2003-06-06  0:13     ` Davide Libenzi
2003-06-06 12:13 Nicholas Berry

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030605004246.H22460@flint.arm.linux.org.uk \
    --to=rmk@arm.linux.org.uk \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pjb1008@eng.cam.ac.uk \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox