about summary refs log tree commit homepage
path: root/sig.c
diff options
context:
space:
mode:
Diffstat (limited to 'sig.c')
-rw-r--r--sig.c22
1 files changed, 4 insertions, 18 deletions
diff --git a/sig.c b/sig.c
index cfbffc2..7e1c200 100644
--- a/sig.c
+++ b/sig.c
@@ -27,27 +27,14 @@ void mog_intr_enable(void)
         CHECK(int, 0, pthread_sigmask(SIG_SETMASK, &mog_emptyset, NULL));
 }
 
-/*
- * favor ppoll if available since this is our only pselect user and
- * would increase the size of the executable
- */
-#ifdef HAVE_PPOLL
-static int sleeper(struct timespec *tsp, const sigset_t *sigmask)
-{
-        int err = 0;
-
-        if (ppoll(NULL, 0, tsp, sigmask) < 0) {
-                err = errno;
-                assert((err == EINTR || err == ENOMEM) &&
-                       "BUG in ppoll usage");
-        }
-        return err;
-}
-#else /* PSELECT */
 static int sleeper(struct timespec *tsp, const sigset_t *sigmask)
 {
         int err = 0;
 
+        /*
+         * pselect is a cancellation point,
+         * ppoll is not POSIX and is only a cancellation point on glibc.
+         */
         if (pselect(0, NULL, NULL, NULL, tsp, sigmask) < 0) {
                 err = errno;
                 assert((err == EINTR || err == ENOMEM) &&
@@ -55,7 +42,6 @@ static int sleeper(struct timespec *tsp, const sigset_t *sigmask)
         }
         return err;
 }
-#endif /* PSELECT */
 
 /* thread-safe, interruptible sleep, negative seconds -> sleep forever */
 int mog_sleep(long seconds)