X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fwin32%2FAsyncIO.c;h=cd0cf38bab2a176b75051a7e3410eaa29a8cf80f;hb=de6c8e5293c9ef68b597ab2e6d55c3f42a283489;hp=2ff92d96424ce97321f6d7e3a289236ab130f247;hpb=aba81b16e17d8dbd3081d20e062dbc8f9e2f783b;p=ghc-hetmet.git diff --git a/rts/win32/AsyncIO.c b/rts/win32/AsyncIO.c index 2ff92d9..cd0cf38 100644 --- a/rts/win32/AsyncIO.c +++ b/rts/win32/AsyncIO.c @@ -4,6 +4,9 @@ * * (c) sof, 2002-2003. */ + +#if !defined(THREADED_RTS) + #include "Rts.h" #include "RtsUtils.h" #include @@ -45,8 +48,8 @@ typedef struct CompletedReq { #define MAX_REQUESTS 200 static CRITICAL_SECTION queue_lock; -static HANDLE completed_req_event; -static HANDLE abandon_req_wait; +static HANDLE completed_req_event = INVALID_HANDLE_VALUE; +static HANDLE abandon_req_wait = INVALID_HANDLE_VALUE; static HANDLE wait_handles[2]; static CompletedReq completedTable[MAX_REQUESTS]; static int completed_hw; @@ -173,8 +176,19 @@ startupAsyncIO() void shutdownAsyncIO() { - CloseHandle(completed_req_event); ShutdownIOManager(); + if (completed_req_event != INVALID_HANDLE_VALUE) { + CloseHandle(completed_req_event); + completed_req_event = INVALID_HANDLE_VALUE; + } + if (abandon_req_wait != INVALID_HANDLE_VALUE) { + CloseHandle(abandon_req_wait); + abandon_req_wait = INVALID_HANDLE_VALUE; + } + if (completed_table_sema != NULL) { + CloseHandle(completed_table_sema); + completed_table_sema = NULL; + } } /* @@ -343,3 +357,4 @@ resetAbandonRequestWait( void ) ResetEvent(abandon_req_wait); } +#endif /* !defined(THREADED_RTS) */