summaryrefslogtreecommitdiff
path: root/sys/kern/tty_cons.c
diff options
context:
space:
mode:
authorJonathan Lemon <jlemon@FreeBSD.org>2001-02-15 16:34:11 +0000
committerJonathan Lemon <jlemon@FreeBSD.org>2001-02-15 16:34:11 +0000
commit608a3ce62a98c42e5d415af6d6dc98f2bf4e615b (patch)
treea9aab1f038a4aab4a0d31919948c7c964e5b85d6 /sys/kern/tty_cons.c
parent2c9ba841c61cbced165336bd4e2b21be82cfdcd0 (diff)
Notes
Diffstat (limited to 'sys/kern/tty_cons.c')
-rw-r--r--sys/kern/tty_cons.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/sys/kern/tty_cons.c b/sys/kern/tty_cons.c
index 784fecad98e2..9aa2c23386d6 100644
--- a/sys/kern/tty_cons.c
+++ b/sys/kern/tty_cons.c
@@ -58,6 +58,7 @@ static d_read_t cnread;
static d_write_t cnwrite;
static d_ioctl_t cnioctl;
static d_poll_t cnpoll;
+static d_kqfilter_t cnkqfilter;
#define CDEV_MAJOR 0
static struct cdevsw cn_cdevsw = {
@@ -73,8 +74,9 @@ static struct cdevsw cn_cdevsw = {
/* maj */ CDEV_MAJOR,
/* dump */ nodump,
/* psize */ nopsize,
- /* flags */ D_TTY,
- /* bmaj */ -1
+ /* flags */ D_TTY | D_KQFILTER,
+ /* bmaj */ -1,
+ /* kqfilter */ cnkqfilter,
};
static dev_t cn_dev_t; /* seems to be never really used */
@@ -398,6 +400,20 @@ cnpoll(dev, events, p)
return ((*devsw(dev)->d_poll)(dev, events, p));
}
+static int
+cnkqfilter(dev, kn)
+ dev_t dev;
+ struct knote *kn;
+{
+ if ((cn_tab == NULL) || cn_mute)
+ return (1);
+
+ dev = cn_tab->cn_dev;
+ if (devsw(dev)->d_flags & D_KQFILTER)
+ return ((*devsw(dev)->d_kqfilter)(dev, kn));
+ return (1);
+}
+
int
cngetc()
{