zoukankan      html  css  js  c++  java
  • vfs:open.c 源码学习

    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)
    
    
  • 相关阅读:
    (转载)关于一些对location认识的误区
    Python内置数据结构--列表
    Maven
    Python基础语法
    安装ipython和jupyter
    Python环境安装
    Java多线程
    SpringMVC集成springfox-swagger2自动生成接口文档
    SpringMVC拦截器
    SpringMVC异常处理器
  • 原文地址:https://www.cnblogs.com/muahao/p/7944857.html
Copyright © 2011-2022 走看看