码迷,mamicode.com
首页 > 其他好文 > 详细

vfs:open.c 源码学习

时间:2017-12-02 00:37:59      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:索引   pen   down   ast   ini   描述符   文件   walk   open   

nameidata路径查找辅助结构

open.c

@do_sys_open
    @get_unused_fd_flags
    @do_filp_open
        1.开始填充nameidata
        2.开始填充file
        @path_openat
            1. file = get_empty_filp(); //开始填充file
            2. file->f_flags = op->open_flag; //开始填充file
            3. path_init(dfd, pathname->name, flags | LOOKUP_PARENT, nd, &base); 
               //开始填充初始化nameidata,并且从根查找
                3.1 nd->last_type = LAST_ROOT;
                3.2 nd->flags = flags | LOOKUP_JUMPED;
                3.3 nd->depth = 0;
                3.4 nd->path = nd->root;
                3.5 nd->inode = inode;
            4. link_path_walk(pathname->name, nd);
            5. do_last(nd, &path, file, op, &opened, pathname);
                // 某些条件下会进入:
                5.1 fput(file):  //释放file
                5.2 dput(path->dentry);  // 释放dentry
@get_unused_fd: 得到一个可用的文件描述符;通过该函数,可知文件描述符实质是进程打开文件列表中对应某个文件对象的索引值;
@do_filp_open: do_filp_open()打开文件,返回一个file对象,代表由该进程打开的一个文件;进程通过这样的一个数据结构对物理文件进行读写操作。
@path_openat:返回一个file对象,@do_filp_open 直接把活扔给@path_openat. filp = path_openat(dfd, pathname, &nd, op, flags | LOOKUP_RCU)

vfs:open.c 源码学习

标签:索引   pen   down   ast   ini   描述符   文件   walk   open   

原文地址:http://www.cnblogs.com/muahao/p/7944857.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!