    {-# LANGUAGE Unsafe #-}
    {-# LANGUAGE CPP, NoImplicitPrelude #-}
    {-# OPTIONS_GHC -fno-warn-missing-signatures #-}
    {-# OPTIONS_HADDOCK not-home #-}

    -----------------------------------------------------------------------------
    -- |
    -- Module      :  GHC.Conc
    -- Copyright   :  (c) The University of Glasgow, 1994-2002
    -- License     :  see libraries/base/LICENSE
    --
    -- Maintainer  :  cvs-ghc@haskell.org
    -- Stability   :  internal
    -- Portability :  non-portable (GHC extensions)
    --
    -- Basic concurrency stuff.
    --
    -----------------------------------------------------------------------------

    -- No: #hide, because bits of this module are exposed by the stm package.
    -- However, we don't want this module to be the home location for the
    -- bits it exports, we'd rather have Control.Concurrent and the other
    -- higher level modules be the home.  Hence: #not-home

    module GHC.Conc
            ( ThreadId(..)

            -- * Forking and suchlike
            , forkIO
            , forkIOWithUnmask
            , forkOn
            , forkOnWithUnmask
            , numCapabilities
            , getNumCapabilities
            , setNumCapabilities
            , getNumProcessors
            , numSparks
            , childHandler
            , myThreadId
            , killThread
            , throwTo
            , par
            , pseq
            , runSparks
            , yield
            , labelThread
            , mkWeakThreadId

            , ThreadStatus(..), BlockReason(..)
            , threadStatus
            , threadCapability

            -- * Waiting
            , threadDelay
            , registerDelay
            , threadWaitRead
            , threadWaitWrite
            , threadWaitReadSTM
            , threadWaitWriteSTM
            , closeFdWith

            -- * Allocation counter and limit
            , setAllocationCounter
            , getAllocationCounter
            , enableAllocationLimit
            , disableAllocationLimit

            -- * TVars
            , STM(..)
            , atomically
            , retry
            , orElse
            , throwSTM
            , catchSTM
            , alwaysSucceeds
            , always
            , TVar(..)
            , newTVar
            , newTVarIO
            , readTVar
            , readTVarIO
            , writeTVar
            , unsafeIOToSTM

            -- * Miscellaneous
            , withMVar
    #ifdef mingw32_HOST_OS
            , asyncRead
            , asyncWrite
            , asyncDoProc

            , asyncReadBA
            , asyncWriteBA
    #endif

    #ifndef mingw32_HOST_OS
            , Signal, HandlerFun, setHandler, runHandlers
    #endif

            , ensureIOManagerIsRunning
            , ioManagerCapabilitiesChanged

    #ifdef mingw32_HOST_OS
            , ConsoleEvent(..)
            , win32ConsoleHandler
            , toWin32ConsoleEvent
    #endif
            , setUncaughtExceptionHandler
            , getUncaughtExceptionHandler

            , reportError, reportStackOverflow
            ) where

    import GHC.Conc.IO
    import GHC.Conc.Sync

    #ifndef mingw32_HOST_OS
    import GHC.Conc.Signal
    #endif