Module Name:    src
Committed By:   thorpej
Date:           Fri Dec 11 03:00:10 UTC 2020

Modified Files:
        src/sys/kern: kern_entropy.c kern_event.c subr_log.c sys_pipe.c tty.c
            tty_pty.c uipc_socket.c

Log Message:
Use sel{record,remove}_knote().


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/kern/kern_entropy.c
cvs rdiff -u -r1.108 -r1.109 src/sys/kern/kern_event.c
cvs rdiff -u -r1.59 -r1.60 src/sys/kern/subr_log.c
cvs rdiff -u -r1.150 -r1.151 src/sys/kern/sys_pipe.c
cvs rdiff -u -r1.294 -r1.295 src/sys/kern/tty.c
cvs rdiff -u -r1.145 -r1.146 src/sys/kern/tty_pty.c
cvs rdiff -u -r1.293 -r1.294 src/sys/kern/uipc_socket.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/kern/kern_entropy.c
diff -u src/sys/kern/kern_entropy.c:1.24 src/sys/kern/kern_entropy.c:1.25
--- src/sys/kern/kern_entropy.c:1.24	Tue Sep 29 07:51:01 2020
+++ src/sys/kern/kern_entropy.c	Fri Dec 11 03:00:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_entropy.c,v 1.24 2020/09/29 07:51:01 gson Exp $	*/
+/*	$NetBSD: kern_entropy.c,v 1.25 2020/12/11 03:00:09 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_entropy.c,v 1.24 2020/09/29 07:51:01 gson Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_entropy.c,v 1.25 2020/12/11 03:00:09 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -1409,7 +1409,7 @@ filt_entropy_read_detach(struct knote *k
 	KASSERT(E->stage >= ENTROPY_WARM);
 
 	mutex_enter(&E->lock);
-	SLIST_REMOVE(&E->selq.sel_klist, kn, knote, kn_selnext);
+	selremove_knote(&E->selq, kn);
 	mutex_exit(&E->lock);
 }
 
@@ -1480,7 +1480,7 @@ entropy_kqfilter(struct knote *kn)
 		/* Enter into the global select queue.  */
 		mutex_enter(&E->lock);
 		kn->kn_fop = &entropy_read_filtops;
-		SLIST_INSERT_HEAD(&E->selq.sel_klist, kn, kn_selnext);
+		selrecord_knote(&E->selq, kn);
 		mutex_exit(&E->lock);
 		return 0;
 	case EVFILT_WRITE:

Index: src/sys/kern/kern_event.c
diff -u src/sys/kern/kern_event.c:1.108 src/sys/kern/kern_event.c:1.109
--- src/sys/kern/kern_event.c:1.108	Sat Oct 31 01:08:32 2020
+++ src/sys/kern/kern_event.c	Fri Dec 11 03:00:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_event.c,v 1.108 2020/10/31 01:08:32 christos Exp $	*/
+/*	$NetBSD: kern_event.c,v 1.109 2020/12/11 03:00:09 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_event.c,v 1.108 2020/10/31 01:08:32 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_event.c,v 1.109 2020/12/11 03:00:09 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -481,7 +481,7 @@ filt_kqdetach(struct knote *kn)
 	kq = ((file_t *)kn->kn_obj)->f_kqueue;
 
 	mutex_spin_enter(&kq->kq_lock);
-	SLIST_REMOVE(&kq->kq_sel.sel_klist, kn, knote, kn_selnext);
+	selremove_knote(&kq->kq_sel, kn);
 	mutex_spin_exit(&kq->kq_lock);
 }
 
@@ -1780,7 +1780,7 @@ kqueue_kqfilter(file_t *fp, struct knote
 
 	kn->kn_fop = &kqread_filtops;
 	mutex_enter(&kq->kq_lock);
-	SLIST_INSERT_HEAD(&kq->kq_sel.sel_klist, kn, kn_selnext);
+	selrecord_knote(&kq->kq_sel, kn);
 	mutex_exit(&kq->kq_lock);
 
 	return 0;

Index: src/sys/kern/subr_log.c
diff -u src/sys/kern/subr_log.c:1.59 src/sys/kern/subr_log.c:1.60
--- src/sys/kern/subr_log.c:1.59	Mon Sep  3 16:29:35 2018
+++ src/sys/kern/subr_log.c	Fri Dec 11 03:00:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_log.c,v 1.59 2018/09/03 16:29:35 riastradh Exp $	*/
+/*	$NetBSD: subr_log.c,v 1.60 2020/12/11 03:00:09 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_log.c,v 1.59 2018/09/03 16:29:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_log.c,v 1.60 2020/12/11 03:00:09 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -262,7 +262,7 @@ filt_logrdetach(struct knote *kn)
 {
 
 	mutex_spin_enter(&log_lock);
-	SLIST_REMOVE(&log_selp.sel_klist, kn, knote, kn_selnext);
+	selremove_knote(&log_selp, kn);
 	mutex_spin_exit(&log_lock);
 }
 
@@ -299,11 +299,9 @@ static const struct filterops logread_fi
 static int
 logkqfilter(dev_t dev, struct knote *kn)
 {
-	struct klist *klist;
 
 	switch (kn->kn_filter) {
 	case EVFILT_READ:
-		klist = &log_selp.sel_klist;
 		kn->kn_fop = &logread_filtops;
 		break;
 
@@ -311,9 +309,10 @@ logkqfilter(dev_t dev, struct knote *kn)
 		return (EINVAL);
 	}
 
-	mutex_spin_enter(&log_lock);
 	kn->kn_hook = NULL;
-	SLIST_INSERT_HEAD(klist, kn, kn_selnext);
+
+	mutex_spin_enter(&log_lock);
+	selrecord_knote(&log_selp, kn);
 	mutex_spin_exit(&log_lock);
 
 	return (0);

Index: src/sys/kern/sys_pipe.c
diff -u src/sys/kern/sys_pipe.c:1.150 src/sys/kern/sys_pipe.c:1.151
--- src/sys/kern/sys_pipe.c:1.150	Thu Jun 25 16:19:07 2020
+++ src/sys/kern/sys_pipe.c	Fri Dec 11 03:00:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_pipe.c,v 1.150 2020/06/25 16:19:07 maxv Exp $	*/
+/*	$NetBSD: sys_pipe.c,v 1.151 2020/12/11 03:00:09 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2003, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_pipe.c,v 1.150 2020/06/25 16:19:07 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_pipe.c,v 1.151 2020/12/11 03:00:09 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -977,6 +977,8 @@ pipeclose(struct pipe *pipe)
 	 * Any knote objects still left in the list are
 	 * the one attached by peer.  Since no one will
 	 * traverse this list, we just clear it.
+	 *
+	 * XXX Exposes select/kqueue internals.
 	 */
 	SLIST_INIT(&pipe->pipe_sel.sel_klist);
 
@@ -1029,7 +1031,7 @@ filt_pipedetach(struct knote *kn)
 	}
 
 	KASSERT(kn->kn_hook == pipe);
-	SLIST_REMOVE(&pipe->pipe_sel.sel_klist, kn, knote, kn_selnext);
+	selremove_knote(&pipe->pipe_sel, kn);
 	mutex_exit(lock);
 }
 
@@ -1131,7 +1133,7 @@ pipe_kqfilter(file_t *fp, struct knote *
 	}
 
 	kn->kn_hook = pipe;
-	SLIST_INSERT_HEAD(&pipe->pipe_sel.sel_klist, kn, kn_selnext);
+	selrecord_knote(&pipe->pipe_sel, kn);
 	mutex_exit(lock);
 
 	return (0);

Index: src/sys/kern/tty.c
diff -u src/sys/kern/tty.c:1.294 src/sys/kern/tty.c:1.295
--- src/sys/kern/tty.c:1.294	Sat Oct 10 18:53:56 2020
+++ src/sys/kern/tty.c	Fri Dec 11 03:00:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty.c,v 1.294 2020/10/10 18:53:56 christos Exp $	*/
+/*	$NetBSD: tty.c,v 1.295 2020/12/11 03:00:09 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2020 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.294 2020/10/10 18:53:56 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.295 2020/12/11 03:00:09 thorpej Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -1469,7 +1469,7 @@ filt_ttyrdetach(struct knote *kn)
 
 	tp = kn->kn_hook;
 	mutex_spin_enter(&tty_lock);
-	SLIST_REMOVE(&tp->t_rsel.sel_klist, kn, knote, kn_selnext);
+	selremove_knote(&tp->t_rsel, kn);
 	mutex_spin_exit(&tty_lock);
 }
 
@@ -1494,7 +1494,7 @@ filt_ttywdetach(struct knote *kn)
 
 	tp = kn->kn_hook;
 	mutex_spin_enter(&tty_lock);
-	SLIST_REMOVE(&tp->t_wsel.sel_klist, kn, knote, kn_selnext);
+	selremove_knote(&tp->t_wsel, kn);
 	mutex_spin_exit(&tty_lock);
 }
 
@@ -1532,18 +1532,18 @@ int
 ttykqfilter(dev_t dev, struct knote *kn)
 {
 	struct tty	*tp;
-	struct klist	*klist;
+	struct selinfo	*sip;
 
 	if ((tp = cdev_tty(dev)) == NULL)
 		return (ENXIO);
 
 	switch (kn->kn_filter) {
 	case EVFILT_READ:
-		klist = &tp->t_rsel.sel_klist;
+		sip = &tp->t_rsel;
 		kn->kn_fop = &ttyread_filtops;
 		break;
 	case EVFILT_WRITE:
-		klist = &tp->t_wsel.sel_klist;
+		sip = &tp->t_wsel;
 		kn->kn_fop = &ttywrite_filtops;
 		break;
 	default:
@@ -1553,7 +1553,7 @@ ttykqfilter(dev_t dev, struct knote *kn)
 	kn->kn_hook = tp;
 
 	mutex_spin_enter(&tty_lock);
-	SLIST_INSERT_HEAD(klist, kn, kn_selnext);
+	selrecord_knote(sip, kn);
 	mutex_spin_exit(&tty_lock);
 
 	return (0);

Index: src/sys/kern/tty_pty.c
diff -u src/sys/kern/tty_pty.c:1.145 src/sys/kern/tty_pty.c:1.146
--- src/sys/kern/tty_pty.c:1.145	Fri Feb 15 18:57:15 2019
+++ src/sys/kern/tty_pty.c	Fri Dec 11 03:00:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty_pty.c,v 1.145 2019/02/15 18:57:15 mgorny Exp $	*/
+/*	$NetBSD: tty_pty.c,v 1.146 2020/12/11 03:00:09 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty_pty.c,v 1.145 2019/02/15 18:57:15 mgorny Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty_pty.c,v 1.146 2020/12/11 03:00:09 thorpej Exp $");
 
 #include "opt_ptm.h"
 
@@ -904,7 +904,7 @@ filt_ptcrdetach(struct knote *kn)
 	pti = kn->kn_hook;
 
 	mutex_spin_enter(&tty_lock);
-	SLIST_REMOVE(&pti->pt_selr.sel_klist, kn, knote, kn_selnext);
+	selremove_knote(&pti->pt_selr, kn);
 	mutex_spin_exit(&tty_lock);
 }
 
@@ -958,7 +958,7 @@ filt_ptcwdetach(struct knote *kn)
 	pti = kn->kn_hook;
 
 	mutex_spin_enter(&tty_lock);
-	SLIST_REMOVE(&pti->pt_selw.sel_klist, kn, knote, kn_selnext);
+	selremove_knote(&pti->pt_selw, kn);
 	mutex_spin_exit(&tty_lock);
 }
 
@@ -1019,15 +1019,15 @@ int
 ptckqfilter(dev_t dev, struct knote *kn)
 {
 	struct pt_softc *pti = pt_softc[minor(dev)];
-	struct klist	*klist;
+	struct selinfo	*sip;
 
 	switch (kn->kn_filter) {
 	case EVFILT_READ:
-		klist = &pti->pt_selr.sel_klist;
+		sip = &pti->pt_selr;
 		kn->kn_fop = &ptcread_filtops;
 		break;
 	case EVFILT_WRITE:
-		klist = &pti->pt_selw.sel_klist;
+		sip = &pti->pt_selw;
 		kn->kn_fop = &ptcwrite_filtops;
 		break;
 	default:
@@ -1037,7 +1037,7 @@ ptckqfilter(dev_t dev, struct knote *kn)
 	kn->kn_hook = pti;
 
 	mutex_spin_enter(&tty_lock);
-	SLIST_INSERT_HEAD(klist, kn, kn_selnext);
+	selrecord_knote(sip, kn);
 	mutex_spin_exit(&tty_lock);
 
 	return 0;

Index: src/sys/kern/uipc_socket.c
diff -u src/sys/kern/uipc_socket.c:1.293 src/sys/kern/uipc_socket.c:1.294
--- src/sys/kern/uipc_socket.c:1.293	Mon Nov 23 00:52:53 2020
+++ src/sys/kern/uipc_socket.c	Fri Dec 11 03:00:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_socket.c,v 1.293 2020/11/23 00:52:53 chs Exp $	*/
+/*	$NetBSD: uipc_socket.c,v 1.294 2020/12/11 03:00:09 thorpej Exp $	*/
 
 /*
  * Copyright (c) 2002, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -71,7 +71,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.293 2020/11/23 00:52:53 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.294 2020/12/11 03:00:09 thorpej Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -2225,9 +2225,9 @@ filt_sordetach(struct knote *kn)
 
 	so = ((file_t *)kn->kn_obj)->f_socket;
 	solock(so);
-	SLIST_REMOVE(&so->so_rcv.sb_sel.sel_klist, kn, knote, kn_selnext);
-	if (SLIST_EMPTY(&so->so_rcv.sb_sel.sel_klist))
-		so->so_rcv.sb_flags &= ~SB_KNOTE;
+	selremove_knote(&so->so_rcv.sb_sel, kn);
+	if (SLIST_EMPTY(&so->so_rcv.sb_sel.sel_klist))	/* XXX select/kqueue */
+		so->so_rcv.sb_flags &= ~SB_KNOTE;	/* XXX internals */
 	sounlock(so);
 }
 
@@ -2264,9 +2264,9 @@ filt_sowdetach(struct knote *kn)
 
 	so = ((file_t *)kn->kn_obj)->f_socket;
 	solock(so);
-	SLIST_REMOVE(&so->so_snd.sb_sel.sel_klist, kn, knote, kn_selnext);
-	if (SLIST_EMPTY(&so->so_snd.sb_sel.sel_klist))
-		so->so_snd.sb_flags &= ~SB_KNOTE;
+	selremove_knote(&so->so_snd.sb_sel, kn);
+	if (SLIST_EMPTY(&so->so_snd.sb_sel.sel_klist))	/* XXX select/kqueue */
+		so->so_snd.sb_flags &= ~SB_KNOTE;	/* XXX internals */
 	sounlock(so);
 }
 
@@ -2366,7 +2366,7 @@ soo_kqfilter(struct file *fp, struct kno
 		sounlock(so);
 		return EINVAL;
 	}
-	SLIST_INSERT_HEAD(&sb->sb_sel.sel_klist, kn, kn_selnext);
+	selrecord_knote(&sb->sb_sel, kn);
 	sb->sb_flags |= SB_KNOTE;
 	sounlock(so);
 	return 0;

Reply via email to