diff options
Diffstat (limited to 'sys/i386/isa/cy.c')
| -rw-r--r-- | sys/i386/isa/cy.c | 32 |
1 files changed, 6 insertions, 26 deletions
diff --git a/sys/i386/isa/cy.c b/sys/i386/isa/cy.c index bd8d7a49930b..7852317cf456 100644 --- a/sys/i386/isa/cy.c +++ b/sys/i386/isa/cy.c @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: cy.c,v 1.12 1995/07/29 04:05:53 bde Exp $ + * $Id: cy.c,v 1.13 1995/07/29 08:33:06 bde Exp $ */ #include "cy.h" @@ -1599,31 +1599,6 @@ repeat: if (incc <= 0 || !(tp->t_state & TS_ISOPEN)) continue; /* - * XXX only do this when we bypass ttyinput. - */ - if (tp->t_rawq.c_cc + incc >= RB_I_HIGH_WATER - && (com->state & CS_RTS_IFLOW || tp->t_iflag & IXOFF) - && !(tp->t_state & TS_TBLOCK) - /* - * XXX - need flow control for all line disciplines. - * Only have it in standard one now. - */ - && linesw[tp->t_line].l_rint == ttyinput) { - int putc_status = 0; - - if ((tp->t_iflag & IXOFF - && tp->t_cc[VSTOP] != _POSIX_VDISABLE - && (putc_status = putc(tp->t_cc[VSTOP], - &tp->t_outq)) == 0) - || com->state & CS_RTS_IFLOW) { - tp->t_state |= TS_TBLOCK; - ttstart(tp); - if (putc_status != 0) - /* Try again later. */ - tp->t_state &= ~TS_TBLOCK; - } - } - /* * Avoid the grotesquely inefficient lineswitch routine * (ttyinput) in "raw" mode. It usually takes about 450 * instructions (that's without canonical processing or echo!). @@ -1631,6 +1606,11 @@ repeat: * call overhead). */ if (tp->t_state & TS_CAN_BYPASS_L_RINT) { + if (tp->t_rawq.c_cc + incc >= RB_I_HIGH_WATER + && (com->state & CS_RTS_IFLOW + || tp->t_iflag & IXOFF) + && !(tp->t_state & TS_TBLOCK)) + ttyblock(tp); tk_nin += incc; tk_rawcc += incc; tp->t_rawcc += incc; |
