1/*
2 * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Copyright 2004-2006, Axel Dörfler, axeld@pinc-software.de.
4 * All rights reserved.
5 * Distributed under the terms of the MIT License.
6 */
7
8
9#include <signal.h>
10
11#include <errno.h>
12
13#include <syscall_utils.h>
14
15#include <symbol_versioning.h>
16#include <syscalls.h>
17
18#include <errno_private.h>
19#include <signal_private.h>
20
21
22int
23__sigprocmask_beos(int how, const sigset_t_beos* beosSet,
24	sigset_t_beos* beosOldSet)
25{
26	RETURN_AND_SET_ERRNO(__pthread_sigmask_beos(how, beosSet, beosOldSet));
27}
28
29
30int
31__pthread_sigmask_beos(int how, const sigset_t_beos* beosSet,
32	sigset_t_beos* beosOldSet)
33{
34	// convert new signal set
35	sigset_t set;
36	if (beosSet != NULL)
37		set = from_beos_sigset(*beosSet);
38
39	// set the mask
40	sigset_t oldSet;
41	status_t error = _kern_set_signal_mask(how, beosSet != NULL ? &set : NULL,
42		beosOldSet != NULL ? &oldSet : NULL);
43	if (error != B_OK)
44		return error;
45
46	// convert old signal set back
47	if (beosOldSet != NULL)
48		*beosOldSet = to_beos_sigset(oldSet);
49
50	return 0;
51}
52
53
54int
55__sigprocmask(int how, const sigset_t* set, sigset_t* oldSet)
56{
57	RETURN_AND_SET_ERRNO(_kern_set_signal_mask(how, set, oldSet));
58}
59
60
61int
62__pthread_sigmask(int how, const sigset_t* set, sigset_t* oldSet)
63{
64	return _kern_set_signal_mask(how, set, oldSet);
65}
66
67
68DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__sigprocmask_beos",
69	"sigprocmask@", "BASE");
70DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__pthread_sigmask_beos",
71	"pthread_sigmask@", "BASE");
72
73DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__sigprocmask", "sigprocmask@@",
74	"1_ALPHA4");
75DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__pthread_sigmask", "pthread_sigmask@@",
76	"1_ALPHA4");
77