X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Finterrupt.h;h=7213c0c28f4ce68f8205d4307fb8aeab7655a8c2;hb=402958f92506b9d3de852601b8c1ccb99b5ee558;hp=ae7202092f8ca88842f8fe22db158f7f99c7005f;hpb=47eb330ef0f3b99d24c0e24d897b757f16950c4b;p=sbcl.git diff --git a/src/runtime/interrupt.h b/src/runtime/interrupt.h index ae72020..7213c0c 100644 --- a/src/runtime/interrupt.h +++ b/src/runtime/interrupt.h @@ -13,6 +13,7 @@ #define _INCLUDE_INTERRUPT_H_ #include +#include /* * This is a workaround for some slightly silly Linux/GNU Libc @@ -25,6 +26,8 @@ /* FIXME: do not rely on NSIG being a multiple of 8 */ #define REAL_SIGSET_SIZE_BYTES ((NSIG/8)) +extern void check_blockables_blocked_or_lose(); + static inline void sigcopyset(sigset_t *new, sigset_t *old) { @@ -45,10 +48,9 @@ union interrupt_handler { void (*c)(int, siginfo_t*, void*); }; -struct interrupt_data { - void (*interrupt_low_level_handlers[NSIG]) (int, siginfo_t*, void*) ; - union interrupt_handler interrupt_handlers[NSIG]; +extern union interrupt_handler interrupt_handlers[NSIG]; +struct interrupt_data { /* signal information for pending signal. pending_signal=0 when there * is no pending signal. */ void (*pending_handler) (int, siginfo_t*, void*) ; @@ -92,9 +94,11 @@ extern unsigned long install_handler(int signal, extern union interrupt_handler interrupt_handlers[NSIG]; /* Set all deferrable signals into *s. */ -void sigaddset_deferrable(sigset_t *s); +extern void sigaddset_deferrable(sigset_t *s); /* Set all blockable signals into *s. */ -void sigaddset_blockable(sigset_t *s); +extern void sigaddset_blockable(sigset_t *s); + +extern void block_blockable_signals(); /* The void* casting here avoids having to mess with the various types * of function argument lists possible for signal handlers: