summaryrefslogtreecommitdiff
path: root/rts/win32/AsyncWinIO.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/win32/AsyncWinIO.c')
-rw-r--r--rts/win32/AsyncWinIO.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/rts/win32/AsyncWinIO.c b/rts/win32/AsyncWinIO.c
index 5f61f815f3..fa397c343d 100644
--- a/rts/win32/AsyncWinIO.c
+++ b/rts/win32/AsyncWinIO.c
@@ -24,6 +24,7 @@
#include <stdio.h>
/* Note [Non-Threaded WINIO design]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Compared to Async MIO, Async WINIO does all of the heavy processing at the
Haskell side of things. The same code as the threaded WINIO is re-used for
the Non-threaded version. Of course since we are in a non-threaded rts we
@@ -122,10 +123,8 @@
See also Note [WINIO Manager design].
+ Note [Notifying the RTS/Haskell of completed events]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Note [Notifying the RTS/Haskell of completed events]
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
The C side runner can't directly create a haskell thread.
With the current API of the haskell runtime this would be terrible
unsound. In particular the GC assumes no heap objects are generated,
@@ -137,10 +136,8 @@
ensures there is only one OS thread at a time making use of the haskell
heap.
+ Note [Non-Threaded IO Manager startup sequence]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Note [Non-Threaded IO Manager startup sequence]
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
Under the new IO Manager we run a bit of initialization under
hs_init(). The first call into actual IO manager code is a
invocation of startupAsyncWinIO();