]>
Commit | Line | Data |
---|---|---|
8b45d447 AL |
1 | /* |
2 | * Device Container | |
3 | * | |
4 | * Copyright IBM, Corp. 2012 | |
5 | * | |
6 | * Authors: | |
7 | * Anthony Liguori <[email protected]> | |
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 | ||
9bbc853b | 13 | #include "qemu/osdep.h" |
14cccb61 | 14 | #include "qom/object.h" |
1de7afc9 | 15 | #include "qemu/module.h" |
8b45d447 | 16 | |
8c43a6f0 | 17 | static const TypeInfo container_info = { |
8b45d447 AL |
18 | .name = "container", |
19 | .instance_size = sizeof(Object), | |
20 | .parent = TYPE_OBJECT, | |
21 | }; | |
22 | ||
83f7d43a | 23 | static void container_register_types(void) |
8b45d447 AL |
24 | { |
25 | type_register_static(&container_info); | |
26 | } | |
27 | ||
dfe47e70 | 28 | Object *container_get(Object *root, const char *path) |
a612b2a6 PB |
29 | { |
30 | Object *obj, *child; | |
31 | gchar **parts; | |
32 | int i; | |
33 | ||
34 | parts = g_strsplit(path, "/", 0); | |
35 | assert(parts != NULL && parts[0] != NULL && !parts[0][0]); | |
dfe47e70 | 36 | obj = root; |
a612b2a6 PB |
37 | |
38 | for (i = 1; parts[i] != NULL; i++, obj = child) { | |
39 | child = object_resolve_path_component(obj, parts[i]); | |
40 | if (!child) { | |
41 | child = object_new("container"); | |
42 | object_property_add_child(obj, parts[i], child, NULL); | |
43 | } | |
44 | } | |
45 | ||
f156f238 SW |
46 | g_strfreev(parts); |
47 | ||
a612b2a6 PB |
48 | return obj; |
49 | } | |
50 | ||
51 | ||
83f7d43a | 52 | type_init(container_register_types) |