外设数据到昇腾310推理卡 之六cma_heap分配与映射

目录

代码引入

调用链示例

核心结构体  dma_buf_ops

 核心结构体 dma_heap_ops

在系统中位置

调用示例

分配内存

内存使用

mmap

延时映射

vm_fault的实现


代码引入

5.6内核后引入

drivers\dma-buf\heaps\cma_heap.c

kernel\drivers\dma-buf\dma-heap.c 分配内存的入口
/drivers/dma-buf/rk_heaps/rk-dma-heap.c 瑞芯微分配内存的入口
\kernel\drivers\dma-buf\dma-buf.c dma buf mmap的入口

以下通过调用链来查看其主要功能。

调用链示例

核心结构体  dma_buf_ops

    通过这个结构体,可以了解,cma_heap 作为dma buf的其中一个底层实现,实现了dma buf所要求的各个功能接口,进而在dma buf操作时回调cma heap的接口。

    dma buf的底层实现有很多,cma heap只是其中一个。

    此结构体的功能接口为: cma buf的应用,包括buffer的attach,用户态映射,内核态映射,以及cache 同步。

static const struct dma_buf_ops cma_heap_buf_ops = {
	.attach = cma_heap_attach,
	.detach = cma_heap_detach,
	.map_dma_buf = cma_heap_map_dma_buf,
	.unmap_dma_buf = cma_heap_unmap_dma_buf,
	.begin_cpu_access = cma_heap_dma_buf_begin_cpu_access,
	.end_cpu_access = cma_heap_dma_buf_end_cpu_access,
	.begin_cpu_access_partial = cma_heap_dma_buf_begin_cpu_access_partial,
	.end_cpu_access_partial = cma_heap_dma_buf_end_cpu_access_partial,
	.mmap = cma_heap_mmap,
	.vmap = cma_heap_vmap,
	.vunmap = cma_heap_vunmap,
	.release = cma_heap_dma_buf_release,
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

proware

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

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

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

打赏作者

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

抵扣说明:

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

余额充值