scm.c') initializes handlers for SIGINT and
SIGALRM if they are supported by the C implementation. All of
the signal handlers immediately reestablish themselves by a call to
signal().
SIGINT and SIGALRM.
If an interrupt handler is defined when the interrupt is received, the
code is interpreted. If the code returns, execution resumes from where
the interrupt happened. Call-with-current-continuation allows
the stack to be saved and restored.
SCM does not use any signal masking system calls. These are not a
portable feature. However, code can run uninterrupted by use of the C
macros DEFER_INTS and ALLOW_INTS.
ints_disabled to 1. If an interrupt
occurs during a time when ints_disabled is 1 one of the global
variables sig_deferred or alrm_deferred is set to 1 and
the handler returns.
Checks the deferred variables and if set the appropriate handler is called.
Calls to DEFER_INTS can not be nested. An ALLOW_INTS must
happen before another DEFER_INTS can be done. In order to check
that this constraint is satisfied #define CAREFUL_INTS in
`scmfig.h'.