summaryrefslogtreecommitdiff
path: root/libraries/base/GHC/Conc/IO.hs
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/base/GHC/Conc/IO.hs')
-rw-r--r--libraries/base/GHC/Conc/IO.hs34
1 files changed, 19 insertions, 15 deletions
diff --git a/libraries/base/GHC/Conc/IO.hs b/libraries/base/GHC/Conc/IO.hs
index 344a688d28..869847e77a 100644
--- a/libraries/base/GHC/Conc/IO.hs
+++ b/libraries/base/GHC/Conc/IO.hs
@@ -65,12 +65,14 @@ import GHC.IO.SubSystem
import GHC.Conc.Windows (asyncRead, asyncWrite, asyncDoProc, asyncReadBA,
asyncWriteBA, ConsoleEvent(..), win32ConsoleHandler,
toWin32ConsoleEvent)
-#else
+#elif !defined(js_HOST_ARCH)
import qualified GHC.Event.Thread as Event
#endif
ensureIOManagerIsRunning :: IO ()
-#if !defined(mingw32_HOST_OS)
+#if defined(js_HOST_ARCH)
+ensureIOManagerIsRunning = pure ()
+#elif !defined(mingw32_HOST_OS)
ensureIOManagerIsRunning = Event.ensureIOManagerIsRunning
#else
ensureIOManagerIsRunning = Windows.ensureIOManagerIsRunning
@@ -89,7 +91,7 @@ interruptIOManager = Windows.interruptIOManager
#endif
ioManagerCapabilitiesChanged :: IO ()
-#if !defined(mingw32_HOST_OS)
+#if !defined(mingw32_HOST_OS) && !defined(js_HOST_ARCH)
ioManagerCapabilitiesChanged = Event.ioManagerCapabilitiesChanged
#else
ioManagerCapabilitiesChanged = return ()
@@ -103,7 +105,7 @@ ioManagerCapabilitiesChanged = return ()
-- that has been used with 'threadWaitRead', use 'closeFdWith'.
threadWaitRead :: Fd -> IO ()
threadWaitRead fd
-#if !defined(mingw32_HOST_OS)
+#if !defined(mingw32_HOST_OS) && !defined(js_HOST_ARCH)
| threaded = Event.threadWaitRead fd
#endif
| otherwise = IO $ \s ->
@@ -119,7 +121,7 @@ threadWaitRead fd
-- that has been used with 'threadWaitWrite', use 'closeFdWith'.
threadWaitWrite :: Fd -> IO ()
threadWaitWrite fd
-#if !defined(mingw32_HOST_OS)
+#if !defined(mingw32_HOST_OS) && !defined(js_HOST_ARCH)
| threaded = Event.threadWaitWrite fd
#endif
| otherwise = IO $ \s ->
@@ -133,7 +135,7 @@ threadWaitWrite fd
-- in the file descriptor.
threadWaitReadSTM :: Fd -> IO (Sync.STM (), IO ())
threadWaitReadSTM fd
-#if !defined(mingw32_HOST_OS)
+#if !defined(mingw32_HOST_OS) && !defined(js_HOST_ARCH)
| threaded = Event.threadWaitReadSTM fd
#endif
| otherwise = do
@@ -152,7 +154,7 @@ threadWaitReadSTM fd
-- in the file descriptor.
threadWaitWriteSTM :: Fd -> IO (Sync.STM (), IO ())
threadWaitWriteSTM fd
-#if !defined(mingw32_HOST_OS)
+#if !defined(mingw32_HOST_OS) && !defined(js_HOST_ARCH)
| threaded = Event.threadWaitWriteSTM fd
#endif
| otherwise = do
@@ -177,7 +179,7 @@ closeFdWith :: (Fd -> IO ()) -- ^ Low-level action that performs the real close.
-> Fd -- ^ File descriptor to close.
-> IO ()
closeFdWith close fd
-#if !defined(mingw32_HOST_OS)
+#if !defined(mingw32_HOST_OS) && !defined(js_HOST_ARCH)
| threaded = Event.closeFdWith close fd
#endif
| otherwise = close fd
@@ -197,8 +199,8 @@ threadDelay time
#if defined(mingw32_HOST_OS)
| isWindowsNativeIO = Windows.threadDelay time
| threaded = Windows.threadDelay time
-#else
- | threaded = Event.threadDelay time
+#elif !defined(js_HOST_ARCH)
+ | threaded = Event.threadDelay time
#endif
| otherwise = IO $ \s ->
case time of { I# time# ->
@@ -213,13 +215,15 @@ threadDelay time
-- 2147483647 μs, less than 36 minutes.
--
registerDelay :: Int -> IO (TVar Bool)
-registerDelay usecs
+registerDelay _usecs
#if defined(mingw32_HOST_OS)
- | isWindowsNativeIO = Windows.registerDelay usecs
- | threaded = Windows.registerDelay usecs
-#else
- | threaded = Event.registerDelay usecs
+ | isWindowsNativeIO = Windows.registerDelay _usecs
+ | threaded = Windows.registerDelay _usecs
+#elif !defined(js_HOST_ARCH)
+ | threaded = Event.registerDelay _usecs
#endif
| otherwise = errorWithoutStackTrace "registerDelay: requires -threaded"
+#if !defined(js_HOST_ARCH)
foreign import ccall unsafe "rtsSupportsBoundThreads" threaded :: Bool
+#endif