Update of /cvsroot/sbcl/sbcl
In directory sc8-pr-cvs1:/tmp/cvs-serv7708
Modified Files:
Tag: dan_native_threads_branch
version.lisp-expr TODO.dan
Log Message:
0.7.9.54.thread.2
_Experimental_ branch for Linux native thread support.
From time to time the code checked in on this branch may compile,
and possibly even run. This is by no means guaranteed
new files thread.[ch] to create threads and their associated resources
(control stack, binding stack etc).
segment selector frobbing moved into x86-linux-os.c where thread.c can
call it
fairly pervasive, fairly obvious changes to runtime to use per-thread
variables for stacks etc in GC, purify, globals_init, etc; also to
do the relevant things once for each thread instead of just once
temporarily ripped out the control stack guard checking as it doesn't
work with multiple control stacks (will need to be re-enabled)
we actually call clone() ! (Only once, though, and the parent just
idles. Don't get too excited)
x86-assem.S gets simpler now that it doesn't need to mess about with
stacks as much
Index: version.lisp-expr
===================================================================
RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v
retrieving revision 1.662
retrieving revision 1.662.2.1
diff -u -d -r1.662 -r1.662.2.1
--- version.lisp-expr 18 Nov 2002 05:52:19 -0000 1.662
+++ version.lisp-expr 24 Nov 2002 13:14:15 -0000 1.662.2.1
@@ -18,4 +18,4 @@
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.7.9.54"
+"0.7.9.54.thread.1"
Index: TODO.dan
===================================================================
RCS file: /cvsroot/sbcl/sbcl/Attic/TODO.dan,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- TODO.dan 24 Nov 2002 02:36:42 -0000 1.1.2.1
+++ TODO.dan 24 Nov 2002 13:14:15 -0000 1.1.2.2
@@ -1,5 +1,3 @@
-1) fill tlv with unbound markers
-
2) grow tlv when full
3) implement bind vop
@@ -8,11 +6,38 @@
5) implement set-symbol-value
-6) figure out all the places using fast variants of symbol values
+6) figure out all the places using set directly, fast variants of
+ symbol-value, etc, and how to fix them
-7) work out what to do with static symbols, some of which
- may have bindings that are expected to be visible across thread switches
- (e.g. without-preemption)
+7) some static symbols need attention
-8) reintroduce per-thread stacks and stuff from the last time we did
- this
+ ;; these are per-thread indexes into binding stack, I think
+ *current-catch-block*
+ *current-unwind-protect-block*
+ *binding-stack-pointer*
+
+ ;; interrupt handling. these all need attention
+ *pseudo-atomic-atomic*
+ *pseudo-atomic-interrupted*
+ sb!unix::*interrupt-pending*
+ *free-interrupt-context-index*
+ sb!unix::*interrupts-enabled*
+
+ ;; either we have to lock around this, or provide each thread its
+ ;; own region
+ *allocation-pointer*
+
+8) after doing 7, fix up the things that are expected to happen
+ per-thread (e.g. binding stack scavenging)
+
+9) when creating a new thread, initialise dynamic bindings from
+ current thread, not from initial thread
+
+10) locking
+
+11) THREAD_CONTROL_STACK_SIZE value is hardcoded in debug-int.lisp
+
+12) fix ROOM
+
+13) fix other runtime stuff that has been temporarily ripped out
+ - control stack scrubbing and bounds checking
|