我正在尝试学习Qemu-KVM,以便为监控应用程序扩展它们。我可以看到qemu/kvm-all.c
中的一般控制流程是:
kvm_init() :
kvm_ioctl(s, KVM_CREATE_VM, 0);
kvm_init_vcpu() : kvm_vm_ioctl(s, KVM_CREATE_VCPU, env->cpu_index);
kvm_cpu_exec() :
do {
kvm_vcpu_ioctl(env, KVM_RUN, 0);
switch (run->exit_reason) { // giving control to Qemu
case KVM_EXIT_IO:
case KVM_EXIT_MMIO:
... // omitted
} while();
我还看不到的是什么时候(源代码中的KVM功能)返回(或调用)Qemu(用户空间)来处理KVM退出?
答案 0 :(得分:1)
事实上,我发现Qemu只是等待(阻止)kvm_vcpu_ioctl(env,KVM_RUN,0)返回。 所以这是当KVM将控件返回Qemu时。