2 * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
5 #ifndef _LIBROOT_SIGNAL_PRIVATE_H
6 #define _LIBROOT_SIGNAL_PRIVATE_H
10 #include <sys/cdefs.h>
12 #include <signal_defs.h>
15 #define MAX_SIGNAL_NUMBER_BEOS 29
18 typedef __haiku_int32 sigset_t_beos
;
20 struct sigaction_beos
{
21 __sighandler_t sa_handler
;
22 sigset_t_beos sa_mask
;
28 static inline sigset_t_beos
29 to_beos_sigset(sigset_t set
)
31 // restrict to BeOS signals
32 sigset_t_beos beosSet
= (sigset_t_beos
)(set
33 & SIGNAL_RANGE_TO_MASK(1, MAX_SIGNAL_NUMBER_BEOS
));
35 // if SIGBUS is set, set SIGSEGV, since they have the same number in BeOS
36 if ((set
& SIGNAL_TO_MASK(SIGBUS
)) != 0)
37 beosSet
|= SIGNAL_TO_MASK(SIGSEGV
);
43 static inline sigset_t
44 from_beos_sigset(sigset_t_beos beosSet
)
46 sigset_t set
= beosSet
;
48 // if SIGSEGV is set, set SIGBUS, since they have the same number in BeOS
49 if ((set
& SIGNAL_TO_MASK(SIGSEGV
)) != 0)
50 set
|= SIGNAL_TO_MASK(SIGBUS
);
59 __sighandler_t
__signal_beos(int signal
, __sighandler_t signalHandler
);
60 __sighandler_t
__signal(int signal
, __sighandler_t signalHandler
);
62 int __sigaction_beos(int signal
, const struct sigaction_beos
* beosAction
,
63 struct sigaction_beos
* beosOldAction
);
64 int __sigaction(int signal
, const struct sigaction
* action
,
65 struct sigaction
* oldAction
);
67 __sighandler_t
__sigset_beos(int signal
, __sighandler_t signalHandler
);
68 __sighandler_t
__sigset(int signal
, __sighandler_t signalHandler
);
70 int __sigignore_beos(int signal
);
71 int __sigignore(int signal
);
73 int __sighold_beos(int signal
);
74 int __sighold(int signal
);
76 int __sigrelse_beos(int signal
);
77 int __sigrelse(int signal
);
79 int __sigpause_beos(int signal
);
80 int __sigpause(int signal
);
82 int __siginterrupt_beos(int signal
, int flag
);
83 int __siginterrupt(int signal
, int flag
);
85 int __pthread_sigmask_beos(int how
, const sigset_t_beos
* beosSet
,
86 sigset_t_beos
* beosOldSet
);
87 int __sigprocmask_beos(int how
, const sigset_t_beos
* beosSet
,
88 sigset_t_beos
* beosOldSet
);
90 int __pthread_sigmask(int how
, const sigset_t
* set
, sigset_t
* oldSet
);
91 int __sigprocmask(int how
, const sigset_t
* set
, sigset_t
* oldSet
);
93 int __sigpending_beos(sigset_t_beos
* beosSet
);
94 int __sigpending(sigset_t
* set
);
96 int __sigsuspend_beos(const sigset_t_beos
* beosMask
);
97 int __sigsuspend(const sigset_t
* mask
);
99 int __sigwait_beos(const sigset_t_beos
* beosSet
, int* _signal
);
100 int __sigwait(const sigset_t
* set
, int* _signal
);
102 int __sigemptyset_beos(sigset_t_beos
* set
);
103 int __sigfillset_beos(sigset_t_beos
* set
);
104 int __sigismember_beos(const sigset_t_beos
* set
, int signal
);
105 int __sigaddset_beos(sigset_t_beos
* set
, int signal
);
106 int __sigdelset_beos(sigset_t_beos
* set
, int signal
);
108 int __sigemptyset(sigset_t
* set
);
109 int __sigfillset(sigset_t
* set
);
110 int __sigismember(const sigset_t
* set
, int signal
);
111 int __sigaddset(sigset_t
* set
, int signal
);
112 int __sigdelset(sigset_t
* set
, int signal
);
118 #endif // _LIBROOT_SIGNAL_PRIVATE_H