我正在编写一个 PCI 设备驱动程序,我需要为 DMA 分配一些内存,我正在使用这个函数:
void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, int flag);
我将 dma_handle 传递给设备。
这个函数的返回值是一个我可以在内核中使用的虚拟地址,问题是我不想为我正在做的每个内存分配保存这个地址。
有没有办法将物理地址 dma_handle 转换为我可以在内核中使用的地址?类似于这些函数/宏之一:
virt_to_page(kaddr)
page_to_pfn(page)
是否有 phy_to_kvirt 宏/函数或任何其他方式将物理地址转换为内核虚拟地址?
谢谢