关于linux下mmap的一点强调

来源:互联网 发布:十大网络神兽 编辑:程序博客网 时间:2024/05/17 21:45

mmap系统调用是的可以在用户空间直接访问设备内存,它是通过映射来完成的,但是要强调的是:

1.mmap系统调用是对文件进行操作的,那么文件自然有其对应的file_operation结构,而其中有一个 int (*mmap)(struct file *,struct vm_area_struct *),所以系统调用实际最后调用的这个函数,但是之前内核会做点什么,不然struct vm_area_struct * 参数哪来的。驱动mmap只需要做2件事:建立页表和添加vma->vm_ops函数。vma是用来描述一段虚拟内存空间的结构体,其中封装了一些操作函数模拟对象的类。

2.如果想对内存直接操作,其原理应该一样,不过是对/dev/mem设备文件操作罢了,而且它的file_operation是现成的。

3.系统调用mmap必须使用页对齐的地址,不然的话会提示段错误

4.驱动mmap不仅建立的页表,同时修改了其权限,使其对用户空间进程可见

 


 

 

原创粉丝点击