qemu设备监听虚拟机状态笔记

1、监听设置回调函数

cpp 复制代码
static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
{
...
    vrng->vmstate = qemu_add_vm_change_state_handler(virtio_rng_vm_state_change, vrng);
}

2、处理函数

cpp 复制代码
static void virtio_rng_vm_state_change(void *opaque, bool running,
                                       RunState state)
{
    VirtIORNG *vrng = opaque;
    trace_virtio_rng_vm_state_change(vrng, running, state);

    /* We may have an element ready but couldn't process it due to a quota
     * limit or because CPU was stopped.  Make sure to try again when the
     * CPU restart.
     */
    if (running && is_guest_ready(vrng)) {
        virtio_rng_process(vrng);
    }
}

3、去掉监听

cpp 复制代码
static void virtio_rng_device_unrealize(DeviceState *dev)
{
    VirtIODevice *vdev = VIRTIO_DEVICE(dev);
    VirtIORNG *vrng = VIRTIO_RNG(dev);

    qemu_del_vm_change_state_handler(vrng->vmstate);
    timer_free(vrng->rate_limit_timer);
    virtio_del_queue(vdev, 0);
    virtio_cleanup(vdev);
}

4、虚拟机状态表

|----------------|-----------------------------|----------|
| 状态 | 含义 | running? |
| running | guest 正在运行 | 是 |
| suspended | guest 挂起(ACPI S3) | 是(算"活的") |
| paused | 通过 stop 命令暂停 | 否 |
| prelaunch | 用 -S 启动,guest 还没开始跑 | 否 |
| inmigrate | 暂停等待 incoming migration | 否 |
| postmigrate | 迁出成功后暂停 | 否 |
| finish-migrate | 暂停以完成迁移过程 | 否 |
| restore-vm | 暂停以恢复 VM 状态 | 否 |
| save-vm | 暂停以保存 VM 状态 | 否 |
| colo | COLO 主备容错中 | 否 |
| io-error | 最后一次 I/O 失败,设备配置成遇错暂停 | 否 |
| watchdog | watchdog 动作配置成暂停,且已触发 | 否 |
| guest-panicked | guest OS panic | 否 |
| internal-error | 发生了阻止 guest 继续执行的内部错误 | 否 |
| shutdown | guest 已关机(且用了 -no-shutdown) | 否 |
| debug | QEMU 在调试器下运行 | 否 |

相关推荐
萧青山19 天前
【信创实战】x86电脑运行麒麟ARM系统:QEMU虚拟化完全指南(含一键脚本、性能优化、AI部署)
qemu·信创·麒麟系统·arm虚拟化·ai部署
一个平凡而乐于分享的小比特1 个月前
QEMU:一台“用软件造出来的万能计算机”
qemu
凉、介1 个月前
KVM + QEMU 虚拟化
笔记·学习·嵌入式·arm·qemu·虚拟化·kvm
牛奶咖啡132 个月前
KVM虚拟化与企业应用实践——给远端主机创建虚拟机
云原生·qemu·kvm·给远端主机创建虚拟机·创建uefi模式的虚拟机·安装openeulersp2·vnc与虚拟机环境搭建
牛奶咖啡132 个月前
KVM虚拟化与企业应用实践——通过网络介质配合ks自动应答文件实现自动安装KVM虚拟机
云原生·qemu·kvm·系统网络引导与ks自动应答环境·远程资源+ks文件安装虚拟机·通过网络介质引导自动安装虚拟机·qemu的总线类型详解
冰山一脚20132 个月前
kvm驱动学习笔记
qemu
ggaofeng2 个月前
如何通过uboot加载硬盘
linux·qemu·uboot
ScilogyHunter2 个月前
QEMU完全指南
linux·qemu
冰山一脚20132 个月前
qemu的cpu加速器分析笔记
qemu