gpt4 book ai didi

qemu - 如何创建树外 QEMU 设备?

转载 作者:行者123 更新时间:2023-12-04 01:36:25 28 4
gpt4 key购买 nike

我想到了两种可能的机制:

  • IPC 类似于现有的 QMP 和 QAPI
  • QEMU 加载一个包含模型
  • 的共享库插件

    所需的能力(当然所有可能通过 C API,但不一定是 IPC API):
  • 注入(inject)中断
  • 用于注册访问的注册回调
  • 修改主存

  • 为什么我想要这个:
  • 使用 QEMU 作为子模块并保持其源不变
  • 仅 IPC 方法具有的其他优势:
  • 用我想要的任何语言编写模型
  • 为我的设备使用非 GPL 许可证

  • 我知道树内设备,如下所述: How to add a new device in QEMU source code?这是传统的做事方式。

    到目前为止我发现了什么:
  • 中断:只能找到带有 nmi 的 NMI 生成监控命令
  • IO 端口:IO 可以使用 io监控命令,所以我很好
  • 主内存:
  • 理想的解决方案是将内存直接映射到主机,但这似乎很难:
  • http://kvm.vger.kernel.narkive.com/rto1dDqn/sharing-variables-memory-between-host-and-guest
  • https://www.linux-kvm.org/images/e/e8/0.11.Nahanni-CamMacdonell.pdf
  • http://www.fp7-save.eu/papers/SCALCOM2016.pdf
  • 内存读取可以通过 xxp监控命令
  • 找不到如何使用监视器命令写入内存。但我认为GDB API支持,所以应该不会太难实现。

  • 我能找到的最接近的工作代码是: https://github.com/texane/vpcie , 对两边的 PCI 进行序列化,通过 QEMU 的 TCP API 发送。但这更加低效和侵入性,因为它需要在访客和主机上进行额外设置。

    最佳答案

    我知道至少有一个 QEMU 的分支为 QEMU 提供共享库插件......但它是 QEMU 4.0 的一个分支。
    https://github.com/cromulencellc/qemu-shoggoth
    尽管没有记录,但可以使用这个 fork 构建树插件。

    关于qemu - 如何创建树外 QEMU 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254790/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com