Lions' 本読み (138)

朝練。u_pdir 属性ですか。というか

  • wdir 手続き (7477)
  • maknode 手続き (7455)
  • link 手続き (5909)

の呼び出し元確認してみます。

wdir 手続き

link 手続きから呼び出されていますね。もう一つは maknode 手続きから。上に挙げた三つが全部出てきてしまいました。時間がどうかは不明ですが、順に全部確認してみます。
つうか確かに wdir はディレクトリエントリを書き込んでいますね。簡単に過ぎないのかどうか、と思ってみたら以下な前提がある模様。

この手続きは、ディレクトリファイルがすでに検索済みであり、ディレクトリファイルの i ノードがすでに割り当てられていて、u.u_offset の値が適切に設定してあることが前提になっている。

Lions' Commentary on UNIX より引用
うーん、やっぱ 16 から 21 あたりまできちんと読まないと微妙感満点。とりあえず u.u_dent で掘削してみます。なんとなく大変そうな予感。
詳細は略で以下に列挙のみ。

  • unlink 手続き (3510)
  • wdir 手続き (7477)
  • namei 手続き (7518)

namei 手続きではディレクトリエントリをバッファから取得して u.u_dent にコピィしてますね。wdir では書き込み前に自分でセットしてるのか。
unlink 手続きでは中で呼び出している削除な namei マターなのかどうか。ええと namei の中で inode オブジェクトに変換したソレの情報が u_dent に格納されてるのか。
unlink 手続きでは

  • 削除処理な namei は親ディレクトリの inode オブジェクトを戻す
  • unlink されるファイルの inode オブジェクトを取得するために u_dent.u_ino を使う
    • u_dent は削除対象のソレ、ってのもなかなか

色々な意味で unlink 面白いんですが、別途ってことで楽しみを残しておくことに。