container.c (1132B)
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 17static const TypeInfo container_info = { 18 .name = "container", 19 .parent = TYPE_OBJECT, 20}; 21 22static void container_register_types(void) 23{ 24 type_register_static(&container_info); 25} 26 27Object *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 52type_init(container_register_types)