Add two inline functions that work with the signal set of the target. target_sigdelset() removes a signal from target_sigset_t. target_sigorset() creates a union of two target_sigset_t.
These functions will be used for introducing support for tracking the target signal set. Functions for emptying and adding into a target signal set already exist so this commit will serve as a supplement. Signed-off-by: Miloš Stojanović <milos.stojano...@rt-rk.com> --- linux-user/signal.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/linux-user/signal.c b/linux-user/signal.c index 2bc6669..59d70ec 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -120,6 +120,12 @@ static inline void target_sigaddset(target_sigset_t *set, int signum) set->sig[signum / TARGET_NSIG_BPW] |= mask; } +static inline void target_sigdelset(target_sigset_t *set, int signum) +{ + abi_ulong mask = (abi_ulong)1 << (--signum % TARGET_NSIG_BPW); + set->sig[signum / TARGET_NSIG_BPW] &= ~mask; +} + static inline int target_sigismember(const target_sigset_t *set, int signum) { signum--; @@ -127,6 +133,16 @@ static inline int target_sigismember(const target_sigset_t *set, int signum) return ((set->sig[signum / TARGET_NSIG_BPW] & mask) != 0); } +static inline void target_sigorset(target_sigset_t *set, + const target_sigset_t *left, + const target_sigset_t *right) +{ + int i; + for (i = 0; i < TARGET_NSIG_WORDS; i++) { + set->sig[i] = left->sig[i] | right->sig[i]; + } +} + static void host_to_target_sigset_internal(target_sigset_t *d, const sigset_t *s) { -- 1.9.1