*
* ---------------------------------------------------------------------------*/
-#ifndef RTS_SIGNALS_H
-#define RTS_SIGNALS_H
+#ifndef RTSSIGNALS_H
+#define RTSSIGNALS_H
-#if !defined(PAR) && !defined(mingw32_HOST_OS)
+#if !defined(mingw32_HOST_OS)
#include "posix/Signals.h"
#include "win32/ConsoleHandler.h"
-#else /* PAR */
+#else
#define signals_pending() (rtsFalse)
-#endif /* PAR */
-
+#endif
#if RTS_USER_SIGNALS
+#include "BeginPrivate.h"
+
/*
* Function: initUserSignals()
*
* Initialize the console handling substrate.
*/
-extern void initUserSignals(void);
+void initUserSignals(void);
/*
* Function: initDefaultHandlers()
* Install any default signal/console handlers. Currently we install a
* Ctrl+C handler that shuts down the RTS in an orderly manner.
*/
-extern void initDefaultHandlers(void);
-
-/*
- * Function: blockUserSignals()
- *
- * Temporarily block the delivery of further console events. Needed to
- * avoid race conditions when GCing the queue of outstanding handlers or
- * when emptying the queue by running the handlers.
- *
- */
-extern void blockUserSignals(void);
+void initDefaultHandlers(void);
+void resetDefaultHandlers(void);
-/*
- * Function: unblockUserSignals()
- *
- * The inverse of blockUserSignals(); re-enable the deliver of console events.
- */
-extern void unblockUserSignals(void);
+void freeSignalHandlers(void);
/*
* Function: awaitUserSignals()
*
* Wait for the next console event. Currently a NOP (returns immediately.)
*/
-extern void awaitUserSignals(void);
+void awaitUserSignals(void);
/*
* Function: markSignalHandlers()
* Evacuate the handler queue. _Assumes_ that console event delivery
* has already been blocked.
*/
-extern void markSignalHandlers (evac_fn evac);
+void markSignalHandlers (evac_fn evac, void *user);
+
+#include "EndPrivate.h"
#endif /* RTS_USER_SIGNALS */
-#endif /* RTS_SIGNALS_H */
+#endif /* RTSSIGNALS_H */