标签: c linux memory linux-kernel linux-device-driver
我必须经常在内核驱动程序中分配大量内存。哪种内存分配api更好用,为什么?
答案 0 :(得分:1)
如果您需要大量分配,kmalloc()不是一个好主意,因为一旦物理地址空间变得碎片化,大kmalloc()次分配将经常失败。
kmalloc()
所以vmalloc() / vfree()很可能是要走的路 - 除非你需要与硬件设备共享缓冲区,在这种情况下查看CMA(连续内存分配器),{{ 1}} / dma_alloc_from_contiguous()。
vmalloc()
vfree()
dma_alloc_from_contiguous()