bootmem_init_node】的更多相关文章

static unsigned long __init bootmem_init_node(int node, struct meminfo *mi) in arch/arm/mm/init.c 1.1 根据内存信息重新映射页表,此处为低端内存的线性映射 -->map_memory_bank(bank); -->create_mapping(&map); -->alloc_init_section(pgd, addr, next, phys, type); -->/*如果地…
U-boot会给Linux Kernel传递很多参数,如:串口,RAM,videofb等.而Linux kernel也会读取和处理这些参数.两者之间通过struct tag来传递参数. U-boot把要传递给kernel的东西保存在struct tag数据结构中,启动kernel时,把这个结构体的物理地址传给kernel:Linux kernel通过这个地址,用parse_tags分析出传递过来的参数. 本文主要以U-boot传递RAM和Linux kernel读取RAM参数为例进行说明. se…
内存管理子系统是linux内核最核心最重要的一部分,内核的其他部分都需要在内存管理子系统的基础上运行.而对其初始化是了解整个内存管理子系统的基础.对相关数据结构的初始化是从全局启动例程start_kernel开始的.本文详细描述了从bootloader跳转到linux内核内存管理子系统初始化期间所做的操作,从而来加深对内存管理子系统知识的理解和掌握. 内核的入口是stext,这是在arch/arm/kernel/vmlinux.lds.S中指定的.而符号stext是在arch/arm/kerne…
本地的笔记有点长,先把bootmem位图分配器的建立 及  使用过程做下梳理. 都是代码,上面做了标注.开始的汇编部分省略了(涉及的内容不多,除了swapper_pg_dir的分配). 该记录不会再添加说明,看下记录中的注释就明白了bootmem的建立及使用. 该记录中考虑了高端内存…… 从start_kernel开始…… start_kernel()    |---->page_address_init()    |     考虑支持高端内存    |     业务:初始化page_addre…
start_kernel -->asm-offset.h 生成 -->proc_info_list   -->machine_desc -->__vet_atags -->cpu位图 -->setup_arch -->parse_tags -->命令行参数处理1 -->paging_init -->build_mem_type_table -->prepare_page_table -->bootmem_init() -->fo…