diff options
author | ed <ed@FreeBSD.org> | 2012-11-03 22:21:37 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2012-11-03 22:21:37 +0000 |
commit | e77bf633a0b379566f2c9ad79dc776ed4c716f54 (patch) | |
tree | cf775c9d71eb160c1590d5834065535cef959157 /sys/kern/tty.c | |
parent | a842b8978aefab172b0bcf05a00fd85ef09ad4e1 (diff) | |
download | FreeBSD-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.c | 15 |
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; |