《linux内核那些事之buddy(2)》buddy算法内存申__alloc_pages_nodemask()函数申请内存时首先调用get_page_from_freelist进行第一次尝试申请内存(可以称为快速申请,所谓快速申请相对慢速申请相对来说),如果第一次尝试申请内存失败则进入__alloc_pages_slowpath()慢速申请通道。
get_page_from_freelist()
get_page_from_freelist()函数接口如下:
static struct page *
get_page_from_freelist(gfp_t gfp_mask, unsigned int order, int alloc_flags,
const struct alloc_context *ac)
参数:
- gfp_t gfp_mask:申请内存所使用的gfp mask。
- unsigned int order:申请物理内存阶数即 2的oder次方个物理页。
- int alloc_flags:转换后的申请内存fla