C Linux内核如何';是否已初始化s free_列表以指向空闲页面?

C Linux内核如何';是否已初始化s free_列表以指向空闲页面?,c,memory-management,linux-kernel,C,Memory Management,Linux Kernel,我试图理解如何在Linux内核中使用free\u list(区域的free\u区域)来指向不同的免费页面。有人能解释内核代码中的方式和位置,以及它们是如何初始化的吗? 通过查看内核代码,代码中free\u list的唯一初始化似乎是在zone\u init\u free\u list()kernel/mm/page\u alloc.c的函数中: for_each_migratetype_order(order, t) { INIT_LIST_HEAD(&zone->free_ar

我试图理解如何在Linux内核中使用
free\u list
(区域的free\u区域)来指向不同的免费页面。有人能解释内核代码中的方式和位置,以及它们是如何初始化的吗? 通过查看内核代码,代码中
free\u list
的唯一初始化似乎是在
zone\u init\u free\u list()
kernel/mm/page\u alloc.c的函数中:

for_each_migratetype_order(order, t) { 
INIT_LIST_HEAD(&zone->free_area[order].free_list[t]);
                          zone->free_area[order].nr_free = 0; 
}   
从这个代码
free_列表
没有指向free_页面块**

非常感谢您的帮助。**

我了解了如何将页面添加到免费列表中,这里是start\u kernel()的函数流

谢谢

       start_kernel();
       mm_init()
       mem_init()
       free_all_bootmem()
       free_all_bootmem_core()
       free_all_bootmem_core()
       __free_pages()
       __free_pages_ok()
       free_one_page()
       __free_one_page()