我正在编写一个内核模块,它将分配一些一致的内存并返回相应的虚拟和物理地址。
我正在将模块注册为cdev
,分配空间dma_alloc_coherent()
我想使用 mmap 它dma_common_mmap()
.
dma_common_mmap()
需要一个指向struct device
: 我怎样才能得到它?
void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, int flag);
该函数处理缓冲区的分配和映射。前两个参数是设备结构和所需缓冲区的大小。
该函数在两个地方返回 DMA 映射的结果。该函数的返回值是缓冲区的内核虚拟地址,驱动程序可以使用该地址。
同时,关联的总线地址在 dma_handle 中返回。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)