--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_getopt.h>
+
+module Bindings.APR.Global.Mutex where
+#strict_import
+import Bindings.APR.ErrNo
+import Bindings.APR.Pools
+import Bindings.APR.Proc.Mutex
+
+#if !APR_PROC_MUTEX_IS_GLOBAL
+
+# opaque_t apr_global_mutex_t
+
+# ccall apr_global_mutex_create , Ptr (Ptr <apr_global_mutex_t>) -> Ptr CChar -> <apr_lockmech_e> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+# ccall apr_global_mutex_child_init, Ptr (Ptr <apr_global_mutex_t>) -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+# ccall apr_global_mutex_lock , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
+# ccall apr_global_mutex_trylock , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
+# ccall apr_global_mutex_unlock , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
+# ccall apr_global_mutex_destroy , Ptr <apr_global_mutex_t> -> IO <apr_status_t>
+
+# ccall apr_global_mutex_pool_get , Ptr <apr_global_mutex_t> -> IO (Ptr <apr_pool_t>)
+
+#else
+
+# synonym_t apr_global_mutex_t, <apr_proc_mutex_t>
+
+c'apr_global_mutex_create :: Ptr (Ptr C'apr_global_mutex_t) -> Ptr CChar -> C'apr_lockmech_e -> Ptr C'apr_pool_t -> IO C'apr_status_t
+c'apr_global_mutex_create = c'apr_proc_mutex_create
+
+c'apr_global_mutex_child_init :: Ptr (Ptr C'apr_global_mutex_t) -> Ptr CChar -> Ptr C'apr_pool_t -> IO C'apr_status_t
+c'apr_global_mutex_child_init = c'apr_proc_mutex_child_init
+
+c'apr_global_mutex_lock :: Ptr C'apr_global_mutex_t -> IO C'apr_status_t
+c'apr_global_mutex_lock = c'apr_proc_mutex_lock
+
+c'apr_global_mutex_trylock :: Ptr C'apr_global_mutex_t -> IO C'apr_status_t
+c'apr_global_mutex_trylock = c'apr_proc_mutex_trylock
+
+c'apr_global_mutex_unlock :: Ptr C'apr_global_mutex_t -> IO C'apr_status_t
+c'apr_global_mutex_unlock = c'apr_proc_mutex_unlock
+
+c'apr_global_mutex_destroy :: Ptr C'apr_global_mutex_t -> IO C'apr_status_t
+c'apr_global_mutex_destroy = c'apr_proc_mutex_destroy
+
+c'apr_global_mutex_cleanup :: Ptr () -> IO C'apr_status_t
+c'apr_global_mutex_cleanup = c'apr_proc_mutex_cleanup
+
+c'apr_global_mutex_lockfile :: Ptr C'apr_global_mutex_t -> IO (Ptr CChar)
+c'apr_global_mutex_lockfile = c'apr_proc_mutex_lockfile
+
+c'apr_global_mutex_name :: Ptr C'apr_global_mutex_t -> IO (Ptr CChar)
+c'apr_global_mutex_name = c'apr_proc_mutex_name
+
+c'apr_global_mutex_defname :: IO (Ptr CChar)
+c'apr_global_mutex_defname = c'apr_proc_mutex_defname
+
+c'apr_global_mutex_pool_get :: Ptr C'apr_global_mutex_t -> IO (Ptr C'apr_pool_t)
+c'apr_global_mutex_pool_get = c'apr_proc_mutex_pool_get
+
+#endif