我正在开发Linux中的块驱动程序。要求是分配巨大的内存块(例如,超过128KB,2MB或8MB左右),将内存分成小块,然后通过分散收集列表发送。分散收集条目将由用户应用程序控制。

我知道内核中存在可用内存的严格限制。我如何在内核上实现这一目标。非常感谢您的帮助。

最佳答案

您可以使用vmalloc从虚拟内存中进行分配。这样,您就可以拥有所需的所有内存(由那里的内存量限制)。

mm/vmalloc.c :

/**
* vmalloc - allocate virtually contiguous memory
* @size: allocation size
* Allocate enough pages to cover @size from the page level
* allocator and map them into contiguous kernel virtual space.
*
* For tight control over page level allocator and protection flags
* use __vmalloc() instead.
*/

您猜对了vmalloc可以释放vfree的内存。

关于linux - 分散收集列表中所需的信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28057245/

10-09 03:58