summaryrefslogtreecommitdiff
path: root/lib/libc/signal/sigprocmask.c
blob: c4a3cdb0c7d1f72d1ab57d6c243e718da60c729a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


#include <signal.h>  // for sigset_t, sigprocmask
#include <syscall.h> // for __syscall_4, syscall

int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset)
{
	long ret;
	sigset_t oldset = { 0 };

	ret = syscall(rt_sigprocmask, how, set, &oldset, sizeof(sigset_t));

	if (ret < 0)
		return -1;

	if (oset)
		*oset = oldset;
	return 0;
}