免费注册 查看新帖 |

Chinaunix

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

[文件系统] 如何将 普通文件映射到 kernel 地址空间 上 ? [复制链接]

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
21 [报告]
发表于 2014-01-09 22:13 |只看该作者
1. 你是用alloc_pages分配低端内存还是高端内存, 如果是低端内存就不需要vmap了, 所有的低端内存已经映射过了, 你再映射一次的话就重复映射了, 浪费一块虚拟现行地址空间,完全没不必要。
2. 你直接用filp_open/filp_read/filp_write读写文件有什么问题吗? 为什么不用现成的东西。

论坛徽章:
1
水瓶座
日期:2013-09-28 21:40:25
22 [报告]
发表于 2014-01-09 23:34 |只看该作者
回复 11# smartegg


    不明白存储服务为什么一定要在内核态实现??用户层的mmap就是你的需求啊,为啥要在内核层做呢?

论坛徽章:
0
23 [报告]
发表于 2014-01-10 15:10 |只看该作者
回复 21# gaojl0728


    1. 你是用alloc_pages分配低端内存还是高端内存, 如果是低端内存就不需要vmap了, 所有的低端内存已经映射过了, 你再映射一次的话就重复映射了, 浪费一块虚拟现行地址空间,完全没不必要。

确实是哈, 有点浪费。  vmap 确实有些没必要。

2. 你直接用filp_open/filp_read/filp_write读写文件有什么问题吗? 为什么不用现成的东西。

a.  我现在的做法里相当于没有使用page cache 了, 直接通过address_space_operations->readpage() 读到page 中。
b.  关于回刷磁盘:  我直接遍历pages 对应的 pte ,   看是否是dirty ,  如果 dirty 的话 就调用 address_space_operations->writepage()

论坛徽章:
0
24 [报告]
发表于 2016-06-26 23:25 |只看该作者
mmap系统调用本身就是针对用户空间设计的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP