共享多堆
共享的多堆内存池管理器使用多堆分配器来管理一组具有不同功能/属性(可缓存、不可缓存等)的保留内存区域。
所有不同的区域都可以在运行时添加到共享的多堆池中,从而提供一个不透明的“属性”值(一个整数或枚举值),驱动程序或应用程序可以使用它来请求具有某些功能的内存。
此框架通常使用如下:
在启动时,一些平台代码使用shared_multi_heap_pool_init()
初始化共享的多堆框架,并使用shared_multi_heap_add()
将内存区域添加到内存池,可能从DT收集区域所需的信息。
每个内存区域都编码在一个共享的多堆栈区域结构中。这个结构还携带一个不透明的和用户定义的整数值,用于定义区域功能(例如:可缓存,类cpu,等等)
// Init the shared multi-heap pool
shared_multi_heap_pool_init()
// Fill the struct with the data for cacheable memory
struct shared_multi_heap_region cacheable_r0 = {
.addr = addr_r0,
.size = size_r0,
.attr = SMH