/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/interp.c,v 9.61 1991/03/01 00:54:42 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/interp.c,v 9.62 1991/06/22 19:28:54 cph Exp $
Copyright (c) 1988-91 Massachusetts Institute of Technology
extern void EXFUN (free, (PTR ptr));
#define obstack_chunk_free free
extern void EXFUN (back_out_of_primitive_internal, (void));
+extern void EXFUN (preserve_signal_mask, (void));
\f
/* In order to make the interpreter tail recursive (i.e.
* to avoid calling procedures and thus saving unnecessary
*/
interpreter_catch_dstack_position = dstack_position;
+ preserve_signal_mask ();
Which_Way = (setjmp (interpreter_catch_env));
Set_Time_Zone (Zone_Working);
Import_Registers ();
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/intext.c,v 1.1 1990/06/20 19:35:50 cph Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/intext.c,v 1.2 1991/06/22 19:29:02 cph Exp $
-Copyright (c) 1990 Massachusetts Institute of Technology
+Copyright (c) 1990-91 Massachusetts Institute of Technology
This material was developed by the Scheme project at the Massachusetts
Institute of Technology, Department of Electrical Engineering and
#include "dstack.h"
#include "intext.h"
+extern void EXFUN (preserve_signal_mask, (void));
+
struct interruptable_extent * current_interruptable_extent;
void
/* Create a dynamic binding frame but don't assign the new frame to
it until the CATCH has been done. */
dstack_bind ((¤t_interruptable_extent), current_interruptable_extent);
+ preserve_signal_mask ();
return (frame);
}
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/uxsig.c,v 1.9 1991/06/15 00:40:41 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/uxsig.c,v 1.10 1991/06/22 19:29:05 cph Exp $
Copyright (c) 1990-91 Massachusetts Institute of Technology
#endif /* HAVE_SYSV3_SIGNALS */
#endif /* HAVE_POSIX_SIGNALS */
\f
+#ifdef HAVE_POSIX_SIGNALS
+
+static void
+DEFUN (restore_signal_mask, (environment), PTR environment)
+{
+ UX_sigprocmask (SIG_SETMASK, ((sigset_t *) environment), 0);
+}
+
+void
+DEFUN_VOID (preserve_signal_mask)
+{
+ sigset_t * outside = (dstack_alloc (sizeof (sigset_t)));
+ UX_sigprocmask (SIG_SETMASK, 0, outside);
+ dstack_protect (restore_signal_mask, outside);
+}
+
+#else /* not HAVE_POSIX_SIGNALS */
+
+void
+DEFUN_VOID (preserve_signal_mask)
+{
+}
+
+#endif /* not HAVE_POSIX_SIGNALS */
+\f
/* Signal Descriptors */
enum dfl_action { dfl_terminate, dfl_ignore, dfl_stop };
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/version.h,v 11.83 1991/06/14 23:36:05 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/version.h,v 11.84 1991/06/22 19:29:11 cph Exp $
Copyright (c) 1988-91 Massachusetts Institute of Technology
#define VERSION 11
#endif
#ifndef SUBVERSION
-#define SUBVERSION 83
+#define SUBVERSION 84
#endif
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/interp.c,v 9.61 1991/03/01 00:54:42 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/interp.c,v 9.62 1991/06/22 19:28:54 cph Exp $
Copyright (c) 1988-91 Massachusetts Institute of Technology
extern void EXFUN (free, (PTR ptr));
#define obstack_chunk_free free
extern void EXFUN (back_out_of_primitive_internal, (void));
+extern void EXFUN (preserve_signal_mask, (void));
\f
/* In order to make the interpreter tail recursive (i.e.
* to avoid calling procedures and thus saving unnecessary
*/
interpreter_catch_dstack_position = dstack_position;
+ preserve_signal_mask ();
Which_Way = (setjmp (interpreter_catch_env));
Set_Time_Zone (Zone_Working);
Import_Registers ();
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/version.h,v 11.83 1991/06/14 23:36:05 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/version.h,v 11.84 1991/06/22 19:29:11 cph Exp $
Copyright (c) 1988-91 Massachusetts Institute of Technology
#define VERSION 11
#endif
#ifndef SUBVERSION
-#define SUBVERSION 83
+#define SUBVERSION 84
#endif