diff options
author | ache <ache@FreeBSD.org> | 1995-02-24 02:36:01 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 1995-02-24 02:36:01 +0000 |
commit | f5b2c37e27d8387fb80fc08a03ac77c2973c6a85 (patch) | |
tree | 03525bc706be4b23a34aa19364d06b82356faf5b /sys/kern/tty.c | |
parent | 18a56536822272f24717a0db33e0e8ef0d124754 (diff) | |
download | FreeBSD-src-f5b2c37e27d8387fb80fc08a03ac77c2973c6a85.zip FreeBSD-src-f5b2c37e27d8387fb80fc08a03ac77c2973c6a85.tar.gz |
Add releasing of input flow control into
ttyflush(FREAD)
Diffstat (limited to 'sys/kern/tty.c')
-rw-r--r-- | sys/kern/tty.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 82907ac..33c75a0 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)tty.c 8.8 (Berkeley) 1/21/94 - * $Id: tty.c,v 1.29 1995/02/22 23:20:51 ache Exp $ + * $Id: tty.c,v 1.28 1995/02/15 22:25:51 ache Exp $ */ #include "snp.h" @@ -1083,6 +1083,16 @@ ttyflush(tp, rw) wakeup((caddr_t)&tp->t_outq); selwakeup(&tp->t_wsel); } + if ((rw & FREAD) && + ISSET(tp->t_state, TS_TBLOCK) && tp->t_rawq.c_cc < TTYHOG/5) { + if (ISSET(tp->t_iflag, IXOFF) && + tp->t_cc[VSTART] != _POSIX_VDISABLE && + putc(tp->t_cc[VSTART], &tp->t_outq) == 0 || + ISSET(tp->t_cflag, CRTS_IFLOW)) { + CLR(tp->t_state, TS_TBLOCK); + ttstart(tp); + } + } splx(s); } |