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

  • Kill SS_ASYNC Martin Pieuchot
    • Re: Kill SS_ASYNC Vitaliy Makkoveev

Reply via email to