aboutsummaryrefslogtreecommitdiffstats
path: root/hw/baum.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@gnu.org>2010-03-28 20:39:42 +0200
committerAurelien Jarno <aurelien@aurel32.net>2010-04-08 21:17:10 +0200
commit2c7faf318df7fe83cf9c263b32921b6873b66645 (patch)
treeb132b28cd9d4a2cf644475ef837f67667df8b9b0 /hw/baum.c
parent8e31209eea0de25e35467e05b2541c4b064f815a (diff)
baum: add destroy hook
Add a destroy hook for the baum character device, to properly close the BrlAPI connection. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'hw/baum.c')
-rw-r--r--hw/baum.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/hw/baum.c b/hw/baum.c
index 18633f484..21326ae82 100644
--- a/hw/baum.c
+++ b/hw/baum.c
@@ -564,6 +564,18 @@ static void baum_chr_read(void *opaque)
}
}
+static void baum_close(struct CharDriverState *chr)
+{
+ BaumDriverState *baum = chr->opaque;
+
+ qemu_free_timer(baum->cellCount_timer);
+ if (baum->brlapi) {
+ brlapi__closeConnection(baum->brlapi);
+ qemu_free(baum->brlapi);
+ }
+ qemu_free(baum);
+}
+
CharDriverState *chr_baum_init(QemuOpts *opts)
{
BaumDriverState *baum;
@@ -581,6 +593,7 @@ CharDriverState *chr_baum_init(QemuOpts *opts)
chr->chr_write = baum_write;
chr->chr_send_event = baum_send_event;
chr->chr_accept_input = baum_accept_input;
+ chr->chr_close = baum_close;
handle = qemu_mallocz(brlapi_getHandleSize());
baum->brlapi = handle;