From: marcandre.lureau@redhat.com
To: qemu-devel@nongnu.org
Cc: drjones@redhat.com, claudio.fontana@huawei.com,
stefanha@redhat.com,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
pbonzini@redhat.com, cam@cs.ualberta.ca
Subject: [Qemu-devel] [PATCH v5 01/48] char: add qemu_chr_free()
Date: Fri, 2 Oct 2015 21:09:04 +0200 [thread overview]
Message-ID: <1443812991-17356-2-git-send-email-marcandre.lureau@redhat.com> (raw)
In-Reply-To: <1443812991-17356-1-git-send-email-marcandre.lureau@redhat.com>
From: Marc-André Lureau <marcandre.lureau@redhat.com>
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 <marcandre.lureau@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Claudio Fontana <claudio.fontana@huawei.com>
---
include/sysemu/char.h | 10 +++++++++-
qemu-char.c | 9 +++++++--
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/include/sysemu/char.h b/include/sysemu/char.h
index 832b7fe..5fd0a09 100644
--- a/include/sysemu/char.h
+++ b/include/sysemu/char.h
@@ -128,11 +128,19 @@ 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:
*
* Ask the backend to override its normal echo setting. This only really
diff --git a/qemu-char.c b/qemu-char.c
index 653ea10..e6ed85c 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -3840,9 +3840,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);
}
@@ -3852,6 +3851,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;
--
2.4.3
next prev parent reply other threads:[~2015-10-02 19:10 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-02 19:09 [Qemu-devel] [PATCH v5 00/48] ivshmem improvements marcandre.lureau
2015-10-02 19:09 ` marcandre.lureau [this message]
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 02/48] msix: add VMSTATE_MSIX_TEST marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 03/48] ivhsmem: read do not accept more than sizeof(long) marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 04/48] ivshmem: fix number of bytes to push to fifo marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 05/48] ivshmem: factor out the incoming fifo handling marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 06/48] ivshmem: remove unnecessary dup() marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 07/48] ivshmem: remove superflous ivshmem_attr field marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 08/48] ivshmem: remove useless doorbell field marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 09/48] ivshmem: more qdev conversion marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 10/48] ivshmem: remove last exit(1) marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 11/48] ivshmem: limit maximum number of peers to G_MAXUINT16 marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 12/48] ivshmem: simplify around increase_dynamic_storage() marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 13/48] ivshmem: allocate eventfds in resize_peers() marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 14/48] ivshmem: remove useless ivshmem_update_irq() val argument marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 15/48] ivshmem: initialize max_peer to -1 marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 16/48] ivshmem: remove max_peer field marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 17/48] ivshmem: improve debug messages marcandre.lureau
2015-10-05 10:28 ` Claudio Fontana
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 18/48] ivshmem: improve error handling marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 19/48] ivshmem: print error on invalid peer id marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 20/48] ivshmem: simplify a bit the code marcandre.lureau
2015-10-05 8:03 ` Claudio Fontana
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 21/48] ivshmem: use common return marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 22/48] ivshmem: use common is_power_of_2() marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 23/48] ivshmem: migrate with VMStateDescription marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 24/48] ivshmem: shmfd can be 0 marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 25/48] ivshmem: check shm isn't already initialized marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 26/48] ivshmem: add device description marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 27/48] ivshmem: fix pci_ivshmem_exit() marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 28/48] ivshmem: replace 'guest' for 'peer' appropriately marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 29/48] ivshmem: error on too many eventfd received marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 30/48] ivshmem: reset mask on device reset marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 31/48] contrib: add ivshmem client and server marcandre.lureau
2015-10-05 9:40 ` Claudio Fontana
2015-10-05 11:53 ` Marc-André Lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 32/48] ivshmem-client: check the number of vectors marcandre.lureau
2015-10-05 10:33 ` Claudio Fontana
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 33/48] ivshmem-server: use a uint16 for client ID marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 34/48] ivshmem-server: fix hugetlbfs support marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 35/48] docs: update ivshmem device spec marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 36/48] ivshmem: add check on protocol version in QEMU marcandre.lureau
2015-10-05 10:39 ` Claudio Fontana
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 37/48] contrib: remove unnecessary strdup() marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 38/48] msix: implement pba write (but read-only) marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 39/48] qtest: add qtest_add_abrt_handler() marcandre.lureau
2015-10-05 11:01 ` Claudio Fontana
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 40/48] glib-compat: add 2.38/2.40/2.46 asserts marcandre.lureau
2015-10-05 10:56 ` Claudio Fontana
2015-10-05 11:14 ` Marc-André Lureau
2015-10-05 11:44 ` Paolo Bonzini
2015-10-05 13:35 ` Marc-André Lureau
2015-10-05 14:41 ` Claudio Fontana
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 41/48] tests: add ivshmem qtest marcandre.lureau
2015-10-05 14:42 ` Claudio Fontana
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 42/48] ivshmem: do not keep shm_fd open marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 43/48] ivshmem: use qemu_strtosz() marcandre.lureau
2015-10-05 10:41 ` Claudio Fontana
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 44/48] ivshmem: add hostmem backend marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 45/48] ivshmem: remove EventfdEntry.vector marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 46/48] ivshmem: rename MSI eventfd_table marcandre.lureau
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 47/48] ivshmem: use kvm irqfd for msi notifications marcandre.lureau
[not found] ` <CAJ+F1CLi4OzLkpfYQPhfdfuQ-XPhxub-6b191Hj9bGWiMLA3Wg@mail.gmail.com>
2015-10-06 14:42 ` Paolo Bonzini
2015-10-02 19:09 ` [Qemu-devel] [PATCH v5 48/48] ivshmem: use little-endian int64_t for the protocol marcandre.lureau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1443812991-17356-2-git-send-email-marcandre.lureau@redhat.com \
--to=marcandre.lureau@redhat.com \
--cc=cam@cs.ualberta.ca \
--cc=claudio.fontana@huawei.com \
--cc=drjones@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).