+#include <bindings.dsl.h>
+#include <apr_proc_mutex.h>
+
+module Bindings.APR.Proc.Mutex where
+#strict_import
+import Bindings.APR.ErrNo
+import Bindings.APR.Pools
+
+#integral_t apr_lockmech_e
+#num APR_LOCK_FCNTL
+#num APR_LOCK_FLOCK
+#num APR_LOCK_SYSVSEM
+#num APR_LOCK_PROC_PTHREAD
+#num APR_LOCK_POSIXSEM
+#num APR_LOCK_DEFAULT
+
+#opaque_t apr_proc_mutex_t
+
+#ccall apr_proc_mutex_create , Ptr (Ptr <apr_proc_mutex_t>) -> Ptr CChar -> <apr_lockmech_e> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_proc_mutex_child_init, Ptr (Ptr <apr_proc_mutex_t>) -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_proc_mutex_lock , Ptr <apr_proc_mutex_t> -> IO <apr_status_t>
+#ccall apr_proc_mutex_trylock , Ptr <apr_proc_mutex_t> -> IO <apr_status_t>
+#ccall apr_proc_mutex_unlock , Ptr <apr_proc_mutex_t> -> IO <apr_status_t>
+#ccall apr_proc_mutex_destroy , Ptr <apr_proc_mutex_t> -> IO <apr_status_t>
+#ccall apr_proc_mutex_cleanup , Ptr () -> IO <apr_status_t>
+#ccall apr_proc_mutex_lockfile , Ptr <apr_proc_mutex_t> -> IO (Ptr CChar)
+#ccall apr_proc_mutex_name , Ptr <apr_proc_mutex_t> -> IO (Ptr CChar)
+#ccall apr_proc_mutex_defname , IO (Ptr CChar)
+
+#ccall apr_proc_mutex_pool_get , Ptr <apr_proc_mutex_t> -> IO (Ptr <apr_pool_t>)