[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/38] serial: reclaim memory in instance_finalize i
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 06/38] serial: reclaim memory in instance_finalize instead of exit |
Date: |
Tue, 3 Sep 2013 14:32:57 +0200 |
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/char/serial-pci.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c
index aec6705..6dd34d3 100644
--- a/hw/char/serial-pci.c
+++ b/hw/char/serial-pci.c
@@ -131,6 +131,14 @@ static void serial_pci_exit(PCIDevice *dev)
SerialState *s = &pci->state;
serial_exit_core(s);
+}
+
+static void serial_pci_instance_finalize(Object *obj)
+{
+ PCIDevice *dev = PCI_DEVICE(obj);
+ PCISerialState *pci = DO_UPCAST(PCISerialState, dev, dev);
+ SerialState *s = &pci->state;
+
memory_region_destroy(&s->io);
}
@@ -143,9 +151,22 @@ static void multi_serial_pci_exit(PCIDevice *dev)
for (i = 0; i < pci->ports; i++) {
s = pci->state + i;
serial_exit_core(s);
+ }
+}
+
+static void multi_serial_pci_instance_finalize(Object *obj)
+{
+ PCIDevice *dev = PCI_DEVICE(obj);
+ PCIMultiSerialState *pci = DO_UPCAST(PCIMultiSerialState, dev, dev);
+ SerialState *s;
+ int i;
+
+ for (i = 0; i < pci->ports; i++) {
+ s = pci->state + i;
memory_region_destroy(&s->io);
g_free(pci->name[i]);
}
+
memory_region_destroy(&pci->iobar);
qemu_free_irqs(pci->irqs);
}
@@ -243,6 +264,7 @@ static const TypeInfo serial_pci_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(PCISerialState),
.class_init = serial_pci_class_initfn,
+ .instance_finalize = serial_pci_instance_finalize,
};
static const TypeInfo multi_2x_serial_pci_info = {
@@ -250,6 +272,7 @@ static const TypeInfo multi_2x_serial_pci_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(PCIMultiSerialState),
.class_init = multi_2x_serial_pci_class_initfn,
+ .instance_finalize = multi_serial_pci_instance_finalize,
};
static const TypeInfo multi_4x_serial_pci_info = {
@@ -257,6 +280,7 @@ static const TypeInfo multi_4x_serial_pci_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(PCIMultiSerialState),
.class_init = multi_4x_serial_pci_class_initfn,
+ .instance_finalize = multi_serial_pci_instance_finalize,
};
static void serial_pci_register_types(void)
--
1.8.3.1
- Re: [Qemu-devel] [PATCH 01/38] qdev: document assumption that unrealize is followed by finalize, (continued)
- [Qemu-devel] [PATCH 03/38] ac97: use instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 04/38] es1370: use instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 05/38] hda: reclaim memory in instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 07/38] tpci200: use instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 06/38] serial: reclaim memory in instance_finalize instead of exit,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 08/38] pci-assign: reclaim memory in instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 09/38] ahci: reclaim memory in instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 10/38] msix: split msix_free from msix_uninit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 11/38] cmd646: use instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 12/38] ide/piix: use instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 13/38] ide/via: use instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 14/38] ivshmem: reclaim memory in instance_finalize instead of exit, Paolo Bonzini, 2013/09/03
- [Qemu-devel] [PATCH 15/38] pci-testdev: use instance_finalize instead of exit, Paolo Bonzini, 2013/09/03