やっぱり Hurd。
おくじさんに「どんどん書いたらいいよ」と言われて自問したけど、やっぱり Hurd が弄りたい。Hurd を書こう。
というわけでとりあえず source を読み漁る…ったのは夕方の話。春に読んだときと違ってずいぶんすんなり頭に入って来る。どうしたことだ。焦りみたいなのが無くなったからかな。SigScheme を読んだのも関係あるかも。やた。
まぁそれでもよくわからんコードはあるわけで。特に thread awareness のあたり。
本日のよくわからん:
libpthread/pt-alloc.c: /* We are going to enlarge the threads table. Save its current size. We're going to release the lock before doing the necessary memory allocation, since that's a potentially blocking operation. */ max_threads = __pthread_max_threads; pthread_rwlock_unlock (&__pthread_threads_lock);
Thread を新しく生成するときに、その descriptor のためのメモリを確保する際、malloc の前で mutex を手放している。理由は malloc が block するかもしれないから。
Block する? Physmem の応答が遅いと困るってことかな? あるいは単に malloc が遅いから mutex 掴みっぱなしを回避してるだけ? むー? いいや、他を読もう。
と思ったら宿題があるんだった。めんどくせ。