0.8.0.78.vector-nil-string.12:
[sbcl.git] / src / runtime / bsd-os.c
index bcca635..64aba2c 100644 (file)
 #include "interr.h"
 #include "lispregs.h"
 #include "sbcl.h"
+#include "thread.h"
 
 #include <sys/types.h>
 #include <signal.h>
 /* #include <sys/sysinfo.h> */
-#include <sys/proc.h>
 #include "validate.h"
 vm_size_t os_vm_page_size;
 
@@ -251,3 +251,30 @@ os_install_interrupt_handlers(void)
 }
 
 #endif /* defined GENCGC */
+\f
+/* threads */
+
+/* no threading in any *BSD variant on any CPU (yet? in sbcl-0.8.0 anyway) */
+#ifdef LISP_FEATURE_SB_THREAD
+#error "Define threading support functions"
+#else
+struct thread *arch_os_get_current_thread() {
+    return all_threads;
+}
+int arch_os_thread_init(struct thread *thread) {
+  stack_t sigstack;
+#ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK
+    /* Signal handlers are run on the control stack, so if it is exhausted
+     * we had better use an alternate stack for whatever signal tells us
+     * we've exhausted it */
+    sigstack.ss_sp=((void *) thread)+dynamic_values_bytes;
+    sigstack.ss_flags=0;
+    sigstack.ss_size = 32*SIGSTKSZ;
+    sigaltstack(&sigstack,0);
+#endif
+    return 1;                  /* success */
+}
+int arch_os_thread_cleanup(struct thread *thread) {
+    return 1;                  /* success */
+}
+#endif