mmap可以在linux驱动程序中处理非连续的页面范围吗?

时间:2013-05-12 14:02:14

标签: linux-kernel linux-device-driver dma

我希望能够将单个用户空间地址映射到多个低内核内存块。我有一个驱动程序,我使用pci_alloc_consistent()分配多个4MB块。理想情况下,我希望用户空间进程看到8MB(即2个4MB块)作为映射到其虚拟地址空间的单个缓冲区。这可能在mmmap()中吗?或者,有没有办法使用pci_alloc_consistent()(或其他apis,只要内存与dma兼容)分配大于4MB的内核内存块?

我很感激任何指针。 感谢。

1 个答案:

答案 0 :(得分:1)

查看 mm / memory.c 中的函数vm_insert_page()remap_pfn_range()。 您可以在以下位置找到示例: drivers / media / v4l2-core / videobuf2-dma-sg.c ,函数vb2_dma_sg_mmap()