blob: 1b83e1fe2780bebd7ecf9f87fff2e32e4b73dfa7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <errno.h>
#include <asm-generic/signal.h>
#include <libc.h>
int sigdelset(sigset_t *, int);
int sigismember(const sigset_t *, int);
int sigprocmask(int, const sigset_t *restrict, sigset_t *restrict);
int pthread_sigmask(int how, const sigset_t *restrict set,
sigset_t *restrict oset)
{
sigset_t lset;
if (set != NULL && (unlikely(sigismember(set, SIGRTMIN)) ||
unlikely(sigismember(set, SIGRTMIN + 1)))) {
lset = *set;
sigdelset(&lset, SIGRTMIN);
sigdelset(&lset, SIGRTMIN + 1);
set = &lset;
}
return sigprocmask(how, set, oset) == -1 ? errno : 0;
}
|