Can't change line discipline on pty
Jonathan Stone
jonathan at beta.isor.vuw.ac.nz
Fri Jun 14 12:31:40 AEST 1991
Subject: Can't change line discipline on pty
Index: /sys/kern/tty_pty.c
Description:
The pty driver refuses to change the line discipline on
pty terminals to anything other than the standard tty line
discipline. Comments in the code claim that this is because
other line disciplines may over-write the tty queues. The
SLIP line discipline respects the tty queues, and in certain
regrettable circumstances it is useful to run SLIP through a pty.
(Please don't ask what they are.)
Repeat-By:
Run slattach(8) or sliplogin(8) on a pty.
Fix:
Apply the following patch to a kernel with SLIP configured,
and rebuild the kernel. The compile-time test for
configuration of SLIP should not be necessary, but cannot hurt.
Other line disciplines (such as dialup IP) may also be
appropriate for ptys.
*** /sys/kern/tty_pty.c Sun Jul 29 06:48:41 1990
--- /mnt/old.sys/kern/tty_pty.c Sat Jun 8 13:43:26 1991
***************
*** 38,44 ****
--- 38,49 ----
#include "uio.h"
#include "kernel.h"
#include "vnode.h"
+ #include "sl.h"
+ #if NSL > 0
+ extern int slinput();
+ #endif
+
#if NPTY == 1
#undef NPTY
#define NPTY 32 /* crude XXX */
***************
*** 620,626 ****
* the queues. We can't tell anything about the discipline
* from here...
*/
! if (linesw[tp->t_line].l_rint != ttyinput) {
(*linesw[tp->t_line].l_close)(tp);
tp->t_line = 0;
(void)(*linesw[tp->t_line].l_open)(dev, tp, flag);
--- 625,635 ----
* the queues. We can't tell anything about the discipline
* from here...
*/
! if (
! #if NSL > 0
! linesw[tp->t_line].l_rint != slinput &&
! #endif
! linesw[tp->t_line].l_rint != ttyinput) {
(*linesw[tp->t_line].l_close)(tp);
tp->t_line = 0;
(void)(*linesw[tp->t_line].l_open)(dev, tp, flag);
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list