重点在device_init_func参数的qemu_opts_foreach,在其中调用了qdev_device_add。而在qdev_device_add里面,重要的一行是调用了dev = DEVICE(object_new(driver));,而且上一行有个注释——/* create device */: DEVICE是一个宏,实际是OBJECT_CHECK,主要是是看看obj是否是TYPE_DEVICE的一个实例: #define DEVICE...
virtio-net设备实例化的完成是通过qdev_device_add当中的这个函数来触发的 object_property_set_bool(OBJECT(dev), true, "realized", &err) 先来看一下这个函数的具体的调用链 object_property_set_bool->object_property_set_qobject->object_property_set ->object_property_find->object_class_property_find ...
3. 调用qemu_opts_foreach(&qemu_device_opts, device_init_func, NULL, 1) 创建命令行上指定的设备 4. device_init_func调用qdev_device_add(opts) 5. qdev_device_add函数的流程如下: a) 调用qemu_opt_get(opts, "driver")获取driver选项,这里应该是virtio-net-pci b) 调用qdev_find_info(NULL, d...
在qdev_device_add函数中,首先会调用object_new,创建object(object是所有instance实例的根结构),最终是通过调用每个virtio-pci-net相应DeviceClass里的instance_init创建实例。 static void virtio_net_pci_instance_init(Object *obj) { VirtIONetPCI *dev = VIRTIO_NET_PCI(obj); virtio_instance_init_common(obj...
#16 0x00005555559f146b in qdev_device_add (opts=0x5555568fae30, errp=0x555556859010 <error_fatal>) at qdev-monitor.c:634 #17 0x00005555559f916b in device_init_func (opaque=0x0, opts=0x5555568fae30, errp=0x555556859010 <error_fatal>) at vl.c:2191 ...
(qemu) device_add virtio-blk-pci,scsi=off,drive=drive-virtio-disk1 通过libvirt启动qemu,启用QMP 有2种方法: 1. xml里不做任何额外配置,默认就会启用QMP,但通过这种方法启用的QMP,只能通过libvirt接口(比如virsh命令或libvirt api)来进行QMP指令的输入,而不能通过telnet、nc之类的,因为默认启用的QMP,只会生...
device_add配置 添加设备。 device_del编号 删除设备 ID。id 可以是短 ID 或 QOM 对象路径。 cpu指数 设置默认 CPU。 mouse_movedx dy [dz] 将活动鼠标移动到具有可选滚动轴 dz 的指定坐标 dx dy。 mouse_button瓦尔 更改活动鼠标按钮状态值 (1=L,2=M,4=R)。
从其在步骤(3)中的输出中,我们可以看到插槽0中存在,而将CPU热插拔到插槽1中需要将列出的属性传递给QMP:query-hotpluggable-cpusIvyBridge-IBRS-x86_64-cpudevice_add(QEMU)device_addid=cpu-2driver=IvyBridge-IBRS-x86_64-cpusocket-id=1core-id=0thread-id=0{"execute":"device_add","arguments":{"...
qemu_opts_foreach(qemu_find_opts("device"), device_init_func, NULL, NULL)//vl.c qdev_device_add//qdev-monitor.c object_new() ->class_init ->instance_init object_property_set_bool(realized) --> virtio_balloon_device_realize//virtio-balloon.c ...
(qemu) device_add virtio-blk-pci,drive=disk1,id=myvirtio1 Confirm the device has been created by querying the pci bus. (qemu) info pciBus 0, device 0, function 0:Host bridge: PCI device 8086:1237id ""Bus 0, device 1, function 0:ISA bridge: PCI device 8086:7000id ""Bus 0, dev...