菜鸟求教/dev/mem 的mmap问题
我在驱动中申请了一块内存,在应用程序中打开/dev/mem,再mmap,结果dmesg中报错,mmap也返回失败。/var/log/messages的报错:Program test tried to read /dev/mem between 209800000->209a28000
原来在redhat 企业版5.2(内核版本2.6.18-98)下是没问题的,结果现在换成redhat 企业版5.3(内核版本2.6.18-128)就不行了
哪位大侠知道原因吗?多谢了! 首先确定一下/dev/mem是否有读取的权限 LZ可以看一下偶的这篇文章中的实现。
http://blog.chinaunix.net/u/33048/showart_1271210.html
另外,你内核态分配的地址是否已经转换成了物理地址 原帖由 Godbach 于 2009-12-30 21:35 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
首先确定一下/dev/mem是否有读取的权限
我是用root执行的 原帖由 Godbach 于 2009-12-30 21:38 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
LZ可以看一下偶的这篇文章中的实现。
http://blog.chinaunix.net/u/33048/showart_1271210.html
另外,你内核态分配的地址是否已经转换成了物理地址
是的,用的是物理地址,方法一样 建议LZ这样实验一下。既然/dev/mem可以读取的话,你就把它当个文件。打开文件后,按照你得到的物理地址作为偏移,读取文件内容即可。
看一下这样是否可行。 原帖由 Godbach 于 2009-12-31 10:08 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
建议LZ这样实验一下。既然/dev/mem可以读取的话,你就把它当个文件。打开文件后,按照你得到的物理地址作为偏移,读取文件内容即可。
看一下这样是否可行。
/dev/mem是实现了fops的函数吗? 原帖由 superfisha 于 2009-12-31 10:54 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
/dev/mem是实现了fops的函数吗?
之前在2.4下直接按照文件的方式读取过/dev/mem,你可以试一下 应该跟内核编译选项有关系,你看下CONFIG_STRICT_DEVMEM是否打开,如果是打开的关掉试下. 我觉得写个测试程序应该是几分钟的事情,行不行很快就得到验证了
页:
[1]
2