remap_pfn_range函数
LDD3中对remap_pfn_range函数使用有这么一段限制方面的说明:
它只能访问保留页和超出物理内存的物理地址。remap_pfn_range不允许重新映射常规地址,这包括
调用get_free_page函数所获得的地址。
超出物理内存的物理地址如何理解?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
有么?我觉得只要不是高端内存就行
dreamice,你的意见呢?
我自己认为:只能是vmalloc区,当然保留地址可以
remap_pfn_range()函数的原型:
int remap_pfn_range(struct vma_area_struct *vma,unsigned long virt_addr,unsigned long pfn,unsigned long size,pgprot_t prot);
vma:虚内存区域,在一定范围内的页将被映射到该区域
virt_addr:重新映射时的起始用户虚地址
pfn:虚地址应该映射到的物理地址的页面号
如果想将自己申请的内存映射到用户空间,通过mem_map_reserve()把相应的内存设置为保留后就可以.
http://blog.chinaunix.net/u2/86768/showart_1731168.html
mmap例子程序
这几天比较忙,没来得及看你的帖子,等晚上回去看看源码再回复你吧
不是我的源代码,我只是看到好的贴记录下来,供自己和别人研究而已.