From 9185f86d8ffb37defdbea6ef616338106de6c2c8 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Wed, 4 Apr 2018 12:37:23 -0400 Subject: Make sysdeps/generic/internal-signals.h less stubby. Three of the functions defined by internal-signals.h were not actually fulfilling their contracts when the sysdeps/generic version of that file was used. Also, the Linux version included several more headers than the generic version, which is the root cause of a build failure on Hurd (already addressed in another way, but I think it is proper to make the headers match). * sysdeps/generic/internal-signals.h: Include signal.h, sigsetops.h, and stdbool.h. (__libc_signal_block_all): Actually block all signals. (__libc_signal_block_app): Likewise. (__libc_signal_restore_set): Actually restore the signal mask. --- sysdeps/generic/internal-signals.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/generic/internal-signals.h b/sysdeps/generic/internal-signals.h index 17ed48c5bf..5282cffce0 100644 --- a/sysdeps/generic/internal-signals.h +++ b/sysdeps/generic/internal-signals.h @@ -19,6 +19,10 @@ #ifndef __INTERNAL_SIGNALS_H # define __INTERNAL_SIGNALS_H +#include +#include +#include + static inline bool __is_internal_signal (int sig) { @@ -33,20 +37,25 @@ __clear_internal_signals (sigset_t *set) static inline int __libc_signal_block_all (sigset_t *set) { - return 0; + sigset_t allset; + __sigfillset (&allset); + return __sigprocmask (SIG_BLOCK, &allset, set); } static inline int __libc_signal_block_app (sigset_t *set) { - return 0; + sigset_t allset; + __sigfillset (&allset); + __clear_internal_signals (&allset); + return __sigprocmask (SIG_BLOCK, &allset, set); } /* Restore current process signal mask. */ static inline int __libc_signal_restore_set (const sigset_t *set) { - return 0; + return __sigprocmask (SIG_SETMASK, set, NULL); } -- cgit v1.2.3