我希望能够将单个用户空间地址映射到多个低内核内存块。我有一个驱动程序,我使用pci_alloc_consistent()分配多个4MB块。理想情况下,我希望用户空间进程看到8MB(即2个4MB块)作为映射到其虚拟地址空间的单个缓冲区。这可能在mmmap()中吗?或者,有没有办法使用pci_alloc_consistent()(或其他apis,只要内存与dma兼容)分配大于4MB的内核内存块?
我很感激任何指针。 感谢。
答案 0 :(得分:1)
查看 mm / memory.c 中的函数vm_insert_page()
或remap_pfn_range()
。
您可以在以下位置找到示例: drivers / media / v4l2-core / videobuf2-dma-sg.c ,函数vb2_dma_sg_mmap()