X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fthreads.impure.lisp;h=5da2c1b69f85d09039b4ec637f3dc9ce80d93714;hb=911a74c40f7bc0ce13dfd5fa96ce83188d356fc3;hp=ddd1ef0243f2f654884adb665075beb9c562b492;hpb=179de85ab4fdff049c72ddb2767b93d838494b09;p=sbcl.git diff --git a/tests/threads.impure.lisp b/tests/threads.impure.lisp index ddd1ef0..5da2c1b 100644 --- a/tests/threads.impure.lisp +++ b/tests/threads.impure.lisp @@ -37,18 +37,6 @@ (with-mutex (mutex) mutex))) -(with-test (:name (:with-mutex :timeout)) - (let ((m (make-mutex))) - (with-mutex (m) - (assert (null (join-thread (make-thread - (lambda () - (with-mutex (m :timeout 0.1) - t))))))) - (assert (join-thread (make-thread - (lambda () - (with-mutex (m :timeout 0.1) - t))))))) - (sb-alien:define-alien-routine "check_deferrables_blocked_or_lose" void (where sb-alien:unsigned-long)) @@ -84,6 +72,18 @@ ;;;; Now the real tests... +(with-test (:name (:with-mutex :timeout)) + (let ((m (make-mutex))) + (with-mutex (m) + (assert (null (join-thread (make-thread + (lambda () + (with-mutex (m :timeout 0.1) + t))))))) + (assert (join-thread (make-thread + (lambda () + (with-mutex (m :timeout 0.1) + t))))))) + (with-test (:name (:interrupt-thread :deferrables-unblocked-by-lock)) (let ((lock (sb-thread::make-mutex)) (thread (make-join-thread (lambda () @@ -212,8 +212,7 @@ (format o "void loop_forever() { while(1) ; }~%")) (sb-ext:run-program "/bin/sh" '("run-compiler.sh" "-sbcl-pic" "-sbcl-shared" - "-o" "threads-foreign.so" "threads-foreign.c") - :environment (test-util::test-env)) + "-o" "threads-foreign.so" "threads-foreign.c")) (sb-alien:load-shared-object (truename "threads-foreign.so")) (sb-alien:define-alien-routine loop-forever sb-alien:void) (delete-file "threads-foreign.c")) @@ -1553,3 +1552,16 @@ (sb-thread:join-thread reader))))) (writer)) (assert (eq result :ok)))) + +(with-test (:name :thread-alloca) + (sb-ext:run-program "sh" + '("run-compiler.sh" "-sbcl-pic" "-sbcl-shared" + "alloca.c" "-o" "alloca.so") + :search t) + (load-shared-object (truename "alloca.so")) + + (alien-funcall (extern-alien "alloca_test" (function void))) + (sb-thread:join-thread + (sb-thread:make-thread + (lambda () + (alien-funcall (extern-alien "alloca_test" (function void)))))))