linux打开文件系统调用,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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值