code:maknode - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki

Source

  • 生成 一个新文件的NODE块
  • 共传入1个参数 : mode
    • mode : 文件的模式,常量定义参看inode.h
  • 使用了1个隐式参数 : u.u_pdir
    • u.u_pdir 指向目录项,由namei设置
  • 总体:申请u.u_pdir对应设备上的新INODE块,并将此块链入u.u_pdir(wdir)

7451

7452 /*

7453  * Make a new file.

7454  */

7455 maknode(mode)

7456 {

7457     register *ip;

7458

7459     ip = ialloc(u.u_pdir->i_dev);

  • 申请u.u_pdir对应设备上的新INODE块 ip
7460     if (ip==NULL)

7461          return(NULL);

7462     ip->i_flag =| IACC|IUPD;

  • 置 ip 标志位
  • 标志常量参看inode.h
7463     ip->i_mode = mode|IALLOC;
  • 置 ip 模式位
  • 模式常量参看inode.h
7464     ip->i_nlink = 1;

7465     ip->i_uid = u.u_uid;

7466     ip->i_gid = u.u_gid;

7467     wdir(ip);

  • 将ip链入u.u_pdir,形成目录结构
7468     returm(ip);

7469 }

7470 /* ------------------------- */

Ref

Caller

⚠️ **GitHub.com Fallback** ⚠️