免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: blossom007cn

请教大家一个mmap的问题 [复制链接]

论坛徽章:
0
发表于 2007-06-13 17:21 |显示全部楼层
不是在循环吗,MAP许多连续的PAGE。
你的问题是什么?

原帖由 rwen2012 于 2007-6-13 17:19 发表于 30楼  
“remap_pfn_range最终会调用下面函数,对于vm_pgoff=0,第一次调用时,pfn为0,
所以下面set_pte_at(mm, addr, pte, pfn_pte(pfn, prot)将第0页物理内存映射进进程空间?”

谢谢

论坛徽章:
0
发表于 2007-06-13 17:32 |显示全部楼层
“remap_pfn_range最终会调用下面函数,对于vm_pgoff=0,第一次调用时,pfn为0,
所以下面set_pte_at(mm, addr, pte, pfn_pte(pfn, prot)将第0页物理内存映射进进程空间?”

我想问,这样的话进程可以访问第0页物理内存?

论坛徽章:
0
发表于 2007-06-13 18:39 |显示全部楼层
原来是这意思.

这个不一定是被用户进程直接间接调用的. 所以用户程序不能.

但用户程序通过物理内存映射文件可以访问任何物理页, 0页也在之内.


原帖由 rwen2012 于 2007-6-13 17:32 发表于 32楼  
“remap_pfn_range最终会调用下面函数,对于vm_pgoff=0,第一次调用时,pfn为0,
所以下面set_pte_at(mm, addr, pte, pfn_pte(pfn, prot)将第0页物理内存映射进进程空间?”

我想问,这样的话进程可以访问第 ...

论坛徽章:
0
发表于 2007-06-14 08:37 |显示全部楼层
原帖由 思一克 于 2007-6-13 18:39 发表于 33楼  
原来是这意思.

这个不一定是被用户进程直接间接调用的. 所以用户程序不能.

但用户程序通过物理内存映射文件可以访问任何物理页, 0页也在之内.




但是,LZ提供的ldd3上的例子上的offset就是0,它将映射第0页物理内存?
可是很明显它是想映射并访问自己的缓存区。

不好意思,没弄明白,罗嗦了 :)

论坛徽章:
0
发表于 2007-06-14 08:59 |显示全部楼层
没有问题

既然drivers/char/mem.c可以这样做,你自己编个module也做同样的事情也可以。

原帖由 rwen2012 于 2007-6-14 08:37 发表于 34楼  


但是,LZ提供的ldd3上的例子上的offset就是0,它将映射第0页物理内存?
可是很明显它是想映射并访问自己的缓存区。

不好意思,没弄明白,罗嗦了 :)

论坛徽章:
0
发表于 2007-06-14 10:54 |显示全部楼层
我觉得我们应该从那个例子的上下文中去理解楼主的问题,唉,断章取义不可取。不过我觉得这个问题已经很清楚了。

论坛徽章:
0
发表于 2007-06-14 11:38 |显示全部楼层
谢谢, 我好像记得ldd3那个例子中传入的offset是0,
按上面所说,其中remap_pfn_range映射的是第0页物理内存,
这么一来,它访问到的内容就不是它想要的了吗?

糊涂了, 呵呵

论坛徽章:
0
发表于 2007-06-14 12:53 |显示全部楼层
原帖由 rwen2012 于 2007-6-14 11:38 发表于 37楼  
谢谢, 我好像记得ldd3那个例子中传入的offset是0,
按上面所说,其中remap_pfn_range映射的是第0页物理内存,
这么一来,它访问到的内容就不是它想要的了吗?

糊涂了, 呵呵



看完所有的回复,一直是这个疑问点
真想说,是不是ldd的这个例子搞错了,现没有编译,运行,并跟踪这个例子的条件,暂时比较晕

论坛徽章:
0
发表于 2007-06-14 13:15 |显示全部楼层

回复 #38 augustusqing 的帖子

LFN里的相关问题不知道是不是同一兄弟问的:
http://www.linuxforum.net/forum/ ... &o=7&fpart=

但在察看了一下ldd3的源码,确实有“The following code is derived from drivers/char/mem.c” ,所以应该这里的remap_pfn_range映射第0页物理内存的糊涂可以不用再糊涂了,这样的用法也就限于drivers/char/mem.c,因而在我们实际的设备编程中,没有什么特别需要,肯定不会像例子这样直接把vma->vm_pgoff传递给remap_pfn_range()的,至少也要像drivers/char/mem.c中那样对page进行access判断

论坛徽章:
0
发表于 2007-06-14 13:42 |显示全部楼层

回复 #39 augustusqing 的帖子

是我问的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP