1.0.14.1: lisp-side interrupt handling improvements
[sbcl.git] / src / code / target-thread.lisp
index ec94be8..218e355 100644 (file)
@@ -250,7 +250,8 @@ ALLOW-WITH-INTERRUPTS allows the call to be interrupted from sleep.
 
 It is recommended that you use WITH-MUTEX instead of calling GET-MUTEX
 directly."
-  (declare (type mutex mutex) (optimize (speed 3)))
+  (declare (type mutex mutex) (optimize (speed 3))
+           #!-sb-thread (ignore waitp))
   (unless new-owner
     (setq new-owner *current-thread*))
   (when (eql new-owner (mutex-%owner mutex))
@@ -682,12 +683,14 @@ around and can be retrieved by JOIN-THREAD."
                   (*restart-clusters* nil)
                   (*handler-clusters* nil)
                   (*condition-restarts* nil)
+                  (sb!impl::*deadline* nil)
                   (sb!impl::*step-out* nil)
                   ;; internal printer variables
                   (sb!impl::*previous-case* nil)
                   (sb!impl::*previous-readtable-case* nil)
-                  (sb!impl::*merge-sort-temp-vector* (vector)) ; keep these small!
-                  (sb!impl::*zap-array-data-temp* (vector))    ;
+                  (empty (vector))
+                  (sb!impl::*merge-sort-temp-vector* empty)
+                  (sb!impl::*zap-array-data-temp* empty)
                   (sb!impl::*internal-symbol-output-fun* nil)
                   (sb!impl::*descriptor-handlers* nil)) ; serve-event
               (setf (thread-os-thread thread) (current-thread-sap-id))
@@ -842,6 +845,12 @@ SB-EXT:QUIT - the usual cleanup forms will be evaluated"
              (sap-ref-sap thread-sap (* sb!vm:n-word-bytes
                                         sb!vm::thread-next-slot)))))))
 
+(define-alien-routine "thread_yield" int)
+
+#!+sb-doc
+(setf (fdocumentation 'thread-yield 'function)
+      "Yield the processor to other threads.")
+
 #!+sb-thread
 (defun symbol-value-in-thread (symbol thread-sap)
   (let* ((index (sb!vm::symbol-tls-index symbol))