summaryrefslogtreecommitdiff
path: root/lib/libc/signal/sigismember.c
blob: 0b73e6ee82795d26aa9e9bbeb7943da1ebaf8390 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <asm-generic/signal.h> // for _NSIG

typedef __UINT64_TYPE__ __sigset_t;

#define __sigmask(sig) (((__sigset_t)1) << ((sig) - 1))
#define __sigismember(set, sig)                     \
	(__extension__({                            \
		__sigset_t __mask = __sigmask(sig); \
		*(set) & __mask ? 1 : 0;            \
	}))

int sigismember(const __sigset_t *set, int signo)
{
	if (signo < 1 || signo > _NSIG)
		return -1;

	return __sigismember((const __sigset_t *)set, signo);
}