关于Linux下mmap的一点强调
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是现成的。
相关推荐
libowenhit 2020-07-23
tigercn 2020-07-29
luckykapok 2020-07-06
LCFlxfldy 2020-05-14
zangdaiyang 2020-01-29
lypgcs 2019-11-19
喝咖啡的IT羊 2011-04-11
Scorpionbao 2011-03-06
vickytong0 2011-02-23
不断攀登的梦想 2011-08-18
airfish000 2010-12-06
学峰的学习笔记 2011-09-22
nevercgoodbye 2011-12-21
micmouse 2019-09-09
viplinux 2010-12-10
TimelessFaith 2009-12-16
luoshuitianyi 2019-06-27