文件系统高级API之创建文件
static struct inode*
create(char *path, short type, short major, short minor)
{
struct inode *ip, *dp;
char name[DIRSIZ];
if ((dp=nameiparent(path, name)) == 0)
return 0;
ilock(dp);
if ((ip=dirlookup(dp,name, 0))!=0){
ilock(ip);
if(type==T_FILE&&ip->type==T_FILE)
return ip;
return 0;
}
ip=ialloc(dp->dev,type);
ilock(ip);
ip->major=major;
ip->minor=minor;
ip->nlink=1;
iupdate(ip);
if(type==T_DIR){
dp->nlink++;
iupdate(dp);
}
return ip;
}