On Wed, 21 Jun 2023, Mark Cave-Ayland wrote:
On 21/06/2023 12:33, BALATON Zoltan wrote:
On Wed, 21 Jun 2023, Mark Cave-Ayland wrote:
This provides an overall container and owner for Machine-related objects
such
as MemoryRegions.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk>
Reviewed-by: Laurent Vivier <laur...@vivier.eu>
Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org>
---
MAINTAINERS | 1 +
hw/m68k/q800.c | 2 ++
include/hw/m68k/q800.h | 40 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 43 insertions(+)
create mode 100644 include/hw/m68k/q800.h
diff --git a/MAINTAINERS b/MAINTAINERS
index 88b5a7ee0a..748a66fbaa 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1236,6 +1236,7 @@ F: include/hw/misc/mac_via.h
F: include/hw/nubus/*
F: include/hw/display/macfb.h
F: include/hw/block/swim.h
+F: include/hw/m68k/q800.h
virt
M: Laurent Vivier <laur...@vivier.eu>
diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 465c510c18..c0256c8a90 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -38,6 +38,7 @@
#include "standard-headers/asm-m68k/bootinfo.h"
#include "standard-headers/asm-m68k/bootinfo-mac.h"
#include "bootinfo.h"
+#include "hw/m68k/q800.h"
#include "hw/misc/mac_via.h"
#include "hw/input/adb.h"
#include "hw/nubus/mac-nubus-bridge.h"
@@ -749,6 +750,7 @@ static void q800_machine_class_init(ObjectClass *oc,
void *data)
static const TypeInfo q800_machine_typeinfo = {
.name = MACHINE_TYPE_NAME("q800"),
.parent = TYPE_MACHINE,
+ .instance_size = sizeof(Q800MachineState),
.class_init = q800_machine_class_init,
};
diff --git a/include/hw/m68k/q800.h b/include/hw/m68k/q800.h
new file mode 100644
index 0000000000..f3bc17aa1b
--- /dev/null
+++ b/include/hw/m68k/q800.h
Why is this defined in a public header? Moving struct definitions of
devices to allow them to be embedded in other structs makes sense but is
there ever a reason to embed a machine state anywhere else than using it in
q800.c? I don't think so, thus to preserve locality and save some lines in
this series I think this machine state should just be in q800.c like I have
similar struct in pegasos2.c. It may only make sense to put it in a header
if q800.c was split up to multiple files but even then it should be a local
header in hw/m68k and not a public header in my opinion.
This is just following our standard guidelines since MachineState is a QOM
Again, is this a documented guideline or something vaguely agreen upon?
I'd argue that only objects that are used by other objects (such as
devices that can be embedded in machines or other devices) should be
declared in public headers but there could be local objects that are only
used locally which don't have to be exported. This machine state is
definitely a local object of q800 that nothing else should mess with so to
make that clear I think it should not be in a public header.
object of TYPE_MACHINE. Note that there are also a number of existing
examples of this currently within the QEMU tree.
There are examples for the opposite as well so without an rationale that
alone is not explaining it. (Also not having a public header may make
this series considerably shorter but the main reason I suggest it is to
ensure locality of this object to q800.)
Regards,
BALATON Zoltan
ATB,
Mark.