    {-# INCLUDE <sys/types.h> #-}
    {-# INCLUDE <sys/mman.h> #-}
    {-# INCLUDE <sys/fcntl.h> #-}
    {-# LINE 1 "System/Posix/SharedMem.hsc" #-}
    {-# OPTIONS -fffi #-}
    {-# LINE 2 "System/Posix/SharedMem.hsc" #-}

    -----------------------------------------------------------------------------
    -- |
    -- Module      :  System.Posix.SharedMem
    -- Copyright   :  (c) Daniel Franke 2007
    -- License     :  BSD-style (see the file libraries/base/LICENSE)
    --
    -- Maintainer  :  libraries@haskell.org
    -- Stability   :  experimental
    -- Portability :  non-portable (requires POSIX)
    --
    -- POSIX shared memory support.
    --
    -----------------------------------------------------------------------------

    module System.Posix.SharedMem
        (ShmOpenFlags(..), shmOpen, shmUnlink)
        where

    {-# LINE 22 "System/Posix/SharedMem.hsc" #-}

    {-# LINE 23 "System/Posix/SharedMem.hsc" #-}

    {-# LINE 24 "System/Posix/SharedMem.hsc" #-}

    import System.Posix.Types
    import System.Posix.Error
    import Foreign.C
    import Data.Bits

    data ShmOpenFlags = ShmOpenFlags
        { shmReadWrite :: Bool,
          -- ^ If true, open the shm object read-write rather than read-only.
          shmCreate :: Bool,
          -- ^ If true, create the shm object if it does not exist.
          shmExclusive :: Bool,
          -- ^ If true, throw an exception if the shm object already exists.
          shmTrunc :: Bool
          -- ^ If true, wipe the contents of the shm object after opening it.
        }

    -- | Open a shared memory object with the given name, flags, and mode.
    shmOpen :: String -> ShmOpenFlags -> FileMode -> IO Fd

    {-# LINE 62 "System/Posix/SharedMem.hsc" #-}
    shmOpen = error "System.Posix.SharedMem:shm_open: not available"

    {-# LINE 64 "System/Posix/SharedMem.hsc" #-}

    -- | Delete the shared memory object with the given name.
    shmUnlink :: String -> IO ()

    {-# LINE 72 "System/Posix/SharedMem.hsc" #-}
    shmUnlink = error "System.Posix.SharedMem:shm_unlink: not available"

    {-# LINE 74 "System/Posix/SharedMem.hsc" #-}

    {-# LINE 79 "System/Posix/SharedMem.hsc" #-}

    {-# LINE 84 "System/Posix/SharedMem.hsc" #-}