Xen 汇编函数调用的第一个C函数 __start_xen 简析

__start_xen
 |
 |____percpu_init_areas 初始化percup数据需要的内存,从全局变量__per_cpu_start开始,每个结构分配2的PERCPU_SHIFT(13)次方字节内存(8K)。
 |
 |____set_intr_gate 初始化TRAP_page_fault中断,early_page_fault在entry.S文件中定义, 中断门执行级别为0
 |
 |____cmdline_parse 保存到全局变量saved_cmdline中
 |
 |____parse_video_info 根据全局变量boot_vid_info初始化全局变量vga_console_info,怀疑boot_vid_info为bios内部的一块内存块,啥时候初始化的不知道???

RELOC_HIDE这个宏是啥意思???
 |
 |____set_current  设置地址0xfffff000为当前vcpu的地址
 |
 |____smp_prepare_boot_cpu 将当前cpu初始化到全局变量 cpu_online_map cpu_callout_map cpu_present_map cpu_possible_map中,并配置为在线状态 
 |
 |____console_init_preirq 初始化串口
 |
 |____ print video system infomation about BIOS
 |
 |____ check the e820_raw_nr ,some multi boot info and lowmem_kb for boot information
 |
 |____init_e820
 | |
 | |__sanitize_e820_map 整理e820内存段
 | |
 | |
 | |__copy_e820_map 拷贝e820内存段到全局结构体e820中
 | |
 | |
 | |__clip_to_limit 缩小e820的区域大小,通过减去e820数组后面的项目。
 | |
 | |
 | |__reserve_dmi_region 通过修改e820中项目的类型,来将具有标识符dmi的项的内存块变为保留模块
 | |
 | |
 | |__mtrr_top_of_ram 通过查找MTRR的Write Block区域来判断 top-of-RAM
 | 
 |____kexec_reserve_area 将e820涉及的内存地址作为保留地址
 |
 |____针对boot allocte 和 multi boot info等数据结构进行初始化 mbi参数有startxen的参数传入
 |
 |____bootstrap_map ensure mod[0] is mapped before parsing mod0是mbi的第一个模块,需要确保这个模块的内存已经映射完毕,且不需要使用pagetable
 |
 |____bzimage_headroom mod[0]的起始地址是setup_header结构。我觉得就是hvmloader
 |
 |____映射e820的内存到指定的位置 16MB to BOOTSTRAP_DIRECTMAP_END 这个地方就是在搬内存 map_pages_to_xen  set_pdx_range&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值