#if !defined(_INCLUDE_INTERRUPT_H_)
#define _INCLUDE_INTERRUPT_H_
-#include <signal.h>
+#include "runtime.h"
#include <string.h>
/*
* stack by the kernel, so copying a libc-sized sigset_t into it will
* overflow and cause other data on the stack to be corrupted */
/* FIXME: do not rely on NSIG being a multiple of 8 */
-#define REAL_SIGSET_SIZE_BYTES ((NSIG/8))
+
+#ifdef LISP_FEATURE_WIN32
+# define REAL_SIGSET_SIZE_BYTES (4)
+#else
+# define REAL_SIGSET_SIZE_BYTES ((NSIG/8))
+#endif
static inline void
sigcopyset(sigset_t *new, sigset_t *old)
* and with no pending handler. Both deferrable interrupt handlers
* and gc are careful not to clobber each other's pending_mask. */
boolean gc_blocked_deferrables;
-#ifdef LISP_FEATURE_PPC
+#ifdef GENCGC_IS_PRECISE
/* On PPC when consing wants to turn to alloc(), it does so via a
* trap. When alloc() wants to save the sigmask it consults
* allocation_trap_context. It does not look up the most recent
extern void undoably_install_low_level_interrupt_handler (
int signal,
interrupt_handler_t handler);
-extern unsigned long install_handler(int signal,
- interrupt_handler_t handler);
+extern uword_t install_handler(int signal,
+ interrupt_handler_t handler,
+ int synchronous);
extern union interrupt_handler interrupt_handlers[NSIG];