zoukankan      html  css  js  c++  java
  • Linux2.4打开一个文件的系统调用

    0.sys_open()

    (1)从当前进程的“打开文件表”中找到一个空闲的项get_unused_fs()

    (2)建立文件读写的上下文filp_open():(见1)

    (3)将上下文安装到文件打开表中


    1.filp_open():建立文件读写的上下文

    (1)获取指向文件名的dentry和vfsmount:open_namei()

    若只是打开,则通过path_init()和path_walk()搜索

    若有不存在就创建的要求,则(见3)


    3.获取指向文件名的dentry和vfsmount,若不存在就创建

    (1)找到path_name对应的节点的父dentry

    (2)找到目标文件的dentry

    (3)若不存在,则创建dentry:vfs_create()(见4)

    (4)判断dentry:

    若是一个安装点,则进入所安装的文件系统

    若是一个连接符号,则展开目标结点,go to 3-(1)

    (5)由dentry计算出inode

    (6)对inode各种检查

    (7)如果需要,对文件截尾

    A.切除length之后的内容

    B.修改inode

    C.把inode挂入脏队列


    4.vfs_create():为文件在创建一个dentry

    (1)创建文件在存储设备上的索引节点和内存中的inode:ext2_new_inode()

    (2)把目标文件的文件名和索引节点号写入其所在的目录ext2_add_entry()

    (3)把目标文件的dentry结构和inode结构联系在一起d_instantiate()

  • 相关阅读:
    python time 转换&运算tips
    Web.py session用户认证
    简单的内存池实现gko_alloc
    cpp(第十章)
    cpp(第九章)
    cpp(第八章)
    cpp(第七章)
    cpp(第六章)
    cpp(第五章)
    结构中的位字段
  • 原文地址:https://www.cnblogs.com/windmissing/p/2559816.html
Copyright © 2011-2022 走看看