From 582e032f94e4ab3cddade29d2d7907833c54e46e Mon Sep 17 00:00:00 2001 From: sof Date: Sat, 12 Jul 2003 00:10:31 +0000 Subject: [PATCH] [project @ 2003-07-12 00:10:31 by sof] awaitRequests(): BlockedOnDelay threads not expected on blocked_queue --- ghc/rts/win32/AsyncIO.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ghc/rts/win32/AsyncIO.c b/ghc/rts/win32/AsyncIO.c index 7efaf14..0086696 100644 --- a/ghc/rts/win32/AsyncIO.c +++ b/ghc/rts/win32/AsyncIO.c @@ -5,6 +5,7 @@ * (c) sof, 2002-2003. */ #include "Rts.h" +#include "RtsUtils.h" #include #include #include "Schedule.h" @@ -195,7 +196,6 @@ start: prev = NULL; for(tso = blocked_queue_hd ; tso != END_TSO_QUEUE; tso = tso->link) { switch(tso->why_blocked) { - case BlockedOnDelay: case BlockedOnRead: case BlockedOnWrite: case BlockedOnDoProc: @@ -203,11 +203,9 @@ start: /* Found the thread blocked waiting on request; stodgily fill * in its result block. */ - if (tso->why_blocked != BlockedOnDelay) { - tso->block_info.async_result->len = completedTable[i].len; - tso->block_info.async_result->errCode = completedTable[i].errCode; - } - + tso->block_info.async_result->len = completedTable[i].len; + tso->block_info.async_result->errCode = completedTable[i].errCode; + /* Drop the matched TSO from blocked_queue */ if (prev) { prev->link = tso->link; @@ -225,6 +223,9 @@ start: } break; default: + if (tso->why_blocked != NotBlocked) { + barf("awaitRequests: odd thread state"); + } break; } prev = tso; -- 1.7.10.4