32c7fbdcc71048ce3046fe2db3bdc5aab227ff32
[ghc-hetmet.git] / ghc / rts / Signals.h
1 /* -----------------------------------------------------------------------------
2  *
3  * (c) The GHC Team, 1998-1999
4  *
5  * Signal processing / handling.
6  *
7  * ---------------------------------------------------------------------------*/
8
9 #if !defined(PAR) && !defined(mingw32_HOST_OS)
10 #define RTS_USER_SIGNALS 1
11
12 extern void    initUserSignals(void);
13 extern void    blockUserSignals(void);
14 extern void    unblockUserSignals(void);
15
16 extern rtsBool anyUserHandlers(void);
17
18 #if !defined(RTS_SUPPORTS_THREADS)
19
20 extern StgPtr pending_handler_buf[];
21 extern StgPtr *next_pending_handler;
22 #define signals_pending() (next_pending_handler != pending_handler_buf)
23 extern void awaitUserSignals(void);
24
25 #else
26
27 extern void startSignalHandler(int sig);
28
29 #endif
30
31 /* sig_install declared in PrimOps.h */
32
33 extern void startSignalHandlers(void);
34 extern void markSignalHandlers (evac_fn evac);
35 extern void initDefaultHandlers(void);
36
37 #elif defined(mingw32_HOST_OS)
38 #define RTS_USER_SIGNALS 1
39 #include "win32/ConsoleHandler.h"
40
41 #else /* PAR */
42 #define signals_pending() (rtsFalse)
43 #define handleSignalsInThisThread() /* nothing */
44
45 #endif /* PAR */