Linux device driver 在设备驱动程序中使用多页实现mmap

Linux device driver 在设备驱动程序中使用多页实现mmap,linux-device-driver,mmap,Linux Device Driver,Mmap,我有一个设备驱动程序,它使用RAM中的缓冲区,我希望用户能够映射到用户空间。我读过关于使用nopages的文章,但是其中的例子只使用了单个页面,并且说您可以调整使用计数以使其适用于多个页面。我不明白这是怎么回事。它使用顺序为0的get_free_页面(所以是1个空闲页面)来分配其缓冲区,但我的缓冲区有两页长 使用计数与什么有什么关系?据我所知,只计算第一页。我相信这些页在内存中必须是连续的。然后通过调用remap\u pfn\u range()(2.6内核)或remap\u page\u ran

我有一个设备驱动程序,它使用RAM中的缓冲区,我希望用户能够映射到用户空间。我读过关于使用nopages的文章,但是其中的例子只使用了单个页面,并且说您可以调整使用计数以使其适用于多个页面。我不明白这是怎么回事。它使用顺序为0的get_free_页面(所以是1个空闲页面)来分配其缓冲区,但我的缓冲区有两页长


使用计数与什么有什么关系?据我所知,只计算第一页。

我相信这些页在内存中必须是连续的。然后通过调用
remap\u pfn\u range()
(2.6内核)或
remap\u page\u range()
(2.4内核),可以将页面内存映射到用户空间

几年前,我为一个设备驱动程序做了这个。我相信我使用了这个网站作为指南: