在内核引导时是获取大的缓冲区的唯一方法,它绕过了__get_free_pages函数在缓冲区大小上的最大尺寸和固定粒度的限制。在引导时分配缓冲区,通过保留私有内存池而跳过了内核的内存管理策略。模块不能在引导时分配内存,只有直接链接到内核的设备驱动程序才能在引导时分配内存。
头文件:<linux/bootmem.h>
引导时分配内存:
void *alloc_bootmem(unsigned long size);
void *alloc_bootmem_low(unsigned long size);
void *alloc_bootmem_pages(unsigned long size);
void *alloc_bootmem_low_pages(unsigned long size);
释放引导时分配的内存:
void free_bootmem(unsigned long addr, unsigned long size);