{-# LINE 1 "Bindings/APR/Thread/Pool.hsc" #-}

{-# LINE 2 "Bindings/APR/Thread/Pool.hsc" #-}

{-# LINE 3 "Bindings/APR/Thread/Pool.hsc" #-}

module Bindings.APR.Thread.Pool where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 6 "Bindings/APR/Thread/Pool.hsc" #-}
import Bindings.APR
import Bindings.APR.ErrNo
import Bindings.APR.Pools
import Bindings.APR.Thread.Proc
import Bindings.APR.Time


{-# LINE 13 "Bindings/APR/Thread/Pool.hsc" #-}

data C'apr_thread_pool_t = C'apr_thread_pool_t

{-# LINE 15 "Bindings/APR/Thread/Pool.hsc" #-}

c'APR_THREAD_TASK_PRIORITY_LOWEST = 0
c'APR_THREAD_TASK_PRIORITY_LOWEST :: (Num a) => a

{-# LINE 17 "Bindings/APR/Thread/Pool.hsc" #-}
c'APR_THREAD_TASK_PRIORITY_LOW = 63
c'APR_THREAD_TASK_PRIORITY_LOW :: (Num a) => a

{-# LINE 18 "Bindings/APR/Thread/Pool.hsc" #-}
c'APR_THREAD_TASK_PRIORITY_NORMAL = 127
c'APR_THREAD_TASK_PRIORITY_NORMAL :: (Num a) => a

{-# LINE 19 "Bindings/APR/Thread/Pool.hsc" #-}
c'APR_THREAD_TASK_PRIORITY_HIGH = 191
c'APR_THREAD_TASK_PRIORITY_HIGH :: (Num a) => a

{-# LINE 20 "Bindings/APR/Thread/Pool.hsc" #-}
c'APR_THREAD_TASK_PRIORITY_HIGHEST = 255
c'APR_THREAD_TASK_PRIORITY_HIGHEST :: (Num a) => a

{-# LINE 21 "Bindings/APR/Thread/Pool.hsc" #-}

foreign import ccall "apr_thread_pool_create" c'apr_thread_pool_create
  :: Ptr (Ptr C'apr_thread_pool_t) -> C'apr_size_t -> C'apr_size_t -> Ptr C'apr_pool_t -> IO C'apr_status_t
foreign import ccall "&apr_thread_pool_create" p'apr_thread_pool_create
  :: FunPtr (Ptr (Ptr C'apr_thread_pool_t) -> C'apr_size_t -> C'apr_size_t -> Ptr C'apr_pool_t -> IO C'apr_status_t)

{-# LINE 23 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_destroy" c'apr_thread_pool_destroy
  :: Ptr C'apr_thread_pool_t -> IO C'apr_status_t
foreign import ccall "&apr_thread_pool_destroy" p'apr_thread_pool_destroy
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_status_t)

{-# LINE 24 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_push" c'apr_thread_pool_push
  :: Ptr C'apr_thread_pool_t -> C'apr_thread_start_t -> Ptr () -> C'apr_byte_t -> Ptr () -> IO C'apr_status_t
foreign import ccall "&apr_thread_pool_push" p'apr_thread_pool_push
  :: FunPtr (Ptr C'apr_thread_pool_t -> C'apr_thread_start_t -> Ptr () -> C'apr_byte_t -> Ptr () -> IO C'apr_status_t)

{-# LINE 25 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_schedule" c'apr_thread_pool_schedule
  :: Ptr C'apr_thread_pool_t -> C'apr_thread_start_t -> Ptr () -> C'apr_interval_time_t -> Ptr () -> IO C'apr_status_t
foreign import ccall "&apr_thread_pool_schedule" p'apr_thread_pool_schedule
  :: FunPtr (Ptr C'apr_thread_pool_t -> C'apr_thread_start_t -> Ptr () -> C'apr_interval_time_t -> Ptr () -> IO C'apr_status_t)

{-# LINE 26 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_top" c'apr_thread_pool_top
  :: Ptr C'apr_thread_pool_t -> C'apr_thread_start_t -> Ptr () -> C'apr_byte_t -> Ptr () -> IO C'apr_status_t
foreign import ccall "&apr_thread_pool_top" p'apr_thread_pool_top
  :: FunPtr (Ptr C'apr_thread_pool_t -> C'apr_thread_start_t -> Ptr () -> C'apr_byte_t -> Ptr () -> IO C'apr_status_t)

{-# LINE 27 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_tasks_cancel" c'apr_thread_pool_tasks_cancel
  :: Ptr C'apr_thread_pool_t -> Ptr () -> IO C'apr_status_t
foreign import ccall "&apr_thread_pool_tasks_cancel" p'apr_thread_pool_tasks_cancel
  :: FunPtr (Ptr C'apr_thread_pool_t -> Ptr () -> IO C'apr_status_t)

{-# LINE 28 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_tasks_count" c'apr_thread_pool_tasks_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_tasks_count" p'apr_thread_pool_tasks_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 29 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_scheduled_tasks_count" c'apr_thread_pool_scheduled_tasks_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_scheduled_tasks_count" p'apr_thread_pool_scheduled_tasks_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 30 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_threads_count" c'apr_thread_pool_threads_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_threads_count" p'apr_thread_pool_threads_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 31 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_busy_count" c'apr_thread_pool_busy_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_busy_count" p'apr_thread_pool_busy_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 32 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_idle_count" c'apr_thread_pool_idle_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_idle_count" p'apr_thread_pool_idle_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 33 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_idle_max_set" c'apr_thread_pool_idle_max_set
  :: Ptr C'apr_thread_pool_t -> C'apr_size_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_idle_max_set" p'apr_thread_pool_idle_max_set
  :: FunPtr (Ptr C'apr_thread_pool_t -> C'apr_size_t -> IO C'apr_size_t)

{-# LINE 34 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_tasks_run_count" c'apr_thread_pool_tasks_run_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_tasks_run_count" p'apr_thread_pool_tasks_run_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 35 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_tasks_high_count" c'apr_thread_pool_tasks_high_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_tasks_high_count" p'apr_thread_pool_tasks_high_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 36 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_threads_high_count" c'apr_thread_pool_threads_high_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_threads_high_count" p'apr_thread_pool_threads_high_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 37 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_threads_idle_timeout_count" c'apr_thread_pool_threads_idle_timeout_count
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_threads_idle_timeout_count" p'apr_thread_pool_threads_idle_timeout_count
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 38 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_idle_max_get" c'apr_thread_pool_idle_max_get
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_idle_max_get" p'apr_thread_pool_idle_max_get
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 39 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_thread_max_set" c'apr_thread_pool_thread_max_set
  :: Ptr C'apr_thread_pool_t -> C'apr_size_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_thread_max_set" p'apr_thread_pool_thread_max_set
  :: FunPtr (Ptr C'apr_thread_pool_t -> C'apr_size_t -> IO C'apr_size_t)

{-# LINE 40 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_idle_wait_set" c'apr_thread_pool_idle_wait_set
  :: Ptr C'apr_thread_pool_t -> C'apr_interval_time_t -> IO C'apr_interval_time_t
foreign import ccall "&apr_thread_pool_idle_wait_set" p'apr_thread_pool_idle_wait_set
  :: FunPtr (Ptr C'apr_thread_pool_t -> C'apr_interval_time_t -> IO C'apr_interval_time_t)

{-# LINE 41 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_idle_wait_get" c'apr_thread_pool_idle_wait_get
  :: Ptr C'apr_thread_pool_t -> IO C'apr_interval_time_t
foreign import ccall "&apr_thread_pool_idle_wait_get" p'apr_thread_pool_idle_wait_get
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_interval_time_t)

{-# LINE 42 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_thread_max_get" c'apr_thread_pool_thread_max_get
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_thread_max_get" p'apr_thread_pool_thread_max_get
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 43 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_threshold_set" c'apr_thread_pool_threshold_set
  :: Ptr C'apr_thread_pool_t -> C'apr_size_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_threshold_set" p'apr_thread_pool_threshold_set
  :: FunPtr (Ptr C'apr_thread_pool_t -> C'apr_size_t -> IO C'apr_size_t)

{-# LINE 44 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_threshold_get" c'apr_thread_pool_threshold_get
  :: Ptr C'apr_thread_pool_t -> IO C'apr_size_t
foreign import ccall "&apr_thread_pool_threshold_get" p'apr_thread_pool_threshold_get
  :: FunPtr (Ptr C'apr_thread_pool_t -> IO C'apr_size_t)

{-# LINE 45 "Bindings/APR/Thread/Pool.hsc" #-}
foreign import ccall "apr_thread_pool_task_owner_get" c'apr_thread_pool_task_owner_get
  :: Ptr C'apr_thread_t -> Ptr (Ptr ()) -> IO C'apr_status_t
foreign import ccall "&apr_thread_pool_task_owner_get" p'apr_thread_pool_task_owner_get
  :: FunPtr (Ptr C'apr_thread_t -> Ptr (Ptr ()) -> IO C'apr_status_t)

{-# LINE 46 "Bindings/APR/Thread/Pool.hsc" #-}