Deprecate Control.Exception.blocked in favour of getMaskingState
[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         , forkOnIO      -- :: Int -> IO a -> IO ThreadId
36         , forkOnIOUnmasked
37         , forkOnIOWithUnmask
38         , numCapabilities -- :: Int
39         , getNumCapabilities -- :: IO Int
40         , numSparks       -- :: IO Int
41         , childHandler  -- :: Exception -> IO ()
42         , myThreadId    -- :: IO ThreadId
43         , killThread    -- :: ThreadId -> IO ()
44         , throwTo       -- :: ThreadId -> Exception -> IO ()
45         , par           -- :: a -> b -> b
46         , pseq          -- :: a -> b -> b
47         , runSparks
48         , yield         -- :: IO ()
49         , labelThread   -- :: ThreadId -> String -> IO ()
50
51         , ThreadStatus(..), BlockReason(..)
52         , threadStatus  -- :: ThreadId -> IO ThreadStatus
53         , threadCapability
54
55         -- * Waiting
56         , threadDelay           -- :: Int -> IO ()
57         , registerDelay         -- :: Int -> IO (TVar Bool)
58         , threadWaitRead        -- :: Int -> IO ()
59         , threadWaitWrite       -- :: Int -> IO ()
60         , closeFdWith           -- :: (Fd -> IO ()) -> Fd -> IO ()
61
62         -- * TVars
63         , STM(..)
64         , atomically    -- :: STM a -> IO a
65         , retry         -- :: STM a
66         , orElse        -- :: STM a -> STM a -> STM a
67         , throwSTM      -- :: Exception e => e -> STM a
68         , catchSTM      -- :: Exception e => STM a -> (e -> STM a) -> STM a
69         , alwaysSucceeds -- :: STM a -> STM ()
70         , always        -- :: STM Bool -> STM ()
71         , TVar(..)
72         , newTVar       -- :: a -> STM (TVar a)
73         , newTVarIO     -- :: a -> STM (TVar a)
74         , readTVar      -- :: TVar a -> STM a
75         , readTVarIO    -- :: TVar a -> IO a
76         , writeTVar     -- :: a -> TVar a -> STM ()
77         , unsafeIOToSTM -- :: IO a -> STM a
78
79         -- * Miscellaneous
80         , withMVar
81 #ifdef mingw32_HOST_OS
82         , asyncRead     -- :: Int -> Int -> Int -> Ptr a -> IO (Int, Int)
83         , asyncWrite    -- :: Int -> Int -> Int -> Ptr a -> IO (Int, Int)
84         , asyncDoProc   -- :: FunPtr (Ptr a -> IO Int) -> Ptr a -> IO Int
85
86         , asyncReadBA   -- :: Int -> Int -> Int -> Int -> MutableByteArray# RealWorld -> IO (Int, Int)
87         , asyncWriteBA  -- :: Int -> Int -> Int -> Int -> MutableByteArray# RealWorld -> IO (Int, Int)
88 #endif
89
90 #ifndef mingw32_HOST_OS
91         , Signal, HandlerFun, setHandler, runHandlers
92 #endif
93
94         , ensureIOManagerIsRunning
95
96 #ifdef mingw32_HOST_OS
97         , ConsoleEvent(..)
98         , win32ConsoleHandler
99         , toWin32ConsoleEvent
100 #endif
101         , setUncaughtExceptionHandler      -- :: (Exception -> IO ()) -> IO ()
102         , getUncaughtExceptionHandler      -- :: IO (Exception -> IO ())
103
104         , reportError, reportStackOverflow
105         ) where
106
107 import GHC.Conc.IO
108 import GHC.Conc.Sync
109
110 #ifndef mingw32_HOST_OS
111 import GHC.Conc.Signal
112 #endif
113
114 \end{code}