No reason to keep it, selinfo is just wrapper to klist. netstat(1) and
libkvm use socket structure, but don't touch
so_{snd,rcv}.sb_sel.si_note.
Index: sys/kern/uipc_socket.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_socket.c,v
retrieving revision 1.297
diff -u -p -r1.297 uipc_socket.c
--- sys/kern/uipc_socket.c 23 Jan 2023 18:34:24 -0000 1.297
+++ sys/kern/uipc_socket.c 26 Jan 2023 18:39:31 -0000
@@ -176,8 +176,8 @@ socreate(int dom, struct socket **aso, i
if (prp->pr_type != type)
return (EPROTOTYPE);
so = soalloc(M_WAIT);
- klist_init(&so->so_rcv.sb_sel.si_note, &socket_klistops, so);
- klist_init(&so->so_snd.sb_sel.si_note, &socket_klistops, so);
+ klist_init(&so->so_rcv.sb_klist, &socket_klistops, so);
+ klist_init(&so->so_snd.sb_klist, &socket_klistops, so);
sigio_init(&so->so_sigio);
TAILQ_INIT(&so->so_q0);
TAILQ_INIT(&so->so_q);
@@ -303,8 +303,8 @@ sofree(struct socket *so, int keep_lock)
}
sigio_free(&so->so_sigio);
- klist_free(&so->so_rcv.sb_sel.si_note);
- klist_free(&so->so_snd.sb_sel.si_note);
+ klist_free(&so->so_rcv.sb_klist);
+ klist_free(&so->so_snd.sb_klist);
#ifdef SOCKET_SPLICE
if (so->so_sp) {
if (issplicedback(so)) {
@@ -2095,7 +2095,7 @@ void
sohasoutofband(struct socket *so)
{
pgsigio(&so->so_sigio, SIGURG, 0);
- KNOTE(&so->so_rcv.sb_sel.si_note, 0);
+ KNOTE(&so->so_rcv.sb_klist, 0);
}
int
@@ -2126,7 +2126,7 @@ soo_kqfilter(struct file *fp, struct kno
return (EINVAL);
}
- klist_insert_locked(&sb->sb_sel.si_note, kn);
+ klist_insert_locked(&sb->sb_klist, kn);
sounlock(so);
return (0);
@@ -2137,7 +2137,7 @@ filt_sordetach(struct knote *kn)
{
struct socket *so = kn->kn_fp->f_data;
- klist_remove(&so->so_rcv.sb_sel.si_note, kn);
+ klist_remove(&so->so_rcv.sb_klist, kn);
}
int
@@ -2178,7 +2178,7 @@ filt_sowdetach(struct knote *kn)
{
struct socket *so = kn->kn_fp->f_data;
- klist_remove(&so->so_snd.sb_sel.si_note, kn);
+ klist_remove(&so->so_snd.sb_klist, kn);
}
int
Index: sys/kern/uipc_socket2.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_socket2.c,v
retrieving revision 1.133
diff -u -p -r1.133 uipc_socket2.c
--- sys/kern/uipc_socket2.c 22 Jan 2023 12:05:44 -0000 1.133
+++ sys/kern/uipc_socket2.c 26 Jan 2023 18:39:31 -0000
@@ -226,8 +226,8 @@ sonewconn(struct socket *head, int conns
so->so_rcv.sb_lowat = head->so_rcv.sb_lowat;
so->so_rcv.sb_timeo_nsecs = head->so_rcv.sb_timeo_nsecs;
- klist_init(&so->so_rcv.sb_sel.si_note, &socket_klistops, so);
- klist_init(&so->so_snd.sb_sel.si_note, &socket_klistops, so);
+ klist_init(&so->so_rcv.sb_klist, &socket_klistops, so);
+ klist_init(&so->so_snd.sb_klist, &socket_klistops, so);
sigio_init(&so->so_sigio);
sigio_copy(&so->so_sigio, &head->so_sigio);
@@ -262,8 +262,8 @@ sonewconn(struct socket *head, int conns
if (persocket)
sounlock(so);
sigio_free(&so->so_sigio);
- klist_free(&so->so_rcv.sb_sel.si_note);
- klist_free(&so->so_snd.sb_sel.si_note);
+ klist_free(&so->so_rcv.sb_klist);
+ klist_free(&so->so_snd.sb_klist);
pool_put(&socket_pool, so);
return (NULL);
}
@@ -549,7 +549,7 @@ sowakeup(struct socket *so, struct sockb
}
if (sb->sb_flags & SB_ASYNC)
pgsigio(&so->so_sigio, SIGIO, 0);
- KNOTE(&sb->sb_sel.si_note, 0);
+ KNOTE(&sb->sb_klist, 0);
}
/*
Index: sys/kern/uipc_syscalls.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_syscalls.c,v
retrieving revision 1.209
diff -u -p -r1.209 uipc_syscalls.c
--- sys/kern/uipc_syscalls.c 22 Jan 2023 12:05:44 -0000 1.209
+++ sys/kern/uipc_syscalls.c 26 Jan 2023 18:39:31 -0000
@@ -326,7 +326,7 @@ doaccept(struct proc *p, int sock, struc
: (flags & SOCK_NONBLOCK ? FNONBLOCK : 0);
/* connection has been removed from the listen queue */
- KNOTE(&head->so_rcv.sb_sel.si_note, 0);
+ KNOTE(&head->so_rcv.sb_klist, 0);
if (persocket)
sounlock(head);
Index: sys/miscfs/fifofs/fifo_vnops.c
===================================================================
RCS file: /cvs/src/sys/miscfs/fifofs/fifo_vnops.c,v
retrieving revision 1.100
diff -u -p -r1.100 fifo_vnops.c
--- sys/miscfs/fifofs/fifo_vnops.c 22 Jan 2023 12:05:44 -0000 1.100
+++ sys/miscfs/fifofs/fifo_vnops.c 26 Jan 2023 18:39:31 -0000
@@ -504,7 +504,7 @@ fifo_kqfilter(void *v)
ap->a_kn->kn_hook = so;
- klist_insert(&sb->sb_sel.si_note, ap->a_kn);
+ klist_insert(&sb->sb_klist, ap->a_kn);
return (0);
}
@@ -514,7 +514,7 @@ filt_fifordetach(struct knote *kn)
{
struct socket *so = (struct socket *)kn->kn_hook;
- klist_remove(&so->so_rcv.sb_sel.si_note, kn);
+ klist_remove(&so->so_rcv.sb_klist, kn);
}
int
@@ -548,7 +548,7 @@ filt_fifowdetach(struct knote *kn)
{
struct socket *so = (struct socket *)kn->kn_hook;
- klist_remove(&so->so_snd.sb_sel.si_note, kn);
+ klist_remove(&so->so_snd.sb_klist, kn);
}
int
Index: sys/sys/socketvar.h
===================================================================
RCS file: /cvs/src/sys/sys/socketvar.h,v
retrieving revision 1.118
diff -u -p -r1.118 socketvar.h
--- sys/sys/socketvar.h 23 Jan 2023 18:35:13 -0000 1.118
+++ sys/sys/socketvar.h 26 Jan 2023 18:39:31 -0000
@@ -35,7 +35,7 @@
#ifndef _SYS_SOCKETVAR_H_
#define _SYS_SOCKETVAR_H_
-#include <sys/selinfo.h> /* for struct selinfo */
+#include <sys/event.h>
#include <sys/queue.h>
#include <sys/sigio.h> /* for struct sigio_ref */
#include <sys/task.h>
@@ -123,7 +123,7 @@ struct socket {
#define sb_endzero sb_flags
short sb_state; /* socket state on sockbuf */
uint64_t sb_timeo_nsecs;/* timeout for read/write */
- struct selinfo sb_sel; /* process selecting read/write */
+ struct klist sb_klist; /* process selecting read/write */
} so_rcv, so_snd;
#define SB_MAX (2*1024*1024) /* default for max chars in
sockbuf */
#define SB_LOCK 0x01 /* lock on data queue */
@@ -202,7 +202,7 @@ sb_notify(struct socket *so, struct sock
{
soassertlocked(so);
return ((sb->sb_flags & (SB_WAIT|SB_ASYNC|SB_SPLICE)) != 0 ||
- !klist_empty(&sb->sb_sel.si_note));
+ !klist_empty(&sb->sb_klist));
}
/*