summaryrefslogtreecommitdiff
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
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;
}