内存管理篇-12伙伴系统初始化四:CMA内存释放

 1.CMA的释放

        CMA内存也是reserved内存保留的一部分,也是属于保留的一部分。前面我们已经讲到,cma区域在未使用状态下是会释放到伙伴系统的。在前面两节,首先把memblock的memory这部分释放,然后把reserved中的init释放,接下来在讲讲如何将cma的释放。

        当内核看到设备树中有dma,cma-default, nomap,reusable这些字段是,大概率是dma专用的区域。内核不会把这个区域放到伙伴系统中。

        core_initcall函数就是在调用所有的init修饰(__section(".init.text")代码段段)的区域的初始化,然后去初始化各个组件。为什么说cma的初始化是自动发生的??一直没找到cma的初始化过程。在内核的初始化过程中,core_initcall就是个宏,#define core_initcall(fn) module_init(fn) ;它会遍历这些初始化函数。

好奇怪,为什么这里的cma_init_reserved_areas必须要放到reset_init的前面?

2.代码分析 

嗐,后续真用到这个知识点再回来恶补吧,这里确实每太明白这个流程。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyDog0623

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值