小白,关于bootmem和memblock的问题。
start_kerne-> setup_arch
->arm_memblock_init
->paging_init
->bootmem_init
我查看的代码是3.4版本的,arm架构的。
有说是memblock代替了bootmem,但是查看了下代码,确实是有看到对memblock的初始化。
然后阅读bootmem_init函数,发现对bitmap的分配是调用了memblock相关的接口:
bitmap = memblock_alloc_base(boot_pages << PAGE_SHIFT, L1_CACHE_BYTES, __pfn_to_phys(end_pfn));
对bootmem初始化完成之后,也可以用它提供的接口进行简单的内存分配和释放。
我看后面的代码,好像都还是调用bootmem提供的接口,并不是memblock呀。
比如setup_per_cpu_areas函数里面,调用__alloc_bootmem分配内存。
start_kerne
-> setup_per_cpu_areas
->pcpu_alloc_alloc_info
->alloc_bootmem_nopanic
->__alloc_bootmem
感觉好像并没有使用memblock呀?
页:
[1]