mirror of https://github.com/xqemu/xqemu.git
qdev: Add a 'free' method to disassociate chardev from qdev device
When a device is removed, remove the association with a chardev, if any, so that the chardev can be re-used later for other devices. Reported-by: Qunfang Zhang <qzhang@redhat.com> Fix-suggested-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
8600361542
commit
a87f3e8b08
|
@ -680,6 +680,16 @@ static int parse_chr(DeviceState *dev, Property *prop, const char *str)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void free_chr(DeviceState *dev, Property *prop)
|
||||||
|
{
|
||||||
|
CharDriverState **ptr = qdev_get_prop_ptr(dev, prop);
|
||||||
|
|
||||||
|
if (*ptr) {
|
||||||
|
qemu_chr_add_handlers(*ptr, NULL, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int print_chr(DeviceState *dev, Property *prop, char *dest, size_t len)
|
static int print_chr(DeviceState *dev, Property *prop, char *dest, size_t len)
|
||||||
{
|
{
|
||||||
CharDriverState **ptr = qdev_get_prop_ptr(dev, prop);
|
CharDriverState **ptr = qdev_get_prop_ptr(dev, prop);
|
||||||
|
@ -699,6 +709,7 @@ PropertyInfo qdev_prop_chr = {
|
||||||
.print = print_chr,
|
.print = print_chr,
|
||||||
.get = get_generic,
|
.get = get_generic,
|
||||||
.set = set_generic,
|
.set = set_generic,
|
||||||
|
.free = free_chr,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* --- netdev device --- */
|
/* --- netdev device --- */
|
||||||
|
|
Loading…
Reference in New Issue