提交 d80b06a1 创建 作者: rsc's avatar rsc

iincref returns new ref

上级 35a24c83
......@@ -128,7 +128,7 @@ void ilock(struct inode*);
void iunlock(struct inode*);
void itrunc(struct inode*);
void idecref(struct inode*);
void iincref(struct inode*);
struct inode* iincref(struct inode*);
void iput(struct inode*);
struct inode* namei(char*, int, uint*, char**, struct inode**);
void stati(struct inode*, struct stat*);
......
......@@ -266,8 +266,7 @@ iunlock(struct inode *ip)
uint
bmap(struct inode *ip, uint bn)
{
unsigned x;
uint *a;
uint *a, x;
struct buf *inbp;
if(bn >= MAXFILE)
......@@ -350,12 +349,14 @@ idecref(struct inode *ip)
}
// Increment reference count for ip.
void
// Returns ip to enable ip = iincref(ip1) idiom.
struct inode*
iincref(struct inode *ip)
{
ilock(ip);
ip->ref++;
iunlock(ip);
return ip;
}
// Copy stat information from inode.
......@@ -511,8 +512,7 @@ namei(char *path, int mode, uint *ret_off,
if(*cp == '/')
dp = iget(rootdev, 1);
else {
dp = p->cwd;
iincref(dp);
dp = iincref(p->cwd);
ilock(dp);
}
......
......@@ -150,8 +150,7 @@ copyproc(struct proc *p)
fileincref(np->ofile[i]);
}
np->cwd = p->cwd;
iincref(p->cwd);
np->cwd = iincref(p->cwd);
return np;
}
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论