diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-03-11 15:21:59 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-04-21 15:10:07 -0300 |
commit | 2f6fa80147f0cf74c0d411a0e07c5655deb436b3 (patch) | |
tree | b080b4403905e80808140ecae77bc250654a7fc0 /sysdeps/unix/sysv/linux/sigprocmask.c | |
parent | 34d49f120df2787788acfdf86769277a1a7ebccb (diff) | |
download | glibc-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.c | 20 |
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) |