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

2008年2月9日土曜日

[Apache][CodeReading] Apache2.2.8コードリーディング9日目

今日もせっせとページ作り。
かと思いきや、やっと動きがあるところ(関数とか)にたどり着いた。

今日見ていったところは、

  • apr_proc_mutex_unix_setup_lock()/Apache2.2.8
  • proc_mutex_fcntl_setup()/Apache2.2.8
  • proc_mutex_unlock_itスタティック変数(proc_mutex.c)/Apache2.2.8
  • proc_mutex_lock_itスタティック変数(proc_mutex.c)/Apache2.2.8
  • proc_mutex_sysv_setup()/Apache2.2.8
  • APR_HAS_SYSVSEM_SERIALIZE定数/Apache2.2.8
  • APR_SUCCESS定数/Apache2.2.8
  • initializedスタティック変数(start.c)/Apache2.2.8
  • APR_DECLAREマクロ/Apache2.2.8
  • AP_MONCONTROLマクロ/Apache2.2.8
  • APR_DECLARE_OPTIONAL_FNマクロ/Apache2.2.8
  • APR_OPTIONAL_FN_TYPEマクロ/Apache2.2.8
ら辺。

Apacheの初期化にいよいよ突入。
まずはロック構造体を初期化している模様。


apr_proc_mutex_unix_setup_lock()でロック用構造体を初期化しているのだが、



162 static void proc_mutex_sysv_setup(void)
163 {
164 proc_mutex_op_on.sem_num = 0;
165 proc_mutex_op_on.sem_op = -1;
166 proc_mutex_op_on.sem_flg = SEM_UNDO;
167 proc_mutex_op_off.sem_num = 0;
168 proc_mutex_op_off.sem_op = 1;
169 proc_mutex_op_off.sem_flg = SEM_UNDO;
170 }
とか、

434 static void proc_mutex_fcntl_setup(void)
435 {
436 proc_mutex_lock_it.l_whence = SEEK_SET; /* from current point */
437 proc_mutex_lock_it.l_start = 0; /* -"- */
438 proc_mutex_lock_it.l_len = 0; /* until end of file */
439 proc_mutex_lock_it.l_type = F_WRLCK; /* set exclusive/write lock */
440 proc_mutex_lock_it.l_pid = 0; /* pid not actually interesting */
441 proc_mutex_unlock_it.l_whence = SEEK_SET; /* from current point */
442 proc_mutex_unlock_it.l_start = 0; /* -"- */
443 proc_mutex_unlock_it.l_len = 0; /* until end of file */
444 proc_mutex_unlock_it.l_type = F_UNLCK; /* set exclusive/write lock */
445 proc_mutex_unlock_it.l_pid = 0; /* pid not actually interesting */
446 }

とかを見る限り、きっと初期化された構造体を利用してロックをかけたり解除したりするに違いない・・。
fcntl用で使用するflock構造体をロック時、ロック解除時に使用するであろう値で初期化していた。
またSys V IPCで使用するsembuf構造体もロック時、ロック解除時に使用するであろう値に初期化。



まだ、初期化しか読んでないからわからないけど。


.

0 コメント: