| Index: fusl/src/thread/pthread_sigmask.c
|
| diff --git a/fusl/src/thread/pthread_sigmask.c b/fusl/src/thread/pthread_sigmask.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..88c333f6b682b0c3db71fc35b5e7ed69636272a4
|
| --- /dev/null
|
| +++ b/fusl/src/thread/pthread_sigmask.c
|
| @@ -0,0 +1,19 @@
|
| +#include <signal.h>
|
| +#include <errno.h>
|
| +#include "syscall.h"
|
| +
|
| +int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict old)
|
| +{
|
| + int ret;
|
| + if ((unsigned)how - SIG_BLOCK > 2U) return EINVAL;
|
| + ret = -__syscall(SYS_rt_sigprocmask, how, set, old, _NSIG/8);
|
| + if (!ret && old) {
|
| + if (sizeof old->__bits[0] == 8) {
|
| + old->__bits[0] &= ~0x380000000ULL;
|
| + } else {
|
| + old->__bits[0] &= ~0x80000000UL;
|
| + old->__bits[1] &= ~0x3UL;
|
| + }
|
| + }
|
| + return ret;
|
| +}
|
|
|