在设备驱动程序中实现具有多个页面的mmap

时间:2010-10-03 04:16:32

标签: linux-device-driver mmap

我有一个设备驱动程序,它使用RAM中的缓冲区,我希望用户能够映射到用户空间。我已阅读http://lwn.net/images/pdf/LDD3/ch15.pdf,其中讨论了如何使用nopages,但该示例仅使用单页,并表示您可以调整使用计数以使其适用于多个页面。我不明白这是怎么回事。它使用订单为0的get_free_page(所以1个空闲页面)来分配它的缓冲区,但我的缓冲区是两页长。

使用次数与任何事情有什么关系?根据我的理解,只计算第一页。

1 个答案:

答案 0 :(得分:1)

我相信页面必须在内存中连续。然后通过调用remap_pfn_range()(2.6内核)或remap_page_range()(2.4内核),可以将页面内存映射到用户空间。

几年前,我为设备驱动程序做了这个。我相信我使用此网站作为指南:http://www.scs.ch/~frey/linux/memorymap.html