Linux内存从0到1学习笔记(8.10 dma-buf导出器和导入器使用示例 一)
Posted 高桐@BILL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内存从0到1学习笔记(8.10 dma-buf导出器和导入器使用示例 一)相关的知识,希望对你有一定的参考价值。
前面的博客提到过,dma-buf的使用包括导出器(exporter)和导入器(importer),导出器需要实现并管理dma_buf_ops<dma_buf_ops>中定义的操作,而导入器的操作由结构体dma_buf_attachment<dma_buf_attachment>来提供。
下面我们以mock_dmabuf_exp.c和mock_dmabuf_imp.c两个驱动模块来理解下dma-buf的极简使用。
一,dma_buf_ops解读
include/linux/dma-buf.h
/**
* 该结构体中主要定义了针对结构体dma_buf的操作,其中vmap将会为缓冲区创建到内核地址空间的虚拟映射,反之vunmap表示从缓冲区取消vmap映射。
*/
struct dma_buf_ops
/**
* 如果为 true,则框架将缓存为每个附件(attachment)创建的第一个映射。这样可以避免多次为附件创建映射。
*/
bool cache_sgt_mapping;/**
* 用于dma_buf_attach() 调用,以确保给定的 &dma_buf_attachment.dev可以访问提供的 &dma_buf。支持在特殊位置(如 VRAM 或特定设备的分拆区域)缓冲区对象的导出器应检查缓冲区是否可以移动到系统内存(或由提供的设备直接访问),否则需要使附加(attach)操作失败。导出器还应在常规检查中检查当前分配是否满足新设备的 DMA 约束。如果不是这种情况,则无法移动分配&#
以上是关于Linux内存从0到1学习笔记(8.10 dma-buf导出器和导入器使用示例 一)的主要内容,如果未能解决你的问题,请参考以下文章
Linux内存从0到1学习笔记(8.10 dma-buf导出器和导入器使用示例 一)---更新中
Linux内存从0到1学习笔记(8.13 dma内存调试一)
Linux内存从0到1学习笔记(8.13 dma内存调试一)
Linux内存从0到1学习笔记(8.13 dma内存调试一)