]> Git Repo - qemu.git/commitdiff
char: add qemu_chr_free()
authorMarc-André Lureau <[email protected]>
Mon, 22 Jun 2015 16:20:18 +0000 (18:20 +0200)
committerMarc-André Lureau <[email protected]>
Sat, 24 Oct 2015 16:02:48 +0000 (18:02 +0200)
If a chardev is allowed to be created outside of QMP, then it must be
also possible to free it. This is useful for ivshmem that creates
chardev anonymously and must be able to free them.

Signed-off-by: Marc-André Lureau <[email protected]>
Acked-by: Paolo Bonzini <[email protected]>
Reviewed-by: Claudio Fontana <[email protected]>
include/sysemu/char.h
qemu-char.c

index edf76693d9ee00b8fca4549bcb11bbda4679c9dd..aff193f08033743b9e89f1d71f524e9340b7b433 100644 (file)
@@ -128,10 +128,18 @@ CharDriverState *qemu_chr_new(const char *label, const char *filename,
 /**
  * @qemu_chr_delete:
  *
- * Destroy a character backend.
+ * Destroy a character backend and remove it from the list of
+ * identified character backends.
  */
 void qemu_chr_delete(CharDriverState *chr);
 
+/**
+ * @qemu_chr_free:
+ *
+ * Destroy a character backend.
+ */
+void qemu_chr_free(CharDriverState *chr);
+
 /**
  * @qemu_chr_fe_set_echo:
  *
index 908e7124eb3278a079fc1c2d7b164e44182e3fc0..c4eb4eea310ccef495daa73d791b35a80b74516b 100644 (file)
@@ -3876,9 +3876,8 @@ void qemu_chr_fe_release(CharDriverState *s)
     s->avail_connections++;
 }
 
-void qemu_chr_delete(CharDriverState *chr)
+void qemu_chr_free(CharDriverState *chr)
 {
-    QTAILQ_REMOVE(&chardevs, chr, next);
     if (chr->chr_close) {
         chr->chr_close(chr);
     }
@@ -3888,6 +3887,12 @@ void qemu_chr_delete(CharDriverState *chr)
     g_free(chr);
 }
 
+void qemu_chr_delete(CharDriverState *chr)
+{
+    QTAILQ_REMOVE(&chardevs, chr, next);
+    qemu_chr_free(chr);
+}
+
 ChardevInfoList *qmp_query_chardev(Error **errp)
 {
     ChardevInfoList *chr_list = NULL;
This page took 0.035958 seconds and 4 git commands to generate.