This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 3/7] Fix return code for __libc_signal_* functions
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Tue, 10 Dec 2019 15:32:17 -0300
- Subject: [PATCH 3/7] Fix return code for __libc_signal_* functions
- References: <20191210183221.26912-1-adhemerval.zanella@linaro.org>
since the function should not fail if input argument is NULL. Also,
for Linux the return value is not fully correct on some platforms due
the missing usage of INTERNAL_SYSCALL_ERROR_P / INTERNAL_SYSCALL_ERRNO
macros.
Checked on x86_64-linux-gnu, i686-linux-gnu, and sparc64-linux-gnu.
---
sysdeps/generic/internal-signals.h | 12 ++++++------
sysdeps/unix/sysv/linux/internal-signals.h | 18 +++++++++---------
2 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/sysdeps/generic/internal-signals.h b/sysdeps/generic/internal-signals.h
index a515e3e649..41c24dc4b3 100644
--- a/sysdeps/generic/internal-signals.h
+++ b/sysdeps/generic/internal-signals.h
@@ -34,28 +34,28 @@ __clear_internal_signals (sigset_t *set)
{
}
-static inline int
+static inline void
__libc_signal_block_all (sigset_t *set)
{
sigset_t allset;
__sigfillset (&allset);
- return __sigprocmask (SIG_BLOCK, &allset, set);
+ __sigprocmask (SIG_BLOCK, &allset, set);
}
-static inline int
+static inline void
__libc_signal_block_app (sigset_t *set)
{
sigset_t allset;
__sigfillset (&allset);
__clear_internal_signals (&allset);
- return __sigprocmask (SIG_BLOCK, &allset, set);
+ __sigprocmask (SIG_BLOCK, &allset, set);
}
/* Restore current process signal mask. */
-static inline int
+static inline void
__libc_signal_restore_set (const sigset_t *set)
{
- return __sigprocmask (SIG_SETMASK, set, NULL);
+ __sigprocmask (SIG_SETMASK, set, NULL);
}
diff --git a/sysdeps/unix/sysv/linux/internal-signals.h b/sysdeps/unix/sysv/linux/internal-signals.h
index 4b70109c14..04e1ec4f0a 100644
--- a/sysdeps/unix/sysv/linux/internal-signals.h
+++ b/sysdeps/unix/sysv/linux/internal-signals.h
@@ -71,30 +71,30 @@ static const sigset_t sigapp_set = {
};
/* Block all signals, including internal glibc ones. */
-static inline int
+static inline void
__libc_signal_block_all (sigset_t *set)
{
INTERNAL_SYSCALL_DECL (err);
- return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_BLOCK, &sigall_set,
- set, _NSIG / 8);
+ INTERNAL_SYSCALL_CALL (rt_sigprocmask, err, SIG_BLOCK, &sigall_set, set,
+ _NSIG / 8);
}
/* Block all application signals (excluding internal glibc ones). */
-static inline int
+static inline void
__libc_signal_block_app (sigset_t *set)
{
INTERNAL_SYSCALL_DECL (err);
- return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_BLOCK, &sigapp_set,
- set, _NSIG / 8);
+ INTERNAL_SYSCALL_CALL (rt_sigprocmask, err, SIG_BLOCK, &sigapp_set, set,
+ _NSIG / 8);
}
/* Restore current process signal mask. */
-static inline int
+static inline void
__libc_signal_restore_set (const sigset_t *set)
{
INTERNAL_SYSCALL_DECL (err);
- return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, set, NULL,
- _NSIG / 8);
+ INTERNAL_SYSCALL_CALL (rt_sigprocmask, err, SIG_SETMASK, set, NULL,
+ _NSIG / 8);
}
/* Used to communicate with signal handler. */
--
2.17.1