projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix warnings
[ghc-hetmet.git]
/
rts
/
win32
/
ThrIOManager.c
diff --git
a/rts/win32/ThrIOManager.c
b/rts/win32/ThrIOManager.c
index
76747c2
..
50dd4fb
100644
(file)
--- a/
rts/win32/ThrIOManager.c
+++ b/
rts/win32/ThrIOManager.c
@@
-8,7
+8,7
@@
* ---------------------------------------------------------------------------*/
\r
\r
#include "Rts.h"
\r
* ---------------------------------------------------------------------------*/
\r
\r
#include "Rts.h"
\r
-#include "ThrIOManager.h"
\r
+#include "IOManager.h"
\r
#include "Prelude.h"
\r
#include <windows.h>
\r
\r
#include "Prelude.h"
\r
#include <windows.h>
\r
\r
@@
-34,7
+34,7
@@
getIOManagerEvent (void)
hRes = CreateEvent ( NULL, // no security attrs
\r
TRUE, // manual reset
\r
FALSE, // initial state,
\r
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
if (hRes == NULL) {
\r
sysErrorBelch("getIOManagerEvent");
\r
stg_exit(EXIT_FAILURE);
\r
@@
-67,8
+67,8
@@
readIOManagerEvent (void)
#if defined(THREADED_RTS)
\r
HsWord32 res;
\r
\r
#if defined(THREADED_RTS)
\r
HsWord32 res;
\r
\r
- ACQUIRE_LOCK(&event_buf_mutex);
\r
if (io_manager_event != INVALID_HANDLE_VALUE) {
\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
if (next_event == 0) {
\r
res = 0; // no event to return
\r
} else {
\r
@@
-80,10
+80,10
@@
readIOManagerEvent (void)
}
\r
}
\r
}
\r
}
\r
}
\r
}
\r
+ RELEASE_LOCK(&event_buf_mutex);
\r
} else {
\r
res = 0;
\r
}
\r
} else {
\r
res = 0;
\r
}
\r
- RELEASE_LOCK(&event_buf_mutex);
\r
// debugBelch("readIOManagerEvent: %d\n", res);
\r
return res;
\r
#else
\r
// debugBelch("readIOManagerEvent: %d\n", res);
\r
return res;
\r
#else
\r
@@
-96,8
+96,8
@@
sendIOManagerEvent (HsWord32 event)
{
\r
#if defined(THREADED_RTS)
\r
// debugBelch("sendIOManagerEvent: %d\n", 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
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
if (next_event == EVENT_BUFSIZ) {
\r
errorBelch("event buffer overflowed; event dropped");
\r
} else {
\r
@@
-107,18
+107,18
@@
sendIOManagerEvent (HsWord32 event)
}
\r
event_buf[next_event++] = (StgWord32)event;
\r
}
\r
}
\r
event_buf[next_event++] = (StgWord32)event;
\r
}
\r
+ RELEASE_LOCK(&event_buf_mutex);
\r
}
\r
}
\r
- RELEASE_LOCK(&event_buf_mutex);
\r
#endif
\r
}
\r
\r
#endif
\r
}
\r
\r
-#if defined(THREADED_RTS)
\r
void
\r
ioManagerWakeup (void)
\r
{
\r
sendIOManagerEvent(IO_MANAGER_WAKEUP);
\r
}
\r
\r
void
\r
ioManagerWakeup (void)
\r
{
\r
sendIOManagerEvent(IO_MANAGER_WAKEUP);
\r
}
\r
\r
+#if defined(THREADED_RTS)
\r
void
\r
ioManagerDie (void)
\r
{
\r
void
\r
ioManagerDie (void)
\r
{
\r
@@
-137,7
+137,11
@@
ioManagerStart (void)
Capability *cap;
\r
if (io_manager_event == INVALID_HANDLE_VALUE) {
\r
cap = rts_lock();
\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
rts_evalIO(cap,&base_GHCziConc_ensureIOManagerIsRunning_closure,NULL);
\r
+#endif
\r
rts_unlock(cap);
\r
}
\r
}
\r
rts_unlock(cap);
\r
}
\r
}
\r