免费注册 查看新帖 |

Chinaunix

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

[内存管理] Percpu Allocator 分配问题 [复制链接]

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:0015-16赛季CBA联赛之吉林
日期:2016-03-23 17:25:0015-16赛季CBA联赛之浙江
日期:2016-04-01 08:25:0615-16赛季CBA联赛之山西
日期:2016-04-01 10:09:1915-16赛季CBA联赛之广夏
日期:2016-06-03 15:58:212016科比退役纪念章
日期:2016-07-28 17:42:5215-16赛季CBA联赛之广东
日期:2017-02-20 23:32:43
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-02-02 10:48 |只看该作者 |倒序浏览
我在初始化 SLUB 分配器的时候,使用  kmem_cache_init() 在初始化的时候,此时 slab_state = DOWN,即 SLUB 分配器还不能使用.
初始化过程中 使用 kmem_cache_open()  函数 给 "kmem_cache_node" 分配内存时需要从 Percpu Allocator 内分配内存,此时 Percpu Allocator 已经初始化完成.
但使用 pcpu_mem_alloc() 进行分配.问题来了==================>
static void *pcpu_mem_alloc(size_t size)
{
        if (WARN_ON_ONCE(!slab_is_available()))
                return NULL;

        if (size <= PAGE_SIZE)
                return kzalloc(size, GFP_KERNEL);
        else
                return vzalloc(size);
}
该函数负责分配 pcpu 内存,但前提是 SLUB 分配器必须准备好,但按源码流程此时 SLUB 自身在初始化,不能提供内存分配.
这是个先有鸡还是先有蛋的问题.
面对 SLUB 的初始化必须从 SLUB 中分配内存,但此时 SLUB 正在初始化,这个问题该怎么解决????
slab_is_available() 函数一直返回 0    !!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP