On 12/7/26 00:34, Alexander Graf wrote:
The previous commit vacated the qdev_new()/qdev_try_new() names.
Reintroduce them with the signature we actually want:

   DeviceState *qdev_new(Object *parent, const char *id,
                         const char *type);

which is the qdev-layer, heap-allocated dual of
object_initialize_child(): the returned device is created and
immediately added to the QOM composition tree as a child of @parent
under @id.

Refcount contract: the initial reference is transferred to the
child<> property of @parent, so on return the caller does not hold a
reference.  Pair with qdev_realize() (not qdev_realize_and_unref()),
matching object_initialize_child()'s convention.

qdev_new_orphan() remains for callers that set the parent themselves
before realize (notably qdev_device_add(), which parents under
/machine/peripheral via qdev_set_id()).  Later patches convert the
remaining orphan callers subsystem by subsystem.

Suggested-by: Markus Armbruster <[email protected]>
Assisted-by: Kiro
Signed-off-by: Alexander Graf <[email protected]>
---
  hw/core/qdev.c         | 19 +++++++++++++++++++
  include/hw/core/qdev.h | 34 ++++++++++++++++++++++++++++++++++
  2 files changed, 53 insertions(+)

Reviewed-by: Philippe Mathieu-Daudé <[email protected]>

Reply via email to