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()

        -->for_each_node(node)

          -->unsigned long end_pfn = bootmem_init_node(node, mi);

          -->void __init bootmem_free_node(int node, struct meminfo *mi)

      -->devicemaps_init(mdesc);

      -->kmap_init();

      -->分配&初始化零页

    -->request_standard_resources(&meminfo, mdesc);

    -->early_trap_init //中断相关

  -->命令行参数处理2

  -->setup_per_cpu_areas();percpu静态变量初始化

  -->sched_init();

  -->build_all_zonelists();

  -->parse_early_param(); //处理命令行参数3

  -->parse_args("Booting kernel", static_command_line, __start___param,__stop___param - __start___param,&unknown_bootoption);

  -->early_irq_init();//中断相关

  -->init_IRQ(); //中断相关

  。。。

  -->vmalloc_init();

  -->mem_init()

  -->kmem_cache_init();//slab初始化

相关文章:

  • 2022-01-10
  • 2022-02-02
  • 2021-08-19
  • 2021-05-16
  • 2021-08-28
  • 2022-12-23
  • 2022-12-23
  • 2021-08-28
猜你喜欢
  • 2022-12-23
  • 2021-07-22
  • 2021-05-18
相关资源
相似解决方案