sup*_*max 5 device-driver linux-kernel dma
我正在编写一个内核模块,它将分配一些连贯的内存并返回相应的虚拟和物理地址.
我正在注册模块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);
Run Code Online (Sandbox Code Playgroud)
该函数处理缓冲区的分配和映射。前两个参数是设备结构和所需缓冲区的大小。该函数在两个地方返回 DMA 映射的结果。该函数的返回值是缓冲区的内核虚拟地址,驱动程序可以使用该地址。同时,关联的总线地址在 dma_handle 中返回。