2010-10-03 91 views
0

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

使用次数与任何事情有什么关系?据我所知,只有第一页被统计。

回答

1

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

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