- 论坛徽章:
- 0
|
http://bbs.chinaunix.net/thread-2027090-1-1.html
今天按照上面这个链接的示例,做了一些修改,试了一下使用mmap映射/dev/mem文件,目的是在用户态使用指定的物理内存区域
mmap(0, phymem_size, PROT_READ|PROT_WRITE, MAP_SHARED, map_fd, phymem_addr);
phymem_addr是物理内存地址,我试了一下,这个值不能太大,大于1M左右,就mmap不成功了。使用的内核版本是3.10
我搜索了一下,看到一个说法,新的内核对这个/dev/mem已经做了一些限制了,导致不能映射了,不知道是不是这个原因。
如果是这样,请教大家一下,现在有什么办法方便映射一块物理内存。目前,我从网上搜索了一下,大概有这么一个思路,望高手指定一下:
就是想增加一个驱动设备,在其打开的时候,在内核申请一些物理内存,同时remap一下这个文件,感觉就像强写一下页表,目录一样。但感觉
这个方法没有使用dev/mem方便。
参考:http://blog.sina.com.cn/s/blog_510ac74901016ozh.html
再次列一下我的问题:
1)现在新内核是否还可以突破dev/mem的映射,这个方法比较方便?
2)有没有什么比较方便的办法在内核和用户态共享内存
谢谢各位! |
|