2009年5月25日 星期一

Apache Portable Runtime可移植執行環境

Apache HTTP Server運作時需要依賴另一個程式庫,也就是APR,全名為「Apache Portable Runtime可移植執行環境」,這其實是Apache Software Foundation(ASF)底下另一個專案計畫,請參考http://apr.apache.org/

APR中有一項重要的程式庫模組,這個模組是APR Pools(apr_pools.h),這是APR和Apchee中管理資源的重要模組!其資料型態是apr_poot_t。在APR當中則是Memory Pool Functions這個模組裡面,原始碼是memory\apr_pools.c,他主要功能其實也就是記憶體管理!

其他定義如下(ver 1.3)
Defines
  • #define APR_POOL_DECLARE_ACCESSOR(type)
  • #define APR_POOL_IMPLEMENT_ACCESSOR(type)
  • #define APR_POOL_DEBUG 0
  • #define APR_POOL__FILE_LINE__ __FILE__ ":" APR_STRINGIFY(__LINE__)

Typedefs
  • typedef struct apr_pool_t apr_pool_t
  • typedef int(* apr_abortfunc_t )(int retcode)

Functions
  • apr_status_t apr_pool_initialize (void)
  • void apr_pool_terminate (void)
  • apr_status_t apr_pool_create_ex (apr_pool_t **newpool, apr_pool_t *parent, apr_abortfunc_t abort_fn, apr_allocator_t *allocator)
  • apr_status_t apr_pool_create_core_ex (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator)
  • apr_status_t apr_pool_create_unmanaged_ex (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator)
  • apr_status_t apr_pool_create_ex_debug (apr_pool_t **newpool, apr_pool_t *parent, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line)
  • apr_status_t apr_pool_create_core_ex_debug (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line)
  • apr_status_t apr_pool_create_unmanaged_ex_debug (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line)
  • apr_status_t apr_pool_create (apr_pool_t **newpool, apr_pool_t *parent)
  • apr_status_t apr_pool_create_core (apr_pool_t **newpool)
  • apr_status_t apr_pool_create_unmanaged (apr_pool_t **newpool)
  • apr_allocator_t * apr_pool_allocator_get (apr_pool_t *pool)
  • void apr_pool_clear (apr_pool_t *p)
  • void apr_pool_clear_debug (apr_pool_t *p, const char *file_line)
  • void apr_pool_destroy (apr_pool_t *p)
  • void apr_pool_destroy_debug (apr_pool_t *p, const char *file_line)
  • void * apr_palloc (apr_pool_t *p, apr_size_t size)
  • void * apr_palloc_debug (apr_pool_t *p, apr_size_t size, const char *file_line)
  • void * apr_pcalloc (apr_pool_t *p, apr_size_t size)
  • void * apr_pcalloc_debug (apr_pool_t *p, apr_size_t size, const char *file_line)
  • void apr_pool_abort_set (apr_abortfunc_t abortfunc, apr_pool_t *pool)
  • apr_abortfunc_t apr_pool_abort_get (apr_pool_t *pool)
  • apr_pool_t * apr_pool_parent_get (apr_pool_t *pool)
  • int apr_pool_is_ancestor (apr_pool_t *a, apr_pool_t *b)
  • void apr_pool_tag (apr_pool_t *pool, const char *tag)
  • apr_status_t apr_pool_userdata_set (const void *data, const char *key, apr_status_t(*cleanup)(void *), apr_pool_t *pool)
  • apr_status_t apr_pool_userdata_setn (const void *data, const char *key, apr_status_t(*cleanup)(void *), apr_pool_t *pool)
  • apr_status_t apr_pool_userdata_get (void **data, const char *key, apr_pool_t *pool)

沒有留言:

張貼留言