diff options
Diffstat (limited to 'rts/win32/AsyncWinIO.c')
-rw-r--r-- | rts/win32/AsyncWinIO.c | 9 |
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(); |