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
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