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) ; +} +