From 3a95025ffc97244af8fb6e1e3ea92bafe527f9a5 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Tue, 1 Jun 2004 13:39:02 +0000 Subject: Introduce a ttyioctl() cdevsw default function. --- sys/kern/kern_conf.c | 1 + sys/kern/tty.c | 15 +++++++++++++++ sys/sys/conf.h | 1 + sys/sys/linedisc.h | 1 + 4 files changed, 18 insertions(+) (limited to 'sys') diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 1a3eaea33bfb..18ede10cbabe 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -428,6 +428,7 @@ prep_cdevsw(struct cdevsw *devsw) } if (devsw->d_flags & D_TTY) { + if (devsw->d_ioctl == NULL) devsw->d_ioctl = ttyioctl; if (devsw->d_read == NULL) devsw->d_read = ttyread; if (devsw->d_write == NULL) devsw->d_write = ttywrite; if (devsw->d_kqfilter == NULL) devsw->d_kqfilter = ttykqfilter; diff --git a/sys/kern/tty.c b/sys/kern/tty.c index e3bee61ff6c8..86581649b4c6 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -2751,3 +2751,18 @@ ttywrite(dev_t dev, struct uio *uio, int flag) return (ENODEV); return ((*linesw[tp->t_line].l_write)(tp, uio, flag)); } + +int +ttyioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) +{ + struct tty *tp; + int error; + + tp = dev->si_tty; + error = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag, td); + if (error == ENOIOCTL) + error = ttioctl(tp, cmd, data, flag); + if (error != ENOIOCTL) + return (error); + return (ENOTTY); +} diff --git a/sys/sys/conf.h b/sys/sys/conf.h index 1278fadb55f6..c45b14131f4c 100644 --- a/sys/sys/conf.h +++ b/sys/sys/conf.h @@ -353,6 +353,7 @@ void dumpsys(struct dumperinfo *); extern int dumping; /* system is dumping */ /* D_TTY related functions */ +d_ioctl_t ttyioctl; d_kqfilter_t ttykqfilter; d_poll_t ttypoll; d_read_t ttyread; diff --git a/sys/sys/linedisc.h b/sys/sys/linedisc.h index 1278fadb55f6..c45b14131f4c 100644 --- a/sys/sys/linedisc.h +++ b/sys/sys/linedisc.h @@ -353,6 +353,7 @@ void dumpsys(struct dumperinfo *); extern int dumping; /* system is dumping */ /* D_TTY related functions */ +d_ioctl_t ttyioctl; d_kqfilter_t ttykqfilter; d_poll_t ttypoll; d_read_t ttyread; -- cgit v1.2.3