Linux内存从0到1学习笔记(8.12 dma-buf导出器和导入器使用示例 三)

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内存从0到1学习笔记(8.12 dma-buf导出器和导入器使用示例 三)相关的知识,希望对你有一定的参考价值。

    前面解释了使用dma_buf所涉及的几个重要的结构体,今天我们来介绍下dma_buf使用的具体示例。

mock_dmabuf_exp.c示例

#include <linux/dma-buf.h>
#include <linux/module.h>
#include <linux/slab.h>

struct dma_buf *dmabuf_of_exporter;

EXPORT_SYMBOL(dmabuf_of_exporter);//EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。

/* mock_dmabuf定义了共享dma_buf对象中,相应的导出器特有的私有数据部分。*/
struct mock_dmabuf
    int npages;
    struct page *pages[];
;

static struct mock_dmabuf *to_mock(struct dma_buf *buf)

    return buf->priv;

static struct sg_table *mock_map_dma_buf(struct dma_buf_attachment *attachment,
                     enum dma_data_direction dir)

    struct mock_dmabuf *mock &#

以上是关于Linux内存从0到1学习笔记(8.12 dma-buf导出器和导入器使用示例 三)的主要内容,如果未能解决你的问题,请参考以下文章

Linux内存从0到1学习笔记(8.12 dma-buf导出器和导入器使用示例 三)

Linux内存从0到1学习笔记(8.12 dma-buf导出器和导入器使用示例 四)

Linux内存从0到1学习笔记(8.12 dma-buf导出器和导入器使用示例 四)

Linux内存从0到1学习笔记(8.12 dma-buf导出器和导入器使用示例 四)

Linux内存从0到1学习笔记(8.13 dma内存调试一)

Linux内存从0到1学习笔记(8.13 dma内存调试一)