fs.c void iunlock(struct inode *ip)
トップページ
jupiteroak.hatenablog.com
fs.c
https://github.com/mit-pdos/xv6-public/blob/master/fs.c#L315
void iunlock(struct inode *ip) { if(ip == 0 || !holdingsleep(&ip->lock) || ip->ref < 1) panic("iunlock"); releasesleep(&ip->lock); }
iunlock関数は、引数で渡されたiノードのスリープロックを解放します。
引数 struct inode *ip
操作対象となるiノードのアドレスです。
処理の内容
不正なiノードではないことを確認する
if(ip == 0 || !holdingsleep(&ip->lock) || ip->ref < 1) panic("iunlock");
①引数ipで指定されたiノードが存在しない、または、②現在実行中のプロセスがiノードに関連しているスリープロックを保持していない、または、③iノードの参照回数が0の場合は、panic関数を呼び出してメッセージを出力します。