|
From: | address@hidden |
Subject: | Re: [PATCH v5 04/18] gdbstub: DebugClass added to system mode. |
Date: | Tue, 5 Mar 2024 12:27:04 +0100 |
User-agent: | Mozilla Thunderbird |
Hi Alex,
I managed to include all of your feedback except for the one on
this patch:
You shouldn't need empty functions if you are not using them. Moreover
you should use the inheritance feature and have something like:
static void gdb_debug_class_init(ObjectClass *klass, void *data)
{
DebugClass *dc = DEBUG_CLASS(klass);
dc->set_stop_cpu = gdb_set_stop_cpu;
};
static const TypeInfo debug_info[] = {
{
.name = TYPE_DEBUG,
.parent = TYPE_OBJECT,
.instance_size = sizeof(DebugState),
.class_size = sizeof(DebugClass),
.abstract = true,
},
{
.name = TYPE_GDB_DEBUG,
.parent = TYPE_DEBUG,
.class_init = gdb_debug_class_init,
},
};
DEFINE_TYPES(debug_info)
My approach was to delete debug/common/debug.c and put the above code into debug/gdbstub/system.c and an analog version for MCD in debug/mcdstub/mcdstub.c. However, I don't know when to store the DebugClass to the MachineState (MachineState *ms = MACHINE(qdev_get_machine()); ms->debug_class = dc;). It doesn't seem to work when inside of gdb_debug_class_init().
I still lack an understanding of when/how exactly gdb_debug_class_init() is called.
Was my approach wrong and when should I store the DebugClass?
Best regards,
Nicolas
[Prev in Thread] | Current Thread | [Next in Thread] |