zoukankan      html  css  js  c++  java
  • linux源代码阅读笔记 find_entry分析

    78 static struct buffer_head * find_entry(struct m_inode * dir,
     79         const char * name, int namelen, struct dir_entry ** res_dir)
    

     find_entry是linux文件系统中一个较为费解的函数。下面我们来分析一番。

    它的第一个参数是 m_inode型,它指示了函数操作的所在根目录的inode节点。即相对路径的起始节点。

    name自然是想要查找的目录路径,namelen是该目录名的长度。

    res_dir是以指针的形式返回想要查找的目录项。

    而函数返回值是包含该目录项的block所对应的buffer_head。

    为什么会有两个返回值呢。我们知道,ext2文件系统下,目录是以文件形式存在的,inode是目录的索引。

    而inode指向的block中存储的是该目录下包含的文件和子目录的信息。它以如下的结构体存在。

    140 struct dir_entry {
    141         unsigned short inode;
    142         char name[NAME_LEN];
    143 }; 
    

     name数组存储了文件名,inode存储了inode号。这样目录文件实际上也是一个文件,只不过该文件的内容是一个个

    dir_entry结构体,因此,它也与普通文件一样,可能占有一个block,也可能占有多个block。

    find_entry函数的功能就是找到存储了name参数对应文件的dir_entry所在的block,并且以buffer_head的形式返回,同时

    以指针的形式返回该文件对应的dir_entry。

  • 相关阅读:
    主键、外键和索引的区别
    设置session超时的三种方式
    redis常用操作
    timestamp 转 date 处理后再转timestamp
    fragment在水平/垂直时的应用
    Activity堆栈管理
    ORMLite的使用
    onItemLongClick事件的监听
    Bundle的使用
    有关implicit Intent的使用
  • 原文地址:https://www.cnblogs.com/elnino/p/4383658.html
Copyright © 2011-2022 走看看