From 1700ce3993628d025bf3bdc2b11f9eebe6575396 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 6 Jul 2011 00:05:40 -0700 Subject: [PATCH] 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. --- ChangeLog | 8 ++++++++ lib/pselect.c | 4 ++-- modules/pselect | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ba7d0e4f3..bea73df84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2011-07-06 Paul Eggert + + 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 * lib/pselect.c (pselect): Use plain name, without "rpl_". diff --git a/lib/pselect.c b/lib/pselect.c index 6b9ba22ad..5b709a299 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 0ed5d8b63..73c1e9f58 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: -- 2.11.0