什么 KVM 功能可以控制 Qemu 功能以及何时

what KVM functions gives control to Qemu ones and when

我正在尝试学习 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 函数)return 到(或调用)Qemu(用户 space)来处理 KVM 退出?

事实上,我发现 Qemu 只是等待(阻塞)kvm_vcpu_ioctl(env, KVM_RUN, 0) 到 return。 所以这是 KVM return 将控制权交还给 Qemu 的时候。