qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 1/3] char: clean up remaining chardevs when leaving


From: marcandre . lureau
Subject: [Qemu-devel] [PATCH 1/3] char: clean up remaining chardevs when leaving
Date: Thu, 16 Jun 2016 13:17:13 +0200

From: Marc-André Lureau <address@hidden>

This helps to remove various chardev resources leaks when leaving qemu.

Signed-off-by: Marc-André Lureau <address@hidden>
---
 include/sysemu/char.h | 7 +++++++
 qemu-char.c           | 9 +++++++++
 vl.c                  | 1 +
 3 files changed, 17 insertions(+)

diff --git a/include/sysemu/char.h b/include/sysemu/char.h
index 372a6fd..8954be1 100644
--- a/include/sysemu/char.h
+++ b/include/sysemu/char.h
@@ -382,6 +382,13 @@ void qemu_chr_be_write_impl(CharDriverState *s, uint8_t 
*buf, int len);
  */
 void qemu_chr_be_event(CharDriverState *s, int event);
 
+/**
+ * @qemu_chr_cleanup:
+ *
+ * Delete all chardevs (when leaving qemu)
+ */
+void qemu_chr_cleanup(void);
+
 void qemu_chr_add_handlers(CharDriverState *s,
                            IOCanReadHandler *fd_can_read,
                            IOReadHandler *fd_read,
diff --git a/qemu-char.c b/qemu-char.c
index b13ecbb..bf098a1 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -4088,6 +4088,15 @@ CharDriverState *qemu_chr_find(const char *name)
     return NULL;
 }
 
+void qemu_chr_cleanup(void)
+{
+    CharDriverState *chr;
+
+    QTAILQ_FOREACH(chr, &chardevs, next) {
+        qemu_chr_delete(chr);
+    }
+}
+
 QemuOptsList qemu_chardev_opts = {
     .name = "chardev",
     .implied_opt_name = "backend",
diff --git a/vl.c b/vl.c
index 45eff56..ac92b1d 100644
--- a/vl.c
+++ b/vl.c
@@ -4628,6 +4628,7 @@ int main(int argc, char **argv, char **envp)
 #ifdef CONFIG_TPM
     tpm_cleanup();
 #endif
+    qemu_chr_cleanup();
 
     return 0;
 }
-- 
2.7.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]