【发布时间】:2019-11-04 13:15:31
【问题描述】:
我写了一个我认为是最小的自定义设备来测试我对 QOM 和 QEMU 的总体理解。下面是省略了 cmets 的相关代码。不幸的是,当我启动来宾并将我的设备名称作为命令行参数传递时,它无法找到我的设备并退出。我发出:
qemu-system-x86_64 -device hello-world-device ...
如何让 QEMU 识别我的设备?我需要采取哪些步骤才能正确构建我的设备?
我可以在我将源放入的文件夹 (qemu/hw/misc) 中看到一个对象列表,但我找不到其他目标的定义位置以添加到我的新设备的目标中。代码:
#include "qom/object.h"
#include "hw/qdev-core.h"
#define TYPE_HELLO "hello-world-device"
#define HELLO(obj) OBJECT_CHECK(HelloState, (obj), TYPE_HELLO)
typedef struct{
DeviceClass parent_obj;
uint8_t member0, member1;
} HelloState;
static const TypeInfo hello_info = {
.name = TYPE_HELLO,
.parent = TYPE_DEVICE,
.instance_size = sizeof(HelloState),
.class_init = class_init,
};
static void class_init(ObjectClass *klass, void *data){
DeviceClass *dc = DEVICE_CLASS(klass);
}
static void hello_register_types(void){
type_register_static(&hello_info);
}
type_init(hello_register_types)
【问题讨论】: