[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 08/12] qdev: Make qdev_get_machine() not use container_get()
From: |
Peter Xu |
Subject: |
[PATCH 08/12] qdev: Make qdev_get_machine() not use container_get() |
Date: |
Wed, 20 Nov 2024 16:56:59 -0500 |
Currently, qdev_get_machine() has a slight misuse on container_get(), as
the helper says "get a container" but in reality the goal is to get the
machine object. It is still a "container" but not strictly.
Note that it _may_ get a container (at "/machine") in our current unit test
of test-qdev-global-props.c before all these changes, but it's probably
unexpected and worked by accident.
Switch to an explicit object_resolve_path_component(), with a side benefit
that qdev_get_machine() can happen a lot, and we don't need to split the
string ("/machine") every time. This also paves way for making the helper
container_get() never try to return a non-container at all.
Signed-off-by: Peter Xu <peterx@redhat.com>
---
hw/core/qdev.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 5f13111b77..c869c47a27 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -817,7 +817,13 @@ Object *qdev_get_machine(void)
static Object *dev;
if (dev == NULL) {
- dev = container_get(object_get_root(), "/machine");
+ /*
+ * NOTE: when the machine is not yet created, this helper will
+ * also keep the cached object untouched and return NULL. The next
+ * invoke of the helper will try to look for the machine again.
+ * It'll only cache the pointer when it's found the first time.
+ */
+ dev = object_resolve_path_component(object_get_root(), "machine");
}
return dev;
--
2.45.0
- Re: [PATCH 07/12] ppc/e500: Avoid abuse of container_get(), (continued)
Re: [PATCH 07/12] ppc/e500: Avoid abuse of container_get(), Daniel P . Berrangé, 2024/11/21
[PATCH 04/12] tests: Explicitly create containers in test_qom_partial_path(), Peter Xu, 2024/11/20
[PATCH 06/12] hw/ppc: Explicitly create the drc container, Peter Xu, 2024/11/20
[PATCH 08/12] qdev: Make qdev_get_machine() not use container_get(),
Peter Xu <=
[PATCH 09/12] qdev: Add machine_get_container(), Peter Xu, 2024/11/20
[PATCH 10/12] qom: Create system containers explicitly, Peter Xu, 2024/11/20