[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 03/15] qom: allow creating an alias of a child<> prop
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 03/15] qom: allow creating an alias of a child<> property |
Date: |
Tue, 1 Jul 2014 10:34:53 +0200 |
Child properties must be unique. Fix this problem by
turning their aliases into links.
The resolve function that forwards to the target property
does not have any knowledge of the target property's type,
so it works fine.
Reviewed-by: Peter Crosthwaite <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
qom/object.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/qom/object.c b/qom/object.c
index 7a892ef..f49335f 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1607,22 +1607,32 @@ void object_property_add_alias(Object *obj, const char
*name,
AliasProperty *prop;
ObjectProperty *op;
ObjectProperty *target_prop;
+ gchar *prop_type;
target_prop = object_property_find(target_obj, target_name, errp);
if (!target_prop) {
return;
}
+ if (object_property_is_child(target_prop)) {
+ prop_type = g_strdup_printf("link%s",
+ target_prop->type + strlen("child"));
+ } else {
+ prop_type = g_strdup(target_prop->type);
+ }
+
prop = g_malloc(sizeof(*prop));
prop->target_obj = target_obj;
prop->target_name = target_name;
- op = object_property_add(obj, name, target_prop->type,
+ op = object_property_add(obj, name, prop_type,
property_get_alias,
property_set_alias,
property_release_alias,
prop, errp);
op->resolve = property_resolve_alias;
+
+ g_free(prop_type);
}
static void object_instance_init(Object *obj)
--
1.8.3.1
- [Qemu-devel] [PULL for 2.1 00/15] MemoryRegion QOMification, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 01/15] qom: add object_property_add_alias(), Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 03/15] qom: allow creating an alias of a child<> property,
Paolo Bonzini <=
- [Qemu-devel] [PULL 05/15] qom: object: remove parent pointer when unparenting, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 02/15] qom: add a generic mechanism to resolve paths, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 06/15] qom: object: Ignore refs/unrefs of NULL, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 04/15] mc146818rtc: add "rtc-time" link to "/machine/rtc", Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 08/15] memory: MemoryRegion: use /machine as default owner, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 09/15] memory: MemoryRegion: QOMify, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 10/15] memory: MemoryRegion: replace owner field with QOM parent, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 07/15] libqtest: escape strings in QMP commands, fix leak, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 12/15] memory: MemoryRegion: Add may-overlap and priority props, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 11/15] memory: MemoryRegion: Add container and addr props, Paolo Bonzini, 2014/07/01