projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.9.4.68:
[sbcl.git]
/
src
/
runtime
/
thread.c
diff --git
a/src/runtime/thread.c
b/src/runtime/thread.c
index
117e3ec
..
ab0db08
100644
(file)
--- a/
src/runtime/thread.c
+++ b/
src/runtime/thread.c
@@
-174,12
+174,14
@@
create_thread_struct(lispobj initial_function) {
int i;
for(i=0;i<(dynamic_values_bytes/sizeof(lispobj));i++)
per_thread->dynamic_values[i]=NO_TLS_VALUE_MARKER_WIDETAG;
int i;
for(i=0;i<(dynamic_values_bytes/sizeof(lispobj));i++)
per_thread->dynamic_values[i]=NO_TLS_VALUE_MARKER_WIDETAG;
- if(SymbolValue(FREE_TLS_INDEX,0)==UNBOUND_MARKER_WIDETAG)
+ if(SymbolValue(FREE_TLS_INDEX,0)==UNBOUND_MARKER_WIDETAG) {
SetSymbolValue
(FREE_TLS_INDEX,
make_fixnum(MAX_INTERRUPTS+
sizeof(struct thread)/sizeof(lispobj)),
0);
SetSymbolValue
(FREE_TLS_INDEX,
make_fixnum(MAX_INTERRUPTS+
sizeof(struct thread)/sizeof(lispobj)),
0);
+ SetSymbolValue(TLS_INDEX_LOCK,make_fixnum(0),0);
+ }
#define STATIC_TLS_INIT(sym,field) \
((struct symbol *)(sym-OTHER_POINTER_LOWTAG))->tls_index= \
make_fixnum(THREAD_SLOT_OFFSET_WORDS(field))
#define STATIC_TLS_INIT(sym,field) \
((struct symbol *)(sym-OTHER_POINTER_LOWTAG))->tls_index= \
make_fixnum(THREAD_SLOT_OFFSET_WORDS(field))
@@
-260,14
+262,7
@@
create_thread_struct(lispobj initial_function) {
free_thread_struct(th);
return 0;
}
free_thread_struct(th);
return 0;
}
- if(all_threads)
- memcpy(th->interrupt_data,
- arch_os_get_current_thread()->interrupt_data,
- sizeof (struct interrupt_data));
- else
- memcpy(th->interrupt_data,global_interrupt_data,
- sizeof (struct interrupt_data));
-
+ th->interrupt_data->pending_handler = 0;
th->no_tls_value_marker=initial_function;
return th;
}
th->no_tls_value_marker=initial_function;
return th;
}