From patchwork Fri Jun 26 14:49:07 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Patchwork-Id: 488859 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 280B9140273 for ; Sat, 27 Jun 2015 00:58:00 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=B95E8cjW; dkim-atps=neutral Received: from localhost ([::1]:60475 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8V4o-0000EC-Cb for incoming@patchwork.ozlabs.org; Fri, 26 Jun 2015 10:57:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56790) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8Ux7-0003kO-60 for qemu-devel@nongnu.org; Fri, 26 Jun 2015 10:50:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z8Ux5-0001P2-O1 for qemu-devel@nongnu.org; Fri, 26 Jun 2015 10:50:00 -0400 Received: from mail-qg0-x22b.google.com ([2607:f8b0:400d:c04::22b]:35491) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8Ux5-0001Ok-D9 for qemu-devel@nongnu.org; Fri, 26 Jun 2015 10:49:59 -0400 Received: by qgeu36 with SMTP id u36so35933984qge.2 for ; Fri, 26 Jun 2015 07:49:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=CD/HhTOu1U+ahout0SC3pSQLpjA+DfVLNg4rGfsKDqM=; b=B95E8cjWX+PAVi2U7spqcJ1p5KEtjiWOK1qskeCGOPNlEBs3No/8bluSls9anL5tVP 2I+TFg74WddvMtErPnj6rxtgAys7BzOPIOpX11y/2oyG9pmqe3wnsCFPKzfsAicVgxRM EBA2ViSNEvxz/FE1J+0Ehv/YM+oYgyd5ZBJ9iQDOGxUk5D2+Kkas341Lkam+iVgUEBmQ BTdPwyWdnIsiGbZ2SLMFXhr2+0ZoJZhWT1YcUPiWgdMLrvvYxDbWr+5vR/c7Em/LaWqm LOzV+SsRpFn23MkRaDjF0juUYm1EdkRZaYuGZVIM/l1RX9Eo6ToTdMsqlM6DguLVdh1r ZejQ== X-Received: by 10.140.99.65 with SMTP id p59mr2752700qge.46.1435330199005; Fri, 26 Jun 2015 07:49:59 -0700 (PDT) Received: from localhost (bne75-h02-31-39-163-232.dsl.sta.abo.bbox.fr. [31.39.163.232]) by mx.google.com with ESMTPSA id h133sm6899645qhc.46.2015.06.26.07.49.57 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 26 Jun 2015 07:49:58 -0700 (PDT) From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= To: qemu-devel@nongnu.org Date: Fri, 26 Jun 2015 16:49:07 +0200 Message-Id: <1435330185-23248-2-git-send-email-marcandre.lureau@gmail.com> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1435330185-23248-1-git-send-email-marcandre.lureau@gmail.com> References: <1435330185-23248-1-git-send-email-marcandre.lureau@gmail.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c04::22b Cc: cam@cs.ualberta.ca, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , stefanha@redhat.com Subject: [Qemu-devel] [PATCH 01/39] char: add qemu_chr_free() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- 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 617e034..16040e9 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -3837,9 +3837,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); } @@ -3849,6 +3848,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;