0.9.10.5: correct CONSTANTP
[sbcl.git] / src / runtime / thread.c
index cf05b8d..8d3d36a 100644 (file)
@@ -1,14 +1,30 @@
+/*
+ * This software is part of the SBCL system. See the README file for
+ * more information.
+ *
+ * This software is derived from the CMU CL system, which was
+ * written at Carnegie Mellon University and released into the
+ * public domain. The software is in the public domain and is
+ * provided with absolutely no warranty. See the COPYING and CREDITS
+ * files for more information.
+ */
+
+#include "sbcl.h"
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#ifndef LISP_FEATURE_WIN32
 #include <sched.h>
+#endif
 #include <signal.h>
 #include <stddef.h>
 #include <errno.h>
 #include <sys/types.h>
+#ifndef LISP_FEATURE_WIN32
 #include <sys/wait.h>
+#endif
 
-#include "sbcl.h"
 #include "runtime.h"
 #include "validate.h"           /* for CONTROL_STACK_SIZE etc */
 #include "alloc.h"
 #include "interr.h"             /* for lose() */
 #include "gc-internal.h"
 
+#ifdef LISP_FEATURE_WIN32
+/*
+ * Win32 doesn't have SIGSTKSZ, and we're not switching stacks anyway,
+ * so define it arbitrarily
+ */
+#define SIGSTKSZ 1024
+#endif
+
 #define ALIEN_STACK_SIZE (1*1024*1024) /* 1Mb size chosen at random */
 
 struct freeable_stack {
@@ -38,15 +62,13 @@ extern struct interrupt_data * global_interrupt_data;
 extern int linux_no_threads_p;
 
 #ifdef LISP_FEATURE_SB_THREAD
-
 pthread_mutex_t all_threads_lock = PTHREAD_MUTEX_INITIALIZER;
+#endif
 
 #if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)
 extern lispobj call_into_lisp_first_time(lispobj fun, lispobj *args, int nargs);
 #endif
 
-#endif
-
 static void
 link_thread(struct thread *th)
 {
@@ -190,7 +212,9 @@ create_thread_struct(lispobj initial_function) {
     union per_thread_data *per_thread;
     struct thread *th=0;        /*  subdue gcc */
     void *spaces=0;
+#ifdef LISP_FEATURE_SB_THREAD
     int i;
+#endif
 
     /* may as well allocate all the spaces at once: it saves us from
      * having to decide what to do if only some of the allocations
@@ -211,6 +235,7 @@ create_thread_struct(lispobj initial_function) {
         if(SymbolValue(FREE_TLS_INDEX,0)==UNBOUND_MARKER_WIDETAG) {
             SetSymbolValue
                 (FREE_TLS_INDEX,
+                 /* FIXME: should be MAX_INTERRUPTS -1 ? */
                  make_fixnum(MAX_INTERRUPTS+
                              sizeof(struct thread)/sizeof(lispobj)),
                  0);
@@ -303,7 +328,7 @@ void create_initial_thread(lispobj initial_function) {
     struct thread *th=create_thread_struct(initial_function);
     if(th) {
         initial_thread_trampoline(th); /* no return */
-    } else lose("can't create initial thread");
+    } else lose("can't create initial thread\n");
 }
 
 #ifdef LISP_FEATURE_SB_THREAD
@@ -387,7 +412,7 @@ int signal_interrupt_thread(os_thread_t os_thread)
     } else if (status == ESRCH) {
         return -1;
     } else {
-        lose("cannot send SIG_INTERRUPT_THREAD to thread=%lu: %d, %s",
+        lose("cannot send SIG_INTERRUPT_THREAD to thread=%lu: %d, %s\n",
              os_thread, status, strerror(status));
     }
 }
@@ -422,7 +447,7 @@ void gc_stop_the_world()
                 /* This thread has exited. */
                 gc_assert(p->state==STATE_DEAD);
             } else if (status) {
-                lose("cannot send suspend thread=%lu: %d, %s",
+                lose("cannot send suspend thread=%lu: %d, %s\n",
                      p->os_thread,status,strerror(status));
             }
         }
@@ -460,7 +485,7 @@ void gc_start_the_world()
             p->state=STATE_RUNNING;
             status=kill_thread_safely(p->os_thread,SIG_STOP_FOR_GC);
             if (status) {
-                lose("cannot resume thread=%lu: %d, %s",
+                lose("cannot resume thread=%lu: %d, %s\n",
                      p->os_thread,status,strerror(status));
             }
         }