X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fsafepoint.c;h=45af50e5b35121b3d8d0fc2d638a428cc5d24c22;hb=f41b718f89090d00e2625f103e29281061800729;hp=a9e578cd5f47c177d335f2f4dd3851bcc016761c;hpb=daa6f0ce672d8dc60176ff885da18e44ee0355c6;p=sbcl.git diff --git a/src/runtime/safepoint.c b/src/runtime/safepoint.c index a9e578c..45af50e 100644 --- a/src/runtime/safepoint.c +++ b/src/runtime/safepoint.c @@ -966,6 +966,26 @@ handle_safepoint_violation(os_context_t *ctx, os_vm_address_t fault_address) } #endif /* LISP_FEATURE_WIN32 */ +#if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) +void +signal_handler_callback(lispobj run_handler, int signo, void *info, void *ctx) +{ + init_thread_data scribble; + void *args[2]; + args[0] = info; + args[1] = ctx; + + attach_os_thread(&scribble); + + odxprint(misc, "callback from signal handler thread for: %d\n", signo); + funcall3(StaticSymbolFunction(SIGNAL_HANDLER_CALLBACK), + run_handler, make_fixnum(signo), alloc_sap(args)); + + detach_os_thread(&scribble); + return; +} +#endif + void callback_wrapper_trampoline( #if !(defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64))