blob: 5e657a6ead1b8524143e01690115ea6db0ab5bde (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#define __ASSEMBLY__
#include <asm-generic/signal.h> // for SIGRTMIN
#undef __ASSEMBLY__
#include <errno.h> // for errno
#include <libc.h> // for unlikely
#include <stddef.h> // for NULL
typedef __UINT64_TYPE__ sigset_t;
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;
}
|