我正在开发linux中的块驱动程序。要求是分配一大块内存(例如超过128KB,2MB或8MB左右......),将内存分成小块并通过分散 - 收集列表发送。分散收集条目将由用户应用程序控制。
我知道内核中存在严格的内存限制。我怎样才能在内核中实现这一点。任何帮助都非常感谢。
答案 0 :(得分:3)
您可以使用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
ed内存可以被释放,你猜对了,vfree
。