RAMFS是一个非常巧妙的,利用VFS自身结构而形成的内存文件系统。
RAMFS没有自已的文件存储结构,它的文件存储于page cache中,
目录结构由dentry链表本身描述,文件则由VFS的inode结构本身描述。
常用文件类型定义
#define S_IFMT 0170000 /* type of file ,文件类型掩码*/
#define S_IFREG 0100000 /* regular 普通文件*/
#define S_IFBLK 0060000 /* block special 块设备文件*/
#define S_IFDIR 0040000 /* directory 目录文件*/
#define S_IFCHR 0020000 /* character special 字符设备文件*/
#define S_IFIFO 0010000 /* fifo */
#define S_IFNAM 0050000 /* special named file */
ramfs处理的文件类型:
1.S_IFREG
- 注册了类型;
- 注册了操作函数;
2.S_IFDIR
- 注册了类型;
- 注册了操作函数;
3.S_IFLNK
- 注册了类型;
4.其他
- 调用Inode.c中的init_special_inode(),处理S_ISCHR/S_ISBLK/S_ISFIFO/S_ISSOCK,否则提示类型错误
ramfs对应的底层操作函数
1.mmu
- 简单处理(略)
2.nommu
- 内存映射转换(略)
初始化
- struct backing_dev_info ramfs_backing_dev_info,cache的预读设置
- bdi_init(),继续设置 ramfs_backing_dev_info
- register_filesystem(),注册rootfs_fs_type
分配新文件节点
- ramfs_mknod(),建立新节点调用这个函数
- ramfs_mkdir(),内部调用ramfs_mknod()
- ramfs_create(),建立 S_IFREG 类型节点
- ramfs_symlink(),建立 S_IFLNK|S_IRWXUGO 类型节点
- 新节点默认给予755权限
- 当使用new_inode(sb)时,sb指针将该fs实例的相关信息全部带入,在此基础上分配新inode
阅读(7869) | 评论(0) | 转发(1) |