hRes = CreateEvent ( NULL, // no security attrs\r
TRUE, // manual reset\r
FALSE, // initial state,\r
- "IO Manager Event" );\r
+ NULL ); // event name: NULL for private events\r
if (hRes == NULL) {\r
sysErrorBelch("getIOManagerEvent");\r
stg_exit(EXIT_FAILURE);\r
\r
#endif\r
\r
-StgWord32\r
+HsWord32\r
readIOManagerEvent (void)\r
{\r
// This function must exist even in non-THREADED_RTS, \r
// see getIOManagerEvent() above.\r
#if defined(THREADED_RTS)\r
- StgWord32 res;\r
+ HsWord32 res;\r
\r
- ACQUIRE_LOCK(&event_buf_mutex);\r
if (io_manager_event != INVALID_HANDLE_VALUE) {\r
+ ACQUIRE_LOCK(&event_buf_mutex);\r
if (next_event == 0) {\r
res = 0; // no event to return\r
} else {\r
- res = event_buf[--next_event];\r
+ res = (HsWord32)(event_buf[--next_event]);\r
if (next_event == 0) {\r
if (!ResetEvent(io_manager_event)) {\r
sysErrorBelch("readIOManagerEvent");\r
}\r
}\r
}\r
+ RELEASE_LOCK(&event_buf_mutex);\r
} else {\r
res = 0;\r
}\r
- RELEASE_LOCK(&event_buf_mutex);\r
// debugBelch("readIOManagerEvent: %d\n", res);\r
return res;\r
#else\r
}\r
\r
void\r
-sendIOManagerEvent (StgWord32 event)\r
+sendIOManagerEvent (HsWord32 event)\r
{\r
#if defined(THREADED_RTS)\r
// debugBelch("sendIOManagerEvent: %d\n", event);\r
- ACQUIRE_LOCK(&event_buf_mutex);\r
if (io_manager_event != INVALID_HANDLE_VALUE) {\r
+ ACQUIRE_LOCK(&event_buf_mutex);\r
if (next_event == EVENT_BUFSIZ) {\r
errorBelch("event buffer overflowed; event dropped");\r
} else {\r
sysErrorBelch("sendIOManagerEvent");\r
stg_exit(EXIT_FAILURE);\r
} \r
- event_buf[next_event++] = event;\r
+ event_buf[next_event++] = (StgWord32)event;\r
}\r
+ RELEASE_LOCK(&event_buf_mutex);\r
}\r
- RELEASE_LOCK(&event_buf_mutex);\r
#endif\r
} \r
\r
Capability *cap;\r
if (io_manager_event == INVALID_HANDLE_VALUE) {\r
cap = rts_lock();\r
+#if defined(mingw32_HOST_OS) && defined(__PIC__)\r
+ rts_evalIO(cap,_imp__base_GHCziConc_ensureIOManagerIsRunning_closure,NULL);\r
+#else\r
rts_evalIO(cap,&base_GHCziConc_ensureIOManagerIsRunning_closure,NULL);\r
+#endif\r
rts_unlock(cap);\r
}\r
}\r