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

Source

  • 根据 将指定的INODE块,链入相应的目录项,形成目录结构
  • 共传入1个参数 : ip
    • ip : 指向 指定INODE块
  • 使用了2个隐式参数 : u.u_dbuf[] , u.u_pdir
    • u.u_dbuf[] 保存INODE对应的文件名,由namei设置
    • u.u_pdir 指向目录项,由namei设置
  • 总体是将 ip的INODE块号 和 u.u_dbuf保存的文件名,写入 u.u_pdir指向的目录项

7471

7472 /*

7473  * Write a directory entry with

7474  * parameters left as side effects

7475  * to a call to namei.

7476  */

7477 wdir(ip)

7478 int *ip;

7479 {

7480     register char *cp1, *cp2;

7481

7482     u.u_dent.u_ino = ip->i_number;

7483     cp1 = &u.u_dent.u_name[0];

7484     for(cp2 = &u.u_dbuf[0]; cp2 < &u.u_dbuf[DIRSIZ];)

7485          *cp1++ = *cp2++;

7482 - 7485
7486     u.u_count = DIRSIZ+2;

7487     u.u_segflg = 1;

7488     u.u_base = &u.u_dent;

  • writei 使用的相关参数
7489     writei(u.u_pdir);
  • 写目录项的INODE块,将ip的信息写入目录
7490     iput(u.u_pdir);
  • 释放 INODE
7491 }

7492 /* ------------------------- */

7493

7494

7495

7496

7497

7498

7499

Ref

Caller

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