今日読んだところは、
- apr_thread_mutex_create()/Apache2.2.8
- apr_pool_cleanup_null()/Apache2.2.8
- thread_mutex_cleanup()/Apache2.2.8
- apr_pcalloc()/Apache2.2.8
- APR_POOL__FILE_LINE__マクロ/Apache2.2.8
- apr_pcalloc_debug()/Apache2.2.8
- APR_POOL_DEBUG_VERBOSE_ALLOC定数/Apache2.2.8
- pool_alloc()/Apache2.2.8
- SIZEOF_DEBUG_NODE_Tマクロ/Apache2.2.8
- debug_node_t構造体/Apache2.2.8
- DOXYGEN定数/Apache2.2.8
- HAVE_PTHREAD_MUTEX_RECURSIVE定数/Apache2.2.8
- APR_THREAD_MUTEX_UNNESTED定数/Apache2.2.8
- APR_THREAD_MUTEX_DEFAULT定数/Apache2.2.8
- APR_THREAD_MUTEX_NESTED定数/Apache2.2.8
- APR_ENOTIMPL定数/Apache2.2.8
- APR_POLLSET_THREADSAFE定数/Apache2.2.8
- APR_RING_ENTRYマクロ/Apache2.2.8
まぁまぁ大きめのところは、
apr_pcallocとapr_thread_mutex_createぐらい。
といってもたいしたことをしていないが・・・。
apr_pcalloc()
apr_pcalloc関数はapr_pallocでサイズを確保後memsetで0クリアしているだけ。
APR_POOL_DEBUGが定義されていると、apr_pcallocの実態がapr_pcalloc_debug関数になる。
apr_pcalloc_debugはapr_pallocは使わずに、mallocを使用して領域を確保する。
確保する際はalloc数をカウントし、またパラメータに渡されたpoolの親子関係をチェックする。
APR_POOL_DEBUGにAPR_POOL_DEBUG_VERBOSE_ALLOCのビットがOnになっていると、
apr_pcalloc_debugの中で詳細なログを出力するようになる。
apr_thread_mutex_create()
apr_thread_mutex_create関数はパラメータで渡されたpoolを使用し、pthread_mutexを作成、初期化する。
APR_THREAD_MUTEX_NESTEDがflagsに指定された場合でpthreadがネストに対応していない場合は、APR_ENOTIMPLエラーを返す。
APR_THREAD_MUTEX_NESTEDがflagsに指定された場合でpthreadがネストに対応している場合は、
mutexattrをRECURSIVEに設定し、pthread_mutexを初期化する。
APR_THREAD_MUTEX_NESTEDがflagsに指定されていない場合は、
mutexattrは指定せずに、pthread_mutexを初期化する。
apr_pcalloc関数の方はcallocなだけに0クリアしているだけだし、
apr_thread_mutex_createの方は、pthreadを初期化しているだけ
な感じ。
うーむ。
まだ序章・・・、いや前書きかも。
.
0 コメント:
コメントを投稿