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

2008年2月4日月曜日

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

Apache2.2.8のコードを読み始めて3日目。

pukiwikiの操作に時間がかかっている気がとってもする。
ファイルや関数・マクロのページを作ることにとっても時間がかかる・・・。
まぁ、それはそのうちなれるとして、ひらメソッドをやった感想を。

ソースコードだけあってドキュメントが一切無いプロジェクトで詳細設計書をソースから興している気分。
なるほど。時間がかかりそうだけどしっかり読めそう。

さてそれは置いといて、さっそくhttpd-2.2.8/server/main.cから読み始めたんだけど、
今のところapr_pool_tとかapr_file_tとかapr_allocator_tとかを調べて眺めている段階。
処理自体を見てみないと意味もわからないしね。

で気になったところは
apr_pool_tの中に保持しているapr_allocator_t。
こいつの


88 /**
89 * Lists of free nodes. Slot 0 is used for oversized nodes,
90 * and the slots 1..MAX_INDEX-1 contain nodes of sizes
91 * (i+1) * BOUNDARY_SIZE. Example for BOUNDARY_INDEX == 12:
92 * slot 0: nodes larger than 81920
93 * slot 1: size 8192
94 * slot 2: size 12288
95 * ...
96 * slot 19: size 81920
97 */
98 apr_memnode_t *free[MAX_INDEX];

のところ。
なんとなくカーネルのバディシステムだかスラブアロケータだかを連想させる。
気のせいか。
いや、実にわくわくしませんか?

あと、apr_pool_tの

473 apr_pool_t **ref;

自分自身へのポインタのポインタらしいんだけど、どのように使われているか
非常に楽しみ。


3日目でした。

0 コメント: