* subsystems (like slab allocator) are available.*///1. memblock是系统最初的内存管理器,分为memory type和reserved type,CMA最开始就属于reserved type//2. 运行到这里,就表示memblock已经建立,并且buddy还没建立,CMA在buddy前建立OK//3. CMA建立OK后,接着m
template<typename _Tp> using __pocma = typename _Tp::propagate_on_container_move_assignment; template<typename _Tp> using __pocs = typename _Tp::propagate_on_container_swap; template<typename _Tp> using __equal = typename _Tp::is_always_equal; }; template<typename _Alloc, typename _Up...
[MIGRATE_MOVABLE] = { MIGRATE_RECLAIMABLE, MIGRATE_UNMOVABLE, MIGRATE_TYPES },#ifdefCONFIG_CMA[MIGRATE_CMA] = { MIGRATE_TYPES },/* Never used */#endif#ifdefCONFIG_MEMORY_ISOLATION[MIGRATE_ISOLATE] = { MIGRATE_TYPES },/* Never used */#endif}; __rmqueue_fallback完成的主要工作就是从后备...
unsignedintorder_per_bit,constchar*name,structcma **res_cma){structcma *cma; phys_addr_t alignment;/* Sanity checks *///判断cma数量是否已经满了,因为cma_areas数组指定了系统中总的cma数量,通过内核宏控制if(cma_area_count == ARRAY_SIZE(cma_areas)) { pr_err("Not enough slots for CMA rese...