summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1994-08-01 10:42:26 +0000
committerdg <dg@FreeBSD.org>1994-08-01 10:42:26 +0000
commit4470f3d596cc20c7dc9a20846eecabe7d58f4a0b (patch)
tree7cc3f6441280d80a64b0e406584e3d934ba6023e
parent8b75418fcc4825e7403aa1cd6b5de06a1b2bc118 (diff)
downloadFreeBSD-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.c6
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;
OpenPOWER on IntegriCloud