Lions' 本読み (61)

clock 手続き方面眺め中。以下も微妙。

3804            if(time[1]==tout[1] && time[0]==tout[0])
3805                    wakeup(tout);

あーそか、とりあえず tout で sleep する場所を確認してみれば良いのかな。

sleep システムコール

slep 手続きで tout 設定したり、tout で sleep したりしてますね。

5994        sleep(tout, PSLEP);
5995    }
5996    sleep(tout, PSLEP);

tout はまごろくさん資料でも_sleep する時間_という記載があるようですが、多重で sleep される形でカブると起床遅延が起きるのかな。

もひとつ

callout 関連なんですが

  • 3753 の_リストの中で最初のゼロでない時間をデクリメントする (Lions' Commentary on UNIX より引用)_という実装の意味
  • 3773 の_まだ予定時間が来ていない操作に対するエントリを配列の先頭の方向に移動する (Lions' Commentary on UNIX より引用)_な実装の微妙な印象

実装な記述を見てるに配列の末端にゴミが順次溜まっていくような気がしてならないんですが、timeout で新しいナニは先頭に挿入、って形になってるから何とかなってるのかどうなのか。
そろそろ次に進みます。