2020-02-21

文件系统低级API之辅助函数之得到一个指定的inode

#define NINODE 50

struct {
    struct spinlock lock;
    struct inode inode[NINODE];
}icache;

static struct inode*
iget(uint dev, uint inum)
{
    struct inode *ip, *empty;
    empty = 0;
    for (ip=&icache.inode[0]; ip<&icache.inode[INODE];ip++) {
       if(ip->ref>0 && ip->dev == dev && ip->inum == inun) {
           ip->ref++;
           return ip;
       }
       if(empty == 0 && ip->ref == 0)
           empty = ip;
     }
     ip=empty;
     ip->dev=dev;
     ip->inum=inum;
     ip->ref=1;
     ip->valid=0;
     return ip;
}
发布了28 篇原创文章 · 获赞 0 · 访问量 228

猜你喜欢

转载自blog.csdn.net/qq_41224661/article/details/104422475