都知道,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實作代碼。