Lions' 本読み (31)

追記せずにエントリ起こします。u.u_ar0 について。
再度 xref 確認してみました。exec で使われてるじゃん、て思ったらこれはシステムコールなので trap 経由してこの手続きに制御が渡ってくるはず。なので u.u_ar0 は例のカーネルスタックなナニ (344p の図 10.1) は有効なはず。
参照してる手続きを以下に列挙してみます。

  • trap
  • exec
  • rexit
  • wait
  • fork
  • getswit
  • gtime
  • stime
  • setuid
  • getuid
  • setgid
  • getgid
  • getpid
  • nice
  • ssig
  • kill
  • clock
  • psig
  • ptrace
  • procxmt
  • rdwr
  • open1
  • seek
  • sslep
  • fstat
  • dup
  • ufalloc
  • pipe
  • sgtty

ていずれもシステムコールっぽいです。ので、u.u_ar0 はセットされてるはず。どうもやっぱ sleep から psig に jmp する場合ってスルーされる気がしてるんですがどうなんだろ。
ちなみに手元にあるピアソンの詳解 UNIX プログラミングの 10.4 節に以下な記述があるんですが

UNIX の (バージョン 7 のような) 初期のバージョンでは、シグナルには信頼性がなかった。シグナルは生起するがプロセスには伝えられない場合がある。つまり、シグナルを紛失する場合があったのである。


これを指しているのかどうなのか。とりあえず先に進みます。