From e5ee1dad6ab3bffbd5525addb276077580c2a027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 2 Sep 2005 11:53:43 +0000 Subject: [PATCH] added sigaddset, sigismember, sigdelset to libroot.so from inline versions in signal.h moved static inline to extern inline to allow this change please someone review this (ie are they platform dependent functions ?) should fix bug #47 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14103 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/posix/signal.h | 12 ++++++------ src/system/libroot/posix/signal/sigset.c | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/headers/posix/signal.h b/headers/posix/signal.h index a456af39a9..d332f3a136 100644 --- a/headers/posix/signal.h +++ b/headers/posix/signal.h @@ -143,30 +143,30 @@ int sigsuspend(const sigset_t *mask); int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); -static int sigaddset(sigset_t *set, int signo); -static int sigdelset(sigset_t *set, int signo); -static int sigismember(const sigset_t *set, int signo); +int sigaddset(sigset_t *set, int signo); +int sigdelset(sigset_t *set, int signo); +int sigismember(const sigset_t *set, int signo); const char *strsignal(int sig); const void set_signal_stack(void *ptr, size_t size); int sigaltstack(const stack_t *ss, stack_t *oss); /* XXXdbg */ -static inline int +extern inline int sigismember(const sigset_t *set, int sig) { sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; return (*set & mask) ? 1 : 0 ; } -static inline int +extern inline int sigaddset(sigset_t *set, int sig) { sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; return ((*set |= mask), 0) ; } -static inline int +extern inline int sigdelset(sigset_t *set, int sig) { sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; diff --git a/src/system/libroot/posix/signal/sigset.c b/src/system/libroot/posix/signal/sigset.c index 750e6ca1ee..2e87cbded1 100644 --- a/src/system/libroot/posix/signal/sigset.c +++ b/src/system/libroot/posix/signal/sigset.c @@ -38,3 +38,27 @@ sigfillset(sigset_t *set) return 0; } + +int +sigismember(const sigset_t *set, int sig) +{ + sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; + return (*set & mask) ? 1 : 0 ; +} + + +int +sigaddset(sigset_t *set, int sig) +{ + sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; + return ((*set |= mask), 0) ; +} + + +int +sigdelset(sigset_t *set, int sig) +{ + sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; + return ((*set &= ~mask), 0) ; +} +