]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-31904: Support signal module on VxWorks (GH-23391)
authorpxinwr <peixing.xin@windriver.com>
Mon, 30 Nov 2020 21:48:33 +0000 (05:48 +0800)
committerGitHub <noreply@github.com>
Mon, 30 Nov 2020 21:48:33 +0000 (22:48 +0100)
Lib/test/test_signal.py
Misc/NEWS.d/next/Library/2020-11-19-16-14-36.bpo-31904.83kf9d.rst [new file with mode: 0644]
Modules/signalmodule.c

index 5a8ff361f9656ba7aada1314a800481fdd1c6b34..6a43fe70372c55aebea14d1ba091e8e4517440ab 100644 (file)
@@ -519,10 +519,14 @@ class WakeupSocketSignalTests(unittest.TestCase):
         else:
             write.setblocking(False)
 
-        # Start with large chunk size to reduce the
-        # number of send needed to fill the buffer.
         written = 0
-        for chunk_size in (2 ** 16, 2 ** 8, 1):
+        if sys.platform == "vxworks":
+            CHUNK_SIZES = (1,)
+        else:
+            # Start with large chunk size to reduce the
+            # number of send needed to fill the buffer.
+            CHUNK_SIZES = (2 ** 16, 2 ** 8, 1)
+        for chunk_size in CHUNK_SIZES:
             chunk = b"x" * chunk_size
             try:
                 while True:
@@ -595,6 +599,7 @@ class WakeupSocketSignalTests(unittest.TestCase):
 
 
 @unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
+@unittest.skipUnless(hasattr(signal, 'siginterrupt'), "needs signal.siginterrupt()")
 class SiginterruptTest(unittest.TestCase):
 
     def readpipe_interrupted(self, interrupt):
@@ -680,6 +685,8 @@ class SiginterruptTest(unittest.TestCase):
 
 
 @unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
+@unittest.skipUnless(hasattr(signal, 'getitimer') and hasattr(signal, 'setitimer'),
+                         "needs signal.getitimer() and signal.setitimer()")
 class ItimerTest(unittest.TestCase):
     def setUp(self):
         self.hndl_called = False
diff --git a/Misc/NEWS.d/next/Library/2020-11-19-16-14-36.bpo-31904.83kf9d.rst b/Misc/NEWS.d/next/Library/2020-11-19-16-14-36.bpo-31904.83kf9d.rst
new file mode 100644 (file)
index 0000000..e0ea23a
--- /dev/null
@@ -0,0 +1 @@
+Support signal module on VxWorks.
index fcc8f1cbda227ed0ab92a4d0b80f982809becf36..7ac797a3aa3f872680dfe8e82a1b39aad6ea6714 100644 (file)
@@ -120,7 +120,11 @@ static volatile struct {
 #else
 #define INVALID_FD (-1)
 static volatile struct {
+#ifdef __VXWORKS__
+    int fd;
+#else
     sig_atomic_t fd;
+#endif
     int warn_on_full_buffer;
 } wakeup = {.fd = INVALID_FD, .warn_on_full_buffer = 1};
 #endif