免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6864 | 回复: 11
打印 上一主题 下一主题

测试ldd3中的simple例子(mmap内存映射) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-16 15:08 |只看该作者 |倒序浏览
弄了两天,总算弄明白了内核虚拟地址,内核逻辑地址,物理地址,page, pfn等的概念及转换
初步了解了设备的mmap操作(我只会很简单的)

下面的两个例子是由ldd3的simple改写而成,解压后直接make
测试例程则是自己写的,也很简单, 但需要手工编译,因为我不会在同一Makefile中写多个目标,特别是因为这个Makefile是编译模块的
编译测试代码 gcc test.c -o test /xx/yy/bb.a (/xx/yy/bb.a是因为这个例程里使用了apue的例库)
理所当然也可以不用,直接把test.c中的err_sys和第一行的include去掉
然后直接gcc test.c -o test就行了

这里有两种不同类型的内存映射方式,一种是remap,另一种是nopage(哈,我也不知道怎么区分,暂且就这叫吧)
第一种方式是相当于一次性映射,后一种方式则是按需要映射,当访问的页面不存在时再映射
LDD3上说第一种方式只能映射保留页面和超出物理内存的物理地址(这是LDD3第425页的话,所谓超出物理内存的物理地址是什么??
是不是由vmalloc等分配的高端内存?),所以在分配内存后通过SetPageReserved设置了页面标志,使之不会换出
第二种方式则不需要设置页面保留标志位

测试时先执行load脚本,然后./test就可以看到结果了,用dmesg可以看到nopage, mmap的操作过程

[ 本帖最后由 fly6 于 2009-3-4 16:26 编辑 ]

mmap-nopage.tar.gz

6.4 KB, 下载次数: 313

mmap-remap.tar.gz

6.22 KB, 下载次数: 404

评分

参与人数 1可用积分 +15 收起 理由
dreamice + 15 原创内容

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-02-16 15:43 |只看该作者
看了下scullp,出现断错误应该是在simple驱动中根本就没有分配内存页面.也没有维护内存页面

但驱动什么时候会调用simple_vma_nopage,还是搞不懂

[ 本帖最后由 fly6 于 2009-2-16 15:46 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-02-17 13:40 |只看该作者
已经弄懂了

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [报告]
发表于 2009-02-17 14:27 |只看该作者
原帖由 fly6 于 2009-2-17 13:40 发表
已经弄懂了


贴出来分享一下吧,最近忙没继续研究ldd了

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2009-02-17 15:07 |只看该作者
原帖由 dreamice 于 2009-2-17 14:27 发表


贴出来分享一下吧,最近忙没继续研究ldd了


我也是。有时晚上回去还翻翻LDD3,温故而之新,呵呵

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
6 [报告]
发表于 2009-02-17 15:45 |只看该作者
原帖由 Godbach 于 2009-2-17 15:07 发表


我也是。有时晚上回去还翻翻LDD3,温故而之新,呵呵


我实在是太忙,很久都没有闲下来看看书了

论坛徽章:
0
7 [报告]
发表于 2009-02-17 16:46 |只看该作者
完成了两位的建议

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
8 [报告]
发表于 2009-02-17 17:03 |只看该作者
以后不要编辑,就提交到后面的新帖子吧,这样有利于大家分析问题。

论坛徽章:
0
9 [报告]
发表于 2009-02-17 17:04 |只看该作者
OK

论坛徽章:
0
10 [报告]
发表于 2009-02-17 17:04 |只看该作者
多谢加分,哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP