On Sat, May 29, 2021 at 10:33:17AM +0200, Martin Pieuchot wrote:
> The socket flag SS_ASYNC is redundant with the socket buffer flag
> SB_ASYNC. Both are set & unset via FIOASYNC. So the diff below gets
> rid of SS_ASYNC.
>
> Checking states on socket buffers will help reduce the scope of the
> NET_LOCK() when we'll introduce a socket buffer lock.
>
> ok?
>
ok mvs@
> Index: kern/sys_socket.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/sys_socket.c,v
> retrieving revision 1.45
> diff -u -p -r1.45 sys_socket.c
> --- kern/sys_socket.c 22 Feb 2020 11:58:29 -0000 1.45
> +++ kern/sys_socket.c 29 May 2021 07:53:49 -0000
> @@ -96,11 +96,9 @@ soo_ioctl(struct file *fp, u_long cmd, c
> case FIOASYNC:
> s = solock(so);
> if (*(int *)data) {
> - so->so_state |= SS_ASYNC;
> so->so_rcv.sb_flags |= SB_ASYNC;
> so->so_snd.sb_flags |= SB_ASYNC;
> } else {
> - so->so_state &= ~SS_ASYNC;
> so->so_rcv.sb_flags &= ~SB_ASYNC;
> so->so_snd.sb_flags &= ~SB_ASYNC;
> }
> Index: kern/uipc_socket2.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/uipc_socket2.c,v
> retrieving revision 1.110
> diff -u -p -r1.110 uipc_socket2.c
> --- kern/uipc_socket2.c 26 May 2021 08:28:34 -0000 1.110
> +++ kern/uipc_socket2.c 29 May 2021 07:53:41 -0000
> @@ -409,7 +409,7 @@ sbunlock(struct socket *so, struct sockb
> /*
> * Wakeup processes waiting on a socket buffer.
> * Do asynchronous notification via SIGIO
> - * if the socket has the SS_ASYNC flag set.
> + * if the socket buffer has the SB_ASYNC flag set.
> */
> void
> sowakeup(struct socket *so, struct sockbuf *sb)
> @@ -421,7 +421,7 @@ sowakeup(struct socket *so, struct sockb
> sb->sb_flags &= ~SB_WAIT;
> wakeup(&sb->sb_cc);
> }
> - if (so->so_state & SS_ASYNC)
> + if (sb->sb_flags & SB_ASYNC)
> pgsigio(&so->so_sigio, SIGIO, 0);
> selwakeup(&sb->sb_sel);
> }
> Index: sys/socketvar.h
> ===================================================================
> RCS file: /cvs/src/sys/sys/socketvar.h,v
> retrieving revision 1.97
> diff -u -p -r1.97 socketvar.h
> --- sys/socketvar.h 21 May 2021 10:59:02 -0000 1.97
> +++ sys/socketvar.h 29 May 2021 07:54:27 -0000
> @@ -147,7 +147,6 @@ struct socket {
> #define SS_ISDISCONNECTED 0x800 /* socket disconnected from
> peer */
>
> #define SS_PRIV 0x080 /* privileged for broadcast,
> raw... */
> -#define SS_ASYNC 0x200 /* async i/o notify */
> #define SS_CONNECTOUT 0x1000 /* connect, not accept, at this
> end */
> #define SS_ISSENDING 0x2000 /* hint for lower layer */
> #define SS_DNS 0x4000 /* created using SOCK_DNS
> socket(2) */
>