summaryrefslogtreecommitdiffstats
path: root/sys/kern/tty.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/tty.c')
-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 4b2ce14..f98a70f 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -456,7 +456,7 @@ ttydev_write(struct cdev *dev, struct uio *uio, int ioflag)
} else {
/* Serialize write() calls. */
while (tp->t_flags & TF_BUSY_OUT) {
- error = tty_wait(tp, &tp->t_dcdwait);
+ error = tty_wait(tp, &tp->t_outserwait);
if (error)
goto done;
}
@@ -464,7 +464,7 @@ ttydev_write(struct cdev *dev, struct uio *uio, int ioflag)
tp->t_flags |= TF_BUSY_OUT;
error = ttydisc_write(tp, uio, ioflag);
tp->t_flags &= ~TF_BUSY_OUT;
- cv_broadcast(&tp->t_dcdwait);
+ cv_signal(&tp->t_outserwait);
}
done: tty_unlock(tp);
@@ -916,6 +916,7 @@ tty_alloc_mutex(struct ttydevsw *tsw, void *sc, struct mtx *mutex)
cv_init(&tp->t_inwait, "ttyin");
cv_init(&tp->t_outwait, "ttyout");
+ cv_init(&tp->t_outserwait, "ttyosr");
cv_init(&tp->t_bgwait, "ttybg");
cv_init(&tp->t_dcdwait, "ttydcd");
@@ -959,6 +960,7 @@ tty_dealloc(void *arg)
cv_destroy(&tp->t_outwait);
cv_destroy(&tp->t_bgwait);
cv_destroy(&tp->t_dcdwait);
+ cv_destroy(&tp->t_outserwait);
if (tp->t_mtx == &tp->t_mtxobj)
mtx_destroy(&tp->t_mtxobj);
OpenPOWER on IntegriCloud