やっぱり 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 掴みっぱなしを回避してるだけ? むー? いいや、他を読もう。
と思ったら宿題があるんだった。めんどくせ。