pselect: Use pthread_sigmask, not sigprocmask.
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 6 Jul 2011 07:05:40 +0000 (00:05 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 6 Jul 2011 07:44:21 +0000 (00:44 -0700)
* lib/pselect.c (pselect): Use pthread_sigmask, as it supports
multithreaded apps better than sigprocmask does.
* modules/pselect (Depends-on): Depend on pthread_sigmask, not
sigprocmask directly.

ChangeLog
lib/pselect.c
modules/pselect

index ba7d0e4..bea73df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-07-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       pselect: Use pthread_sigmask, not sigprocmask.
+       * lib/pselect.c (pselect): Use pthread_sigmask, as it supports
+       multithreaded apps better than sigprocmask does.
+       * modules/pselect (Depends-on): Depend on pthread_sigmask, not
+       sigprocmask directly.
+
 2011-07-05  Paul Eggert  <eggert@cs.ucla.edu>
 
        * lib/pselect.c (pselect): Use plain name, without "rpl_".
index 6b9ba22..5b709a2 100644 (file)
@@ -62,14 +62,14 @@ pselect (int nfds, fd_set *restrict rfds,
   /* Signal mask munging should be atomic, but this is the best we can
      do in this emulation.  */
   if (sigmask)
-    sigprocmask (SIG_SETMASK, sigmask, &origmask);
+    pthread_sigmask (SIG_SETMASK, sigmask, &origmask);
 
   select_result = select (nfds, rfds, wfds, xfds, tvp);
 
   if (sigmask)
     {
       int select_errno = errno;
-      sigprocmask (SIG_SETMASK, &origmask, NULL);
+      pthread_sigmask (SIG_SETMASK, &origmask, NULL);
       errno = select_errno;
     }
 
index 0ed5d8b..73c1e9f 100644 (file)
@@ -7,6 +7,7 @@ m4/pselect.m4
 
 Depends-on:
 sys_select
+pthread_sigmask [test $HAVE_PSELECT = 0 || test $REPLACE_PSELECT = 1]
 select          [test $HAVE_PSELECT = 0 || test $REPLACE_PSELECT = 1]
 
 configure.ac: