diff options
Diffstat (limited to 'src/signal')
-rw-r--r-- | src/signal/sigandset.c | 17 | ||||
-rw-r--r-- | src/signal/sigorset.c | 17 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/signal/sigandset.c b/src/signal/sigandset.c new file mode 100644 index 00000000..f62c7fec --- /dev/null +++ b/src/signal/sigandset.c @@ -0,0 +1,17 @@ +#define _GNU_SOURCE +#include <signal.h> +#include <errno.h> + +#define SST_SIZE (sizeof(sigset_t) / sizeof(long)) + +int sigandset(sigset_t *dest, sigset_t *left, sigset_t *right) +{ + if(!dest || !left || !right) { + errno = EINVAL; + return -1; + } + unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right; + for(; i < SST_SIZE; i++) d[i] = l[i] & r[i]; + return 0; +} + diff --git a/src/signal/sigorset.c b/src/signal/sigorset.c new file mode 100644 index 00000000..232075b1 --- /dev/null +++ b/src/signal/sigorset.c @@ -0,0 +1,17 @@ +#define _GNU_SOURCE +#include <signal.h> +#include <errno.h> + +#define SST_SIZE (sizeof(sigset_t) / sizeof(long)) + +int sigorset(sigset_t *dest, sigset_t *left, sigset_t *right) +{ + if(!dest || !left || !right) { + errno = EINVAL; + return -1; + } + unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right; + for(; i < SST_SIZE; i++) d[i] = l[i] | r[i]; + return 0; +} + |