aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sigprocmask.c
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-03-11 15:21:59 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-04-21 15:10:07 -0300
commit2f6fa80147f0cf74c0d411a0e07c5655deb436b3 (patch)
treeb080b4403905e80808140ecae77bc250654a7fc0 /sysdeps/unix/sysv/linux/sigprocmask.c
parent34d49f120df2787788acfdf86769277a1a7ebccb (diff)
downloadglibc-2f6fa80147f0cf74c0d411a0e07c5655deb436b3.tar
glibc-2f6fa80147f0cf74c0d411a0e07c5655deb436b3.tar.gz
glibc-2f6fa80147f0cf74c0d411a0e07c5655deb436b3.tar.bz2
glibc-2f6fa80147f0cf74c0d411a0e07c5655deb436b3.zip
linux: Use pthread_sigmask on sigprocmask
With pthread_sigmask on libc.so, it allows implement sigprocmask on top of pthread_sigmask. Checked on x86_64-linux-gnu.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sigprocmask.c')
-rw-r--r--sysdeps/unix/sysv/linux/sigprocmask.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c
index eb9e4d5e83..59bf6fd660 100644
--- a/sysdeps/unix/sysv/linux/sigprocmask.c
+++ b/sysdeps/unix/sysv/linux/sigprocmask.c
@@ -22,21 +22,11 @@
int
__sigprocmask (int how, const sigset_t *set, sigset_t *oset)
{
- sigset_t local_newmask;
-
- /* The only thing we have to make sure here is that SIGCANCEL and
- SIGSETXID are not blocked. */
- if (set != NULL
- && __glibc_unlikely (__sigismember (set, SIGCANCEL)
- || __glibc_unlikely (__sigismember (set, SIGSETXID))))
- {
- local_newmask = *set;
- __sigdelset (&local_newmask, SIGCANCEL);
- __sigdelset (&local_newmask, SIGSETXID);
- set = &local_newmask;
- }
-
- return INLINE_SYSCALL_CALL (rt_sigprocmask, how, set, oset, _NSIG / 8);
+ int result = __pthread_sigmask (how, set, oset);
+ if (result == 0)
+ return 0;
+ __set_errno (result);
+ return -1;
}
libc_hidden_def (__sigprocmask)
weak_alias (__sigprocmask, sigprocmask)