为进程分配大内存使用__get_free_pages
发布时间
阅读量:
阅读量
Table 11.2. Low-Level Page Allocations Methods
Flag
Description
alloc_page(gfp_mask)
用于分配一个单独的页面,并返回指向其 page 结构的指针
alloc_pages(gfp_mask, order)
用于分配 2order 个页面,并返回指向第一个页面的 page 结构的指针
__get_free_page(gfp_mask)
用于分配一个单独的页面,并返回指向其逻辑地址的指针
__get_free_pages(gfp_mask, order)
用于分配 2order 个页面,并返回指向第一个页面逻辑地址的指针
get_zeroed_page(gfp_mask)
用于分配一个页面,将其内容清零,并返回指向其逻辑地址的指针
在我的代码实现过程中,从未涉及过大页连续物理内存的申请操作,通常采用的是 kmalloc 或 dma_alloc_coherent 这类方式。ARC 模块中相关的 DMA 函数存在编写不当的问题,因此还是应当回归基础方法,使用 __get_free_pages 并配合 dcache 的无效化操作来完成内存申请更为稳妥。
另外,在以往的认知中,slab 分配器采用的是伙伴系统算法,且最大可申请 128K 的连续内
全部评论 (0)
还没有任何评论哟~
