0%

2024秋冬季开源操作系统训练营三阶段学习总结报告-王海旺

主要看了下hypervisor部分

tour/h_1_0部分的vmexit_handler只处理了Shutdown vm
exercise/simplehv处理了IllegalInstruction, LoadGuestPageFault,VirtualSupervisorEnvCall

IllegalInstruction处理部分

1
2
3
4
5
6
7
8
9
Trap::Exception(Exception::IllegalInstruction) => {
ax_println!("Bad instruction: {:#x} sepc: {:#x}",
stval::read(),
ctx.guest_regs.sepc
);
ctx.guest_regs.sepc += 4;
ctx.guest_regs.gprs.set_reg(A0, 0x6688);
ctx.guest_regs.gprs.set_reg(A1, 0x1234);
},

guest_regs.sepc代表返回guest模式后的pc值
guest_regs.gprs.set_reg设置guest模式的reg值设置guest模式的reg值
hyper模式可以接管guest模式的寄存器并在相应事件发生时设置回调函