fs.c struct inode* idup(struct inode *ip)
トップページ
jupiteroak.hatenablog.com
fs.c
https://github.com/mit-pdos/xv6-public/blob/master/fs.c#L276
struct inode* idup(struct inode *ip) { acquire(&icache.lock); ip->ref++; release(&icache.lock); return ip; }
idup関数は、引数で渡されたiノードへの参照を1つ増やします。
引数 struct inode *ip
操作対象となるiノードのアドレスです。
戻り値 inode構造体のアドレス
操作対象となるiノードのアドレスです。
処理の内容
クリティカルセクションの入口を定める
acquire(&icache.lock);
メインメモリ上に用意されているiノードのキャッシュ領域(icache)を排他制御するために、acquire関数を呼び出してロックを取得し、クリティカルセクションの入口とします。
iノードの参照回数を増やす
ip->ref++;
iノードの参照回数をインクリメントします。
iノードのアドレスを戻り値としてリターンする
return ip;