Restructure of mono.sln and build properties to better fix static/dynamic library...
[mono.git] / libgc / solaris_threads.c
index f0ae894eebae7fe9838830a715bc5dd403cf0272..e67c514c7988a59a7fea854669ac86f397405f98 100644 (file)
@@ -642,10 +642,19 @@ int GC_thread_is_registered (void)
        return ptr ? 1 : 0;
 }
 
-int GC_thread_register_foreign (void *base_addr)
+void GC_allow_register_threads (void)
+{
+       /* No-op for GC pre-v7. */
+}
+
+int GC_register_my_thread (struct GC_stack_base *sb)
 {
        /* FIXME: */
-       return 0;
+       return GC_UNIMPLEMENTED;
+}
+
+void GC_register_altstack (void *stack, int stack_size, void *altstack, int altstack_size)
+{
 }
 
 /* Solaris 2/Intel uses an initial stack size limit slightly bigger than the
@@ -787,18 +796,20 @@ void * GC_thr_daemon(void * dummy)
             UNLOCK();
        } else {
            t = GC_lookup_thread(departed);
-           GC_multithreaded--;
-           if (!(t -> flags & CLIENT_OWNS_STACK)) {
-               GC_stack_free(t -> stack, t -> stack_size);
-           }
-           if (t -> flags & DETACHED) {
-               GC_delete_thread(departed);
-           } else {
-               t -> status = status;
-               t -> flags |= FINISHED;
-               cond_signal(&(t -> join_cv));
-               cond_broadcast(&GC_prom_join_cv);
-           }
+                       GC_multithreaded--;
+                       if (t) {
+                               if (!(t -> flags & CLIENT_OWNS_STACK)) {
+                                       GC_stack_free(t -> stack, t -> stack_size);
+                               }
+                               if (t -> flags & DETACHED) {
+                                       GC_delete_thread(departed);
+                               } else {
+                                       t -> status = status;
+                                       t -> flags |= FINISHED;
+                                       cond_signal(&(t -> join_cv));
+                                       cond_broadcast(&GC_prom_join_cv);
+                               }
+                       }
            UNLOCK();
        }
     }