qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

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 
     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)