RTEMS 4.9.4 filesystem.pdf
1 Pathname Evaluation
本章介绍了~RTEMS~文件系统的路径评估过程。
%XXX包含路径的评估过程中的图示
1.1 Pathname Evaluation Handlers
有两个路径评估程序。处理程序~patheval()~用来查找,核实权限,并且返回存在节点的信息。
处理程序~evalformake()~用来发现,验证权限,并返回成为父节点的信息。
此外,evalformake()~返回一个指向新被创建的节点的名字开始地址的指针。
路径的评价是由具体的文件系统指定的。
每个文件系统必须同时提供一个~patheval()~和一个~evalformake()~函数。
这两个函数都需要一个名称和一个表示从哪里开始评估的节点作为参数。
1.2 Crossing a Mount Point During Path Evaluation
如果文件系统支持~mount~命令,评估程序必须处理交叉挂载点。
评估程序评估的名称直到新文件系统被挂载的第一个目录节点。
文件系统也许要在调用评估函数评估新文件系统之前处理终止字符。
以期指针的部分名称,
一个指向还没有被评估过的部分名称的指针会随着新文件系统的根节点~(从挂载表中获取)~被传
递到正确的挂载文件系统的评估程序中。
1.3 The rtems_filesystem_location_info_t Structure
rtems_filesystem_location_info_t~结构包含识别一个节点所有必要的信息。
rtems~文件系统的代码定义了两个全局~rtems_filesystem_location_info_t~结构的变量,rtems_filesystem_root~和
rtems_filesystem_current。
两个都初始化定义为基础的文件系统的根节点。
一旦正确使用~chdir~命令,rtems_filesystem_current~设置成命令行指定的位置。
文件系统通用代码会检查被评估名称的第一个字符。如果这个字符是一个有效的分隔符,
使用~rtems_filesystem_root~为节点开始评估。
否则,以~rtems_filesystem_current~作为节点开始评估。
因此,一个有效的~rtems_filesystem_location_info_t~变量必须传递给评估程序。
评估程序负责对这个结构作出必要的修改,以解析对应的名称。
struct rtems_filesystem_location_info_tt { void *node_access; rtems_filesystem_file_handlers_r *handlers; rtems_filesystem_operations_table *ops; rtems_filesystem_mount_table_entry_t *mt_entry; };
1.node_access~:该元素是由文件系统指定的。一个文件系统可以定义和存储任何必要的信息,以识别在这个位置的节点。
这元素通常由文件系统的评估程序填写。
对于文件系统的根节点,文件系统的初始化例程应该填写在这个字段,并应保持有效直到该文件系统的实例被卸载;
2.handlers~:这个元素被定义为一个例程集,可能根据节点类型给定的文件系统而改变。
例如,一个目录和一个内存文件拥有完全不同的读程序。
这些元素被设置成挂载表定义的初始状态,并可能被评估程序设置成为理想状态;
3.ops~:该元素是一个例程集,为文件系统保持的静态接口。该元素标识到文件系统入口点通用代码(!!!这句话翻译的不好)。
4.mt_entry~:该元素为这个文件系统的实例识别挂载表项目。
转载于:https://blog.51cto.com/coolbacon/1280028