在 Linux 内核中,inode_operations 和 file_operations 是两个极其重要的结构体,它们定义了文件系统或设备驱动程序向内核提供的一组回调函数(操作函数),用于处理与文件/目录/设备相关的各种操作。
虽然它们都跟“文件操作”有关,但它们的作用对象和层次是不同的:
一、总体对比
| 项目 | inode_operations |
file_operations |
|---|---|---|
| 作用对象 | 针对 inode(索引节点),即文件系统中的某个对象(如文件、目录、设备)本身 | 针对 已打开的文件(file),即用户空间打开文件后得到的句柄 |
| 操作时机 | 在文件/目录被查找、创建、删除、链接等时候触发,属于元数据操作 | 在文件被读写、打开、关闭、定位(lseek)、IO控制等时候触发,属于数据操作或控制操作 |
| 典型用途 | 定义目录操作、文件创建、符号链接、权限控制等 | 定义文件读写、IO控制(ioctl)、文件定位等 |
| 相关结构 | 与 struct inode 关联 |
与 struct file 关联 |
| 常见函数 | .lookup, .create, .mkdir, .unlink, .link, .symlink 等 |
.read, .write, .open, .release, .llseek, .ioctl, .mmap 等 |
二、inode_operations(inode 操作集)
🧩 定义位置:
📂 文件:include/linux/fs.h
struct inode_operations {
// 目录相关操作
struct dentry * (*lookup) (struct inode *, struct dentry *, unsigned int);
struct dentry * (*lookup_one_len)(const char *, struct dentry *, int);
// 创建文件
int (*create) (struct user_namespace *, struct inode *, struct dentry *, umode

最低0.47元/天 解锁文章
478

被折叠的 条评论
为什么被折叠?



