    -- |
    --
    -- Module      :  GHC.IOPort
    -- Copyright   :  (c) Tamar Christina 2019
    -- License     :  see libraries/base/LICENSE
    --
    -- Maintainer  :  ghc-devs@haskell.org
    -- Stability   :  internal
    -- Portability :  non-portable (GHC Extensions)
    --
    -- The 'IOPort' type. This is a facility used by the Windows IO subsystem.
    --
    -- /The API of this module is unstable and not meant to be consumed by the general public./
    -- If you absolutely must depend on it, make sure to use a tight upper
    -- bound, e.g., @base < 4.X@ rather than @base < 5@, because the interface can
    -- change rapidly without much warning.
    --
    -- We have strict rules with an I/O Port:
    -- * writing more than once is an error
    -- * reading more than once is an error
    --
    -- It gives us the ability to have one thread to block, wait for a result from
    -- another thread and then being woken up. *Nothing* more.
    --
    -- This type is very much GHC internal. It might be changed or removed without
    -- notice in future releases.
    --

    module GHC.IOPort
        (-- *  IOPorts
         IOPort(..),
         newIOPort,
         newEmptyIOPort,
         readIOPort,
         writeIOPort,
         doubleReadException
         ) where

    import GHC.Internal.IOPort