Il 05/04/2012 13:21, Andreas Färber ha scritto: > Specify the root to search from as argument. This avoids hardcoding > "/machine" in some places and makes it more flexible. > > Signed-off-by: Andreas Färber <afaer...@suse.de> > Cc: Paolo Bonzini <pbonz...@redhat.com> > Cc: Anthony Liguori <anth...@codemonkey.ws>
Looks good, thanks. Paolo > --- > hw/qdev-monitor.c | 4 ++-- > hw/qdev.c | 7 ++++--- > include/qemu/object.h | 3 ++- > qom/container.c | 4 ++-- > 4 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c > index 4783366..67f296b 100644 > --- a/hw/qdev-monitor.c > +++ b/hw/qdev-monitor.c > @@ -180,7 +180,7 @@ static Object *qdev_get_peripheral(void) > static Object *dev; > > if (dev == NULL) { > - dev = container_get("/machine/peripheral"); > + dev = container_get(qdev_get_machine(), "/peripheral"); > } > > return dev; > @@ -191,7 +191,7 @@ static Object *qdev_get_peripheral_anon(void) > static Object *dev; > > if (dev == NULL) { > - dev = container_get("/machine/peripheral-anon"); > + dev = container_get(qdev_get_machine(), "/peripheral-anon"); > } > > return dev; > diff --git a/hw/qdev.c b/hw/qdev.c > index 0d3c0fc..efa4c5d 100644 > --- a/hw/qdev.c > +++ b/hw/qdev.c > @@ -157,8 +157,9 @@ int qdev_init(DeviceState *dev) > static int unattached_count = 0; > gchar *name = g_strdup_printf("device[%d]", unattached_count++); > > - object_property_add_child(container_get("/machine/unattached"), name, > - OBJECT(dev), NULL); > + object_property_add_child(container_get(qdev_get_machine(), > + "/unattached"), > + name, OBJECT(dev), NULL); > g_free(name); > } > > @@ -673,7 +674,7 @@ Object *qdev_get_machine(void) > static Object *dev; > > if (dev == NULL) { > - dev = container_get("/machine"); > + dev = container_get(object_get_root(), "/machine"); > } > > return dev; > diff --git a/include/qemu/object.h b/include/qemu/object.h > index a675937..ca1649c 100644 > --- a/include/qemu/object.h > +++ b/include/qemu/object.h > @@ -905,6 +905,7 @@ void object_property_add_str(Object *obj, const char > *name, > > /** > * container_get: > + * @root: root of the #path, e.g., object_get_root() > * @path: path to the container > * > * Return a container object whose path is @path. Create more containers > @@ -912,7 +913,7 @@ void object_property_add_str(Object *obj, const char > *name, > * > * Returns: the container object. > */ > -Object *container_get(const char *path); > +Object *container_get(Object *root, const char *path); > > > #endif > diff --git a/qom/container.c b/qom/container.c > index 67e9e8a..c9940ab 100644 > --- a/qom/container.c > +++ b/qom/container.c > @@ -25,7 +25,7 @@ static void container_register_types(void) > type_register_static(&container_info); > } > > -Object *container_get(const char *path) > +Object *container_get(Object *root, const char *path) > { > Object *obj, *child; > gchar **parts; > @@ -33,7 +33,7 @@ Object *container_get(const char *path) > > parts = g_strsplit(path, "/", 0); > assert(parts != NULL && parts[0] != NULL && !parts[0][0]); > - obj = object_get_root(); > + obj = root; > > for (i = 1; parts[i] != NULL; i++, obj = child) { > child = object_resolve_path_component(obj, parts[i]);