@@ -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)
{
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.Stojanovic@rt-rk.com> --- linux-user/signal.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)