int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *, fl_owner_t id); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*aio_...
struct file_operations是一个字符设备把驱动的操作和设备号联系在一起的纽带,是一系列指针的集合,每个被打开的文件都对应于一系列的操作,这就是file_operations,用来执行一系列的系统调用。 linux-2.6.22/include/linux/fs.h struct file_operations { struct module *owner; //防止模块还在被使用的时候被卸载 lof...
2)如果是64位的用户程序运行在64位的kernel上,调用的是unlocked_ioctl,如果是32位的用户程序运行在32位的kernel上,调用的也是unlocked_ioctl。 3. struct file_operations结构体 structfile_operations{structmodule*owner;loff_t(*llseek)(structfile*,loff_t,int);ssize_t(*read)(structfile*,char__user*,size...
vm_area_struct结构含有指向vm_operations_struct结构的一个指针,vm_operations_struct描述了在这个区间的操作。 vm_operations_struct结构中包含的是函数指针,其中open、close分别用于虚拟区间的打开、关闭,而nopage用于当虚拟页面不再物理内存而引起的”缺页异常”时所调用的函数,当Linux处理这一缺页异常时,就可以为新...
(1)内存映射模块(mmap):负责把磁盘文件的逻辑地址映射到虚拟地址,以及把虚拟地址映射到物理地址。 (2)交换模块(swap):负责控制内存内容的换入和换出,它通过交换机制,使得在物理内存的页面(RAM 页)中保留有效的页 ,即从主存中淘汰最近没被访问的页,保存近来访问过的页。
struct vm_area_struct * mmap_cache; /* last find_vma result 指向最近找到的虚拟区间 */ #ifdef CONFIG_MMU /*用来在进程地址空间中搜索有效的进程地址空间的函数*/ unsigned long (*get_unmapped_area) (struct file *filp, unsigned long addr, unsigned long len, ...
structrw_semaphorei_mmap_sem; structinodevfs_inode; structjbd2_inode*jinode; ... }; 再看一下:ext4_inode、ext4_inode_info、inode之间的关联, ext4_inode如下所示,是磁盘上inode的结构 structext4_inode{ __le16 i_mode;/* File mode */ __le...
static const struct file_operations v4l2_fops = { .owner = THIS_MODULE, .read = v4l2_read, .write = v4l2_write, .open = v4l2_open, .get_unmapped_area = v4l2_get_unmapped_area, .mmap = v4l2_mmap, .unlocked_ioctl = v4l2_ioctl, ...
@@ -293,9 +293,9 @@ static int proc_reg_mmap(struct file *file, struct vm_area_struct *vma) struct proc_dir_entry *pde = PDE(file_inode(file)); int rv = -EIO; if (use_pde(pde)) { typeof_member(struct file_operations, mmap) mmap; typeof_member(struct proc_ops, proc_mmap...
在 file_operations 结构体中,会看到许多函数指针所指向的函数都必须传进struct file 结构体指针 struct file * 作为参数。struct file 结构体定义在 <linux/fs.h> 中,完整如下:引用 struct file{ union{ struct list_head fu_list;struct rcu_head fu_rcuhead;}f_u;struct path f_path;#define f_...