kvmtool源码学习 patch02-04

patch02-04主要实现如下功能:
(0)准备kvm结构体,用于和kvm内核模块沟通。

struct kvm
{
    int fd;    /* /dev/kvm */
    int vmfd;
};

在main函数中创建一个kvm变量,并获取内核kvm设备fd。

    struct kvm kvm;
    kvm.fd = open("/dev/kvm", O_RDWR);

(1)校验kvm版本信息

    ret = ioctl(kvm.fd, KVM_GET_API_VERSION, 0);
    if (ret != KVM_API_VERSION) {
        die("kvm verison error");
    }

(2)通过kvm api函数创建一个虚拟机vm(虽然这边调用kvm api创建了一个vm,但是只是一个空壳子,因为我们还没有为vm准备内存等vm运行所必要的相关资源)

    kvm.vmfd = ioctl(kvm.fd, KVM_CREATE_VM, 0);
    if (kvm.vmfd < 0) {
        die("create vm failed");
    }

在上述程序中使用到了ioctl这个函数,这个函数是kvm为我们提供的api,linux用户态程序主要就是通过ioctl这个api和kvm内核组件交互。

附:
patch02: Check for KVM_API_VERSION at init
patch03: Create a VM using ioctl(KVM_CREATE_VM)
patch04: Move KVM fds into ‘struct kvm’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值