** 1 尝试使用enum{ name_1; name_2; name_3; } 来对程序中的一些层次进行比较。
用面向对象的方法解释
** fs_init() 初始化文件设备到文件系统的 类 *** 类的方法包括 文件系统所实现的通用接口 *** 类的属性包括 文件系统的类别 用enum列出,检测 ** FIXME 通过预处理把FULFS和文件系统接合
** 创建虚拟磁盘 main()//命令解析
- create()//输出错误信息 |
–ft_create()/系统调用 |
** 格式化虚拟磁盘 main()//命令解析
- format()//检验基本信息(文件系统名字,分配块大小) | |||||||||
- fs_format()//检查文件系统是否在支持的文件系统类别中 | |||||||||
- fulfs_format()
|
-| ** 文件系统层 main()//命令解析
|-enter()//解析配置文件,将设备挂载到盘符 ** FIXME 暂时挂载盘符A-shell_main()//进入文件系统shell层 |
-cmd_dispatch()//命令查询
|
** ls
-cmd_ls()//
|
** mkdir
-cmd_mkdir()//简单参数校验
|
** fs_stat(name,&fs_stat))
-根据name获取绝对路径 | ||||||||
-fulfs_stat(device,fs_ctrl,path_remain(abspath),&fs_stat)
|
-dev_inode_ctrl_init_from_superblock(&dev_inode_ctrl, device, sb);
| ||||||||||
-mem_inode_get(&dev_inode_ctrl, inode_no, &(base_file->mem_inode))
| ||||||||||
-完善文件基本信息当前块偏移为0,位置偏移为0 |
base_file_open(); | ||
读出所有数据,按照每个目录项大小循环,直到读完目录项
|
/dir0/dir1/dir2 ** 读出根目录 *** 查找dir0项 ** 读出dir0项查找dir1 ** 读出dir1项查找dir2
** 目录项的建立即包括文件名字和i节点 ** 通过根逐步找到目录项