0.8.4.48:
[sbcl.git] / src / runtime / linux-os.c
index 879c0d4..6e391f2 100644 (file)
 #include <stdio.h>
 #include <sys/param.h>
 #include <sys/file.h>
+#include "sbcl.h"
 #include "./signal.h"
 #include "os.h"
 #include "arch.h"
 #include "globals.h"
+#include "sbcl.h"
 #include "interrupt.h"
 #include "interr.h"
 #include "lispregs.h"
-#include "sbcl.h"
 #include <sys/socket.h>
 #include <sys/utsname.h>
 
@@ -83,7 +84,7 @@ void os_init(void)
 
     os_vm_page_size = getpagesize();
     /* This could just as well be in arch_init(), but it's not. */
-#ifdef __i386__
+#ifdef LISP_FEATURE_X86
     /* FIXME: This used to be here.  However, I have just removed it
        with no apparent ill effects (it may be that earlier kernels
        started up a process with a different set of traps, or
@@ -248,11 +249,12 @@ sigsegv_handler(int signal, siginfo_t *info, void* void_context)
 
 void sigcont_handler(int signal, siginfo_t *info, void *void_context)
 {
-    /* we need to have a handler installed for this signal so that
-     * sigwaitinfo() for it actually returns at the appropriate time
-     */
-    fprintf(stderr, "Thread %d received stray SIGCONT\n",
-           arch_os_get_current_thread()->pid);
+    /* We need to have a handler installed for this signal so that
+     * sigwaitinfo() for it actually returns at the appropriate time.
+     * We don't need it to actually do anything.  This mkes it
+     * possibly the only signal handler in SBCL that doesn't depend on
+     * not-guaranteed-by-POSIX features 
+     */    
 }
 
 void
@@ -260,9 +262,13 @@ os_install_interrupt_handlers(void)
 {
     undoably_install_low_level_interrupt_handler(SIG_MEMORY_FAULT,
                                                 sigsegv_handler);
+#ifdef LISP_FEATURE_SB_THREAD
     undoably_install_low_level_interrupt_handler(SIG_INTERRUPT_THREAD,
                                                 handle_rt_signal);
-    undoably_install_low_level_interrupt_handler(SIGCONT,
+    undoably_install_low_level_interrupt_handler(SIG_STOP_FOR_GC,
+                                                sig_stop_for_gc_handler);
+#endif
+    undoably_install_low_level_interrupt_handler(SIG_DEQUEUE,
                                                 sigcont_handler);
 }