X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Finterrupt.c;h=d995142593956012384a4e2574f11e144ae24983;hb=c75cf4e142aaf9a72433ea6db778d8111a0b1c83;hp=78bafeb160ffb02f29a931d106952ec32da2b00a;hpb=b5c69cfe906a31ae57bb0f18c67af9d2eaa1dfef;p=sbcl.git diff --git a/src/runtime/interrupt.c b/src/runtime/interrupt.c index 78bafeb..d995142 100644 --- a/src/runtime/interrupt.c +++ b/src/runtime/interrupt.c @@ -597,7 +597,8 @@ interrupt_handle_now(int signal, siginfo_t *info, os_context_t *context) * already; we're just doing the Lisp-level processing now that we * put off then */ static void -run_deferred_handler(struct interrupt_data *data, void *v_context) { +run_deferred_handler(struct interrupt_data *data, void *v_context) +{ /* The pending_handler may enable interrupts and then another * interrupt may hit, overwrite interrupt_data, so reset the * pending handler before calling it. Trust the handler to finish @@ -775,10 +776,11 @@ sig_stop_for_gc_handler(int signal, siginfo_t *info, void *void_context) thread->state=STATE_SUSPENDED; FSHOW_SIGNAL((stderr,"thread=%lu suspended\n",thread->os_thread)); + sigemptyset(&ss); #if defined(SIG_RESUME_FROM_GC) - sigemptyset(&ss); sigaddset(&ss,SIG_RESUME_FROM_GC); + sigaddset(&ss,SIG_RESUME_FROM_GC); #else - sigemptyset(&ss); sigaddset(&ss,SIG_STOP_FOR_GC); + sigaddset(&ss,SIG_STOP_FOR_GC); #endif /* It is possible to get SIGCONT (and probably other non-blockable @@ -898,8 +900,10 @@ arrange_return_to_lisp_function(os_context_t *context, lispobj function) *(register_save_area + 7) = *os_context_register_addr(context,reg_EAX); *(register_save_area + 8) = *context_eflags_addr(context); - *os_context_pc_addr(context) = call_into_lisp_tramp; - *os_context_register_addr(context,reg_ECX) = register_save_area; + *os_context_pc_addr(context) = + (os_context_register_t) call_into_lisp_tramp; + *os_context_register_addr(context,reg_ECX) = + (os_context_register_t) register_save_area; #else /* return address for call_into_lisp: */ @@ -1021,7 +1025,8 @@ interrupt_thread_handler(int num, siginfo_t *info, void *v_context) * functions and variables. */ void -undefined_alien_function() { +undefined_alien_function(void) +{ funcall0(SymbolFunction(UNDEFINED_ALIEN_FUNCTION_ERROR)); } @@ -1110,7 +1115,7 @@ sigaction_nodefer_test_handler(int signal, siginfo_t *info, void *void_context) } static void -see_if_sigaction_nodefer_works() +see_if_sigaction_nodefer_works(void) { struct sigaction sa, old_sa; @@ -1158,9 +1163,7 @@ low_level_unblock_me_trampoline(int signal, siginfo_t *info, void *void_context) void undoably_install_low_level_interrupt_handler (int signal, - void handler(int, - siginfo_t*, - void*)) + interrupt_handler_t handler) { struct sigaction sa; @@ -1255,7 +1258,7 @@ install_handler(int signal, void handler(int, siginfo_t*, void*)) } void -interrupt_init() +interrupt_init(void) { #ifndef LISP_FEATURE_WIN32 int i; @@ -1293,7 +1296,7 @@ void lisp_memory_fault_error(os_context_t *context, os_vm_address_t addr) { /* FIXME: This is lossy: if we get another memory fault (eg. from - * another thread) before lisp has read this, we the information. + * another thread) before lisp has read this, we lose the information. * However, since this is mostly informative, we'll live with that for * now -- some address is better then no address in this case. */ @@ -1302,7 +1305,7 @@ lisp_memory_fault_error(os_context_t *context, os_vm_address_t addr) } #endif -void +static void unhandled_trap_error(os_context_t *context) { lispobj context_sap; @@ -1315,7 +1318,7 @@ unhandled_trap_error(os_context_t *context) lose("UNHANDLED-TRAP-ERROR fell through"); } -/* Common logic far trapping instructions. How we actually handle each +/* Common logic for trapping instructions. How we actually handle each * case is highly architecture dependent, but the overall shape is * this. */ void