23 #ifndef __UT_Signal_h__
24 #define __UT_Signal_h__
43 #define SIGTRAP 5 // Unhandled
44 #define SIGEMT 7 // Unhandled
46 #define SIGKILL 9 // Unhandled
47 #define SIGBUS 10 // Unhandled
49 #define SIGSYS 12 // Unhandled
51 #define SIGALRM 14 // Unhandled
53 #define SIGUSR1 16 // Windows: IOINT?
54 #define SIGUSR2 17 // Windows: STOP?
57 #define SIGCLD 18 // Unhandled
59 #define SIGCHLD 18 // Unhandled
60 #define SIGPWR 19 // Unhandled
61 #define SIGWINCH 20 // Unhandled
67 #define SIGSTOP 23 // Unhandled
68 #define SIGTSTP 24 // Unhandled
69 #define SIGCONT 25 // Unhandled
70 #define SIGTTIN 26 // Unhandled
71 #define SIGTTOU 27 // Unhandled
72 #define SIGVTALRM 28 // Unhandled
73 #define SIGPROF 29 // Unhandled
74 #define SIGXCPU 30 // Unhandled
75 #define SIGXFSZ 31 // Unhandled
76 #define SIG32 32 // Unhandled
79 #define SIGPOLL 65 // Unhandled
81 #define sigset(a,b) signal(a,b)
85 #if defined(SIGUNUSED)
86 #define SIGEMT SIGUNUSED
93 #if defined(SIGUNUSED)
94 #define SIGSYS SIGUNUSED
102 #define UT_MAX_SIGNALS 64 // Allow for POSIX standard
104 #if defined(LINUX) || defined(MBSD)
105 #define SUPPORTS_SIGINFO
112 : mySignalNum(signal_num),
113 myOpaqueCPUContext(0),
114 myDepthFromSignalHandler(0)
122 : mySignalNum(sig_arg.mySignalNum),
123 #ifdef SUPPORTS_SIGINFO
124 mySignalInfo(sig_arg.mySignalInfo),
126 myOpaqueCPUContext(sig_arg.myOpaqueCPUContext),
127 myDepthFromSignalHandler(sig_arg.myDepthFromSignalHandler + 1)
132 #ifdef SUPPORTS_SIGINFO
133 void setSignalInfo(siginfo_t *signal_info)
135 mySignalInfo = signal_info;
137 const siginfo_t *getSignalInfo()
const {
return mySignalInfo; }
141 myOpaqueCPUContext = opaque_cpu_context;
146 {
return myDepthFromSignalHandler; }
150 void *myOpaqueCPUContext;
151 int myDepthFromSignalHandler;
152 #ifdef SUPPORTS_SIGINFO
153 siginfo_t *mySignalInfo;
160 #if !defined(LINUX) && !defined(MBSD)
179 bool ignore_prev=
false);
181 bool ignore_prev=
false);
186 template <std::
size_t Size>
188 bool ignore_prev=
false)
190 constructPriv(signums, Size, handler, ignore_prev);
192 template <std::
size_t Size>
194 bool ignore_prev=
false)
196 constructPriv(signums, Size, handler, ignore_prev);
199 bool ignore_prev =
false);
202 bool ignore_prev =
false);
212 bool ignore_prev=
false);
214 bool ignore_prev=
false);
219 class UT_API UT_ComboSignalHandler
222 UT_ComboSignalHandler();
231 void operator()(
int signal_num,
232 #ifdef SUPPORTS_SIGINFO
233 siginfo_t *signal_info,
235 void *opaque_cpu_context)
const;
243 bool myIsOldStyleSigHandler;
246 void constructPriv(
int signum,
247 UT_ComboSignalHandler handler,
249 void constructPriv(
const int signums[],
250 const std::size_t
size,
251 UT_ComboSignalHandler handler,
253 void addSignal(
int signum, UT_ComboSignalHandler handler,
255 void removeSignal(
int signum);
256 void updateActuals();
257 void overridePriv(
int signum,
258 UT_ComboSignalHandler handler,
261 static void processSignal(
int signal_num
262 #ifdef SUPPORTS_SIGINFO
263 , siginfo_t *,
void *
void(* UToldStyleSigHandler)(int)
UT_Signal(const int(&signums)[Size], UToldStyleSigHandler handler=SIG_DFL, bool ignore_prev=false)
UTsignalHandlerArg(int signal_num)
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
void setSignalContext(void *opaque_cpu_context)
UTsignalHandlerArg(const UTsignalHandlerArg &sig_arg)
bool operator!=(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
void(* UTsigHandler)(UTsignalHandlerArg)
const void * getOpaqueCPUContext() const
int getDepthFromSignalHandler() const
UT_Signal(const int(&signums)[Size], UTsigHandler handler, bool ignore_prev=false)