diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2011-12-12 14:29:25 -0600 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-12-15 09:20:47 -0600 |
commit | 85ed303bfe1f67a4c18ffe51916e73cffd7d9e9b (patch) | |
tree | 8d0188741f650e031c3f841778e6a1d07e1e21c5 /hw/qdev.h | |
parent | 222f23f508a8d778f56eddef14752dfd26d225b4 (diff) |
qom: add a reference count to qdev objects
To ensure that a device isn't removed from the graph until all of its links are
broken.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw/qdev.h')
-rw-r--r-- | hw/qdev.h | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -45,6 +45,12 @@ struct DeviceState { QTAILQ_ENTRY(DeviceState) sibling; int instance_id_alias; int alias_required_for_version; + + /** + * This tracks the number of references between devices. See @qdev_ref for + * more information. + */ + uint32_t ref; }; typedef void (*bus_dev_printfn)(Monitor *mon, DeviceState *dev, int indent); @@ -329,4 +335,24 @@ char *qdev_get_fw_dev_path(DeviceState *dev); /* This is a nasty hack to allow passing a NULL bus to qdev_create. */ extern struct BusInfo system_bus_info; +/** + * @qdev_ref + * + * Increase the reference count of a device. A device cannot be freed as long + * as its reference count is greater than zero. + * + * @dev - the device + */ +void qdev_ref(DeviceState *dev); + +/** + * @qdef_unref + * + * Decrease the reference count of a device. A device cannot be freed as long + * as its reference count is greater than zero. + * + * @dev - the device + */ +void qdev_unref(DeviceState *dev); + #endif |