void *dma_alloc_coherent(struct device *dev,size_t size, dma_addr_t *dma_handle,int flag); 该函数处理了缓冲区的分配和映射。前两个参数是device结构和所需缓冲区的⼤⼩。函数在两处返回结果: 1)函数的返回值时缓冲区的内核虚拟地址,可以被驱动程序使⽤。2)相关的总线地址则保存在dma_handle中...
这种支持只有对PCI总线有效,因此必须要使用与PCI总线有关的例程。 要使用DAC,驱动程序必须包含头文件<linux/pci.h>,还必须设置一个单独的DMA掩码: int pci_dac_set_dma_mask(struct pci_dev *pdev, u64 mask); 只有返回0时,才能使用DAC地址。 在DAC映射中使用了一个特殊类型(dma64_addr_t)。使用下面函数...