diff options
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/src/lisp.h b/src/lisp.h index 41fa274a562..37416dc9464 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -20,6 +20,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 20 | #ifndef EMACS_LISP_H | 20 | #ifndef EMACS_LISP_H |
| 21 | #define EMACS_LISP_H | 21 | #define EMACS_LISP_H |
| 22 | 22 | ||
| 23 | #include <setjmp.h> | ||
| 23 | #include <stdalign.h> | 24 | #include <stdalign.h> |
| 24 | #include <stdarg.h> | 25 | #include <stdarg.h> |
| 25 | #include <stdbool.h> | 26 | #include <stdbool.h> |
| @@ -1968,7 +1969,25 @@ extern void defvar_kboard (struct Lisp_Kboard_Objfwd *, const char *, int); | |||
| 1968 | static struct Lisp_Kboard_Objfwd ko_fwd; \ | 1969 | static struct Lisp_Kboard_Objfwd ko_fwd; \ |
| 1969 | defvar_kboard (&ko_fwd, lname, offsetof (KBOARD, vname ## _)); \ | 1970 | defvar_kboard (&ko_fwd, lname, offsetof (KBOARD, vname ## _)); \ |
| 1970 | } while (0) | 1971 | } while (0) |
| 1971 | 1972 | ||
| 1973 | /* Save and restore the instruction and environment pointers, | ||
| 1974 | without affecting the signal mask. */ | ||
| 1975 | |||
| 1976 | #ifdef HAVE__SETJMP | ||
| 1977 | typedef jmp_buf sys_jmp_buf; | ||
| 1978 | # define sys_setjmp(j) _setjmp (j) | ||
| 1979 | # define sys_longjmp(j, v) _longjmp (j, v) | ||
| 1980 | #elif defined HAVE_SIGSETJMP | ||
| 1981 | typedef sigjmp_buf sys_jmp_buf; | ||
| 1982 | # define sys_setjmp(j) sigsetjmp (j, 0) | ||
| 1983 | # define sys_longjmp(j, v) siglongjmp (j, v) | ||
| 1984 | #else | ||
| 1985 | /* A platform that uses neither _longjmp nor siglongjmp; assume | ||
| 1986 | longjmp does not affect the sigmask. */ | ||
| 1987 | typedef jmp_buf sys_jmp_buf; | ||
| 1988 | # define sys_setjmp(j) setjmp (j) | ||
| 1989 | # define sys_longjmp(j, v) longjmp (j, v) | ||
| 1990 | #endif | ||
| 1972 | 1991 | ||
| 1973 | 1992 | ||
| 1974 | /* Structure for recording Lisp call stack for backtrace purposes. */ | 1993 | /* Structure for recording Lisp call stack for backtrace purposes. */ |
| @@ -2061,7 +2080,7 @@ struct catchtag | |||
| 2061 | Lisp_Object volatile val; | 2080 | Lisp_Object volatile val; |
| 2062 | struct catchtag *volatile next; | 2081 | struct catchtag *volatile next; |
| 2063 | struct gcpro *gcpro; | 2082 | struct gcpro *gcpro; |
| 2064 | jmp_buf jmp; | 2083 | sys_jmp_buf jmp; |
| 2065 | struct backtrace *backlist; | 2084 | struct backtrace *backlist; |
| 2066 | struct handler *handlerlist; | 2085 | struct handler *handlerlist; |
| 2067 | EMACS_INT lisp_eval_depth; | 2086 | EMACS_INT lisp_eval_depth; |
| @@ -2093,22 +2112,16 @@ extern char *stack_bottom; | |||
| 2093 | If quit-flag is set to `kill-emacs' the SIGINT handler has received | 2112 | If quit-flag is set to `kill-emacs' the SIGINT handler has received |
| 2094 | a request to exit Emacs when it is safe to do. */ | 2113 | a request to exit Emacs when it is safe to do. */ |
| 2095 | 2114 | ||
| 2096 | #ifdef SYNC_INPUT | ||
| 2097 | extern void process_pending_signals (void); | 2115 | extern void process_pending_signals (void); |
| 2098 | extern int pending_signals; | 2116 | extern int pending_signals; |
| 2099 | #define ELSE_PENDING_SIGNALS \ | ||
| 2100 | else if (pending_signals) \ | ||
| 2101 | process_pending_signals (); | ||
| 2102 | #else /* not SYNC_INPUT */ | ||
| 2103 | #define ELSE_PENDING_SIGNALS | ||
| 2104 | #endif /* not SYNC_INPUT */ | ||
| 2105 | 2117 | ||
| 2106 | extern void process_quit_flag (void); | 2118 | extern void process_quit_flag (void); |
| 2107 | #define QUIT \ | 2119 | #define QUIT \ |
| 2108 | do { \ | 2120 | do { \ |
| 2109 | if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \ | 2121 | if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \ |
| 2110 | process_quit_flag (); \ | 2122 | process_quit_flag (); \ |
| 2111 | ELSE_PENDING_SIGNALS \ | 2123 | else if (pending_signals) \ |
| 2124 | process_pending_signals (); \ | ||
| 2112 | } while (0) | 2125 | } while (0) |
| 2113 | 2126 | ||
| 2114 | 2127 | ||
| @@ -2832,8 +2845,6 @@ extern void memory_warnings (void *, void (*warnfun) (const char *)); | |||
| 2832 | /* Defined in alloc.c. */ | 2845 | /* Defined in alloc.c. */ |
| 2833 | extern void check_pure_size (void); | 2846 | extern void check_pure_size (void); |
| 2834 | extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); | 2847 | extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); |
| 2835 | extern void reset_malloc_hooks (void); | ||
| 2836 | extern void uninterrupt_malloc (void); | ||
| 2837 | extern void malloc_warning (const char *); | 2848 | extern void malloc_warning (const char *); |
| 2838 | extern _Noreturn void memory_full (size_t); | 2849 | extern _Noreturn void memory_full (size_t); |
| 2839 | extern _Noreturn void buffer_memory_full (ptrdiff_t); | 2850 | extern _Noreturn void buffer_memory_full (ptrdiff_t); |
| @@ -3029,7 +3040,6 @@ extern Lisp_Object Qand_rest; | |||
| 3029 | extern Lisp_Object Vautoload_queue; | 3040 | extern Lisp_Object Vautoload_queue; |
| 3030 | extern Lisp_Object Vsignaling_function; | 3041 | extern Lisp_Object Vsignaling_function; |
| 3031 | extern Lisp_Object inhibit_lisp_code; | 3042 | extern Lisp_Object inhibit_lisp_code; |
| 3032 | extern int handling_signal; | ||
| 3033 | #if BYTE_MARK_STACK | 3043 | #if BYTE_MARK_STACK |
| 3034 | extern struct catchtag *catchlist; | 3044 | extern struct catchtag *catchlist; |
| 3035 | extern struct handler *handlerlist; | 3045 | extern struct handler *handlerlist; |