C Linux内核如何';是否已初始化s free_列表以指向空闲页面?
我试图理解如何在Linux内核中使用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
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()