]> Git Repo - qemu.git/commitdiff
vl: Clean up user-creatable objects when exiting
authorEduardo Habkost <[email protected]>
Thu, 24 Aug 2017 19:23:13 +0000 (16:23 -0300)
committerEduardo Habkost <[email protected]>
Tue, 19 Sep 2017 12:09:23 +0000 (09:09 -0300)
Delete all user-creatable objects in /objects when exiting QEMU, so they
can perform cleanup actions.

Signed-off-by: Eduardo Habkost <[email protected]>
Message-Id: <20170824192315[email protected]>
Acked-by: Philippe Mathieu-Daudé <[email protected]>
Tested-by: Zack Cornelius <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
include/qom/object_interfaces.h
qom/object_interfaces.c
vl.c

index d63c1c28f8569302f4198206d5ccfe0467b18d5d..d23e11bc53e060dc925d1159e2ad7e661ba8b920 100644 (file)
@@ -147,4 +147,12 @@ int user_creatable_add_opts_foreach(void *opaque,
  */
 void user_creatable_del(const char *id, Error **errp);
 
+/**
+ * user_creatable_cleanup:
+ *
+ * Delete all user-creatable objects and the user-creatable
+ * objects container.
+ */
+void user_creatable_cleanup(void);
+
 #endif
index 3bb8959f09cf28c612759b8b2f350979f8629f1e..6824a88caabe071cca31bb0fa6749815f27a086b 100644 (file)
@@ -193,6 +193,11 @@ void user_creatable_del(const char *id, Error **errp)
     object_unparent(obj);
 }
 
+void user_creatable_cleanup(void)
+{
+    object_unparent(object_get_objects_root());
+}
+
 static void register_types(void)
 {
     static const TypeInfo uc_interface_info = {
diff --git a/vl.c b/vl.c
index 9e62e92aea61694bd15625bea2212fe2cbf766a7..ad49314608e75e64248fbe891ec9ec2a2ad8bcdf 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -4887,6 +4887,7 @@ int main(int argc, char **argv, char **envp)
     audio_cleanup();
     monitor_cleanup();
     qemu_chr_cleanup();
+    user_creatable_cleanup();
     /* TODO: unref root container, check all devices are ok */
 
     return 0;
This page took 0.026553 seconds and 4 git commands to generate.