Hi
----- Original Message -----
From: Corey Minyard <address@hidden>
Add an unrealize function to free the timer allocated in the
realize function.
Signed-off-by: Corey Minyard <address@hidden>
Cc: Marc-André Lureau <address@hidden>
---
hw/ipmi/ipmi_bmc_sim.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
index dc9c14c..c83adf8 100644
--- a/hw/ipmi/ipmi_bmc_sim.c
+++ b/hw/ipmi/ipmi_bmc_sim.c
@@ -1786,12 +1786,22 @@ static void ipmi_sim_realize(DeviceState *dev, Error
**errp)
vmstate_register(NULL, 0, &vmstate_ipmi_sim, ibs);
}
+static void ipmi_sim_unrealize(DeviceState *dev, Error **errp)
+{
+ IPMIBmc *b = IPMI_BMC(dev);
+ IPMIBmcSim *ibs = IPMI_BMC_SIMULATOR(b);
+
+ timer_del(ibs->timer);
+ timer_free(ibs->timer);
+}
+
I think we may want to unrealize more here:
+static void ipmi_sim_unrealize(DeviceState *dev, Error **errp)
+{
+ IPMIBmcSim *ibs = IPMI_BMC_SIMULATOR(dev);
+ IPMIRcvBufEntry *msg, *tmp;
+
+ vmstate_unregister(NULL, &vmstate_ipmi_sim, ibs);
+ timer_del(ibs->timer);
+ timer_free(ibs->timer);
+ QTAILQ_FOREACH_SAFE(msg, &ibs->rcvbufs, entry, tmp) {
+ QTAILQ_REMOVE(&ibs->rcvbufs, msg, entry);
+ g_free(msg);
+ }
+ qemu_mutex_destroy(&ibs->lock);