gaojl0728 发表于 2014-01-09 22:13

1. 你是用alloc_pages分配低端内存还是高端内存, 如果是低端内存就不需要vmap了, 所有的低端内存已经映射过了, 你再映射一次的话就重复映射了, 浪费一块虚拟现行地址空间,完全没不必要。
2. 你直接用filp_open/filp_read/filp_write读写文件有什么问题吗? 为什么不用现成的东西。

bensenq 发表于 2014-01-09 23:34

回复 11# smartegg


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

smartegg 发表于 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()

aweii 发表于 2016-06-26 23:25

mmap系统调用本身就是针对用户空间设计的
页: 1 2 [3]
查看完整版本: 如何将 普通文件映射到 kernel 地址空间 上 ?