content: -- |
  -- Module      :  GHC.StaticPtr
  -- Copyright   :  (C) 2014 I/O Tweag
  -- License     :  see libraries/base/LICENSE
  --
  -- Maintainer  :  ghc-devs@haskell.org
  -- Stability   :  internal
  -- Portability :  non-portable (GHC Extensions)
  --
  -- Symbolic references to values.
  --
  -- References to values are usually implemented with memory addresses, and this
  -- is practical when communicating values between the different pieces of a
  -- single process.
  --
  -- When values are communicated across different processes running in possibly
  -- different machines, though, addresses are no longer useful since each
  -- process may use different addresses to store a given value.
  --
  -- To solve such concern, the references provided by this module offer a key
  -- that can be used to locate the values on each process. Each process maintains
  -- a global table of references which can be looked up with a given key. This
  -- table is known as the Static Pointer Table. The reference can then be
  -- dereferenced to obtain the value.
  --
  -- The various communicating processes need to agree on the keys used to refer
  -- to the values in the Static Pointer Table, or lookups will fail. Only
  -- processes launched from the same program binary are guaranteed to use the
  -- same set of keys.
  --
  
  module GHC.StaticPtr
    ( StaticPtr
    , deRefStaticPtr
    , StaticKey
    , staticKey
    , unsafeLookupStaticPtr
    , StaticPtrInfo(..)
    , staticPtrInfo
    , staticPtrKeys
    , IsStatic(..)
    ) where
  
  import GHC.Internal.StaticPtr
  