メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年2月18日月曜日

[Apache][CodeReading] Apache2.2.8コードリーディング18日目(2)

今日読んだところは、

  • 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 コメント: