虚拟化平台 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个

 

 

 

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