我想了解如何free_list
(of free_area of zone) 指向 Linux 内核中的不同空闲页面。任何人都可以解释内核代码中的方式和位置以及它们是如何初始化的吗?
看内核代码好像只有free_list
的初始化代码在 zone_init_free_lists()
kernel/mm/page_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_list
不是指向 free_pages 块 ??**任何帮助将不胜感激 。**
最佳答案
我知道页面是如何添加到空闲列表中的,这里是 start_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()
谢谢。
关于c - Linux 内核的 free_list 如何初始化为指向空闲页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25162372/