summaryrefslogtreecommitdiffstats
path: root/sys/kern/tty.c
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2012-11-03 22:21:37 +0000
committered <ed@FreeBSD.org>2012-11-03 22:21:37 +0000
commite77bf633a0b379566f2c9ad79dc776ed4c716f54 (patch)
treecf775c9d71eb160c1590d5834065535cef959157 /sys/kern/tty.c
parenta842b8978aefab172b0bcf05a00fd85ef09ad4e1 (diff)
downloadFreeBSD-src-e77bf633a0b379566f2c9ad79dc776ed4c716f54.zip
FreeBSD-src-e77bf633a0b379566f2c9ad79dc776ed4c716f54.tar.gz
Add tty_set_winsize().
This removes some of the signalling magic from the Syscons driver and puts it in the TTY layer, where it belongs.
Diffstat (limited to 'sys/kern/tty.c')
-rw-r--r--sys/kern/tty.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c
index 4da8d38..e6d0d80 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -1381,6 +1381,16 @@ tty_flush(struct tty *tp, int flags)
}
}
+void
+tty_set_winsize(struct tty *tp, const struct winsize *wsz)
+{
+
+ if (memcmp(&tp->t_winsize, wsz, sizeof(*wsz)) == 0)
+ return;
+ tp->t_winsize = *wsz;
+ tty_signal_pgrp(tp, SIGWINCH);
+}
+
static int
tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag,
struct thread *td)
@@ -1689,10 +1699,7 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag,
return (0);
case TIOCSWINSZ:
/* Set window size. */
- if (bcmp(&tp->t_winsize, data, sizeof(struct winsize)) == 0)
- return (0);
- tp->t_winsize = *(struct winsize*)data;
- tty_signal_pgrp(tp, SIGWINCH);
+ tty_set_winsize(tp, data);
return (0);
case TIOCEXCL:
tp->t_flags |= TF_EXCLUDE;
OpenPOWER on IntegriCloud