Replace selinfo structure by klist in sockbuf. No reason to keep it,
authormvs <mvs@openbsd.org>
Fri, 27 Jan 2023 18:46:34 +0000 (18:46 +0000)
committermvs <mvs@openbsd.org>
Fri, 27 Jan 2023 18:46:34 +0000 (18:46 +0000)
selinfo is just wrapper to klist. netstat(1) and libkvm use socket
structure, but don't touch so_{snd,rcv}.sb_sel.

ok visa@

sys/kern/uipc_socket.c
sys/kern/uipc_socket2.c
sys/kern/uipc_syscalls.c
sys/miscfs/fifofs/fifo_vnops.c
sys/sys/socketvar.h

index 0d2bc0b..ca142be 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uipc_socket.c,v 1.297 2023/01/23 18:34:24 mvs Exp $   */
+/*     $OpenBSD: uipc_socket.c,v 1.298 2023/01/27 18:46:34 mvs Exp $   */
 /*     $NetBSD: uipc_socket.c,v 1.21 1996/02/04 02:17:52 christos Exp $        */
 
 /*
@@ -176,8 +176,8 @@ socreate(int dom, struct socket **aso, int type, int proto)
        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 knote *kn)
                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 4b6f1e9..e37fef4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uipc_socket2.c,v 1.133 2023/01/22 12:05:44 mvs Exp $  */
+/*     $OpenBSD: uipc_socket2.c,v 1.134 2023/01/27 18:46:34 mvs Exp $  */
 /*     $NetBSD: uipc_socket2.c,v 1.11 1996/02/04 02:17:55 christos Exp $       */
 
 /*
@@ -226,8 +226,8 @@ sonewconn(struct socket *head, int connstatus, int wait)
        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 connstatus, int wait)
                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 sockbuf *sb)
        }
        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 8efc1a2..9ce5583 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uipc_syscalls.c,v 1.209 2023/01/22 12:05:44 mvs Exp $ */
+/*     $OpenBSD: uipc_syscalls.c,v 1.210 2023/01/27 18:46:34 mvs Exp $ */
 /*     $NetBSD: uipc_syscalls.c,v 1.19 1996/02/09 19:00:48 christos Exp $      */
 
 /*
@@ -326,7 +326,7 @@ doaccept(struct proc *p, int sock, struct sockaddr *name, socklen_t *anamelen,
            : (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 f3f0e96..8586550 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: fifo_vnops.c,v 1.100 2023/01/22 12:05:44 mvs Exp $    */
+/*     $OpenBSD: fifo_vnops.c,v 1.101 2023/01/27 18:46:34 mvs Exp $    */
 /*     $NetBSD: fifo_vnops.c,v 1.18 1996/03/16 23:52:42 christos Exp $ */
 
 /*
@@ -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 2986a6b..834a2b5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: socketvar.h,v 1.118 2023/01/23 18:35:13 mvs Exp $     */
+/*     $OpenBSD: socketvar.h,v 1.119 2023/01/27 18:46:34 mvs Exp $     */
 /*     $NetBSD: socketvar.h,v 1.18 1996/02/09 18:25:38 christos Exp $  */
 
 /*-
@@ -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 sockbuf *sb)
 {
        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));
 }
 
 /*