about summary refs log tree commit diff
path: root/src/signal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-04-14 12:51:00 -0400
committerRich Felker <dalias@aerifal.cx>2011-04-14 12:51:00 -0400
commit016a5dc1925a66c7d1ffc14b862b1342f399cfda (patch)
tree3cc1d5e0d087272723a867f8185e49f1f988c721 /src/signal
parent9beb6330c08839e8bb2ebcd129c97c395d9d327e (diff)
downloadmusl-016a5dc1925a66c7d1ffc14b862b1342f399cfda.tar.gz
musl-016a5dc1925a66c7d1ffc14b862b1342f399cfda.tar.xz
musl-016a5dc1925a66c7d1ffc14b862b1342f399cfda.zip
use a separate signal from SIGCANCEL for SIGEV_THREAD timers
otherwise we cannot support an application's desire to use
asynchronous cancellation within the callback function. this change
also slightly debloats pthread_create.c.
Diffstat (limited to 'src/signal')
-rw-r--r--src/signal/sigaction.c2
-rw-r--r--src/signal/sigprocmask.c1
-rw-r--r--src/signal/sigrtmin.c2
3 files changed, 3 insertions, 2 deletions
diff --git a/src/signal/sigaction.c b/src/signal/sigaction.c
index 3d374e1f..887bbc4f 100644
--- a/src/signal/sigaction.c
+++ b/src/signal/sigaction.c
@@ -35,7 +35,7 @@ int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old)
 
 int __sigaction(int sig, const struct sigaction *sa, struct sigaction *old)
 {
-	if (sig == SIGCANCEL || sig == SIGSYSCALL) {
+	if (sig-SIGCANCEL < 3U) {
 		errno = EINVAL;
 		return -1;
 	}
diff --git a/src/signal/sigprocmask.c b/src/signal/sigprocmask.c
index 66b17a42..a272c10d 100644
--- a/src/signal/sigprocmask.c
+++ b/src/signal/sigprocmask.c
@@ -22,6 +22,7 @@ int __sigprocmask(int how, const sigset_t *set, sigset_t *old)
 		set = &tmp;
 		sigdelset(&tmp, SIGCANCEL);
 		sigdelset(&tmp, SIGSYSCALL);
+		sigdelset(&tmp, SIGTIMER);
 	}
 	return __libc_sigprocmask(how, set, old);
 }
diff --git a/src/signal/sigrtmin.c b/src/signal/sigrtmin.c
index 7ad06d22..d0e769bb 100644
--- a/src/signal/sigrtmin.c
+++ b/src/signal/sigrtmin.c
@@ -1,4 +1,4 @@
 int __libc_current_sigrtmin()
 {
-	return 34;
+	return 35;
 }