[PATCH xserver] xfree86: Provide xf86BlockSIGIO and xf86ReleaseSIGIO as wrappers for input mutex

Peter Hutterer peter.hutterer at who-t.net
Mon May 30 04:21:31 UTC 2016


On Sun, May 29, 2016 at 07:17:53PM -0700, Keith Packard wrote:
> Threaded input doesn't use SIGIO anymore, but existing drivers using
> xf86BlockSIGIO and xf86ReleaseSIGIO probably want to lock the input
> mutex during those operations. Provide inline functions to do this
> which are marked as 'deprecated' so that drivers will get warnings
> until they are changed.
> 
> Signed-off-by: Keith Packard <keithp at keithp.com>

Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

thanks

Cheers,
   Peter

> ---
>  hw/xfree86/common/xf86.h             |  4 ++++
>  hw/xfree86/os-support/shared/sigio.c | 10 +++++-----
>  2 files changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
> index adb5601..e54c811 100644
> --- a/hw/xfree86/common/xf86.h
> +++ b/hw/xfree86/common/xf86.h
> @@ -93,6 +93,10 @@ extern _X_EXPORT Bool VTSwitchEnabled;  /* kbd driver */
>  #define PIX24TOBPP(p) (((p) == Pix24Use24) ? 24 : \
>  			(((p) == Pix24Use32) ? 32 : 0))
>  
> +/* Compatibility functions for pre-input-thread drivers */
> +static inline _X_DEPRECATED int xf86BlockSIGIO(void) { input_lock(); return 0; }
> +static inline _X_DEPRECATED void xf86UnblockSIGIO(int wasset) { input_unlock(); }
> +
>  /* Function Prototypes */
>  #ifndef _NO_XF86_PROTOTYPES
>  
> diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c
> index 37d35f7..37ef38f 100644
> --- a/hw/xfree86/os-support/shared/sigio.c
> +++ b/hw/xfree86/os-support/shared/sigio.c
> @@ -131,7 +131,7 @@ xf86IsPipe(int fd)
>  }
>  
>  static void
> -xf86BlockSIGIO(void)
> +block_sigio(void)
>  {
>      sigset_t set;
>  
> @@ -141,7 +141,7 @@ xf86BlockSIGIO(void)
>  }
>  
>  static void
> -xf86ReleaseSIGIO(void)
> +release_sigio(void)
>  {
>      sigset_t set;
>  
> @@ -165,7 +165,7 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure)
>          if (!xf86SigIOFuncs[i].f) {
>              if (xf86IsPipe(fd))
>                  return 0;
> -            xf86BlockSIGIO();
> +            block_sigio();
>  #ifdef O_ASYNC
>              if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_ASYNC) == -1) {
>                  xf86Msg(X_WARNING, "fcntl(%d, O_ASYNC): %s\n",
> @@ -193,7 +193,7 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure)
>              }
>  #endif
>              if (!installed) {
> -                xf86ReleaseSIGIO();
> +                release_sigio();
>                  return 0;
>              }
>              sigemptyset(&sa.sa_mask);
> @@ -209,7 +209,7 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure)
>              if (fd >= xf86SigIOMaxFd)
>                  xf86SigIOMaxFd = fd + 1;
>              FD_SET(fd, &xf86SigIOMask);
> -            xf86ReleaseSIGIO();
> +            release_sigio();
>              return 1;
>          }
>          /* Allow overwriting of the closure and callback */
> -- 
> 2.8.1
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel
> 


More information about the xorg-devel mailing list