本文主要是介绍文件系统1 【虚拟文件系统VFS】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
结构体 | 描述 |
---|
struct super_block | 超级块 |
struct inode | 索引节点 |
struct file | 文件对象 |
struct dentry | 目录项对象 |
struct task_struct | 进程结构 |
struct files_struct | |
- struct inode成员
成员 | 描述 |
---|
unsigned long i_state; | 索引节点状态标志 |
unsigned long i_ino; | 索引节点号 |
atomic_t i_count; | 引用计数器 |
loff_t i_size; | 文件字节数 |
struct timespec i_atime; | 上次访问文件的时间 |
struct timespec i_mtime; | 上次写文件的时间 |
struct timespec i_ctime; | 上次修改索引节点的时间 |
unsigned int i_blkbits; | 块的位数 |
unsigned long i_blksize; | 块的字节数 |
unsigned long i_blocks; | 文件块数 |
unsigned short i_bytes; | 文件中最后一个块的字节数 |
struct block_device *i_bdev; | 指向块设备驱动程序的指针 |
struct cdev *i_cdev; | 指向字符设备驱动程序的指针 |
- 索引节点状态标志
| | |
|–|--|
| I_DIRTY_SYNC | |
| I_DIRTY_DATASYNC | |
| I_DIRTY_PAGES | |
| I_LOCK | 涉及的索引节点对象处于I/O传送中|
| I_FREEING | 索引节点对象正在被释放 |
| I_CLEAR | 索引节点对象的内容不再有意义|
| I_NEW | 索引节点对象已经分配但还没有用从磁盘索引节点读取来的数据填充 |
- struct inode成员
成员 | 描述 |
---|
struct dentry *f_dentry; | 与该文件相关的目录项对象 |
struct file_operations *f_op; | 指向文件操作表的指针 |
| |
- 系统调用列表
- sys_open
struct task_struct { struct files_struct *files;
}struct files_struct {atomic_t count;spinlock_t file_lock; int max_fds;int max_fdset;int next_fd;struct file ** fd; fd_set *close_on_exec;fd_set *open_fds;fd_set close_on_exec_init;fd_set open_fds_init;struct file * fd_array[NR_OPEN_DEFAULT];
};get_unused_fd() 在current->files->fd 中找到一个空位
这篇关于文件系统1 【虚拟文件系统VFS】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!