-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Atomic bit operations on memory locations for low-level synchronization -- @package bits-atomic @version 0.1.1 -- | Atomic bit operations, using GCC's built-in atomic operations in small -- C wrapper functions called through the FFI. See -- http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Atomic-Builtins.html -- or the version corresponding to your compiler for more detail. module Data.Bits.Atomic -- | Atomic bit operations on a memory location. -- -- Instances: Word, Word8, Word16, Word32, -- Word64, Int, Int8, Int16, Int32, -- Int64. class Bits x => AtomicBits x fetchAndAdd :: AtomicBits x => Ptr x -> x -> IO x fetchAndSub :: AtomicBits x => Ptr x -> x -> IO x fetchAndOr :: AtomicBits x => Ptr x -> x -> IO x fetchAndAnd :: AtomicBits x => Ptr x -> x -> IO x fetchAndXor :: AtomicBits x => Ptr x -> x -> IO x fetchAndNand :: AtomicBits x => Ptr x -> x -> IO x addAndFetch :: AtomicBits x => Ptr x -> x -> IO x subAndFetch :: AtomicBits x => Ptr x -> x -> IO x orAndFetch :: AtomicBits x => Ptr x -> x -> IO x andAndFetch :: AtomicBits x => Ptr x -> x -> IO x xorAndFetch :: AtomicBits x => Ptr x -> x -> IO x nandAndFetch :: AtomicBits x => Ptr x -> x -> IO x compareAndSwapBool :: AtomicBits x => Ptr x -> x -> x -> IO Bool compareAndSwap :: AtomicBits x => Ptr x -> x -> x -> IO x lockTestAndSet :: AtomicBits x => Ptr x -> IO x lockRelease :: AtomicBits x => Ptr x -> IO () -- | A full memory barrier. memoryBarrier :: IO () instance AtomicBits Int64 instance AtomicBits Int32 instance AtomicBits Int16 instance AtomicBits Int8 instance AtomicBits Int instance AtomicBits Word instance AtomicBits Word64 instance AtomicBits Word32 instance AtomicBits Word16 instance AtomicBits Word8