커널 분석

    bootmem_init() 부트 메모리 초기화

    [분석 기준] kernel version : linux kernel 4.16 architecture : aarch64 (arm64) bootmem_init() 함수는 함수네임 그대로 부트 메모리 초기화를 위한 함수입니다. 커널은 ZONE이라는 개념을 도입해 메모리를 관리하게 됩니다. bootmem_init() 함수에서 어떻게 부트 메모리를 초기화 하는지 분석해 보도록 하겠습니다. 123456789101112131415161718192021222324void __init bootmem_init(void){ unsigned long min, max; min = PFN_UP(memblock_start_of_DRAM()); max = PFN_DOWN(memblock_end_of_DRAM()); early_mem..

    [커널분석] static void __init setup_machine_fdt(phys_addr_t dt_phys)

    fdt를 최초 셋업하는 함수입니다. 함수 인자로 phys_addr_t 자료형의 dt_phys를 전달받는다. 전달받은 주소를 이용해 부팅과정 중 먼저 필요한 항목에 대해 설정해준다. 185 static void __init setup_machine_fdt(phys_addr_t dt_phys)186 {187 void *dt_virt = fixmap_remap_fdt(dt_phys);188 const char *name;189190 if (!dt_virt || !early_init_dt_scan(dt_virt)) {191 pr_crit("\n"192 "Error: invalid device tree blob at physical address %pa (virtual address 0x%p)\n"193 "The..