Kernel 分配多页并创建连续地址空间

Kernel 分配多页并创建连续地址空间,kernel,allocation,continuous,Kernel,Allocation,Continuous,我想使用struct page在内核中创建一个具有连续地址空间的大缓冲区 我们的想法是使用alloc_页面创建nr_页面*页面(我不能使用alloc_页面(…,order)返回一个struct page*页面),然后以某种方式组合这些nr_页面*页面大小空间 如果我alloc\u page我就可以addr=page\u地址(page),这样我就可以在这个4k空间中记忆。但是更多的空间呢 任何想法都会很有帮助你的大缓冲区是多少?大于一页的东西(因此页面大小)。与64k或16页一样,您可以只使用km

我想使用
struct page
在内核中创建一个具有连续地址空间的大缓冲区

我们的想法是使用
alloc_页面
创建
nr_页面
*页面(我不能使用
alloc_页面(…,order)
返回一个
struct page*页面
),然后以某种方式组合这些
nr_页面*页面大小
空间

如果我
alloc\u page
我就可以
addr=page\u地址(page)
,这样我就可以在这个4k空间中记忆。但是更多的空间呢


任何想法都会很有帮助

你的大缓冲区是多少?大于一页的东西(因此页面大小)。与64k或16页一样,您可以只使用kmalloc,在64位内核上可以分配最多4 MB的缓冲区。我强烈需要使用多页,因为这是API的一部分。或者我可以
addr=kmalloc
,但我必须以某种方式获取此内存的
struct page*pages
。您可以使用order参数指定连续页面的大小,9表示2mb的连续页面空间