diff --git a/src/c/symbols_list.h b/src/c/symbols_list.h index 102f85def..b5908a51f 100755 --- a/src/c/symbols_list.h +++ b/src/c/symbols_list.h @@ -1945,5 +1945,9 @@ cl_symbols[] = { {EXT_ "SSE-PACK-ELEMENT-TYPE", EXT_ORDINARY, si_sse_pack_element_type, 1, OBJNULL}, #endif +{EXT_ "UNIX-SIGNAL-RECEIVED", EXT_ORDINARY, NULL, -1, OBJNULL}, +{EXT_ "UNIX-SIGNAL-RECEIVED-CODE", EXT_ORDINARY, NULL, -1, OBJNULL}, +{KEY_ "CODE", KEYWORD, NULL, -1, OBJNULL}, + /* Tag for end of list */ {NULL, CL_ORDINARY, NULL, -1, OBJNULL}}; diff --git a/src/c/symbols_list2.h b/src/c/symbols_list2.h index 8e5d9fe7f..aaf11dece 100755 --- a/src/c/symbols_list2.h +++ b/src/c/symbols_list2.h @@ -1945,5 +1945,9 @@ cl_symbols[] = { {EXT_ "SSE-PACK-ELEMENT-TYPE","si_sse_pack_element_type"}, #endif +{EXT_ "UNIX-SIGNAL-RECEIVED",NULL}, +{EXT_ "UNIX-SIGNAL-RECEIVED-CODE",NULL}, +{KEY_ "CODE",NULL}, + /* Tag for end of list */ {NULL,NULL}}; diff --git a/src/c/unixint.d b/src/c/unixint.d index 056479f1f..528afecd3 100644 --- a/src/c/unixint.d +++ b/src/c/unixint.d @@ -367,7 +367,7 @@ handle_signal_now(cl_object signal_code) { switch (type_of(signal_code)) { case t_fixnum: - FEerror("Serious signal ~D caught.", 1, signal_code); + cl_error(3, @'ext::unix-signal-received', @':code', signal_code); break; case t_symbol: cl_error(1, signal_code); diff --git a/src/clos/conditions.lsp b/src/clos/conditions.lsp index 18d475038..91a9cb8b5 100644 --- a/src/clos/conditions.lsp +++ b/src/clos/conditions.lsp @@ -515,6 +515,15 @@ or return to an outer frame, undoing all the function calls so far." (format stream "Memory limit reached. Please jump to an outer pointer, quit program and enlarge the memory limits before executing the program again.")))) +(define-condition ext:unix-signal-received () + ((code :type fixnum + :initform 0 + :initarg :signal-code + :accessor ext:unix-signal-received-code)) + (:report (lambda (condition stream) + (format stream "Serious signal ~D caught." + (ext:unix-signal-received-code condition))))) + (define-condition type-error (error) ((datum :INITARG :DATUM :READER type-error-datum) (expected-type :INITARG :EXPECTED-TYPE :READER type-error-expected-type))