summaryrefslogtreecommitdiffstats
path: root/sys/kern/tty.c
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-03-01 09:50:13 +0000
committered <ed@FreeBSD.org>2009-03-01 09:50:13 +0000
commit45be9ed4334db5c7016a3cfd17a5bbd1bc8026bc (patch)
tree5bf74c89a3e4610187a85b4c07d97084b105bea9 /sys/kern/tty.c
parent1e29cb8e989182b94c8c02afa8d424cc7c2d5f46 (diff)
downloadFreeBSD-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>
Diffstat (limited to 'sys/kern/tty.c')
-rw-r--r--sys/kern/tty.c10
1 files changed, 5 insertions, 5 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:
OpenPOWER on IntegriCloud