免费注册 查看新帖 |

Chinaunix

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

[内存管理] alloc_pages 申请的高端内存如何映射呢 [复制链接]

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
21 [报告]
发表于 2014-08-06 08:53 |只看该作者
Tinnal 发表于 2014-08-05 23:25
还没洗,看到humjb_1983的回复,又去看了一眼,这个函数能达到操作很大的物理内存的目的,但每次只能操 ...

呵呵,兄弟说的哪个函数每次只能操作4k?应该不会吧,在get_vm_area后,vm_struct->pages是个数组,可以容纳多页,vmalloc就是这样实现的,
参考vmalloc的实现,可以一次操作n页,vmalloc就是这样搞的,只不过其分配的物理页一页页单独分配的,可能不连续,而lz分配的物理页是通过alloc_pages
分配的连续页。

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
22 [报告]
发表于 2014-08-06 08:58 |只看该作者
回复 18# Tinnal
呵呵,兄弟说的很有道理,其实想法跟我的类似,ioremap可以参考,其实现跟lz的要求差不多,但是ioremap_page_range之类的接口直接用的话可能有风险,其中应该有一些ioremap特定的操作(具体还没仔细看~,从接口名称推测,呵呵~)
而我最终提的是参考vmalloc的实现,使用的接口好像相对通用一些~
反正,都可以用啦~,也可以自己去做映射,但地址空间中能用的估计只能是vmalloc区了。


   

论坛徽章:
0
23 [报告]
发表于 2014-08-06 09:58 |只看该作者
回复 17# humjb_1983


    恩 我看看

论坛徽章:
0
24 [报告]
发表于 2014-08-06 09:59 |只看该作者
Tinnal 发表于 2014-08-05 23:16
回复 9# qq1158291633


非常感谢 这个正是我想要的

论坛徽章:
0
25 [报告]
发表于 2014-08-06 10:06 |只看该作者
灰常感谢humjb_1983和Tinnal 同学的回答,
应该差不多可以解决了:wink:

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
26 [报告]
发表于 2014-08-06 10:25 |只看该作者
回复 25# qq1158291633
你把你最后怎么做的大致说一便,让兄弟也学习学习

   

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
27 [报告]
发表于 2014-08-06 13:17 |只看该作者
humjb_1983 发表于 2014-08-06 08:53
呵呵,兄弟说的哪个函数每次只能操作4k?应该不会吧,在get_vm_area后,vm_struct->pages是个数组,可以容 ...


sorry, 引用你的帖的时候点错了。这不,刚写完,打算去洗澡了吗,手快点错了。

4K的说法,应该是针对你如下的这个贴的:
或许这个也可以参考:
http://lwn.net/Articles/305919/


    void *io_mapping_map_atomic_wc(struct io_mapping *mapping,
                                   unsigned long offset);
    void *io_mapping_map_wc(struct io_mapping *mapping, unsigned long offset);
Either function will return a kernel-space pointer which is mapped to the page at the given offset. The atomic form is essentially a kmap_atomic() call - it uses the KM_USER0 slot, which is a good thing for developers to know about. It is, by far, the faster of the two, but it requires that the mapping be held by atomic code, and only one page at a time can be mapped in this way. Code which might sleep must use io_mapping_map_wc(), which currently falls back to the old ioremap_wc() implementation.

每次调用都是给offset所在的页做映射,也就是可以的虚拟地址一直是4K,内容在轮换。

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
28 [报告]
发表于 2014-08-06 13:37 |只看该作者
Tinnal 发表于 2014-08-06 13:17
sorry, 引用你的帖的时候点错了。这不,刚写完,打算去洗澡了吗,手快点错了。

4K的说法,应该是针对 ...

呵呵,这个倒是。。。

论坛徽章:
0
29 [报告]
发表于 2014-08-08 13:26 |只看该作者
vmap不行吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP