虛擬化平臺 KVM API的ioctl使用示範(一)

KVM虛擬化平臺提供了大量的API函數供用戶級開發人員使用,但很多人還不知道如何使用。 本文將舉一些實例提供給大家,後面會陸續更新。

 

KVM API 函數原理

      用戶利用ioctl發送KVM  API  與 /dev/kvm進行交互,從而可以操縱KVM

KVM API 函數功能

       用戶可以通過KVM API 獲得KVM的內核信息,創建虛擬機,創建VCPU等等

KVM API 函數的文檔位置

      因爲KVM已經納入了linux標準發佈路線裏,所以KVM的API文檔也相應的在linux源文件夾中。

      以  linux-3.6 源文件爲例,文檔位置是 linux-3.6/Documentation/virtual/kvm

KVM API函數舉例

     KVM_GET_API_VERSION 獲得 kvm api版本號,(目前是12)

     KVM_CHECK_EXTENSIONS 獲得 kvm對單臺虛擬機最高支持的性能規格,(比如vcpu的個數)

     KVM_CREATE_VM 創建虛擬機

 

KVM  API函數使用示範

     目標:使用KVM_GET_API_VERSION,和KVM_CHECK_EXTENSIONS查詢KVM的參數設置
     方法:使用ioctl 與/dev/kvm 交互,獲得返回值

     代碼如下

 

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/kvm.h>






#define    KVM_FILE  "/dev/kvm"


int main()
{
        int dev;
        int state;
        int cnt;

        dev=open(KVM_FILE,O_RDWR|O_NDELAY);
        cnt=ioctl(dev,KVM_GET_API_VERSION,0);
        printf ("----KVM API version is--%d---\n",cnt);
        cnt=ioctl(dev,KVM_CHECK_EXTENSION,KVM_CAP_MAX_VCPUS);
        printf ("----KVM supporting guest MAX_VCPUS is %d---\n",cnt);
        return 0;
}

Makefile:

all:get_version

編譯,使用

make

./get_version

 

使用結果



我們可以知道 當前KVM api 版本時12,支持guest 最大VCPU個數是254個

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章