summaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/tty.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c
index c0ec4f0e259..354d14d52d2 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty.c,v 1.121 2015/02/10 21:56:10 miod Exp $ */
+/* $OpenBSD: tty.c,v 1.122 2015/07/20 22:28:57 sf Exp $ */
/* $NetBSD: tty.c,v 1.68.4.2 1996/06/06 16:04:52 thorpej Exp $ */
/*-
@@ -1688,7 +1688,7 @@ ttycheckoutq(struct tty *tp, int wait)
hiwat = tp->t_hiwat;
s = spltty();
oldsig = wait ? curproc->p_siglist : 0;
- if (tp->t_outq.c_cc > hiwat + 200)
+ if (tp->t_outq.c_cc > hiwat + TTHIWATMINSPACE)
while (tp->t_outq.c_cc > hiwat) {
ttstart(tp);
if (wait == 0 || curproc->p_siglist != oldsig) {
@@ -1823,7 +1823,7 @@ loop:
tp->t_rocount = 0;
if (ttyoutput(*cp, tp) >= 0) {
/* out of space */
- goto overfull;
+ goto ovhiwat;
}
cp++;
cc--;
@@ -1849,7 +1849,7 @@ loop:
tp->t_outcc += ce;
if (i > 0) {
/* out of space */
- goto overfull;
+ goto ovhiwat;
}
if (ISSET(tp->t_lflag, FLUSHO) ||
tp->t_outq.c_cc > hiwat)
@@ -1869,15 +1869,6 @@ done:
explicit_bzero(obuf, obufcc);
return (error);
-overfull:
- /*
- * Since we are using ring buffers, if we can't insert any more into
- * the output queue, we can assume the ring is full and that someone
- * forgot to set the high water mark correctly. We set it and then
- * proceed as normal.
- */
- hiwat = tp->t_outq.c_cc - 1;
-
ovhiwat:
ttstart(tp);
s = spltty();
@@ -2114,7 +2105,7 @@ ttsetwater(struct tty *tp)
cps = tp->t_ospeed / 10;
tp->t_lowat = x = CLAMP(cps / 2, TTMAXLOWAT, TTMINLOWAT);
x += cps;
- tp->t_hiwat = CLAMP(x, tp->t_outq.c_cn, 100);
+ tp->t_hiwat = CLAMP(x, tp->t_outq.c_cn - TTHIWATMINSPACE, TTMINHIWAT);
#undef CLAMP
}