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

Source

  • 创建文件 的系统调用
  • 从 用户态 传入2个参数 name, mode
    • name : 文件路径
    • mode :
      • 0 : 读模式
      • 1 : 写模式
      • 2 : 读写模式

5777

5778 /*

5779  * creat system call

5780  */

5781 creat()

5782 {

5783     register *ip;

5784     extern uchar;

5785

5786     ip = namei(&uchar, 1);

  • ip 指向 文件路径name 对应的 文件inode块
5787     if(ip == NULL) {

5788          if(u.u_error)

5789               return;

5790          ip = maknode(u.u_arg[1]&07777&(~ISVTX));

  • 创建INODE,并链入父目录
  • 标志位强制清 ISVTX,定义参看inode.h
5791          if (ip==NULL)

5792           return;

5793          open1(ip, FWRITE, 2);

5794     } else

  • LIONS源代码原文为
5794 } 疑为笔误

5795     open1(ip, FWRITE, 1);

5796 }

5797 /* ------------------------- */

Param

(creat = 8.)
sys creat; name; mode
(file descriptor in r0)
⚠️ **GitHub.com Fallback** ⚠️