免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: blossom007cn
打印 上一主题 下一主题

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

论坛徽章:
0
11 [报告]
发表于 2007-06-13 12:59 |只看该作者
off = ((address-area->vm_start) >> PAGE_CACHE_SHIFT) + area->vm_pgoff;
请仔细看看这句,其实在这里area->vm_pgoff才是基址,前面那部分才是基于它的偏移, 请看清楚。

vm_pgoff是在做mmap的时候给赋值的。

论坛徽章:
0
12 [报告]
发表于 2007-06-13 13:55 |只看该作者

回复 #11 snow_insky 的帖子

area->vm_pgoff是页面偏移,“请看清楚”

论坛徽章:
0
13 [报告]
发表于 2007-06-13 14:19 |只看该作者
你也要看清楚用在什么场合,代表什么意思,你仅仅凭它的名称来定义呵呵,太搞笑了

论坛徽章:
0
14 [报告]
发表于 2007-06-13 14:20 |只看该作者
有结论了吗

论坛徽章:
0
15 [报告]
发表于 2007-06-13 14:20 |只看该作者
remap_pfn_range()
第三个参数是以页面为单位的物理地址,但这个例子好像有点不一样?

论坛徽章:
0
16 [报告]
发表于 2007-06-13 14:31 |只看该作者
原帖由 思一克 于 2007-6-13 14:20 发表于 14楼  
有结论了吗


我这儿还没呢, 等着你出手呢


PS,   ULK3第16章, 讲解do_mmap_pgoff()函数, step1, step2, step3, 怎么一下子跑道step10了? 是不是有缺页啊?

[ 本帖最后由 albcamus 于 2007-6-13 14:32 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2007-06-13 14:31 |只看该作者
vma->vm_pgoff 是 该vm 区域在map file中的以PAGE大小为单位的偏移。

比如4个vm_area MAP到一个文件的
1)0-----4096
2)5*4096 ------ 7*4096
3)9*4096 ------ 10*4096
4)15*4096 ----- 20*4096

那么4个vma的vm_pgoff分别为0,5,9, 15

本来和物理页号没有关系。

你们看到的和物理页号关系是一种特例和巧合

论坛徽章:
0
18 [报告]
发表于 2007-06-13 14:38 |只看该作者
off = ((address-area->vm_start) >> PAGE_CACHE_SHIFT) + area->vm_pgoff;
在这里,area->vm_pgoff是这个vm_area_struct相对于文件的偏移,area->vm_start是相对于文件的地址偏移,address - area->vm_start是这个地址相对于当前的VM area的偏移,右移PAGE_CACHE_SHIFT是转换成页号,两者相加,是这个address在当前VM area中的页number 偏移的数量。

请指正。

论坛徽章:
0
19 [报告]
发表于 2007-06-13 14:42 |只看该作者
remap_pfn_range 函数是被驱动调用(cd drivers     grep -r remap_pfn * )
用来将"所有"物理内存影射成一个文件中(driver/mem.c 参见)。

这时候,vm_pgoff就和物理PAGE号有关系了。是特例和巧合。
vm_pgoff的本意和物理PAGE号无关。
就是我上贴说的定义(看mm.h 一句话的说明: Offset (within vm_file) in PAGE_SIZE)

原帖由 albcamus 于 2007-6-13 14:31 发表于 16楼  


我这儿还没呢, 等着你出手呢


PS,   ULK3第16章, 讲解do_mmap_pgoff()函数, step1, step2, step3, 怎么一下子跑道step10了? 是不是有缺页啊?

[ 本帖最后由 思一克 于 2007-6-13 14:45 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2007-06-13 14:53 |只看该作者
对的,并不能把它和物理页联系起来。 只有在特定的上下文中才可以。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP