Module Name: src
Committed By: thorpej
Date: Sun Sep 26 15:58:33 UTC 2021
Modified Files:
src/sys/net: if_tap.c if_tun.c
Log Message:
Use seltrue_filtops rather than rolling our own with filt_seltrue.
To generate a diff of this commit:
cvs rdiff -u -r1.123 -r1.124 src/sys/net/if_tap.c
cvs rdiff -u -r1.163 -r1.164 src/sys/net/if_tun.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/net/if_tap.c
diff -u src/sys/net/if_tap.c:1.123 src/sys/net/if_tap.c:1.124
--- src/sys/net/if_tap.c:1.123 Sun Sep 26 01:16:10 2021
+++ src/sys/net/if_tap.c Sun Sep 26 15:58:33 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: if_tap.c,v 1.123 2021/09/26 01:16:10 thorpej Exp $ */
+/* $NetBSD: if_tap.c,v 1.124 2021/09/26 15:58:33 thorpej Exp $ */
/*
* Copyright (c) 2003, 2004, 2008, 2009 The NetBSD Foundation.
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.123 2021/09/26 01:16:10 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.124 2021/09/26 15:58:33 thorpej Exp $");
#if defined(_KERNEL_OPT)
@@ -1175,13 +1175,6 @@ static struct filterops tap_read_filtero
.f_event = tap_kqread,
};
-static struct filterops tap_seltrue_filterops = {
- .f_flags = FILTEROP_ISFD,
- .f_attach = NULL,
- .f_detach = tap_kqdetach,
- .f_event = filt_seltrue,
-};
-
static int
tap_cdev_kqfilter(dev_t dev, struct knote *kn)
{
@@ -1204,24 +1197,25 @@ tap_dev_kqfilter(int unit, struct knote
if (sc == NULL)
return ENXIO;
- KERNEL_LOCK(1, NULL);
switch(kn->kn_filter) {
case EVFILT_READ:
kn->kn_fop = &tap_read_filterops;
+ kn->kn_hook = sc;
+ KERNEL_LOCK(1, NULL);
+ mutex_spin_enter(&sc->sc_lock);
+ selrecord_knote(&sc->sc_rsel, kn);
+ mutex_spin_exit(&sc->sc_lock);
+ KERNEL_UNLOCK_ONE(NULL);
break;
+
case EVFILT_WRITE:
- kn->kn_fop = &tap_seltrue_filterops;
+ kn->kn_fop = &seltrue_filtops;
break;
+
default:
- KERNEL_UNLOCK_ONE(NULL);
return EINVAL;
}
- kn->kn_hook = sc;
- mutex_spin_enter(&sc->sc_lock);
- selrecord_knote(&sc->sc_rsel, kn);
- mutex_spin_exit(&sc->sc_lock);
- KERNEL_UNLOCK_ONE(NULL);
return 0;
}
Index: src/sys/net/if_tun.c
diff -u src/sys/net/if_tun.c:1.163 src/sys/net/if_tun.c:1.164
--- src/sys/net/if_tun.c:1.163 Sun Sep 26 01:16:10 2021
+++ src/sys/net/if_tun.c Sun Sep 26 15:58:33 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: if_tun.c,v 1.163 2021/09/26 01:16:10 thorpej Exp $ */
+/* $NetBSD: if_tun.c,v 1.164 2021/09/26 15:58:33 thorpej Exp $ */
/*
* Copyright (c) 1988, Julian Onions <[email protected]>
@@ -19,7 +19,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1.163 2021/09/26 01:16:10 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1.164 2021/09/26 15:58:33 thorpej Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -1088,13 +1088,6 @@ static const struct filterops tunread_fi
.f_event = filt_tunread,
};
-static const struct filterops tun_seltrue_filtops = {
- .f_flags = FILTEROP_ISFD,
- .f_attach = NULL,
- .f_detach = filt_tunrdetach,
- .f_event = filt_seltrue,
-};
-
int
tunkqfilter(dev_t dev, struct knote *kn)
{
@@ -1108,10 +1101,12 @@ tunkqfilter(dev_t dev, struct knote *kn)
switch (kn->kn_filter) {
case EVFILT_READ:
kn->kn_fop = &tunread_filtops;
+ kn->kn_hook = tp;
+ selrecord_knote(&tp->tun_rsel, kn);
break;
case EVFILT_WRITE:
- kn->kn_fop = &tun_seltrue_filtops;
+ kn->kn_fop = &seltrue_filtops;
break;
default:
@@ -1119,10 +1114,6 @@ tunkqfilter(dev_t dev, struct knote *kn)
goto out;
}
- kn->kn_hook = tp;
-
- selrecord_knote(&tp->tun_rsel, kn);
-
out:
mutex_exit(&tp->tun_lock);
out_nolock: