add GHC.HetMet.{hetmet_kappa,hetmet_kappa_app}
[ghc-base.git] / GHC / Conc.lhs
1 \begin{code}
2 {-# LANGUAGE CPP, NoImplicitPrelude #-}
3 {-# OPTIONS_GHC -fno-warn-missing-signatures #-}
4 {-# OPTIONS_HADDOCK not-home #-}
5
6 -----------------------------------------------------------------------------
7 -- |
8 -- Module      :  GHC.Conc
9 -- Copyright   :  (c) The University of Glasgow, 1994-2002
10 -- License     :  see libraries/base/LICENSE
11 -- 
12 -- Maintainer  :  cvs-ghc@haskell.org
13 -- Stability   :  internal
14 -- Portability :  non-portable (GHC extensions)
15 --
16 -- Basic concurrency stuff.
17 -- 
18 -----------------------------------------------------------------------------
19
20 -- No: #hide, because bits of this module are exposed by the stm package.
21 -- However, we don't want this module to be the home location for the
22 -- bits it exports, we'd rather have Control.Concurrent and the other
23 -- higher level modules be the home.  Hence:
24
25 #include "Typeable.h"
26
27 -- #not-home
28 module GHC.Conc
29         ( ThreadId(..)
30
31         -- * Forking and suchlike
32         , forkIO        -- :: IO a -> IO ThreadId
33         , forkIOUnmasked
34         , forkIOWithUnmask
35         , forkOn
36         , forkOnIO      -- :: Int -> IO a -> IO ThreadId
37         , forkOnIOUnmasked
38         , forkOnWithUnmask
39         , numCapabilities -- :: Int
40         , getNumCapabilities -- :: IO Int
41         , numSparks       -- :: IO Int
42         , childHandler  -- :: Exception -> IO ()
43         , myThreadId    -- :: IO ThreadId
44         , killThread    -- :: ThreadId -> IO ()
45         , throwTo       -- :: ThreadId -> Exception -> IO ()
46         , par           -- :: a -> b -> b
47         , pseq          -- :: a -> b -> b
48         , runSparks
49         , yield         -- :: IO ()
50         , labelThread   -- :: ThreadId -> String -> IO ()
51
52         , ThreadStatus(..), BlockReason(..)
53         , threadStatus  -- :: ThreadId -> IO ThreadStatus
54         , threadCapability
55
56         -- * Waiting
57         , threadDelay           -- :: Int -> IO ()
58         , registerDelay         -- :: Int -> IO (TVar Bool)
59         , threadWaitRead        -- :: Int -> IO ()
60         , threadWaitWrite       -- :: Int -> IO ()
61         , closeFdWith           -- :: (Fd -> IO ()) -> Fd -> IO ()
62
63         -- * TVars
64         , STM(..)
65         , atomically    -- :: STM a -> IO a
66         , retry         -- :: STM a
67         , orElse        -- :: STM a -> STM a -> STM a
68         , throwSTM      -- :: Exception e => e -> STM a
69         , catchSTM      -- :: Exception e => STM a -> (e -> STM a) -> STM a
70         , alwaysSucceeds -- :: STM a -> STM ()
71         , always        -- :: STM Bool -> STM ()
72         , TVar(..)
73         , newTVar       -- :: a -> STM (TVar a)
74         , newTVarIO     -- :: a -> STM (TVar a)
75         , readTVar      -- :: TVar a -> STM a
76         , readTVarIO    -- :: TVar a -> IO a
77         , writeTVar     -- :: a -> TVar a -> STM ()
78         , unsafeIOToSTM -- :: IO a -> STM a
79
80         -- * Miscellaneous
81         , withMVar
82 #ifdef mingw32_HOST_OS
83         , asyncRead     -- :: Int -> Int -> Int -> Ptr a -> IO (Int, Int)
84         , asyncWrite    -- :: Int -> Int -> Int -> Ptr a -> IO (Int, Int)
85         , asyncDoProc   -- :: FunPtr (Ptr a -> IO Int) -> Ptr a -> IO Int
86
87         , asyncReadBA   -- :: Int -> Int -> Int -> Int -> MutableByteArray# RealWorld -> IO (Int, Int)
88         , asyncWriteBA  -- :: Int -> Int -> Int -> Int -> MutableByteArray# RealWorld -> IO (Int, Int)
89 #endif
90
91 #ifndef mingw32_HOST_OS
92         , Signal, HandlerFun, setHandler, runHandlers
93 #endif
94
95         , ensureIOManagerIsRunning
96
97 #ifdef mingw32_HOST_OS
98         , ConsoleEvent(..)
99         , win32ConsoleHandler
100         , toWin32ConsoleEvent
101 #endif
102         , setUncaughtExceptionHandler      -- :: (Exception -> IO ()) -> IO ()
103         , getUncaughtExceptionHandler      -- :: IO (Exception -> IO ())
104
105         , reportError, reportStackOverflow
106         ) where
107
108 import GHC.Conc.IO
109 import GHC.Conc.Sync
110
111 #ifndef mingw32_HOST_OS
112 import GHC.Conc.Signal
113 #endif
114
115 \end{code}