linux cma机制探究

Linux cma机制探究

cma的作用
   cma,全称(contiguous memory allocation),在内存初始化时预留一块连续内存,可以在内存碎片化严重时通过调用dma_alloc_contiguous接口并且gfp指定为__GFP_DIRECT_RECLAIM从预留的那块连续内存中分配大块连续内存。

cma的使用和原理说明
Cma区域可以通过设备树、cmdline和menuconfig指定,并且可以通过设备树的phandle机制和单独的设备绑定,具体的实现和原理说明如下:

设备树指定
在设备树中添加reserved-memory节点,并且compatible属性指定为shared-dma-pool,并在设备节点中通过memory-region引用该节点,如下所示:

代码调用过程如下:
a)    kernel/dma/contiguous.c文件,
声明RESERVEDMEM_OF_DECLARE(cma, "shared-dma-pool", rmem_cma_setup);添加struct of_device_id 类型的__reservedmem_of_table section到可执行镜像中。
b)    arch/arm/kernel/setup.c文件,
setup_arch->
arm_memblock_init->
early_init_fdt_scan_reserved_mem->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值