* 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       |    8 ++++++++
 lib/pselect.c   |    4 ++--
 modules/pselect |    1 +
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ba7d0e4..bea73df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-07-06  Paul Eggert  <egg...@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  <egg...@cs.ucla.edu>
 
        * lib/pselect.c (pselect): Use plain name, without "rpl_".
diff --git a/lib/pselect.c b/lib/pselect.c
index 6b9ba22..5b709a2 100644
--- a/lib/pselect.c
+++ b/lib/pselect.c
@@ -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;
     }
 
diff --git a/modules/pselect b/modules/pselect
index 0ed5d8b..73c1e9f 100644
--- a/modules/pselect
+++ b/modules/pselect
@@ -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:
-- 
1.7.4.4

Reply via email to