summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2017-09-28 10:59:54 +0800
committerStefan Hajnoczi <stefanha@redhat.com>2017-10-03 14:26:15 -0400
commit7c47c4ead75d0b733ee8f2f51fd1de0644cc1308 (patch)
treec77a4d846c8ad2911d1817e8b5f4b4cde51479c6
parentd147f7e815f97cb477e223586bcb80c316ae10ea (diff)
downloadqemu-7c47c4ead75d0b733ee8f2f51fd1de0644cc1308.tar.gz
qom: provide root container for internal objs
We have object_get_objects_root() to keep user created objects, however no place for objects that will be used internally. Create such a container for internal objects. CC: Andreas Färber <afaerber@suse.de> CC: Markus Armbruster <armbru@redhat.com> CC: Paolo Bonzini <pbonzini@redhat.com> Suggested-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 20170928025958.1420-2-peterx@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
-rw-r--r--include/qom/object.h11
-rw-r--r--qom/object.c11
2 files changed, 22 insertions, 0 deletions
diff --git a/include/qom/object.h b/include/qom/object.h
index f3e5cff37a..e0d9824415 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -1214,6 +1214,17 @@ Object *object_get_root(void);
Object *object_get_objects_root(void);
/**
+ * object_get_internal_root:
+ *
+ * Get the container object that holds internally used object
+ * instances. Any object which is put into this container must not be
+ * user visible, and it will not be exposed in the QOM tree.
+ *
+ * Returns: the internal object container
+ */
+Object *object_get_internal_root(void);
+
+/**
* object_get_canonical_path_component:
*
* Returns: The final component in the object's canonical path. The canonical
diff --git a/qom/object.c b/qom/object.c
index 3e18537e9b..6a7bd9257b 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1370,6 +1370,17 @@ Object *object_get_objects_root(void)
return container_get(object_get_root(), "/objects");
}
+Object *object_get_internal_root(void)
+{
+ static Object *internal_root;
+
+ if (!internal_root) {
+ internal_root = object_new("container");
+ }
+
+ return internal_root;
+}
+
static void object_get_child_property(Object *obj, Visitor *v,
const char *name, void *opaque,
Error **errp)