xref: /haiku/src/system/libroot/posix/signal/sigpause.cpp (revision 24df65921befcd0ad0c5c7866118f922da61cb96)
1 /*
2  * Copyright 2008, Vasilis Kaoutsis, kaoutsis@sch.gr
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include <signal.h>
8 
9 #include <symbol_versioning.h>
10 
11 #include <signal_private.h>
12 
13 
14 int
__sigpause_beos(int signal)15 __sigpause_beos(int signal)
16 {
17 	sigset_t_beos processSignalSet;
18 	if (__pthread_sigmask_beos(SIG_SETMASK, NULL, &processSignalSet) == -1)
19 		return -1;
20 
21 	if (__sigdelset_beos(&processSignalSet, signal) == -1)
22 		return -1;
23 
24 	return __sigsuspend_beos(&processSignalSet);
25 }
26 
27 
28 int
__sigpause(int signal)29 __sigpause(int signal)
30 {
31 	sigset_t processSignalSet;
32 	if (sigprocmask(SIG_SETMASK, NULL, &processSignalSet) == -1)
33 		return -1;
34 
35 	if (sigdelset(&processSignalSet, signal) == -1)
36 		return -1;
37 
38 	return sigsuspend(&processSignalSet);
39 }
40 
41 
42 DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__sigpause_beos", "sigpause@", "BASE");
43 
44 DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__sigpause", "sigpause@@", "1_ALPHA4");
45