OSDN Git Service

target/i386/hvf: Use CPUState typedef
[qmiga/qemu.git] / qom / container.c
1 /*
2  * Device Container
3  *
4  * Copyright IBM, Corp. 2012
5  *
6  * Authors:
7  *  Anthony Liguori   <aliguori@us.ibm.com>
8  *
9  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10  * See the COPYING file in the top-level directory.
11  */
12
13 #include "qemu/osdep.h"
14 #include "qom/object.h"
15 #include "qemu/module.h"
16
17 static const TypeInfo container_info = {
18     .name          = "container",
19     .parent        = TYPE_OBJECT,
20 };
21
22 static void container_register_types(void)
23 {
24     type_register_static(&container_info);
25 }
26
27 Object *container_get(Object *root, const char *path)
28 {
29     Object *obj, *child;
30     char **parts;
31     int i;
32
33     parts = g_strsplit(path, "/", 0);
34     assert(parts != NULL && parts[0] != NULL && !parts[0][0]);
35     obj = root;
36
37     for (i = 1; parts[i] != NULL; i++, obj = child) {
38         child = object_resolve_path_component(obj, parts[i]);
39         if (!child) {
40             child = object_new("container");
41             object_property_add_child(obj, parts[i], child);
42             object_unref(child);
43         }
44     }
45
46     g_strfreev(parts);
47
48     return obj;
49 }
50
51
52 type_init(container_register_types)