--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_thread_pool.h>
+
+module Bindings.APR.Thread.Pool where
+#strict_import
+import Bindings.APR
+import Bindings.APR.ErrNo
+import Bindings.APR.Pools
+import Bindings.APR.Thread.Proc
+import Bindings.APR.Time
+
+#if APR_HAS_THREADS
+
+# opaque_t apr_thread_pool_t
+
+# num APR_THREAD_TASK_PRIORITY_LOWEST
+# num APR_THREAD_TASK_PRIORITY_LOW
+# num APR_THREAD_TASK_PRIORITY_NORMAL
+# num APR_THREAD_TASK_PRIORITY_HIGH
+# num APR_THREAD_TASK_PRIORITY_HIGHEST
+
+# ccall apr_thread_pool_create , Ptr (Ptr <apr_thread_pool_t>) -> <apr_size_t> -> <apr_size_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+# ccall apr_thread_pool_destroy , Ptr <apr_thread_pool_t> -> IO <apr_status_t>
+# ccall apr_thread_pool_push , Ptr <apr_thread_pool_t> -> <apr_thread_start_t> -> Ptr () -> <apr_byte_t> -> Ptr () -> IO <apr_status_t>
+# ccall apr_thread_pool_schedule , Ptr <apr_thread_pool_t> -> <apr_thread_start_t> -> Ptr () -> <apr_interval_time_t> -> Ptr () -> IO <apr_status_t>
+# ccall apr_thread_pool_top , Ptr <apr_thread_pool_t> -> <apr_thread_start_t> -> Ptr () -> <apr_byte_t> -> Ptr () -> IO <apr_status_t>
+# ccall apr_thread_pool_tasks_cancel, Ptr <apr_thread_pool_t> -> Ptr () -> IO <apr_status_t>
+# ccall apr_thread_pool_tasks_count , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_scheduled_tasks_count, Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_threads_count , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_busy_count , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_idle_count , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_idle_max_set , Ptr <apr_thread_pool_t> -> <apr_size_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_tasks_run_count , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_tasks_high_count , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_threads_high_count , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_threads_idle_timeout_count, Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_idle_max_get , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_thread_max_set, Ptr <apr_thread_pool_t> -> <apr_size_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_idle_wait_set , Ptr <apr_thread_pool_t> -> <apr_interval_time_t> -> IO <apr_interval_time_t>
+# ccall apr_thread_pool_idle_wait_get , Ptr <apr_thread_pool_t> -> IO <apr_interval_time_t>
+# ccall apr_thread_pool_thread_max_get, Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_threshold_set , Ptr <apr_thread_pool_t> -> <apr_size_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_threshold_get , Ptr <apr_thread_pool_t> -> IO <apr_size_t>
+# ccall apr_thread_pool_task_owner_get, Ptr <apr_thread_t> -> Ptr (Ptr ()) -> IO <apr_status_t>
+
+#endif
\ No newline at end of file