我正在开发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/