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)); } /*