qemu-kvm设备初始化

本文详细介绍了qemu-kvm设备初始化的过程,包括vm_config_groups数组中的device链表,QemuOptsList结构体以及QemuOpts变量的作用。通过qemu_opts_foreach函数遍历并初始化device链表,每个QemuOpts代表一个"-device"参数,其子参数以QemuOpt链表形式存在。qdev_device_add函数用于根据QemuOpts添加并初始化设备驱动。此外,还涉及到设备驱动查找、总线匹配和设备创建等步骤。
摘要由CSDN通过智能技术生成
1. vm_config_groups是一个数组,数组每一个成员是一个链表表头,这些链表包含了qemu-kvm的各种启动参数,device链表是链表数组中的一个链表。
2. QemuOptsList类型的device链表中的成员是QemuOpts类型,一个QemuOpts变量代表一个qemu-kvm中的“-device参数”,device链表中QemuOpts的数量就等于“-device”的数量,初始化时,会循环为每一个QemuOpts变量调用device_init_func函数。
3. 因为“-device”参数还有子参数(如virtio-scsi-pci.hotplug=on/off),所以QemuOptsList也引导一个链表,链表节点是QemuOpt类型,链表的每一个节点就对应“-device”的一个子参数。
4.device链表中每一个QemuOptsList节点对应一个“-device”参数,QemuOptsList链表中的每一个节点对应该“-device”的一个子参数。这些信息都是从qemu-kvm的启动参数初始化而来的。该函数完成工作就是 在vm_config_groups中找到device链表成员并返回。


main()
{
    ...
    /* init generic devices */
    if (qemu_opts_foreach(qemu_find_opts("device"), device_init_func, NULL, 1) != 0)
        exit(1);
    ...
}


/*
该函数完成工作就是 在vm_config_groups中找到device链表成员并返回。
*/
QemuOptsLi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值