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.
This commit is contained in:
Rich Felker
2011-04-14 12:51:00 -04:00
parent 9beb6330c0
commit 016a5dc192
6 changed files with 29 additions and 11 deletions

View File

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

View File

@ -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);
}

View File

@ -1,4 +1,4 @@
int __libc_current_sigrtmin()
{
return 34;
return 35;
}