📄 page_alloc.c.txt
字号:
any problems, send mails to lysindybear@sina.com.cn
相关文件
arch/i386/mm/init.c
这是最为主要的一个页初始化函数,页表
void __init free_area_init_core(int nid, pg_data_t *pgdat, struct page **gmap,
unsigned long *zones_size, unsigned long zone_start_paddr,
unsigned long *zholes_size, struct page *lmem_map)
…… //计算这个zone中的页数目
//根据计算的到的内存页的数量,计算mem_map数组的大小,分配相应的空间,建立页结构
map_size = (totalpages + 1)*sizeof(struct page);
if (lmem_map == (struct page *)0) {
lmem_map = (struct page *) alloc_bootmem_node(pgdat, map_size);
lmem_map = (struct page *)(PAGE_OFFSET +
MAP_ALIGN((unsigned long)lmem_map - PAGE_OFFSET));
}
…… //初始化这个zone的各种数据项
这个函数仅仅是一个空壳,但是paging_init调用的是这个函数
void __init free_area_init(unsigned long *zones_size)
free_area_init_core(0, &contig_page_data, &mem_map, zones_size, 0, 0, 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -