当特定migration_type freelist中的页面的可用性小于请求的no时,页面分配如何工作。页面?

时间:2016-03-19 12:41:13

标签: memory-management linux-kernel arm kernel allocation

我试图详细了解页面分配程序,并在下面找到了序列:

  

__ alloc_pages_nodemask()

     

- > get_page_from_freelist()

     

- > buffered_rmqueue()

     

- > __rmqueue()

     

- > __rmqueue_smallest()//如果这将失败,调用将转到__rmqueue_fallback()

__rmqueue_fallback() api取决于fallbacks[][]以下。

static int fallbacks[MIGRATE_TYPES][4] = {
    [MIGRATE_UNMOVABLE]   = { MIGRATE_RECLAIMABLE, MIGRATE_MOVABLE,     MIGRATE_RESERVE },
    [MIGRATE_RECLAIMABLE] = { MIGRATE_UNMOVABLE,   MIGRATE_MOVABLE,     MIGRATE_RESERVE },
#ifdef CONFIG_CMA
    [MIGRATE_MOVABLE]     = { MIGRATE_CMA,         MIGRATE_RECLAIMABLE, MIGRATE_UNMOVABLE, MIGRATE_RESERVE },
    [MIGRATE_CMA]         = { MIGRATE_RESERVE }, /* Never used */
#else
    [MIGRATE_MOVABLE]     = { MIGRATE_RECLAIMABLE, MIGRATE_UNMOVABLE,   MIGRATE_RESERVE },
#endif
    [MIGRATE_RESERVE]     = { MIGRATE_RESERVE }, /* Never used */
#ifdef CONFIG_MEMORY_ISOLATION
    [MIGRATE_ISOLATE]     = { MIGRATE_RESERVE }, /* Never used */
#endif
};

请详细说明数组的用法。

我从声明上方的评论中找到了这个:

  

"此数组描述了订单列表在免费时回落   所需迁移类型的列表已耗尽。"

0 个答案:

没有答案