* [Qemu-devel] [PATCH 1/2] qdev: Add a 'free' method to disassociate chardev from qdev device
2012-01-13 9:54 [Qemu-devel] [PATCH 0/2] qdev: disassociate chardev from device on device exit Amit Shah
@ 2012-01-13 9:54 ` Amit Shah
2012-01-13 9:54 ` [Qemu-devel] [PATCH 2/2] virtio-console: no need to remove char handlers explicitly Amit Shah
1 sibling, 0 replies; 4+ messages in thread
From: Amit Shah @ 2012-01-13 9:54 UTC (permalink / raw)
To: qemu list; +Cc: Amit Shah, Gerd Hoffmann, Markus Armbruster
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>
---
hw/qdev-properties.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index 663c2a0..02f0dae 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -680,6 +680,16 @@ static int parse_chr(DeviceState *dev, Property *prop, const char *str)
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)
{
CharDriverState **ptr = qdev_get_prop_ptr(dev, prop);
@@ -699,6 +709,7 @@ PropertyInfo qdev_prop_chr = {
.print = print_chr,
.get = get_generic,
.set = set_generic,
+ .free = free_chr,
};
/* --- netdev device --- */
--
1.7.7.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 2/2] virtio-console: no need to remove char handlers explicitly
2012-01-13 9:54 [Qemu-devel] [PATCH 0/2] qdev: disassociate chardev from device on device exit Amit Shah
2012-01-13 9:54 ` [Qemu-devel] [PATCH 1/2] qdev: Add a 'free' method to disassociate chardev from qdev device Amit Shah
@ 2012-01-13 9:54 ` Amit Shah
2012-01-13 9:58 ` Amit Shah
1 sibling, 1 reply; 4+ messages in thread
From: Amit Shah @ 2012-01-13 9:54 UTC (permalink / raw)
To: qemu list; +Cc: Amit Shah, Gerd Hoffmann, Markus Armbruster
qdev is now equipped (thanks to the last commit) to disassociate
chardevs from the qdev devices on the devices going away. So doing it
in the virtio-console driver is not necessary.
Since that was the only thing being done in the qdev exit method, drop
it entirely.
Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
hw/virtio-console.c | 10 ----------
1 files changed, 0 insertions(+), 10 deletions(-)
diff --git a/hw/virtio-console.c b/hw/virtio-console.c
index 73d866a..9275fd9 100644
--- a/hw/virtio-console.c
+++ b/hw/virtio-console.c
@@ -127,16 +127,6 @@ static int virtconsole_initfn(VirtIOSerialPort *port)
static int virtconsole_exitfn(VirtIOSerialPort *port)
{
- VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
-
- if (vcon->chr) {
- /*
- * Instead of closing the chardev, free it so it can be used
- * for other purposes.
- */
- qemu_chr_add_handlers(vcon->chr, NULL, NULL, NULL, NULL);
- }
-
return 0;
}
--
1.7.7.5
^ permalink raw reply related [flat|nested] 4+ messages in thread