darling54454 发表于 2015-11-28 10:44

小白,关于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]
查看完整版本: 小白,关于bootmem和memblock的问题。