都知道,KVM在虚拟化的时候提供给用户空间的就是/dev/kvm。我们用ioctl进行操作的时候就是操作虚拟化。
KVM提供的API有三种类型,系统指令,VM指令,Vcpu指令。
下面一一说明:
系统指令:这个是针对于控制KVM运行的参数,包括全局性和虚拟机创建等工作。如:
KVM_GET_API_VERSION
KVM_CREATE_VM
KVM_CHECK_EXTENSION
等等指令。
VM指令: 实现虚拟机的控制,这里的层次低了一些。系统指令操作的是kvm,而VM操作的是虚拟机。
KVM_CREATE_VCPU
KVM_GET_IRQCHIP
KVM_RUN
Vcpu指令:具体操作的对象是对每一个虚拟机的cpu来进行配置。包括寄存器,中断,内存设置,调试开关等。
KVM_GET_REGS
KVM_GET_CPU
KVM_GET_XCRS
KVM_INTERRUPT
另外还包括了一些内存的设置函数。
以上就是我们使用KVM的API,其实也就是QEMU的在用户态调度这些API实现代码。