diff options
author | ed <ed@FreeBSD.org> | 2009-03-01 09:50:13 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2009-03-01 09:50:13 +0000 |
commit | 45be9ed4334db5c7016a3cfd17a5bbd1bc8026bc (patch) | |
tree | 5bf74c89a3e4610187a85b4c07d97084b105bea9 | |
parent | 1e29cb8e989182b94c8c02afa8d424cc7c2d5f46 (diff) | |
download | FreeBSD-src-45be9ed4334db5c7016a3cfd17a5bbd1bc8026bc.zip FreeBSD-src-45be9ed4334db5c7016a3cfd17a5bbd1bc8026bc.tar.gz |
Improve my previous changes to the TTY code: also remove memcpy().
It's better to just use internal language constructs, because it is
likely the compiler has a better opinion on whether to perform inlining,
which is very likely to happen to struct winsize.
Submitted by: Christoph Mallon <christoph mallon gmx de>
-rw-r--r-- | sys/kern/tty.c | 10 | ||||
-rw-r--r-- | sys/kern/tty_pts.c | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 3ad5ee6..e12f270 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -724,14 +724,14 @@ ttyil_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, switch (cmd) { case TIOCGETA: /* Obtain terminal flags through tcgetattr(). */ - memcpy(data, dev->si_drv2, sizeof(struct termios)); + *(struct termios*)data = *(struct termios*)dev->si_drv2; break; case TIOCSETA: /* Set terminal flags through tcsetattr(). */ error = priv_check(td, PRIV_TTY_SETA); if (error) break; - memcpy(dev->si_drv2, data, sizeof(struct termios)); + *(struct termios*)dev->si_drv2 = *(struct termios*)data; break; case TIOCGETD: *(int *)data = TTYDISC; @@ -1344,7 +1344,7 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, struct thread *td) return (0); case TIOCGETA: /* Obtain terminal flags through tcgetattr(). */ - memcpy(data, &tp->t_termios, sizeof(struct termios)); + *(struct termios*)data = tp->t_termios; return (0); case TIOCSETA: case TIOCSETAW: @@ -1568,13 +1568,13 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, struct thread *td) return (0); case TIOCGWINSZ: /* Obtain window size. */ - memcpy(data, &tp->t_winsize, sizeof(struct winsize)); + *(struct winsize*)data = tp->t_winsize; return (0); case TIOCSWINSZ: /* Set window size. */ if (bcmp(&tp->t_winsize, data, sizeof(struct winsize)) == 0) return (0); - memcpy(&tp->t_winsize, data, sizeof(struct winsize)); + tp->t_winsize = *(struct winsize*)data; tty_signal_pgrp(tp, SIGWINCH); return (0); case TIOCEXCL: diff --git a/sys/kern/tty_pts.c b/sys/kern/tty_pts.c index cef9866..74ab185 100644 --- a/sys/kern/tty_pts.c +++ b/sys/kern/tty_pts.c @@ -310,7 +310,7 @@ ptsdev_ioctl(struct file *fp, u_long cmd, void *data, case TIOCGETA: /* Obtain terminal flags through tcgetattr(). */ tty_lock(tp); - memcpy(data, &tp->t_termios, sizeof(struct termios)); + *(struct termios*)data = tp->t_termios; tty_unlock(tp); return (0); #endif /* PTS_LINUX */ |