#define ALIEN_STACK_SIZE (1*1024*1024) /* 1Mb size chosen at random */
+#ifdef LISP_FEATURE_SB_THREAD
struct thread_post_mortem {
#ifdef DELAY_THREAD_POST_MORTEM
struct thread_post_mortem *next;
os_vm_address_t os_address;
};
-
#ifdef DELAY_THREAD_POST_MORTEM
static int pending_thread_post_mortem_count = 0;
pthread_mutex_t thread_post_mortem_lock = PTHREAD_MUTEX_INITIALIZER;
#endif
static struct thread_post_mortem * volatile pending_thread_post_mortem = 0;
+#endif
int dynamic_values_bytes=TLS_SIZE*sizeof(lispobj); /* same for all threads */
struct thread * volatile all_threads;
lock_ret = pthread_mutex_lock(&all_threads_lock);
gc_assert(lock_ret == 0);
- gc_alloc_update_page_tables(0, &th->alloc_region);
+ gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->alloc_region);
unlink_thread(th);
pthread_mutex_unlock(&all_threads_lock);
gc_assert(lock_ret == 0);
th->binding_stack_pointer=th->binding_stack_start;
th->this=th;
th->os_thread=0;
+#ifdef LISP_FEATURE_SB_THREAD
th->os_attr=malloc(sizeof(pthread_attr_t));
+#endif
th->state=STATE_RUNNING;
#ifdef LISP_FEATURE_STACK_GROWS_DOWNWARD_NOT_UPWARD
th->alien_stack_pointer=((void *)th->alien_stack_start
bind_variable(INTERRUPTS_ENABLED,T,th);
bind_variable(ALLOW_WITH_INTERRUPTS,T,th);
bind_variable(GC_PENDING,NIL,th);
+ bind_variable(ALLOC_SIGNAL,NIL,th);
#ifdef LISP_FEATURE_SB_THREAD
bind_variable(STOP_FOR_GC_PENDING,NIL,th);
#endif