From: Sergey Vlasov <vsu@altlinux.ru>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Andreas Schwab <schwab@suse.de>, linux-kernel@vger.kernel.org
Subject: Re: Pty is losing bytes
Date: Tue, 15 Feb 2005 22:58:02 +0300 [thread overview]
Message-ID: <20050215225802.6321e9a8.vsu@altlinux.ru> (raw)
In-Reply-To: <Pine.LNX.4.58.0502151053060.5570@ppc970.osdl.org>
[-- Attachment #1: Type: text/plain, Size: 1497 bytes --]
On Tue, 15 Feb 2005 11:08:07 -0800 (PST) Linus Torvalds wrote:
> On Tue, 15 Feb 2005, Andreas Schwab wrote:
> >
> > Recent kernel are losing bytes on a pty.
>
> Great catch.
>
> I think it may be a n_tty line discipline bug, brought on by the fact that
> the PTY buffering is now 4kB rather than 2kB. 4kB is also the
> N_TTY_BUF_SIZE, and if n_tty has some off-by-one error, that would explain
> it.
>
> Does the problem go away if you change the default value of "chunk" (in
> drivers/char/tty_io.c:do_tty_write) from 4096 to 2048? If so, that means
> that the pty code has _claimed_ to have written 4kB, and only ever wrote
> 4kB-1 bytes. That in turn implies that "ldisc.receive_room()" disagrees
> with "ldisc.receive_buf()".
The problem also goes away after unsetting ECHO on the slave terminal.
This seems to point to this code in n_tty_receive_char():
if (L_ECHO(tty)) {
if (tty->read_cnt >= N_TTY_BUF_SIZE-1) {
put_char('\a', tty); /* beep if no space */
return;
}
.......
}
This code sets the maximum number of buffered characters to
N_TTY_BUF_SIZE-1, however, put_tty_queue() considers the maximum to be
N_TTY_BUF_SIZE, and n_tty_receive_room() also returns N_TTY_BUF_SIZE for
canonical mode if the canon_data buffer is empty - therefore after
unsetting ECHO bytes are no longer lost.
BTW, for the noncanonical mode n_tty_receive_room() calculates the
result assuming that the buffer can hold at most N_TTY_BUF_SIZE-1
characters - not the full N_TTY_BUF_SIZE.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2005-02-15 20:03 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-15 0:54 Pty is losing bytes Andreas Schwab
2005-02-15 19:08 ` Linus Torvalds
2005-02-15 19:44 ` Linus Torvalds
2005-02-15 22:13 ` Alan Cox
2005-02-15 19:58 ` Sergey Vlasov [this message]
2005-02-15 20:13 ` Sergey Vlasov
2005-02-15 20:06 ` Alan Curry
2005-02-15 20:30 ` Andreas Schwab
2005-02-15 20:56 ` Linus Torvalds
2005-02-15 21:54 ` Andreas Schwab
2005-02-16 3:12 ` Roman Zippel
2005-02-16 4:05 ` Linus Torvalds
2005-02-16 14:42 ` Theodore Ts'o
2005-02-16 16:06 ` Linus Torvalds
2005-02-17 4:44 ` Theodore Ts'o
2005-02-17 15:45 ` Linus Torvalds
2005-02-18 16:32 ` Theodore Ts'o
2005-02-16 19:49 ` Roman Zippel
2005-02-16 19:58 ` Linus Torvalds
2005-02-16 22:46 ` Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2005-02-15 2:00 Alex Davis
2005-02-15 10:48 ` Andreas Schwab
2005-02-15 11:01 ` Jan De Luyck
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=20050215225802.6321e9a8.vsu@altlinux.ru \
--to=vsu@altlinux.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=schwab@suse.de \
--cc=torvalds@osdl.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.