qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH] qom: Extract object_try_new() from qdev_new()


From: Philippe Mathieu-Daudé
Subject: Re: [RFC PATCH] qom: Extract object_try_new() from qdev_new()
Date: Mon, 9 Jan 2023 12:25:47 +0100
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1

On 9/1/23 12:20, Philippe Mathieu-Daudé wrote:
The module resolving in qdev_new() is specific to QOM, not to
QDev. Extract the code as a new QOM object_try_new() helper so
it can be reused by non-QDev code.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
RFC because I'm wonder if we can't find a better name...

Also, should we refactor object_initialize() similarly,
having object_try_initialize(..., Error *)?
---
  hw/core/qdev.c       | 23 ++---------------------
  include/qom/object.h | 12 ++++++++++++
  qom/object.c         | 23 +++++++++++++++++++++++
  3 files changed, 37 insertions(+), 21 deletions(-)

diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index d759c4602c..3a076dcc7f 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -147,31 +147,12 @@ bool qdev_set_parent_bus(DeviceState *dev, BusState *bus, 
Error **errp)
DeviceState *qdev_new(const char *name)
  {
-    ObjectClass *oc = object_class_by_name(name);
-#ifdef CONFIG_MODULES
-    if (!oc) {
-        int rv = module_load_qom(name, &error_fatal);
-        if (rv > 0) {
-            oc = object_class_by_name(name);
-        } else {
-            error_report("could not find a module for type '%s'", name);
-            exit(1);

Wrong patch, sorry, v2 coming.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]