aboutsummaryrefslogtreecommitdiff
path: root/hw/core/qdev-user.c
diff options
context:
space:
mode:
authorPhilippe Mathieu-Daudé <philmd@linaro.org>2025-01-02 14:50:19 +0100
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2025-01-09 18:16:24 +0100
commit558ee1ede6cc95d3dde806f0ac323911c5dbb4b4 (patch)
treef476b8d90a1382579c0ebb159d5719b55a4c0d44 /hw/core/qdev-user.c
parentad1ea5ffa10d4cf365c142caf627f2c43b3592c2 (diff)
downloadqemu-558ee1ede6cc95d3dde806f0ac323911c5dbb4b4.zip
qemu-558ee1ede6cc95d3dde806f0ac323911c5dbb4b4.tar.gz
qemu-558ee1ede6cc95d3dde806f0ac323911c5dbb4b4.tar.bz2
qdev: Implement qdev_create_fake_machine() for user emulation
When a QDev instance is realized, qdev_get_machine() ends up called. In the next commit, qdev_get_machine() will require a "machine" container to be always present. To satisfy this QOM containers design, Implement qdev_create_fake_machine() which creates a fake "machine" container for user emulation. On system emulation, qemu_create_machine() is called from qemu_init(). For user emulation, since the TCG accelerator always calls tcg_init_machine(), we use it to hook our fake machine creation. Suggested-by: Peter Xu <peterx@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Acked-by: Peter Xu <peterx@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20250102211800.79235-2-philmd@linaro.org>
Diffstat (limited to 'hw/core/qdev-user.c')
-rw-r--r--hw/core/qdev-user.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/hw/core/qdev-user.c b/hw/core/qdev-user.c
new file mode 100644
index 0000000..3d421d8
--- /dev/null
+++ b/hw/core/qdev-user.c
@@ -0,0 +1,19 @@
+/*
+ * QDev helpers specific to user emulation.
+ *
+ * Copyright 2025 Linaro, Ltd.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+#include "qemu/osdep.h"
+#include "qom/object.h"
+#include "hw/qdev-core.h"
+
+void qdev_create_fake_machine(void)
+{
+ Object *fake_machine_obj;
+
+ fake_machine_obj = object_property_add_new_container(object_get_root(),
+ "machine");
+ object_property_add_new_container(fake_machine_obj, "unattached");
+}