--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_thread_mutex.h>
+
+module Bindings.APR.Thread.Mutex where
+#strict_import
+import Bindings.APR.Errno
+import Bindings.APR.Pools
+
+#opaque_t apr_thread_mutex_t
+
+#num APR_THREAD_MUTEX_DEFAULT
+#num APR_THREAD_MUTEX_NESTED
+#num APR_THREAD_MUTEX_UNNESTED
+
+#ccall apr_thread_mutex_create , Ptr <apr_thread_mutex_t> -> CUInt -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_thread_mutex_lock , Ptr <apr_thread_mutex_t> -> IO <apr_status_t>
+#ccall apr_thread_mutex_trylock, Ptr <apr_thread_mutex_t> -> IO <apr_status_t>
+#ccall apr_thread_mutex_unlock , Ptr <apr_thread_mutex_t> -> IO <apr_status_t>
+#ccall apr_thread_mutex_destroy, Ptr <apr_thread_mutex_t> -> IO <apr_status_t>
+
+#ccall apr_thread_mutex_pool_get, Ptr <apr_thread_mutex_t> -> IO (Ptr <apr_pool_t>)