Linux内核设备驱动程序到内核空间的DMA
LDD3(p:453)使用作为参数传入的缓冲区演示Linux内核设备驱动程序到内核空间的DMA,linux,linux-kernel,linux-device-driver,dma,Linux,Linux Kernel,Linux Device Driver,Dma,LDD3(p:453)使用作为参数传入的缓冲区演示dma\u map\u single bus_addr = dma_map_single(&dev->pci_dev->dev, buffer, count, dev->dma_dir); Q1:此缓冲区来自何处 kmalloc Q2:为什么DMA-API-HOWTO.txt声明我可以使用原始kmalloc进行DMA 形式 L:51如果您是通过页面分配器kmalloc()获取内存的,那么您可以使用这些例程返回的地址对该
dma\u map\u single
bus_addr = dma_map_single(&dev->pci_dev->dev, buffer, count, dev->dma_dir);
Q1:此缓冲区来自何处
kmalloc
Q2:为什么DMA-API-HOWTO.txt声明我可以使用原始kmalloc
进行DMA
形式
L:51如果您是通过页面分配器kmalloc()获取内存的,那么您可以使用这些例程返回的地址对该内存进行DMA
L:74您不能接受kmap()调用的返回,也不能从中接收DMA
kmalloc
返回的地址传递到我的硬件设备virt\u-to\u-bus
dma\u map\u single
kmalloc
地址读取内核驱动程序中的数据吗
addr = kmalloc(...);
...
printk("test result : 0x%08x\n", addr[0]);
第四季度:将此信息传递到用户空间的最佳方式是什么
复制到用户
祝你好运 我将第二组编号为1和2的点的降价自动编号更改为3和4的编辑被拒绝(我想)是因为“dma_map_single”只是将虚拟地址转换为物理地址吗?