On Thu, Jan 26, 2023 at 09:51:14PM +0300, Vitaliy Makkoveev wrote: > 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.
OK visa@ > 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)); > } > > /* >