diff options
author | dg <dg@FreeBSD.org> | 1994-08-01 10:42:26 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1994-08-01 10:42:26 +0000 |
commit | 4470f3d596cc20c7dc9a20846eecabe7d58f4a0b (patch) | |
tree | 7cc3f6441280d80a64b0e406584e3d934ba6023e | |
parent | 8b75418fcc4825e7403aa1cd6b5de06a1b2bc118 (diff) | |
download | FreeBSD-src-4470f3d596cc20c7dc9a20846eecabe7d58f4a0b.zip FreeBSD-src-4470f3d596cc20c7dc9a20846eecabe7d58f4a0b.tar.gz |
Allow for output processing routine to handle entire character buffer
and thus not require a sleep/wakeup.
Reviewed by:
Submitted by:
-rw-r--r-- | sys/kern/tty.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c index ed5724d..fd3c051 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -1531,8 +1531,10 @@ ovhiwat: uio->uio_resid += cc; return (uio->uio_resid == cnt ? EWOULDBLOCK : 0); } - SET(tp->t_state, TS_ASLEEP); - error = ttysleep(tp, &tp->t_outq, TTOPRI | PCATCH, ttyout, 0); + if (tp->t_outq.c_cc || ISSET(tp->t_state, TS_BUSY)) { + SET(tp->t_state, TS_ASLEEP); + error = ttysleep(tp, &tp->t_outq, TTOPRI | PCATCH, ttyout, 0); + } splx(s); if (error) goto out; |