RTEMS文件系统(3):挂载和卸载文件系统

来源:互联网 发布:康佳lc24fs66dc数据 编辑:程序博客网 时间:2024/05/16 17:34

RTEMS 4.9.4 filesys.pdf

3 Mounting and Unmounting Filesystems
3.1 Mount Points
下面是一个挂载点的特性列表:

  1. 挂载点必须是一个目录。它的下面可能有文件和其他目录。当文件系统被挂载以后这些文件和目录将被隐藏;
  2. 任务必须具有对挂载点的读/写/执行权限,否则挂载尝试将被拒绝;
  3. 一个文件系统只可以被挂载到一个挂载点;
  4. 在挂载完成后,挂载文件系统的根将被挂载点的名称引用。




3.2 Mount Table Chain
挂载链表是一个动态列表结构,描述在基本文件系统中的特定挂载点上的挂载文件系统。
在基本文件系统初始化时它被初始化为空状态。
挂载操作将会向挂载链表中添加条目。
卸载操作将从挂载链表移除条目。
挂载链表中的每个条目用以下类型定义:



    struct rtems_filesystem_mount_table_entry_tt
    {
        Chain_Node Node;
        rtems_filesystem_location_info_t mt_point_node;
        rtems_filesystem_location_info_t mt_fs_root;
        int options;
        void *fs_info;
        rtems_filesystem_limits_and_options_t pathconf_limits_and_options;
        /*
        * When someone adds a mounted filesystem on a real device,
        * this will need to be used.
        *
        * The best option long term for this is probably an
        * open file descriptor.
        */
        char *dev;
    };

Node~:该字段是用于产生挂载表项目链表的一个节点;

mt_point_node~:在~mt_point_node包含了所有必要的用于访问文件系统安装到目录的信息。
该元素可能包含内存,它是在评估文件系统包含挂载点目录的路径时分配的。
泛型代码允许这种内存被卸载程序释放;


mt_fs_root:mt_fs_root包含所有确定已挂载文件系统根目录的必要信息。
泛型代码决不允许用户访问此节点,它是用来识别挂载文件系统从哪里开始进行路径名评估的;

options~:XXX;


fs_info:fs_info~字段是一个用于已挂载文件系统识别文件系统实例的唯一方法。例如,IMFS~使用这个空间提供对每一个文件系统的实例来说是唯一的节点标识。

pathconf_limits_and_options~:XXX;

dev:此字符串表示设备所在文件系统的位置。

3.3 Adding entries to the chain during mount
当文件系统被挂载,它所在文件系统的位置被记录在一个动态列表中。
rtems_filesystem_mount_table_entry_tt结构的变量会记录每一个挂载的文件系统。
这也包括基本文件系统。


3.4 Removing entries from the chain during unmount
当文件系统被卸载,它所在的挂载链表项被移除,其所占用的内存被释放。

原创粉丝点击