r10152: Automated commit for Debian build of kmrcl upstream-version-1.78
[kmrcl.git] / processes.lisp
index 88aa05113da3613e973a863dd318fc2d4d275be9..db626132664cfe39f90e52d613e0155cb9e3573c 100644 (file)
@@ -18,7 +18,8 @@
   #+cmu (mp:make-process func :name name)
   #+lispworks (mp:process-run-function name nil func)
   #+sb-thread (sb-thread:make-thread func)
-  #-(or allegro cmu lispworks sb-thread) (funcall func)
+  #+openmcl (ccl:process-run-function name func)
+  #-(or allegro cmu lispworks sb-thread openmcl) (funcall func)
   )
 
 (defun destroy-process (process)
@@ -26,6 +27,7 @@
   #+allegro (mp:process-kill process)
   #+sb-thread (sb-thread:destroy-thread process)
   #+lispworks (mp:process-kill process)
+  #+openmcl (ccl:process-kill process)
   )
 
 (defun make-lock (name)
@@ -33,6 +35,7 @@
   #+cmu (mp:make-lock name)
   #+lispworks (mp:make-lock :name name)
   #+sb-thread (sb-thread:make-mutex :name name)
+  #+openmcl (ccl:make-lock name)
   )
 
 (defmacro with-lock-held ((lock) &body body)
@@ -44,7 +47,9 @@
   `(mp:with-lock (,lock) ,@body)
   #+sb-thread
   `(sb-thread:with-mutex (,lock) ,@body)
-  #-(or allegro cmu lispworks sb-thread)
+  #+openmcl
+  `(ccl:with-lock-grabbed (,lock) ,@body)
+  #-(or allegro cmu lispworks sb-thread openmcl)
   `(progn ,@body)
   )
 
   `(mp:with-timeout (,seconds) ,@body)
   #+sb-thread
   `(sb-ext:with-timeout ,seconds ,@body)
-  #-(or allegro cmu sb-thread)
+  #+openmcl
+  `(ccl:process-wait-with-timeout "waiting"
+                                 (* ,seconds ccl:*ticks-per-second*)
+                                 #'(lambda ()
+                                     ,@body) nil)
+  #-(or allegro cmu sb-thread openmcl)
   `(progn ,@body)
   )