summary refs log tree commit diff stats
path: root/include/qemu/object.h
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2012-11-23 09:47:13 +0100
committerAnthony Liguori <aliguori@us.ibm.com>2012-11-26 13:41:00 -0600
commit667d22d1ae59da46b4c1fbd094ca61145f19b8c3 (patch)
treedb6acb0b6dce798eb5588ef8d05a9873e8114ddc /include/qemu/object.h
parent764b63125a77dab54ed405d493452a4e05679c2e (diff)
downloadfocaccia-qemu-667d22d1ae59da46b4c1fbd094ca61145f19b8c3.tar.gz
focaccia-qemu-667d22d1ae59da46b4c1fbd094ca61145f19b8c3.zip
qdev: move bus removal to object_unparent
Add an ObjectClass method that is done at object_unparent time.  It
should remove any backlinks to the object in the composition tree,
so that object_delete will be able to drop the last reference and
free the object.

Use it for qdev buses.

Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'include/qemu/object.h')
-rw-r--r--include/qemu/object.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/qemu/object.h b/include/qemu/object.h
index be707f1a36..232463b3c7 100644
--- a/include/qemu/object.h
+++ b/include/qemu/object.h
@@ -230,6 +230,15 @@ typedef struct ObjectProperty
 } ObjectProperty;
 
 /**
+ * ObjectUnparent:
+ * @obj: the object that is being removed from the composition tree
+ *
+ * Called when an object is being removed from the QOM composition tree.
+ * The function should remove any backlinks from children objects to @obj.
+ */
+typedef void (ObjectUnparent)(Object *obj);
+
+/**
  * ObjectClass:
  *
  * The base for all classes.  The only thing that #ObjectClass contains is an
@@ -240,6 +249,8 @@ struct ObjectClass
     /*< private >*/
     Type type;
     GSList *interfaces;
+
+    ObjectUnparent *unparent;
 };
 
 /**