|
[Sbcl-commits] CVS: sbcl/src/compiler/generic objdef.lisp,1.30.6.1,1.30.6.2
From: Daniel Barlow <dan_b@us...> - 2005-03-03 00:42
|
Update of /cvsroot/sbcl/sbcl/src/compiler/generic
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23164/src/compiler/generic
Modified Files:
Tag: amd64-pthread-branch
objdef.lisp
Log Message:
First attempt (non-working but ought to in principle, I think,
probably) at implementing interrupt-threads using pthreads.
Two known issues:
1) The immediate and pressing reason it doesn't work is that something
in interrupt_thread is lopping off the high word of the return value
from alloc_cons before storing it in th->interrupt_fun. This is
undoubtedy some problem with abuse of C's static typechecking, but I
cannot presently see what. You can observe this with something as
simple as
(sb-thread:make-thread (lambda () (sleep 60)))
(sb-thread:interrupt-thread * #'break)
2) GC does not know about this thread->interrupt_fun slot and should
be told, in case it relocates the list between signal issuance (is
that a word?) and delivery.
Index: objdef.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/objdef.lisp,v
retrieving revision 1.30.6.1
retrieving revision 1.30.6.2
diff -u -d -r1.30.6.1 -r1.30.6.2
--- objdef.lisp 6 Feb 2005 00:00:28 -0000 1.30.6.1
+++ objdef.lisp 3 Mar 2005 00:42:32 -0000 1.30.6.2
@@ -378,6 +378,8 @@
(state) ; running, stopping, stopped, dead
#!+(or x86 x86-64) (pseudo-atomic-atomic)
#!+(or x86 x86-64) (pseudo-atomic-interrupted)
+ (interrupt-fun)
+ (interrupt-fun-lock)
(interrupt-data :c-type "struct interrupt_data *"
:length #!+alpha 2 #!-alpha 1)
(interrupt-contexts :c-type "os_context_t *" :rest-p t))
|
| Thread | Author | Date |
|---|---|---|
| [Sbcl-commits] CVS: sbcl/src/compiler/generic objdef.lisp,1.30.6.1,1.30.6.2 | Daniel Barlow <dan_b@us...> |