diff options
author | mpi <mpi@openbsd.org> | 2020-06-15 15:42:11 +0000 |
---|---|---|
committer | mpi <mpi@openbsd.org> | 2020-06-15 15:42:11 +0000 |
commit | cd7317608c2935dc76e7edbef5164cf5eec1552f (patch) | |
tree | 6581a1dcb90042a207ec9faa42a97b1c54866a1d /sys/miscfs | |
parent | Set __EV_HUP when the conditions matching poll(2)'s POLLUP are found. (diff) | |
download | wireguard-openbsd-cd7317608c2935dc76e7edbef5164cf5eec1552f.tar.xz wireguard-openbsd-cd7317608c2935dc76e7edbef5164cf5eec1552f.zip |
Implement a simple kqfilter for deadfs matching its poll handler.
ok visa@, millert@
Diffstat (limited to 'sys/miscfs')
-rw-r--r-- | sys/miscfs/deadfs/dead_vnops.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/sys/miscfs/deadfs/dead_vnops.c b/sys/miscfs/deadfs/dead_vnops.c index 606960c726d..5a1abbc73d1 100644 --- a/sys/miscfs/deadfs/dead_vnops.c +++ b/sys/miscfs/deadfs/dead_vnops.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dead_vnops.c,v 1.32 2020/01/20 23:21:56 claudio Exp $ */ +/* $OpenBSD: dead_vnops.c,v 1.33 2020/06/15 15:42:11 mpi Exp $ */ /* $NetBSD: dead_vnops.c,v 1.16 1996/02/13 13:12:48 mycroft Exp $ */ /* @@ -34,6 +34,7 @@ #include <sys/param.h> #include <sys/systm.h> +#include <sys/event.h> #include <sys/time.h> #include <sys/vnode.h> #include <sys/lock.h> @@ -52,6 +53,7 @@ int dead_read(void *); int dead_write(void *); int dead_ioctl(void *); int dead_poll(void *); +int dead_kqfilter(void *v); int dead_inactive(void *); int dead_lock(void *); int dead_bmap(void *); @@ -73,6 +75,7 @@ const struct vops dead_vops = { .vop_write = dead_write, .vop_ioctl = dead_ioctl, .vop_poll = dead_poll, + .vop_kqfilter = dead_kqfilter, .vop_fsync = nullop, .vop_remove = dead_badop, .vop_link = dead_badop, @@ -167,6 +170,23 @@ dead_poll(void *v) return (POLLHUP); } +int +dead_kqfilter(void *v) +{ + struct vop_kqfilter_args *ap = v; + + switch (ap->a_kn->kn_filter) { + case EVFILT_READ: + case EVFILT_WRITE: + ap->a_kn->kn_fop = &dead_filtops; + break; + default: + return (EINVAL); + } + + return (0); +} + /* * Just call the device strategy routine */ |