[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:dentryの参照要求と参照の終了
}}}
= dentryの参照要求と参照の終了 = #SECTION03520000000000000000
dentryを利用する前には必ず、dget関数を呼び出しdentryの参照数を1増やしておかねばならない。dget関数はdentryの参照数を1増やす関数である。
また参照が終わったら、dput関数によってdentryの参照数を1減らさなければならない。このとき参照数が0になった場合、そのdentryの状態により、処理が分かれる。またdputによりこのdentryが解放されてしまう場合は、親ディレクトリのdentryに対するdputも呼び出している。(子ファイルからの参照を一つ減らすため)
{{{
dput(dentry)
if (参照数 > 1) {
参照数を1減らす
return
}
if (dentry_unusedリストにリンクされていたら) {
一旦、 dentry_unusedリストからはずす
}
if (既にキャッシュに登録されていない) {
dentryのリンクを全て切る。
対応するinodeの解放(dentry_iput関数)
parent = dentry->d_parent;
dentryのメモリ領域解放(d_free関数)
親ディレクトリのdentryに対してdput関数を呼びだす。
}
dentry_unusedリストに繋ぐ
}}}
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]