From 7543711db25a39cff8c19d4bdf02639255f1912f Mon Sep 17 00:00:00 2001 From: sof Date: Sat, 13 Apr 2002 05:28:04 +0000 Subject: [PATCH] [project @ 2002-04-13 05:28:04 by sof] entry points that scheduled/created an external thread weren't correctly blocking on the TSO condition variable; now fixed. --- ghc/rts/RtsAPI.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ghc/rts/RtsAPI.c b/ghc/rts/RtsAPI.c index e01a559..cd0ef4c 100644 --- a/ghc/rts/RtsAPI.c +++ b/ghc/rts/RtsAPI.c @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.c,v 1.33 2002/02/15 07:40:10 sof Exp $ + * $Id: RtsAPI.c,v 1.34 2002/04/13 05:28:04 sof Exp $ * * (c) The GHC Team, 1998-2001 * @@ -20,8 +20,10 @@ #if defined(THREADED_RTS) #define WAIT_MAIN_THREAD(tso,ret) waitThread_(tso,ret,rtsFalse) +#define WAIT_EXT_THREAD(tso,ret) waitThread_(tso,ret,rtsTrue) #else #define WAIT_MAIN_THREAD(tso,ret) waitThread(tso,ret) +#define WAIT_EXT_THREAD(tso,ret) waitThread(tso,ret) #endif #if defined(RTS_SUPPORTS_THREADS) @@ -454,7 +456,7 @@ rts_eval (HaskellObj p, /*out*/HaskellObj *ret) tso = createGenThread(RtsFlags.GcFlags.initialStkSize, p); releaseAllocLock(); scheduleExtThread(tso); - return waitThread(tso, ret); + return WAIT_EXT_THREAD(tso, ret); } SchedulerStatus @@ -465,7 +467,7 @@ rts_eval_ (HaskellObj p, unsigned int stack_size, /*out*/HaskellObj *ret) tso = createGenThread(stack_size, p); releaseAllocLock(); scheduleExtThread(tso); - return waitThread(tso, ret); + return WAIT_EXT_THREAD(tso, ret); } /* @@ -480,7 +482,7 @@ rts_evalIO (HaskellObj p, /*out*/HaskellObj *ret) tso = createStrictIOThread(RtsFlags.GcFlags.initialStkSize, p); releaseAllocLock(); scheduleExtThread(tso); - return waitThread(tso, ret); + return WAIT_EXT_THREAD(tso, ret); } /* @@ -515,7 +517,7 @@ rts_evalStableIO (HsStablePtr s, /*out*/HsStablePtr *ret) tso = createStrictIOThread(RtsFlags.GcFlags.initialStkSize, p); releaseAllocLock(); scheduleExtThread(tso); - stat = waitThread(tso, &r); + stat = WAIT_EXT_THREAD(tso, &r); if (stat == Success) { ASSERT(r != NULL); @@ -536,7 +538,7 @@ rts_evalLazyIO (HaskellObj p, unsigned int stack_size, /*out*/HaskellObj *ret) tso = createIOThread(stack_size, p); releaseAllocLock(); scheduleExtThread(tso); - return waitThread(tso, ret); + return WAIT_EXT_THREAD(tso, ret); } /* Convenience function for decoding the returned status. */ -- 1.7.10.4