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

Keith Packard keithp at keithp.com
Mon May 30 02:17:53 UTC 2016


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>
---
 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



More information about the xorg-devel mailing list