Zephyr内核——内存管理——共享多堆

Zephyr内核的共享多堆内存管理器允许动态添加具有不同功能的内存区域到池中。驱动程序和应用可以根据属性请求特定类型的内存。在启动时,平台代码初始化多堆框架并将内存区域添加进去。共享的多堆栈区域结构携带用户定义的属性值,用于定义如缓存等特性。shared_multi_heap_alloc() 函数用于根据这些属性选择合适的内存分配。
摘要由CSDN通过智能技术生成

共享多堆

共享的多堆内存池管理器使用多堆分配器来管理一组具有不同功能/属性(可缓存、不可缓存等)的保留内存区域。

所有不同的区域都可以在运行时添加到共享的多堆池中,从而提供一个不透明的“属性”值(一个整数或枚举值),驱动程序或应用程序可以使用它来请求具有某些功能的内存。

此框架通常使用如下:

在启动时,一些平台代码使用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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值