Massive patch for the first months work adding System FC to GHC #35
[ghc-hetmet.git] / rts / win32 / OSThreads.c
index c772be3..32800e7 100644 (file)
@@ -38,7 +38,8 @@ initCondition( Condition* pCond )
                          NULL); /* unnamed => process-local. */
   
   if ( h == NULL ) {
-    errorBelch("initCondition: unable to create");
+      sysErrorBelch("initCondition: unable to create");
+      stg_exit(EXIT_FAILURE);
   }
   *pCond = h;
   return;
@@ -48,7 +49,7 @@ void
 closeCondition( Condition* pCond )
 {
   if ( CloseHandle(*pCond) == 0 ) {
-    errorBelch("closeCondition: failed to close");
+      sysErrorBelch("closeCondition: failed to close");
   }
   return;
 }
@@ -64,7 +65,8 @@ rtsBool
 signalCondition ( Condition* pCond )
 {
     if (SetEvent(*pCond) == 0) {
-       barf("SetEvent: %d", GetLastError());
+       sysErrorBelch("SetEvent");
+       stg_exit(EXIT_FAILURE);
     }
     return rtsTrue;
 }
@@ -116,6 +118,11 @@ initMutex (Mutex* pMut)
 {
     InitializeCriticalSectionAndSpinCount(pMut,4000);
 }
+void
+closeMutex (Mutex* pMut)
+{
+    DeleteCriticalSection(pMut);
+}
 #else
 void
 initMutex (Mutex* pMut)
@@ -127,6 +134,11 @@ initMutex (Mutex* pMut)
   *pMut = h;
   return;
 }
+void
+closeMutex (Mutex* pMut)
+{
+    CloseHandle(*pMut);
+}
 #endif
 
 void