Linux内存从0到1学习笔记(8.11 dma-buf导出器和导入器使用示例 二)
Posted 高桐@BILL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内存从0到1学习笔记(8.11 dma-buf导出器和导入器使用示例 二)相关的知识,希望对你有一定的参考价值。
除了前面介绍的非常重要的导出器操作管理结构体dma_buf_ops,我们再来了解下设备缓冲区的附着数据(attachment data)的结构体以及共享缓冲区对象的构成结构体dma_buf。
一,dma_buf_attachment解读
dma_buf_attachment结构体中持有设备缓冲区的附件数据。
include/linux/dma-buf.h(linux 5.18)
/** * 此结构保存dma_buf缓冲区与其用户设备之间的附件信息或连接信息。该列表包含附加到缓冲区的每个设备的一个附件结构。 * 通过调用 dma_buf_attach() 创建附件,并通过调用 dma_buf_detach() 再次释放。启动传输所需的 DMA 映射本身由 dma_buf_map_attachment() 创建,并通过调用dma_buf_unmap_attachment() 再次释放。 */ struct dma_buf_attachment struct dma_buf *dmabuf;//当前设备附件所对应的缓冲区 struct device *dev;//附件上面缓冲区的设备 struct list_head node;//dma_buf_attachment的列表,受dmabuf的dma_resv锁保护。 struct sg_table *sgt;//缓存的映射 enum dma_data_direction dir;//缓存的映射的目录 bool peer2peer;//如果导入器可以在没有内存页的情况下处理对等资源,则为 true const struct dma_buf_attach_ops *importer_ops;//表示导入器针对当前附件的操作,如果提供dma_buf_map/unmap_attachment()&
以上是关于Linux内存从0到1学习笔记(8.11 dma-buf导出器和导入器使用示例 二)的主要内容,如果未能解决你的问题,请参考以下文章
Linux内存从0到1学习笔记(8.11 dma-buf导出器和导入器使用示例 二)
Linux内存从0到1学习笔记(8.13 dma内存调试一)
Linux内存从0到1学习笔记(8.13 dma内存调试一)
Linux内存从0到1学习笔记(8.13 dma内存调试一)