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

Source

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

5761

5762 /*

5763  * open system call

5764  */

5765 open()

5766 {

5767     register *ip;

5768     extern uchar;

5769

5770     ip = namei(&uchar, 0);

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

5772          return;

5773     u.u_arg[1]++;

  • mode ← mode + 1
  • 此处进行了参数修正,因为 对外的常量定义 mode,与对内的常量定义 FREAD,FWRITE 不一致
  • FREAD,FWRITE的定义,参看file.h
5774     open1(ip, u.u_arg[1], 0);
  • 工作交由 open1 统一处理
5775 }

5776 /* ------------------------- */

Ref

Param

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