trawick 01/11/29 08:25:10
Modified: threadproc/unix signals.c
Log:
re-implement an AIX-specific workaround for a sigwait() bug to
work with 32-bit or 64-bit builds
Revision Changes Path
1.38 +17 -2 apr/threadproc/unix/signals.c
Index: signals.c
===================================================================
RCS file: /home/cvs/apr/threadproc/unix/signals.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- signals.c 2001/11/16 12:14:09 1.37
+++ signals.c 2001/11/29 16:25:10 1.38
@@ -334,10 +334,25 @@
* order bit of the second word of flags is turned on. sigdelset()
* returns an error when trying to turn this off, so we'll turn it
* off manually.
+ *
+ * Note that the private fields differ between 32-bit and 64-bit
+ * and even between _ALL_SOURCE and !_ALL_SOURCE.
*/
-#ifdef _AIX
- sig_mask.hisigs &= 0x7FFFFFFF;
+#if defined(_AIX)
+#ifdef __64BIT__
+#ifdef _ALL_SOURCE
+ sig_mask.ss_set[3] &= 0x7FFFFFFF;
+#else /* not _ALL_SOURCE */
+ sig_mask.__ss_set[3] &= 0x7FFFFFFF;
#endif
+#else /* not 64-bit build */
+#ifdef _ALL_SOURCE
+ sig_mask.hisigs &= 0x7FFFFFFF;
+#else /* not _ALL_SOURCE */
+ sig_mask.__hisigs &= 0x7FFFFFFF;
+#endif
+#endif
+#endif /* _AIX */
while (1) {
#if APR_HAVE_SIGWAIT