[project @ 2004-02-12 02:04:59 by mthomas]
[ghc-hetmet.git] / ghc / rts / Signals.h
1 /* -----------------------------------------------------------------------------
2  * $Id: Signals.h,v 1.12 2003/10/20 17:15:29 sof Exp $
3  *
4  * (c) The GHC Team, 1998-1999
5  *
6  * Signal processing / handling.
7  *
8  * ---------------------------------------------------------------------------*/
9
10 #if !defined(PAR) && !defined(mingw32_TARGET_OS)
11 #define RTS_USER_SIGNALS 1
12
13 extern StgPtr pending_handler_buf[];
14 extern StgPtr *next_pending_handler;
15
16 #define signals_pending() (next_pending_handler != pending_handler_buf)
17
18 extern void    initUserSignals(void);
19 extern void    blockUserSignals(void);
20 extern void    unblockUserSignals(void);
21
22 extern rtsBool anyUserHandlers(void);
23 extern void    awaitUserSignals(void);
24
25 /* sig_install declared in PrimOps.h */
26
27 extern void startSignalHandlers(void);
28 extern void markSignalHandlers (evac_fn evac);
29 extern void initDefaultHandlers(void);
30
31 extern void handleSignalsInThisThread(void);
32
33 #elif defined(mingw32_TARGET_OS)
34 #define RTS_USER_SIGNALS 1
35 #include "win32/ConsoleHandler.h"
36
37 #else /* PAR */
38 #define signals_pending() (rtsFalse)
39 #define handleSignalsInThisThread() /* nothing */
40
41 #endif /* PAR */