+#include <bindings.dsl.h>
+#include <apr_atomic.h>
+
+module Bindings.APR.Atomic where
+#strict_import
+import Bindings.APR
+import Bindings.APR.ErrNo
+import Bindings.APR.Pools
+
+#ccall apr_atomic_init, Ptr <apr_pool_t> -> IO <apr_status_t>
+
+#ccall apr_atomic_read32, Ptr <apr_uint32_t> -> IO <apr_uint32_t>
+#ccall apr_atomic_set32 , Ptr <apr_uint32_t> -> <apr_uint32_t> -> IO ()
+#ccall apr_atomic_add32 , Ptr <apr_uint32_t> -> <apr_uint32_t> -> IO <apr_uint32_t>
+#ccall apr_atomic_sub32 , Ptr <apr_uint32_t> -> <apr_uint32_t> -> IO ()
+#ccall apr_atomic_inc32 , Ptr <apr_uint32_t> -> IO <apr_uint32_t>
+#ccall apr_atomic_dec32 , Ptr <apr_uint32_t> -> IO CInt
+#ccall apr_atomic_cas32 , Ptr <apr_uint32_t> -> <apr_uint32_t> -> <apr_uint32_t> -> IO <apr_uint32_t>
+#ccall apr_atomic_xchg32, Ptr <apr_uint32_t> -> <apr_uint32_t> -> IO <apr_uint32_t>
+
+#ccall apr_atomic_casptr , Ptr (Ptr ()) -> Ptr () -> Ptr () -> IO (Ptr ())
+#ccall apr_atomic_xchgptr, Ptr (Ptr ()) -> Ptr () -> IO (Ptr ())