From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204108; cv=none; d=zohomail.com; s=zohoarc; b=ToZksMIYFgEKGZ8WTgnrSzoFLmjSxcjHp84SglSeEbN7789KU6fgZX/eVCicNyAE0gcCDgQvoLlN95PApTIPrISmomyW7O0yB4iNRluV5VmydgXKI8/7jHhLFzMwmBfgfl13vAGj0lF+9M3D9bNcg01lx+FxSs79scSIZIahdMk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204108; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=KcUhZsrL+ski9bi9B4iBEMulBP+XCAux3g/xrg6Tyww=; b=eCw/INtWYUqBOReMkRPLAB6snyHgBmW1A4PiRo++euXOgnkGBFmWXvL9i5BjQHPIUgtadrYZA9vgyhe/xkAHY7BWNffBbla45a+7AWzA609IwT27ANtQhsUegTo9TI93AgU5NSDC8FnVS5etMSz7VDc7B81xv0yF0ktp+7v8PQk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204108493253.57229216143025; Thu, 12 Nov 2020 10:01:48 -0800 (PST) Received: from localhost ([::1]:50828 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdGuo-0002qV-Mf for importer@patchew.org; Thu, 12 Nov 2020 13:01:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37462) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGsb-0000uV-50 for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:29 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:28362) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsX-0000fo-Sm for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:28 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-390-kztVKnCKN-CZIOl88b_M8Q-1; Thu, 12 Nov 2020 12:59:22 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2BAC3802ED7 for ; Thu, 12 Nov 2020 17:59:21 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7B3AE1002C1B; Thu, 12 Nov 2020 17:59:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203963; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KcUhZsrL+ski9bi9B4iBEMulBP+XCAux3g/xrg6Tyww=; b=OP2d23t3R7XBZdjpzTxCB+WW4ASXV3dQYsAtY/rMkX4ONrkNw9ptwhSsjPpQVWEQh93HZM PUwYl7+rZCgeFrLZRfM2fqup0FjYbGI+8Jx0CITXmfl4y48BIUOkPqA9Hk2E40w/IaSREb y9vOwe5BTlBpi8FFFZ7OVx8nspLZNMA= X-MC-Unique: kztVKnCKN-CZIOl88b_M8Q-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 01/13] char: Factor out qemu_chr_print_types() Date: Thu, 12 Nov 2020 18:58:53 +0100 Message-Id: <20201112175905.404472-2-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 00:52:29 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We'll want to call the same from a non-QemuOpts code path. Signed-off-by: Kevin Wolf Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Markus Armbruster --- include/chardev/char.h | 1 + chardev/char.c | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index db42f0a8c6..3b91645081 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -212,6 +212,7 @@ void qemu_chr_be_update_read_handlers(Chardev *s, */ void qemu_chr_be_event(Chardev *s, QEMUChrEvent event); =20 +void qemu_chr_print_types(void); int qemu_chr_add_client(Chardev *s, int fd); Chardev *qemu_chr_find(const char *name); =20 diff --git a/chardev/char.c b/chardev/char.c index f9e297185d..de39e2d79b 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -644,6 +644,15 @@ ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Er= ror **errp) return backend; } =20 +void qemu_chr_print_types(void) +{ + g_autoptr(GString) str =3D g_string_new(""); + + chardev_name_foreach(help_string_append, str); + + qemu_printf("Available chardev backend types: %s\n", str->str); +} + Chardev *qemu_chr_new_from_opts(QemuOpts *opts, GMainContext *context, Error **errp) { @@ -655,12 +664,7 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts, GMainC= ontext *context, char *bid =3D NULL; =20 if (name && is_help_option(name)) { - GString *str =3D g_string_new(""); - - chardev_name_foreach(help_string_append, str); - - qemu_printf("Available chardev backend types: %s\n", str->str); - g_string_free(str, true); + qemu_chr_print_types(); return NULL; } =20 --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204113; cv=none; d=zohomail.com; s=zohoarc; b=CRiZsfNXuIlBZzJseJHBldtUNWshFqBn9YYFtmD66EYQF67k5DDAGSBaBwf8qNnIf09RlGxqATncuTJlmFD2goFGOfGj6N6gHMv9falYWK316SKPNpY01hIKHCUS2nXKCiT+gXrlC94sQrEHxwOOYomWhiuQrESS0gZ5k9rxOIc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204113; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=brrwAzckZKubYRKEL1qFF6eeSMZpOl1mirWTlSRGFgk=; b=MWrHaXgWnaAnVzon8FY8HKl0eGvmQXkse+GQyf2oOMYgjFEwxpZ8orgVb1PCElT7bCaHty/n7L9cvCyhivmamcmw5hxVhvYnvy4HDW0NG7L6eTkzqpr0d6bMHFkFjElko65LZ+bntSyuIF6Kvw4OMJlVt48ZjfI8ewYkbV5C4+0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 160520411330756.2153537168773; Thu, 12 Nov 2020 10:01:53 -0800 (PST) Received: from localhost ([::1]:51258 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdGut-00031J-Uv for importer@patchew.org; Thu, 12 Nov 2020 13:01:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37516) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGsc-0000x0-JE for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:45289) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsY-0000h3-HF for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:30 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-79-LZXVvQMOMt-knHZ4etNm8w-1; Thu, 12 Nov 2020 12:59:23 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F059518B9EB8 for ; Thu, 12 Nov 2020 17:59:22 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 76F3D1002C1B; Thu, 12 Nov 2020 17:59:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203965; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=brrwAzckZKubYRKEL1qFF6eeSMZpOl1mirWTlSRGFgk=; b=I+p+SuVWuLjtrbKwNoYRnSjNZA8fJjfDaIW9Zmm5EBIikUFjxGj6Ap56Gocr0HI/5XVm18 meTagiiHBRErYbY0MWiJGo6OQ/enM/QKEpynaYJfLRjAKWPzeM/HlsYSxNXljMUn2Z3qQ7 KPGZmwztQzFHWnkho1xAy//uTg0XSjY= X-MC-Unique: LZXVvQMOMt-knHZ4etNm8w-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 02/13] char: Add ChardevOptions and qemu_chr_new_cli() Date: Thu, 12 Nov 2020 18:58:54 +0100 Message-Id: <20201112175905.404472-3-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 08:00:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This provides an interface to create a chardev from a QAPI representation of the command line. At this point, the only difference between it and QMP chardev-add is that it allows 'backend' to be flattened and returns a Chardev pointer. We'll add support for mux=3Don and more compatibility glue to support legacy command line syntax later. Signed-off-by: Kevin Wolf --- qapi/char.json | 15 +++++++++++++++ include/chardev/char.h | 9 +++++++++ chardev/char.c | 24 ++++++++++++++++++------ 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/qapi/char.json b/qapi/char.json index 43486d1daa..14ee06a52d 100644 --- a/qapi/char.json +++ b/qapi/char.json @@ -435,6 +435,21 @@ { 'struct' : 'ChardevReturn', 'data': { '*pty': 'str' } } =20 +## +# @ChardevOptions: +# +# Command line options for creating a character device backend +# +# @id: the chardev's ID, must be unique +# @backend: backend type and parameters +# +# Since: 6.0 +## +{ 'struct': 'ChardevOptions', + 'data': { 'id': 'str', + 'backend': 'ChardevBackend' }, + 'aliases': [ { 'source': ['backend'] } ] } + ## # @chardev-add: # diff --git a/include/chardev/char.h b/include/chardev/char.h index 3b91645081..54fa2ed8e2 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -85,6 +85,15 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts, GMainContext *context, Error **errp); =20 +/** + * qemu_chr_new_cli: + * @options: Character device creation options as defined in QAPI + * + * Returns: on success: a new character backend + * otherwise: NULL; @errp specifies the error + */ +Chardev *qemu_chr_new_cli(ChardevOptions *options, Error **errp); + /** * qemu_chr_parse_common: * @opts: the options that still need parsing diff --git a/chardev/char.c b/chardev/char.c index de39e2d79b..9f00e475d4 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -1037,20 +1037,27 @@ Chardev *qemu_chardev_new(const char *id, const cha= r *typename, return chardev_new(id, typename, backend, gcontext, errp); } =20 -ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend, - Error **errp) +static Chardev *chardev_new_qapi(const char *id, ChardevBackend *backend, + Error **errp) { const ChardevClass *cc; - ChardevReturn *ret; - Chardev *chr; =20 cc =3D char_get_class(ChardevBackendKind_str(backend->type), errp); if (!cc) { return NULL; } =20 - chr =3D chardev_new(id, object_class_get_name(OBJECT_CLASS(cc)), - backend, NULL, errp); + return chardev_new(id, object_class_get_name(OBJECT_CLASS(cc)), + backend, NULL, errp); +} + +ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend, + Error **errp) +{ + ChardevReturn *ret; + Chardev *chr; + + chr =3D chardev_new_qapi(id, backend, errp); if (!chr) { return NULL; } @@ -1064,6 +1071,11 @@ ChardevReturn *qmp_chardev_add(const char *id, Chard= evBackend *backend, return ret; } =20 +Chardev *qemu_chr_new_cli(ChardevOptions *options, Error **errp) +{ + return chardev_new_qapi(options->id, options->backend, errp); +} + ChardevReturn *qmp_chardev_change(const char *id, ChardevBackend *backend, Error **errp) { --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204111; cv=none; d=zohomail.com; s=zohoarc; b=isrloPToDdiTA90dr+myWQa87oLFCTzb58YL8CV4/CpmBGYq4C1vSbVwsB7hM9/0+UsNT4LnNDragewTn9SvAj1H5HIpBkbwocb9jBGD2RuQo/udIfRi8Nra/LxYXJudMkfZb+5KcKbJD6ZIklULPlwUhm8GAJTjWOBfk8LWWVg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204111; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=J7O4/C63N+lM0owXek/SW3yejcRRJjOniSEc/vUtMRQ=; b=QeWxTkJzFO+T1Vnu6MMoIJCWeaY71uHZ36MQXfvhlw787YmeFvDS3AFywcv49tLwrJksa9PaqBZcj+zhS8/cc0iHhjpdfdVJFRxnvyhVHyMz2RXavke9QqBxjm4Bmke7fJy894dARD0pG/P/wfop29edBkivyCwouqIvVxpUqNk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 160520411122274.18728178121557; Thu, 12 Nov 2020 10:01:51 -0800 (PST) Received: from localhost ([::1]:51124 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdGur-0002xr-OL for importer@patchew.org; Thu, 12 Nov 2020 13:01:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37512) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGsc-0000w4-1S for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:37155) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsa-0000hC-7c for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:29 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-10-9iK_nbz4O4mgYavr501b5g-1; Thu, 12 Nov 2020 12:59:25 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C84FB108597E for ; Thu, 12 Nov 2020 17:59:24 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4FA591002C25; Thu, 12 Nov 2020 17:59:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203967; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=J7O4/C63N+lM0owXek/SW3yejcRRJjOniSEc/vUtMRQ=; b=D9Rc0jTnHeQzvJJiIiGlzOtlx2LnHIcGm645GC/DhuDSflVDzx5vHowfVptCLIipmm55eA nvrjEC/VBhmlI0tEqUpswswhnOaxqFOJ3WsEA/ys7jHMUWBw/iRmNbicCOvPLrjYXswu8n XZcawRTSWtlDN62wtG0s//x6P6rJ/NA= X-MC-Unique: 9iK_nbz4O4mgYavr501b5g-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 03/13] char: Some QAPI aliases for CLI compatibility Date: Thu, 12 Nov 2020 18:58:55 +0100 Message-Id: <20201112175905.404472-4-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 00:52:29 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" For all chardev backend types where this is enough to achieve compatibility with the old QemuOpts based command line parser, add aliases to the QAPI schema. Signed-off-by: Kevin Wolf --- qapi/char.json | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/qapi/char.json b/qapi/char.json index 14ee06a52d..91c0dbfa1e 100644 --- a/qapi/char.json +++ b/qapi/char.json @@ -227,7 +227,8 @@ 'data': { '*in': 'str', 'out': 'str', '*append': 'bool' }, - 'base': 'ChardevCommon' } + 'base': 'ChardevCommon', + 'aliases': [ {'alias': 'path', 'source': ['out'] } ] } =20 ## # @ChardevHostdev: @@ -241,7 +242,8 @@ ## { 'struct': 'ChardevHostdev', 'data': { 'device': 'str' }, - 'base': 'ChardevCommon' } + 'base': 'ChardevCommon', + 'aliases': [ {'alias': 'path', 'source': ['device'] } ] } =20 ## # @ChardevSocket: @@ -342,7 +344,8 @@ { 'struct': 'ChardevSpiceChannel', 'data': { 'type': 'str' }, 'base': 'ChardevCommon', - 'if': 'defined(CONFIG_SPICE)' } + 'if': 'defined(CONFIG_SPICE)', + 'aliases': [ {'alias': 'name', 'source': ['type'] } ] } =20 ## # @ChardevSpicePort: @@ -356,7 +359,8 @@ { 'struct': 'ChardevSpicePort', 'data': { 'fqdn': 'str' }, 'base': 'ChardevCommon', - 'if': 'defined(CONFIG_SPICE)' } + 'if': 'defined(CONFIG_SPICE)', + 'aliases': [ {'alias': 'name', 'source': ['fqdn'] } ] } =20 ## # @ChardevVC: @@ -420,7 +424,8 @@ 'vc': 'ChardevVC', 'ringbuf': 'ChardevRingbuf', # next one is just for compatibility - 'memory': 'ChardevRingbuf' } } + 'memory': 'ChardevRingbuf' }, + 'aliases': [ { 'source': ['data'] } ] } =20 ## # @ChardevReturn: --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204278; cv=none; d=zohomail.com; s=zohoarc; b=ehpr6i7ZN6ghc5L5jjwkNYzECXU01evR7yntaCgGkAcy3uMsxkZG7zSxA34wv+WyJi+317OmDcIPxOfjHdKTpmCACX4R0kDCqePMjeuuJbK28yIFNQK313tqhU5KVxPt9SkzHHSr1IkyvQhs1fYzU+RyVSw7zlKhgQWHcAsVFgc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204278; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PwGmz9tmglOIJ2F0kmo9wDUc9dyIypq6pHdcqyM+wpA=; b=HEQbqcDtHG51yLq7j/+xspNg6LnRJrjfhnOwCDF3AQmMypEdwmihufFnPbEUUknnGID9rA4mWUmv7QSL2aLgdinpfLyi8ro+GJuB9+lPR9IhqH3vrPKrUSkuJ2HJqYMQ7Kewzh8TN289Md31IWFkomL/h4CCYhdLjsOkG3HOGNE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204278221773.7112196254318; Thu, 12 Nov 2020 10:04:38 -0800 (PST) Received: from localhost ([::1]:59582 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdGxY-0006Rt-Vk for importer@patchew.org; Thu, 12 Nov 2020 13:04:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37538) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGse-0000zw-39 for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:20260) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsc-0000id-5i for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:31 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-385-VU45RMZvMXGzeGCmloKV3Q-1; Thu, 12 Nov 2020 12:59:27 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9AEC080474A for ; Thu, 12 Nov 2020 17:59:26 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2059A1002C1B; Thu, 12 Nov 2020 17:59:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203969; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PwGmz9tmglOIJ2F0kmo9wDUc9dyIypq6pHdcqyM+wpA=; b=BE2bCKi4Iy8385wEN25gtrBX2ZAiDfXMBdCe0Bc0ykO7DgrjBVRXCIHFuxBDcvchtcN1Up doFFsGkYXdK2qm8gc5XLgJQh+QOC0Wbf5XKdsa3C8frK8/Yb09OLcW7SH2ITfCdncQIBUa pI8Lafj38ZJWftkNCkgEqhEFnCVYDdk= X-MC-Unique: VU45RMZvMXGzeGCmloKV3Q-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 04/13] char: Add qemu_chr_translate_legacy_options() Date: Thu, 12 Nov 2020 18:58:56 +0100 Message-Id: <20201112175905.404472-5-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 08:00:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This translates legacy command line options that can't be made compatible with QAPI just by using aliases from the traditional command line structure into the structure of ChardevOptions. As a first step, add support for backend name aliases if 'backend' is given instead of 'type'. Also add a todo comment for everything that is still incompatible between the QemuOpts based -chardev and chardev creation by going through a keyval parser, qemu_chr_translate_legacy_options() and qemu_chr_new_cli(). Signed-off-by: Kevin Wolf --- include/chardev/char.h | 13 +++++++++++++ chardev/char.c | 23 +++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/include/chardev/char.h b/include/chardev/char.h index 54fa2ed8e2..7795e17ca5 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -94,6 +94,19 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts, */ Chardev *qemu_chr_new_cli(ChardevOptions *options, Error **errp); =20 +/** + * qemu_chr_translate_legacy_options: + * @args: Character device creation options as returned by the keyval pars= er + * + * Change @args so that the legacy command line options in it are translat= ed + * and @args can be used as the input for a ChardevOptions visitor. + * + * If @args was not a valid legacy command line, translation may be partia= lly + * skipped and the visitor may return an error if @args was not already + * suitable for QAPI parsing. + */ +void qemu_chr_translate_legacy_options(QDict *args); + /** * qemu_chr_parse_common: * @opts: the options that still need parsing diff --git a/chardev/char.c b/chardev/char.c index 9f00e475d4..40c3f02ec9 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -32,6 +32,7 @@ #include "chardev/char.h" #include "qapi/error.h" #include "qapi/qapi-commands-char.h" +#include "qapi/qmp/qdict.h" #include "qapi/qmp/qerror.h" #include "sysemu/replay.h" #include "qemu/help_option.h" @@ -717,6 +718,28 @@ out: return chr; } =20 +void qemu_chr_translate_legacy_options(QDict *args) +{ + const char *name; + + /* "backend" instead of "type" enables legacy CLI compatibility */ + name =3D qdict_get_try_str(args, "backend"); + if (!name || qdict_haskey(args, "type")) { + return; + } + + name =3D chardev_alias_translate(name); + qdict_put_str(args, "type", name); + qdict_del(args, "backend"); + + /* + * TODO: + * All backend types: "mux" + * socket: "addr.type", "delay", "server", "wait", "fd" + * udp: defaults for "host"/"localaddr"/"localport" + */ +} + Chardev *qemu_chr_new_noreplay(const char *label, const char *filename, bool permit_mux_mon, GMainContext *context) { --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204353; cv=none; d=zohomail.com; s=zohoarc; b=avD5QjNCayPntcF0NvKENn9Q1D2qK697aNpRgxv+BgsWX7ve39hB42Pq6nVslZamB6gt0E2yR143/Sng1U2/f55HDnVldMa6qm6NY+fM+RQzdOskyRLQJ07WS6Tq9xjVLK4812zJPwZU4TGbKC4gCCGDnpNwh0yivlm/hUM7q6I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204353; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LFTDr825FMzPBU3tjZJr268wIpQ/iffr0DrtR876y14=; b=YOzbPjvxcV6kr0fKU4Hch8lmG+L/ChG4pixXFGLMVEJJKsfIqcCc9sbd3RVBVoafReZcSBV2flJjhGfRVZ/FXdWaDP3HlPB9Td4cyovfYZLq37pfqw50Nk+LgUTEXDRDMMWMy1lHM9SDdf6TINw8OBk3P6NNkVSVleIjWalwYTI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204353823241.74095113074316; Thu, 12 Nov 2020 10:05:53 -0800 (PST) Received: from localhost ([::1]:34670 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdGym-0007qp-Ik for importer@patchew.org; Thu, 12 Nov 2020 13:05:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37560) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGsf-00012j-NF for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:33 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:56707) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsd-0000iz-Of for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:33 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-109-Jpjv-h99N_y4LqsUvqIGww-1; Thu, 12 Nov 2020 12:59:29 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6FB6210199A8 for ; Thu, 12 Nov 2020 17:59:28 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id E781A1002C1B; Thu, 12 Nov 2020 17:59:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203971; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LFTDr825FMzPBU3tjZJr268wIpQ/iffr0DrtR876y14=; b=LfDTufrxpOhi5ZO21jkHMp16pIoNswSCVST2d8JCXnYi+y7KRkf4nnFTXEZO6OQEj2AJuw WdhIYfwgXP889DJMQ6K+IzyBViSzi2QYq6OJ/vis2oWe2PLUJM8dsSZP1S1yQ+CHOlHXI4 ifmvquqUvcm3pbqZ3S6HcX4t29FQdXk= X-MC-Unique: Jpjv-h99N_y4LqsUvqIGww-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 05/13] char-socket: Implement compat code for CLI QAPIfication Date: Thu, 12 Nov 2020 18:58:57 +0100 Message-Id: <20201112175905.404472-6-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 08:00:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Socket backends have a few differences between CLI and QMP. This adds QAPI aliases and a .translate_legacy_options() implementation that converts CLI inputs to a form that's usable for a QAPIfied --chardev. Signed-off-by: Kevin Wolf --- qapi/char.json | 3 ++- qapi/sockets.json | 6 ++++- include/chardev/char.h | 1 + chardev/char-socket.c | 53 ++++++++++++++++++++++++++++++++++++++++++ chardev/char.c | 10 +++++++- 5 files changed, 70 insertions(+), 3 deletions(-) diff --git a/qapi/char.json b/qapi/char.json index 91c0dbfa1e..1930e90e95 100644 --- a/qapi/char.json +++ b/qapi/char.json @@ -287,7 +287,8 @@ '*tn3270': 'bool', '*websocket': 'bool', '*reconnect': 'int' }, - 'base': 'ChardevCommon' } + 'base': 'ChardevCommon', + 'aliases': [ { 'source': ['addr'] } ] } =20 ## # @ChardevUdp: diff --git a/qapi/sockets.json b/qapi/sockets.json index 2e83452797..8c61787311 100644 --- a/qapi/sockets.json +++ b/qapi/sockets.json @@ -125,7 +125,11 @@ 'inet': 'InetSocketAddress', 'unix': 'UnixSocketAddress', 'vsock': 'VsockSocketAddress', - 'fd': 'String' } } + 'fd': 'String' }, + 'aliases': [ + {'source': ['data']}, + {'alias': 'fd', 'source': ['data', 'str']} + ]} =20 ## # @SocketAddressType: diff --git a/include/chardev/char.h b/include/chardev/char.h index 7795e17ca5..c0944f5828 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -275,6 +275,7 @@ struct ChardevClass { =20 bool internal; /* TODO: eventually use TYPE_USER_CREATABLE */ void (*parse)(QemuOpts *opts, ChardevBackend *backend, Error **errp); + void (*translate_legacy_options)(QDict *args); =20 void (*open)(Chardev *chr, ChardevBackend *backend, bool *be_opened, Error **errp); diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 213a4c8dd0..6bf916a3e4 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -34,6 +34,7 @@ #include "qapi/error.h" #include "qapi/clone-visitor.h" #include "qapi/qapi-visit-sockets.h" +#include "qapi/qmp/qdict.h" =20 #include "chardev/char-io.h" #include "qom/object.h" @@ -1484,6 +1485,57 @@ static void qemu_chr_parse_socket(QemuOpts *opts, Ch= ardevBackend *backend, sock->addr =3D addr; } =20 +static void qemu_chr_translate_socket(QDict *args) +{ + const char *path =3D qdict_get_try_str(args, "path"); + const char *host =3D qdict_get_try_str(args, "host"); + const char *fd =3D qdict_get_try_str(args, "fd"); + const char *delay =3D qdict_get_try_str(args, "delay"); + const char *server =3D qdict_get_try_str(args, "server"); + const char *wait =3D qdict_get_try_str(args, "wait"); + QDict *addr; + + if ((!!path + !!fd + !!host) !=3D 1) { + return; + } + + /* If "addr" is not present, automatically set the type */ + if (!qdict_haskey(args, "addr")) { + addr =3D qdict_new(); + qdict_put(args, "addr", addr); + + if (path) { + qdict_put_str(addr, "type", "unix"); + } else if (host) { + qdict_put_str(addr, "type", "inet"); + } else if (fd) { + qdict_put_str(addr, "type", "fd"); + } + } + + /* "delay" is translated into "nodelay" */ + if (delay && !qdict_haskey(args, "nodelay")) { + if (!strcmp(delay, "on")) { + qdict_put_str(args, "nodelay", "off"); + qdict_del(args, "delay"); + } else if (!strcmp(delay, "off")) { + qdict_put_str(args, "nodelay", "on"); + qdict_del(args, "delay"); + } + } + + /* "server=3Doff" is the CLI default */ + if (!server) { + server =3D "off"; + qdict_put_str(args, "server", server); + } + + /* "wait=3Don" is the default if "server=3Don" */ + if (!wait && !strcmp(server, "on")) { + qdict_put_str(args, "wait", "on"); + } +} + static void char_socket_get_addr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) @@ -1506,6 +1558,7 @@ static void char_socket_class_init(ObjectClass *oc, v= oid *data) ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 cc->parse =3D qemu_chr_parse_socket; + cc->translate_legacy_options =3D qemu_chr_translate_socket; cc->open =3D qmp_chardev_open_socket; cc->chr_wait_connected =3D tcp_chr_wait_connected; cc->chr_write =3D tcp_chr_write; diff --git a/chardev/char.c b/chardev/char.c index 40c3f02ec9..91b44e53b6 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -720,6 +720,7 @@ out: =20 void qemu_chr_translate_legacy_options(QDict *args) { + const ChardevClass *cc; const char *name; =20 /* "backend" instead of "type" enables legacy CLI compatibility */ @@ -730,12 +731,19 @@ void qemu_chr_translate_legacy_options(QDict *args) =20 name =3D chardev_alias_translate(name); qdict_put_str(args, "type", name); + + cc =3D char_get_class(name, NULL); + if (cc !=3D NULL && cc->translate_legacy_options) { + QDict *backend_data =3D qdict_get_qdict(args, "data") ?: args; + cc->translate_legacy_options(backend_data); + } + + /* name may refer to a QDict entry, so delete it only now */ qdict_del(args, "backend"); =20 /* * TODO: * All backend types: "mux" - * socket: "addr.type", "delay", "server", "wait", "fd" * udp: defaults for "host"/"localaddr"/"localport" */ } --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204275; cv=none; d=zohomail.com; s=zohoarc; b=cLfsMMSP7tfu9uDxRTMMiHUiD2vW6GGBKMlmo95bzZHyw9V7E4M3xSbojFulHtnug+XaJfmdUqMsdoFtn2bYfa6S+QewiwfU14ycmmRdCKWdGk84sNeByS9XPaOjmbBi2gplInNxzWe617VK4vAZO/oxSgC/+Pu8XEOdromRHhI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204275; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XfBtdCrHrY0GE11uvQp4B1YBBuunGOE6QdtyUEXq38k=; b=jYxJ34OgFyfwKPMTA+EKvzXkrxuX4gae/9TqWAgAx8XJ7+jFC0oF6Sbv9j6TGavkNSJ2Q3U6D6hal/AaS85oWb/q1AR6ZVS2ZVW4fMxeYaBGvOaWJPNYkCASjN8zMUf1jt90Nvw6o1ucXCXeuqSSq7zOnpEVMkEnciXa1M7q/j8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16052042754078.639855518373793; Thu, 12 Nov 2020 10:04:35 -0800 (PST) Received: from localhost ([::1]:59296 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdGxW-0006KZ-2M for importer@patchew.org; Thu, 12 Nov 2020 13:04:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37572) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGsh-00016d-TA for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:49835) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsg-0000k7-4k for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:35 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-358--D5bhXLJPvOrGr-otlQhmg-1; Thu, 12 Nov 2020 12:59:31 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6B9ACAF061 for ; Thu, 12 Nov 2020 17:59:30 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id BC0BE1002C1B; Thu, 12 Nov 2020 17:59:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203973; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XfBtdCrHrY0GE11uvQp4B1YBBuunGOE6QdtyUEXq38k=; b=JrusxmJUZL4wizIwQE5irNQImrWjmBgx0/BsGE1+wpuab7lnP3Lkj+ZeVlYO7Gt7XSLW5U r8N+bKfqeadxDD340eb8gcaSOsB8uN90sRu/Hx8/ynhKQsCB57theN2mnB+iOlFqEWR6iR kHZiFBh7LjldJPbfE4d5Ru0LKyH9g84= X-MC-Unique: -D5bhXLJPvOrGr-otlQhmg-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 06/13] char-udp: Implement compat code for CLI QAPIfication Date: Thu, 12 Nov 2020 18:58:58 +0100 Message-Id: <20201112175905.404472-7-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 00:52:29 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" UDP backends have a few differences between CLI and QMP. This adds QAPI aliases and a .translate_legacy_options() implementation that converts CLI inputs to a form that's usable for a QAPIfied --chardev. Signed-off-by: Kevin Wolf --- qapi/char.json | 7 ++++++- chardev/char-udp.c | 33 +++++++++++++++++++++++++++++++++ chardev/char.c | 1 - 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/qapi/char.json b/qapi/char.json index 1930e90e95..e1f9347044 100644 --- a/qapi/char.json +++ b/qapi/char.json @@ -303,7 +303,12 @@ { 'struct': 'ChardevUdp', 'data': { 'remote': 'SocketAddressLegacy', '*local': 'SocketAddressLegacy' }, - 'base': 'ChardevCommon' } + 'base': 'ChardevCommon', + 'aliases': [ + { 'source': ['remote'] }, + { 'alias': 'localaddr', 'source': ['local', 'host'] }, + { 'alias': 'localport', 'source': ['local', 'port'] } + ]} =20 ## # @ChardevMux: diff --git a/chardev/char-udp.c b/chardev/char-udp.c index 16b5dbce58..61752b1c51 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -23,9 +23,11 @@ */ =20 #include "qemu/osdep.h" +#include "block/qdict.h" #include "chardev/char.h" #include "io/channel-socket.h" #include "qapi/error.h" +#include "qapi/qmp/qdict.h" #include "qemu/module.h" #include "qemu/option.h" =20 @@ -190,6 +192,36 @@ static void qemu_chr_parse_udp(QemuOpts *opts, Chardev= Backend *backend, } } =20 +static void qemu_chr_translate_udp(QDict *args) +{ + QDict *remote; + QDict *local; + + /* + * If "local" or "remote" are given, it's not a legacy command line. + * Not translating in this case saves us checking whether an alias is + * already given before applying defaults. + */ + if (qdict_haskey(args, "local") || qdict_haskey(args, "remote")) { + return; + } + + remote =3D qdict_new(); + qdict_put_str(remote, "type", "inet"); + qdict_put(args, "remote", remote); + + qdict_set_default_str(args, "host", "localhost"); + + if (qdict_haskey(args, "localaddr") || qdict_haskey(args, "localport")= ) { + local =3D qdict_new(); + qdict_put_str(local, "type", "inet"); + qdict_put(args, "local", local); + + qdict_set_default_str(args, "localaddr", ""); + qdict_set_default_str(args, "localport", "0"); + } +} + static void qmp_chardev_open_udp(Chardev *chr, ChardevBackend *backend, bool *be_opened, @@ -225,6 +257,7 @@ static void char_udp_class_init(ObjectClass *oc, void *= data) ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 cc->parse =3D qemu_chr_parse_udp; + cc->translate_legacy_options =3D qemu_chr_translate_udp; cc->open =3D qmp_chardev_open_udp; cc->chr_write =3D udp_chr_write; cc->chr_update_read_handler =3D udp_chr_update_read_handler; diff --git a/chardev/char.c b/chardev/char.c index 91b44e53b6..99feaae275 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -744,7 +744,6 @@ void qemu_chr_translate_legacy_options(QDict *args) /* * TODO: * All backend types: "mux" - * udp: defaults for "host"/"localaddr"/"localport" */ } =20 --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204291; cv=none; d=zohomail.com; s=zohoarc; b=h8mLwNbCGv+vAvA/FAL2TRaGb55TCGk6EP6tUqYlRZIy+vfjAVXjgwRGg1twGsmVy7thJc6Wtb/a6LqghzU3G5L4C5ocD5RNUV0HmsbzzzfDka9WDorSglOy72RksybM0J81MCQ6F9AxnNYEFwiSmcMPg72VNeCp0z9utqizEBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204291; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=y/YfDeWEKfxnOfqzTNmbt0iCSJjBpcio8N+uDvPxTDI=; b=RT5aGRUiH+jerLgLvRg1HnZdNXKDScHv8n+lDqHSrBZVkyu9SCEO+RPCmF5wxE49CR3weJr/HmOyY6rheb2oq+Zk1Lmw+H22II/WtlJvMry3/QTm5zNYrixagATa14TO4IEUJNRQAI0FE3pDMkc+EvNv1tZ3LJQ6wo8MKLh172g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204291201250.94151127500277; Thu, 12 Nov 2020 10:04:51 -0800 (PST) Received: from localhost ([::1]:60508 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdGxm-0006qu-52 for importer@patchew.org; Thu, 12 Nov 2020 13:04:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37594) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGsq-00018z-0m for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:45 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:23437) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsi-0000l8-Ru for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:41 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-417-zt1085Q2Mqec9s4cJfFfxw-1; Thu, 12 Nov 2020 12:59:34 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 457AB8031F9 for ; Thu, 12 Nov 2020 17:59:32 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id B5E611002C1A; Thu, 12 Nov 2020 17:59:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203976; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=y/YfDeWEKfxnOfqzTNmbt0iCSJjBpcio8N+uDvPxTDI=; b=jGuHpKgbCb7gsZ3MJNj3EOELP7OVAch/0ZsJz2PI7v6eEcEp/PXA2BgryZuaH/Rc5zcClx 13zGGHFe+ovyV9l1I9esl9VRrA1/c3TUxyvDXivWmwqGtoU9E+yS5I+SZ/A5gn4SFxE3OS qx95qjo7j4Mn0PaJ0lvYubfA51zWIy4= X-MC-Unique: zt1085Q2Mqec9s4cJfFfxw-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 07/13] char: Add qemu_chr_parse_cli_dict/str() Date: Thu, 12 Nov 2020 18:58:59 +0100 Message-Id: <20201112175905.404472-8-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 08:00:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This adds a function that parses a command line definition of a character device into ChardevOptions, which can then be passed to qemu_chr_new_cli(). You can start both from a string (for actual CLI) or from a QDict, which is not only the intermediate representation after calling the keyval parser, but also what HMP handlers receive. Signed-off-by: Kevin Wolf --- include/chardev/char.h | 30 ++++++++++++++++++++++++++++ chardev/char.c | 45 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/include/chardev/char.h b/include/chardev/char.h index c0944f5828..5cd46207f6 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -94,6 +94,36 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts, */ Chardev *qemu_chr_new_cli(ChardevOptions *options, Error **errp); =20 +/** + * qemu_chr_parse_cli_dict: + * @args: Options defining a new character device + * @help: true if help should be printed instead of returning ChardevOptio= ns + * + * Parses the given command line option QDict into ChardevOptions, using + * qemu_chr_translate_legacy_options() to maintain compatibility with + * legacy command line syntax. + * + * Returns: On successful conversion, a ChardevOptions object containing t= he + * requested options. NULL and @errp is unchanged if help was requested and + * printed. NULL and @errp is set in error cases. + */ +ChardevOptions *qemu_chr_parse_cli_dict(QDict *args, bool help, + Error **errp); + +/** + * qemu_chr_parse_cli_str: + * @optarg: Command line argument defining a new character device + * + * Parses the given command line option into ChardevOptions, using + * qemu_chr_translate_legacy_options() to maintain compatibility with + * legacy command line syntax. + * + * Returns: On successful conversion, a ChardevOptions object containing t= he + * requested options. NULL and @errp is unchanged if help was requested and + * printed. NULL and @errp is set in error cases. + */ +ChardevOptions *qemu_chr_parse_cli_str(const char *optarg, Error **errp); + /** * qemu_chr_translate_legacy_options: * @args: Character device creation options as returned by the keyval pars= er diff --git a/chardev/char.c b/chardev/char.c index 99feaae275..a5d6be9dc8 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -32,8 +32,10 @@ #include "chardev/char.h" #include "qapi/error.h" #include "qapi/qapi-commands-char.h" +#include "qapi/qapi-visit-char.h" #include "qapi/qmp/qdict.h" #include "qapi/qmp/qerror.h" +#include "qapi/qobject-input-visitor.h" #include "sysemu/replay.h" #include "qemu/help_option.h" #include "qemu/module.h" @@ -1106,6 +1108,49 @@ Chardev *qemu_chr_new_cli(ChardevOptions *options, E= rror **errp) return chardev_new_qapi(options->id, options->backend, errp); } =20 +ChardevOptions *qemu_chr_parse_cli_dict(QDict *args, bool help, + Error **errp) +{ + Visitor *v; + ChardevOptions *chr_options; + + qemu_chr_translate_legacy_options(args); + + if (help) { + if (qdict_haskey(args, "type")) { + /* TODO Print help based on the QAPI schema */ + qemu_opts_print_help(&qemu_chardev_opts, true); + } else { + qemu_chr_print_types(); + } + return NULL; + } + + v =3D qobject_input_visitor_new_keyval(QOBJECT(args)); + visit_type_ChardevOptions(v, NULL, &chr_options, errp); + visit_free(v); + + return chr_options; +} + +ChardevOptions *qemu_chr_parse_cli_str(const char *optarg, Error **errp) +{ + ERRP_GUARD(); + QDict *args; + ChardevOptions *chr_options; + bool help; + + args =3D keyval_parse(optarg, "backend", &help, errp); + if (!args) { + return NULL; + } + + chr_options =3D qemu_chr_parse_cli_dict(args, help, errp); + qobject_unref(args); + + return chr_options; +} + ChardevReturn *qmp_chardev_change(const char *id, ChardevBackend *backend, Error **errp) { --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204449; cv=none; d=zohomail.com; s=zohoarc; b=cRBTFPvBMhsQZ1dATYkRtLBeBWlVEN/nImG9Gjl5MHhihwH3TaH6IGFCdzhbV9plKZd9hVRfg6WGiVPwRG9hhaTccY+Pj8/bGt4S7ccToknDx06gLU5Qm088fFN1Nw4GVHnSSqmOLUSKqdhVcj97y/nzi8x2iHBXNuo96xHmYuM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204449; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NmA3MmZqTxiwtBEfqDIKt2m4ARbVg0BIQ6mvwBFM2S4=; b=Y5kYnb3pqc61sENg49Nv35dzcTeD8FzrnxoFF9/FFM6xSpmLp6p8LbA72ap3ZKrZAyO5UNF4bKlhVQvG5SRTSnjqMhzrEbiHuFtCrBWKeTtS6U4EdbyLEMFH93N8iOkKBmGwTDq+2EgGR6xG/GmDJDTt1zQnXPUjHrBlsNuU9LQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204449599412.7501203468821; Thu, 12 Nov 2020 10:07:29 -0800 (PST) Received: from localhost ([::1]:39448 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdH0K-0001Wq-Dk for importer@patchew.org; Thu, 12 Nov 2020 13:07:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37676) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGt3-0001BM-Ke for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:57 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:33160) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsp-0000m9-Qg for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:51 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-247-R1AmfjQXNpC5rU9H6cSqRg-1; Thu, 12 Nov 2020 12:59:35 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3C4D3801817 for ; Thu, 12 Nov 2020 17:59:34 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 94DAB1002C13; Thu, 12 Nov 2020 17:59:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203980; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NmA3MmZqTxiwtBEfqDIKt2m4ARbVg0BIQ6mvwBFM2S4=; b=XuSlxmgILIxEV53n9uTLn5/Tv/3hNq31mnDnRG3BQfr/esfrhSqsgH78neOAPozurmpIZO cUSmIxOlBePBp75OjpkFUrZyH9nQDW05IGw8ogKQLl0KQn9H0JSWytLggzCyuYSysqWF5T nlmcYzmxkKJPctglPbFjfHHI/g3sw2Y= X-MC-Unique: R1AmfjQXNpC5rU9H6cSqRg-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 08/13] char: Add mux option to ChardevOptions Date: Thu, 12 Nov 2020 18:59:00 +0100 Message-Id: <20201112175905.404472-9-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 08:00:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The final missing piece to achieve compatibility between qemu_chr_parse_cli_str()/qemu_chr_new_cli() and the legacy command line is support for the 'mux' option. Implement it. Signed-off-by: Kevin Wolf --- qapi/char.json | 4 +++- chardev/char.c | 41 +++++++++++++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/qapi/char.json b/qapi/char.json index e1f9347044..d6733a5473 100644 --- a/qapi/char.json +++ b/qapi/char.json @@ -453,12 +453,14 @@ # # @id: the chardev's ID, must be unique # @backend: backend type and parameters +# @mux: enable multiplexing mode (default: false) # # Since: 6.0 ## { 'struct': 'ChardevOptions', 'data': { 'id': 'str', - 'backend': 'ChardevBackend' }, + 'backend': 'ChardevBackend', + '*mux': 'bool' }, 'aliases': [ { 'source': ['backend'] } ] } =20 ## diff --git a/chardev/char.c b/chardev/char.c index a5d6be9dc8..3bb6a743f7 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -742,11 +742,6 @@ void qemu_chr_translate_legacy_options(QDict *args) =20 /* name may refer to a QDict entry, so delete it only now */ qdict_del(args, "backend"); - - /* - * TODO: - * All backend types: "mux" - */ } =20 Chardev *qemu_chr_new_noreplay(const char *label, const char *filename, @@ -1105,7 +1100,41 @@ ChardevReturn *qmp_chardev_add(const char *id, Chard= evBackend *backend, =20 Chardev *qemu_chr_new_cli(ChardevOptions *options, Error **errp) { - return chardev_new_qapi(options->id, options->backend, errp); + Chardev *chr; + char *bid =3D NULL; + + if (options->mux) { + bid =3D g_strdup_printf("%s-base", options->id); + } + + chr =3D chardev_new_qapi(bid ?: options->id, options->backend, errp); + if (!chr) { + goto out; + } + + if (options->mux) { + Chardev *mux; + ChardevMux mux_data =3D { + .chardev =3D bid, + }; + ChardevBackend backend =3D { + .type =3D CHARDEV_BACKEND_KIND_MUX, + .u.mux.data =3D &mux_data, + }; + + mux =3D qemu_chardev_new(options->id, TYPE_CHARDEV_MUX, &backend, = NULL, + errp); + if (mux =3D=3D NULL) { + object_unparent(OBJECT(chr)); + chr =3D NULL; + goto out; + } + chr =3D mux; + } + +out: + g_free(bid); + return chr; } =20 ChardevOptions *qemu_chr_parse_cli_dict(QDict *args, bool help, --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204472; cv=none; d=zohomail.com; s=zohoarc; b=C05Gho/RS2YMWLrb69OD6F+zqa2A2IGbsfu7MiaZXShW2hofmRmLCVf101GV8yvW0eEimSJqZ96FvFE4ot/MyLohZhVlFYBqB5Ddu0mHp0y1+XHQkzkMMn2GbQKlrM7YlYGYkBCyvGLiLRFPxZFwUQ561KMgQ2uCGZ5JbwW90Lg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204472; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IqXnhdcvtX4p12iBkfena14urLce3IoFtPM5/yBK+XM=; b=iBE+0aKCqzs/dbsozLF7enlmmn0ETFYZ6cZtk1fQ8CotJX4dOoE6beCbMyJsL/31Cst8mgAHQBkC0qzflXuHv5+JgX/bQYJ19syOwjhH35dmdKz334dWLw4hqlWOTHM15ZUYUF4ZybQr4COK+UwdVFrjNBSWK5ZAyuW6wNyxEJ4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204472833670.3518815615103; Thu, 12 Nov 2020 10:07:52 -0800 (PST) Received: from localhost ([::1]:40746 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdH0h-00023C-NP for importer@patchew.org; Thu, 12 Nov 2020 13:07:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37696) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGt4-0001DA-6Z for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:38299) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGsp-0000mG-Q3 for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:57 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-41-2uGxDk7MOcStp3cIPbhaBA-1; Thu, 12 Nov 2020 12:59:40 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1062BAF061 for ; Thu, 12 Nov 2020 17:59:39 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 879021002C13; Thu, 12 Nov 2020 17:59:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203981; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IqXnhdcvtX4p12iBkfena14urLce3IoFtPM5/yBK+XM=; b=CBmKUEs5ET8I8APXh3DWmtIKS5/FgoEV+g+yuwilhJXdI0l39oOiYG3cnBXOnjbggHbxTY EyW95AqAWuUyygJWPR+ynfj9WfwyuCdyMU0fzU6+FtQp2EUUnjsWUqRBxpQuUg3Au//XIg 9s+MC/kgBrm/0/lQAdIMRWfk+3uB8bs= X-MC-Unique: 2uGxDk7MOcStp3cIPbhaBA-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 09/13] qemu-storage-daemon: QAPIfy --chardev Date: Thu, 12 Nov 2020 18:59:01 +0100 Message-Id: <20201112175905.404472-10-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 08:00:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Make use of the QAPIfied command line interface of the chardev subsystem. With this, --chardev supports QMP-like syntax (i.e. chardev-add mapped to the command line) as well as the legacy syntax that it already supported and which is shared with the system emulator. Signed-off-by: Kevin Wolf --- storage-daemon/qemu-storage-daemon.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-sto= rage-daemon.c index e419ba9f19..149d08ad6d 100644 --- a/storage-daemon/qemu-storage-daemon.c +++ b/storage-daemon/qemu-storage-daemon.c @@ -128,8 +128,6 @@ enum { OPTION_OBJECT, }; =20 -extern QemuOptsList qemu_chardev_opts; - static QemuOptsList qemu_object_opts =3D { .name =3D "object", .implied_opt_name =3D "qom-type", @@ -207,18 +205,15 @@ static void process_options(int argc, char *argv[]) } case OPTION_CHARDEV: { - /* TODO This interface is not stable until we QAPIfy it */ - QemuOpts *opts =3D qemu_opts_parse_noisily(&qemu_chardev_o= pts, - optarg, true); - if (opts =3D=3D NULL) { - exit(EXIT_FAILURE); - } + ChardevOptions *options; =20 - if (!qemu_chr_new_from_opts(opts, NULL, &error_fatal)) { - /* No error, but NULL returned means help was printed = */ + options =3D qemu_chr_parse_cli_str(optarg, &error_fatal); + if (!options) { + /* Help was printed */ exit(EXIT_SUCCESS); } - qemu_opts_del(opts); + qemu_chr_new_cli(options, &error_fatal); + qapi_free_ChardevOptions(options); break; } case OPTION_EXPORT: --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204453; cv=none; d=zohomail.com; s=zohoarc; b=is4ShXbdxwjBZs69l/Dnx3JvfAqh6noEtBRUpaTwkzXdTUyc3lFVCpnT5RwmkzxEfkJNpFJp9e5NYLw6/fXNYVoO6iejn/mhBZV0nOh/+L68U5kVCT2u1iA9BYr2Tn1GTh1Z4x8/upyN47Ght+XMgIa1Hobp2uyE1zLddKPeg3M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204453; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=AfPFaqFUVUEWfzka3wzZsBUp7OzkQfoFN0Ix1Zsu5EM=; b=IyKYvZMNsDD2+H9IiLiuw81vqLf3LYHYJfPgEcVTdp2YKRrw4nXtV8sW2p4hvg1udtWlhVm/LjGobzz24vHTv/na+GJK1FtVlp3uLMA63uU55EcYVR+QqDRZn8vusO7lWIWrBZBuFY/h8Rvy8MLK4UyJvBDgvaMzYWf+0VcQjzc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204453077364.7675463739512; Thu, 12 Nov 2020 10:07:33 -0800 (PST) Received: from localhost ([::1]:39726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdH0N-0001dk-RF for importer@patchew.org; Thu, 12 Nov 2020 13:07:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37680) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGt3-0001BY-Me for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:57 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:38298) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGst-0000mO-Ni for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:57 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-490-gT5xtreaNOqiEw9v34wd2A-1; Thu, 12 Nov 2020 12:59:41 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F1FE3108597D for ; Thu, 12 Nov 2020 17:59:40 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 724561002C13; Thu, 12 Nov 2020 17:59:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203984; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AfPFaqFUVUEWfzka3wzZsBUp7OzkQfoFN0Ix1Zsu5EM=; b=WWOXcIrPtsw7mqpCnX89X6DkJWnec0J1J4Maz2XIGDTeXUag3EOU0W3WEAGnGPxkzOE2/Q x5pxSXLwj9vmar4NQKwiryjJOj5aOZQCRheTnWWYUPTyqf8+SbBERgCbDTEde0JD4ZCf3t tQESi5AoHlqtyRzWkvYWxUzRSGJJxoY= X-MC-Unique: gT5xtreaNOqiEw9v34wd2A-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 10/13] char: Implement qemu_chr_new_from_opts() in terms of QAPI Date: Thu, 12 Nov 2020 18:59:02 +0100 Message-Id: <20201112175905.404472-11-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 00:52:29 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Instead of having a second parser, qemu_chr_new_from_opts() uses qemu_chr_translate_legacy_options() and qemu_chr_new_cli() now. This switches -chardev of the system emulator to use the QAPI generated parser rather than the hand-written QemuOpts based parser. All existing command line options should keep working, but it gains support for anything that was previously only supported in QMP (e.g. vsock socket addresses). Signed-off-by: Kevin Wolf --- chardev/char.c | 116 +++++++++++++++++++------------------------------ 1 file changed, 45 insertions(+), 71 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 3bb6a743f7..4a444a0353 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -656,70 +656,6 @@ void qemu_chr_print_types(void) qemu_printf("Available chardev backend types: %s\n", str->str); } =20 -Chardev *qemu_chr_new_from_opts(QemuOpts *opts, GMainContext *context, - Error **errp) -{ - const ChardevClass *cc; - Chardev *chr =3D NULL; - ChardevBackend *backend =3D NULL; - const char *name =3D chardev_alias_translate(qemu_opt_get(opts, "backe= nd")); - const char *id =3D qemu_opts_id(opts); - char *bid =3D NULL; - - if (name && is_help_option(name)) { - qemu_chr_print_types(); - return NULL; - } - - if (id =3D=3D NULL) { - error_setg(errp, "chardev: no id specified"); - return NULL; - } - - backend =3D qemu_chr_parse_opts(opts, errp); - if (backend =3D=3D NULL) { - return NULL; - } - - cc =3D char_get_class(name, errp); - if (cc =3D=3D NULL) { - goto out; - } - - if (qemu_opt_get_bool(opts, "mux", 0)) { - bid =3D g_strdup_printf("%s-base", id); - } - - chr =3D qemu_chardev_new(bid ? bid : id, - object_class_get_name(OBJECT_CLASS(cc)), - backend, context, errp); - - if (chr =3D=3D NULL) { - goto out; - } - - if (bid) { - Chardev *mux; - qapi_free_ChardevBackend(backend); - backend =3D g_new0(ChardevBackend, 1); - backend->type =3D CHARDEV_BACKEND_KIND_MUX; - backend->u.mux.data =3D g_new0(ChardevMux, 1); - backend->u.mux.data->chardev =3D g_strdup(bid); - mux =3D qemu_chardev_new(id, TYPE_CHARDEV_MUX, backend, context, e= rrp); - if (mux =3D=3D NULL) { - object_unparent(OBJECT(chr)); - chr =3D NULL; - goto out; - } - chr =3D mux; - } - -out: - qapi_free_ChardevBackend(backend); - g_free(bid); - return chr; -} - void qemu_chr_translate_legacy_options(QDict *args) { const ChardevClass *cc; @@ -1065,7 +1001,7 @@ Chardev *qemu_chardev_new(const char *id, const char = *typename, } =20 static Chardev *chardev_new_qapi(const char *id, ChardevBackend *backend, - Error **errp) + GMainContext *context, Error **errp) { const ChardevClass *cc; =20 @@ -1075,7 +1011,7 @@ static Chardev *chardev_new_qapi(const char *id, Char= devBackend *backend, } =20 return chardev_new(id, object_class_get_name(OBJECT_CLASS(cc)), - backend, NULL, errp); + backend, context, errp); } =20 ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend, @@ -1084,7 +1020,7 @@ ChardevReturn *qmp_chardev_add(const char *id, Charde= vBackend *backend, ChardevReturn *ret; Chardev *chr; =20 - chr =3D chardev_new_qapi(id, backend, errp); + chr =3D chardev_new_qapi(id, backend, NULL, errp); if (!chr) { return NULL; } @@ -1098,7 +1034,9 @@ ChardevReturn *qmp_chardev_add(const char *id, Charde= vBackend *backend, return ret; } =20 -Chardev *qemu_chr_new_cli(ChardevOptions *options, Error **errp) +static Chardev *qemu_chr_new_cli_gcontext(ChardevOptions *options, + GMainContext *context, + Error **errp) { Chardev *chr; char *bid =3D NULL; @@ -1107,7 +1045,7 @@ Chardev *qemu_chr_new_cli(ChardevOptions *options, Er= ror **errp) bid =3D g_strdup_printf("%s-base", options->id); } =20 - chr =3D chardev_new_qapi(bid ?: options->id, options->backend, errp); + chr =3D chardev_new_qapi(bid ?: options->id, options->backend, context= , errp); if (!chr) { goto out; } @@ -1122,8 +1060,8 @@ Chardev *qemu_chr_new_cli(ChardevOptions *options, Er= ror **errp) .u.mux.data =3D &mux_data, }; =20 - mux =3D qemu_chardev_new(options->id, TYPE_CHARDEV_MUX, &backend, = NULL, - errp); + mux =3D qemu_chardev_new(options->id, TYPE_CHARDEV_MUX, &backend, + context, errp); if (mux =3D=3D NULL) { object_unparent(OBJECT(chr)); chr =3D NULL; @@ -1137,6 +1075,11 @@ out: return chr; } =20 +Chardev *qemu_chr_new_cli(ChardevOptions *options, Error **errp) +{ + return qemu_chr_new_cli_gcontext(options, NULL, errp); +} + ChardevOptions *qemu_chr_parse_cli_dict(QDict *args, bool help, Error **errp) { @@ -1180,6 +1123,37 @@ ChardevOptions *qemu_chr_parse_cli_str(const char *o= ptarg, Error **errp) return chr_options; } =20 +Chardev *qemu_chr_new_from_opts(QemuOpts *opts, GMainContext *context, + Error **errp) +{ + ChardevOptions *chr_options; + Chardev *chr; + QDict *args; + const char *name =3D qemu_opt_get(opts, "backend"); + bool help; + + args =3D qemu_opts_to_qdict(opts, NULL); + + if (name && is_help_option(name)) { + qdict_del(args, "backend"); + qdict_del(args, "type"); + help =3D true; + } else { + help =3D qemu_opt_has_help_opt(opts); + } + + chr_options =3D qemu_chr_parse_cli_dict(args, help, errp); + qobject_unref(args); + + if (!chr_options) { + return NULL; + } + + chr =3D qemu_chr_new_cli_gcontext(chr_options, context, errp); + qapi_free_ChardevOptions(chr_options); + return chr; +} + ChardevReturn *qmp_chardev_change(const char *id, ChardevBackend *backend, Error **errp) { --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204499; cv=none; d=zohomail.com; s=zohoarc; b=VR9gpKQhDYWDUEuFGr2smGe0yKmQ8hb7LquB02IfqfF+0c7NlkeUC+2/eyF8stavZru+Ow9Lj7yxKdAiOgCKwJCwix9xfCoJuIaAQXxm+Tin5aWEOGpTpPi9zR6tL7RdaFjcXIHpt/XA1eGmwD3rXpR2LIkQjKOT6XQN/sFYzUc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204499; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tbXhAvTDC3ngvTRF4fxcFWl9aUU/7PWKDGgGq4/e7c4=; b=XsHLQNB49lvYLlJNY5VCkKybqreH9BifLUFMQw2SO+dNRVa8NQhgRRsNHyR0o//y0joXv78nbYlgQFvyepNAmG2N+Y0unBrmxLgrv25VtnibqKoCLE6SJpfoTtP1jJkaM/5CGna8ceQiZCA9VU8BxDz8dm6NwI+/UiIT8LTV0YQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204499207290.67897636598684; Thu, 12 Nov 2020 10:08:19 -0800 (PST) Received: from localhost ([::1]:43052 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdH18-0002zq-3y for importer@patchew.org; Thu, 12 Nov 2020 13:08:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37704) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGt4-0001EI-KC for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:26262) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGst-0000mU-NX for qemu-devel@nongnu.org; Thu, 12 Nov 2020 12:59:58 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-511--Gge9Gx-MhqCnygezJMKlw-1; Thu, 12 Nov 2020 12:59:43 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C9DE0AF060 for ; Thu, 12 Nov 2020 17:59:42 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4E4BA1002C13; Thu, 12 Nov 2020 17:59:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203985; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tbXhAvTDC3ngvTRF4fxcFWl9aUU/7PWKDGgGq4/e7c4=; b=WUvyrzERsNKt95t8ytHZ9He3QKKL5w/tK20Y1jI53NOD7wUmPe9MQYCsbbgqGIoDPp8+m8 OApLF54JwVGtmKjg0WCfBKvUbewpl5Y/8/M42D+4K8B5D7TmnmQUanImg4UkxGitDRhVJ6 D/VB1iZvXlIM1UEgkuCOW/rvu5Y7cJk= X-MC-Unique: -Gge9Gx-MhqCnygezJMKlw-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 11/13] hmp/char: Use qemu_chr_parse_cli_str() for chardev-change Date: Thu, 12 Nov 2020 18:59:03 +0100 Message-Id: <20201112175905.404472-12-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 08:00:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Instead of going through the QemuOpts-based parser, go directly from the given option string to ChardevOptions. This doesn't only avoid legacy code, but it also simplifies the implementation. Signed-off-by: Kevin Wolf Acked-by: Dr. David Alan Gilbert --- monitor/hmp-cmds.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index a6a6684df1..0244068de8 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -1793,34 +1793,25 @@ void hmp_chardev_add(Monitor *mon, const QDict *qdi= ct) void hmp_chardev_change(Monitor *mon, const QDict *qdict) { const char *args =3D qdict_get_str(qdict, "args"); - const char *id; + const char *id =3D qdict_get_str(qdict, "id"); + char *optstr; Error *err =3D NULL; - ChardevBackend *backend =3D NULL; + ChardevOptions *options =3D NULL; ChardevReturn *ret =3D NULL; - QemuOpts *opts =3D qemu_opts_parse_noisily(qemu_find_opts("chardev"), = args, - true); - if (!opts) { - error_setg(&err, "Parsing chardev args failed"); - goto end; - } =20 - id =3D qdict_get_str(qdict, "id"); - if (qemu_opts_id(opts)) { - error_setg(&err, "Unexpected 'id' parameter"); - goto end; - } + optstr =3D g_strdup_printf("%s,id=3D%s", args, id); =20 - backend =3D qemu_chr_parse_opts(opts, &err); - if (!backend) { + options =3D qemu_chr_parse_cli_str(optstr, &err); + if (!options) { goto end; } =20 - ret =3D qmp_chardev_change(id, backend, &err); + ret =3D qmp_chardev_change(options->id, options->backend, &err); =20 end: + g_free(optstr); qapi_free_ChardevReturn(ret); - qapi_free_ChardevBackend(backend); - qemu_opts_del(opts); + qapi_free_ChardevOptions(options); hmp_handle_error(mon, err); } =20 --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204659; cv=none; d=zohomail.com; s=zohoarc; b=YoqUXU1X47LYWPhq/0Kq+9zhKY3BjEh8F/UK8dEBwyd5kBRxQ9DOAgLrtBgOoKNEf2FMb8tf/WU56M/LIMHoZDnbgmpss2qP/1n/RtAGmybjr53RDnbPclDDVs8bFX3WiUZf6EN0iEU3r9jtpqy7GKizIbsy3mJG/OocoYJTpVc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204659; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=l6yCkydgfIDA8tx/k5dlAWhfUPdQSZs1lMGYS3SF75c=; b=ihGevGRKggd2FVSkPbYv1VUgn5oOg2cyTkrEJfi5ez5wefLKz/kDcA60q7NoRIK7NDjaJTuIcK88Yon9bHQ985Fiwgh1aPwwbkjcZ7m8xo3HEnfpkGbX+CSWn1RUcwUZMUR1cXPQKN7G7Vv8/H2uMC0e6VfXx4Qs1IYqVW90S/o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204659022683.9007071370675; Thu, 12 Nov 2020 10:10:59 -0800 (PST) Received: from localhost ([::1]:50032 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdH3h-00062b-TY for importer@patchew.org; Thu, 12 Nov 2020 13:10:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37740) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGt6-0001JO-JX for qemu-devel@nongnu.org; Thu, 12 Nov 2020 13:00:00 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:30795) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGt3-0000nY-9F for qemu-devel@nongnu.org; Thu, 12 Nov 2020 13:00:00 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-590-tMxNVmDDMvGEMtQdtB5qPA-1; Thu, 12 Nov 2020 12:59:45 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 98FE280475A for ; Thu, 12 Nov 2020 17:59:44 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1F57E1002C13; Thu, 12 Nov 2020 17:59:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203990; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=l6yCkydgfIDA8tx/k5dlAWhfUPdQSZs1lMGYS3SF75c=; b=gky3EOksrKa8l5tQJBu6+Yh1U79DOT0RNlvvGeNMtbCAeC79TQYlIBOIcTgR5/e0LsOQgE VB3pFIFG22yfrA7m5l9pjap/fxDulvdGK0HR7Z2Xfh5L4543l/NVA0psITWbFwAd0Zg/4U voLyZE8sQOSqOnGP2mZoaMr6v5XGP1Y= X-MC-Unique: tMxNVmDDMvGEMtQdtB5qPA-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 12/13] char: Remove qemu_chr_parse_opts() Date: Thu, 12 Nov 2020 18:59:04 +0100 Message-Id: <20201112175905.404472-13-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 00:52:29 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The function is unused now, remove it. Signed-off-by: Kevin Wolf --- include/chardev/char.h | 10 ---------- chardev/char.c | 37 ------------------------------------- 2 files changed, 47 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index 5cd46207f6..761c521bd8 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -146,16 +146,6 @@ void qemu_chr_translate_legacy_options(QDict *args); */ void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend); =20 -/** - * qemu_chr_parse_opts: - * - * Parse the options to the ChardevBackend struct. - * - * Returns: a new backend or NULL on error - */ -ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, - Error **errp); - /** * qemu_chr_new: * @label: the name of the backend diff --git a/chardev/char.c b/chardev/char.c index 4a444a0353..c3cfd473b4 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -610,43 +610,6 @@ static const char *chardev_alias_translate(const char = *name) return name; } =20 -ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Error **errp) -{ - Error *local_err =3D NULL; - const ChardevClass *cc; - ChardevBackend *backend =3D NULL; - const char *name =3D chardev_alias_translate(qemu_opt_get(opts, "backe= nd")); - - if (name =3D=3D NULL) { - error_setg(errp, "chardev: \"%s\" missing backend", - qemu_opts_id(opts)); - return NULL; - } - - cc =3D char_get_class(name, errp); - if (cc =3D=3D NULL) { - return NULL; - } - - backend =3D g_new0(ChardevBackend, 1); - backend->type =3D CHARDEV_BACKEND_KIND_NULL; - - if (cc->parse) { - cc->parse(opts, backend, &local_err); - if (local_err) { - error_propagate(errp, local_err); - qapi_free_ChardevBackend(backend); - return NULL; - } - } else { - ChardevCommon *ccom =3D g_new0(ChardevCommon, 1); - qemu_chr_parse_common(opts, ccom); - backend->u.null.data =3D ccom; /* Any ChardevCommon member would w= ork */ - } - - return backend; -} - void qemu_chr_print_types(void) { g_autoptr(GString) str =3D g_string_new(""); --=20 2.28.0 From nobody Thu Oct 2 13:00:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605204630; cv=none; d=zohomail.com; s=zohoarc; b=oCJgO726iLE8QIAD037IhBuwUMqQegSRntoTxBIpO12y+dDuREM60GPLyXCNRYQjpLZFRI08EDvU0T8L2Rr2EleitwdBY+fhz6Nhgxuxc3VT8RzMVeW3SRw488RZTT21mLLKmLfL/K7YHVrZWD6O0TLVitGiozRB/wmTHyExBxw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605204630; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VQPi4yy940Ey6avasAaK49Dq3ioMsgywOo60wT0Si4I=; b=W+XI0Y5JeztYgAa4WeZOePmpFS8qPiukGOum4B0PyYeTTxF3lfeXlct1ThWs5vv+krXI9sJrmZUOojqfjJ+XnvcBp10mz2QGetSnGaNibMK5VGaz77X4U892jdrsvX/rDC9Fxbs/fvbaA43BrKzynFJRzuBnyYSm+i4natXPUJE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1605204630977924.4778928669508; Thu, 12 Nov 2020 10:10:30 -0800 (PST) Received: from localhost ([::1]:47950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdH3F-00056P-ME for importer@patchew.org; Thu, 12 Nov 2020 13:10:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37756) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdGt7-0001L6-4q for qemu-devel@nongnu.org; Thu, 12 Nov 2020 13:00:01 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:30711) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kdGt3-0000ni-9p for qemu-devel@nongnu.org; Thu, 12 Nov 2020 13:00:00 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-457-O-dKilhGMjqtaPKatleCbg-1; Thu, 12 Nov 2020 12:59:47 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 93C3D802B51 for ; Thu, 12 Nov 2020 17:59:46 +0000 (UTC) Received: from merkur.fritz.box (ovpn-115-57.ams2.redhat.com [10.36.115.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id E417E1002C1A; Thu, 12 Nov 2020 17:59:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605203992; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VQPi4yy940Ey6avasAaK49Dq3ioMsgywOo60wT0Si4I=; b=T1FQiskBCGQZqF+vZ9RQjJWbZV5t0YDN346hmD/kiBqteNDSpVCV0bf42WNBZpGxlhkrQC 9Lz+idzop+jfYQaylImFTAN7LO447e11hlQYDbMrammFQe5YhgyoPBMYutZ8q/VmvxF1+P CyzLou6WgN2cjJTlsp7tP8jEX29RPNk= X-MC-Unique: O-dKilhGMjqtaPKatleCbg-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 13/13] char: Remove ChardevClass.parse Date: Thu, 12 Nov 2020 18:59:05 +0100 Message-Id: <20201112175905.404472-14-kwolf@redhat.com> In-Reply-To: <20201112175905.404472-1-kwolf@redhat.com> References: <20201112175905.404472-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/12 08:00:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, armbru@redhat.com, dgilbert@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The QemuOpts based ChardevClass.parse has been replaced by the QAPI parser and is unused now, remove it. After removing all .parse implementations, qemu_chr_parse_common() is unused, too, so remove that one as well. Signed-off-by: Kevin Wolf --- include/chardev/char.h | 10 ----- chardev/char-file.c | 20 --------- chardev/char-mux.c | 17 -------- chardev/char-parallel.c | 17 -------- chardev/char-pipe.c | 17 -------- chardev/char-ringbuf.c | 18 -------- chardev/char-serial.c | 17 -------- chardev/char-socket.c | 92 ----------------------------------------- chardev/char-stdio.c | 13 ------ chardev/char-udp.c | 60 --------------------------- chardev/char.c | 11 ----- chardev/spice.c | 34 --------------- ui/console.c | 35 ---------------- ui/gtk.c | 1 - ui/spice-app.c | 1 - 15 files changed, 363 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index 761c521bd8..ea095dd998 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -137,15 +137,6 @@ ChardevOptions *qemu_chr_parse_cli_str(const char *opt= arg, Error **errp); */ void qemu_chr_translate_legacy_options(QDict *args); =20 -/** - * qemu_chr_parse_common: - * @opts: the options that still need parsing - * @backend: a new backend - * - * Parse the common options available to all character backends. - */ -void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend); - /** * qemu_chr_new: * @label: the name of the backend @@ -294,7 +285,6 @@ struct ChardevClass { ObjectClass parent_class; =20 bool internal; /* TODO: eventually use TYPE_USER_CREATABLE */ - void (*parse)(QemuOpts *opts, ChardevBackend *backend, Error **errp); void (*translate_legacy_options)(QDict *args); =20 void (*open)(Chardev *chr, ChardevBackend *backend, diff --git a/chardev/char-file.c b/chardev/char-file.c index 2fd80707e5..5684bfb9b1 100644 --- a/chardev/char-file.c +++ b/chardev/char-file.c @@ -96,30 +96,10 @@ static void qmp_chardev_open_file(Chardev *chr, #endif } =20 -static void qemu_chr_parse_file_out(QemuOpts *opts, ChardevBackend *backen= d, - Error **errp) -{ - const char *path =3D qemu_opt_get(opts, "path"); - ChardevFile *file; - - backend->type =3D CHARDEV_BACKEND_KIND_FILE; - if (path =3D=3D NULL) { - error_setg(errp, "chardev: file: no filename given"); - return; - } - file =3D backend->u.file.data =3D g_new0(ChardevFile, 1); - qemu_chr_parse_common(opts, qapi_ChardevFile_base(file)); - file->out =3D g_strdup(path); - - file->has_append =3D true; - file->append =3D qemu_opt_get_bool(opts, "append", false); -} - static void char_file_class_init(ObjectClass *oc, void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_file_out; cc->open =3D qmp_chardev_open_file; } =20 diff --git a/chardev/char-mux.c b/chardev/char-mux.c index 6f980bb836..91542bb3e3 100644 --- a/chardev/char-mux.c +++ b/chardev/char-mux.c @@ -332,22 +332,6 @@ static void qemu_chr_open_mux(Chardev *chr, qemu_chr_fe_init(&d->chr, drv, errp); } =20 -static void qemu_chr_parse_mux(QemuOpts *opts, ChardevBackend *backend, - Error **errp) -{ - const char *chardev =3D qemu_opt_get(opts, "chardev"); - ChardevMux *mux; - - if (chardev =3D=3D NULL) { - error_setg(errp, "chardev: mux: no chardev given"); - return; - } - backend->type =3D CHARDEV_BACKEND_KIND_MUX; - mux =3D backend->u.mux.data =3D g_new0(ChardevMux, 1); - qemu_chr_parse_common(opts, qapi_ChardevMux_base(mux)); - mux->chardev =3D g_strdup(chardev); -} - /** * Called after processing of default and command-line-specified * chardevs to deliver CHR_EVENT_OPENED events to any FEs attached @@ -377,7 +361,6 @@ static void char_mux_class_init(ObjectClass *oc, void *= data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_mux; cc->open =3D qemu_chr_open_mux; cc->chr_write =3D mux_chr_write; cc->chr_accept_input =3D mux_chr_accept_input; diff --git a/chardev/char-parallel.c b/chardev/char-parallel.c index 05e7efbd6c..066f1fc7ba 100644 --- a/chardev/char-parallel.c +++ b/chardev/char-parallel.c @@ -254,27 +254,10 @@ static void qmp_chardev_open_parallel(Chardev *chr, qemu_chr_open_pp_fd(chr, fd, be_opened, errp); } =20 -static void qemu_chr_parse_parallel(QemuOpts *opts, ChardevBackend *backen= d, - Error **errp) -{ - const char *device =3D qemu_opt_get(opts, "path"); - ChardevHostdev *parallel; - - if (device =3D=3D NULL) { - error_setg(errp, "chardev: parallel: no device path given"); - return; - } - backend->type =3D CHARDEV_BACKEND_KIND_PARALLEL; - parallel =3D backend->u.parallel.data =3D g_new0(ChardevHostdev, 1); - qemu_chr_parse_common(opts, qapi_ChardevHostdev_base(parallel)); - parallel->device =3D g_strdup(device); -} - static void char_parallel_class_init(ObjectClass *oc, void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_parallel; cc->open =3D qmp_chardev_open_parallel; #if defined(__linux__) cc->chr_ioctl =3D pp_ioctl; diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c index 7eca5d9a56..97143c67fc 100644 --- a/chardev/char-pipe.c +++ b/chardev/char-pipe.c @@ -154,27 +154,10 @@ static void qemu_chr_open_pipe(Chardev *chr, =20 #endif /* !_WIN32 */ =20 -static void qemu_chr_parse_pipe(QemuOpts *opts, ChardevBackend *backend, - Error **errp) -{ - const char *device =3D qemu_opt_get(opts, "path"); - ChardevHostdev *dev; - - if (device =3D=3D NULL) { - error_setg(errp, "chardev: pipe: no device path given"); - return; - } - backend->type =3D CHARDEV_BACKEND_KIND_PIPE; - dev =3D backend->u.pipe.data =3D g_new0(ChardevHostdev, 1); - qemu_chr_parse_common(opts, qapi_ChardevHostdev_base(dev)); - dev->device =3D g_strdup(device); -} - static void char_pipe_class_init(ObjectClass *oc, void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_pipe; cc->open =3D qemu_chr_open_pipe; } =20 diff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c index d40d21d3cf..16eb46e971 100644 --- a/chardev/char-ringbuf.c +++ b/chardev/char-ringbuf.c @@ -206,28 +206,10 @@ char *qmp_ringbuf_read(const char *device, int64_t si= ze, return data; } =20 -static void qemu_chr_parse_ringbuf(QemuOpts *opts, ChardevBackend *backend, - Error **errp) -{ - int val; - ChardevRingbuf *ringbuf; - - backend->type =3D CHARDEV_BACKEND_KIND_RINGBUF; - ringbuf =3D backend->u.ringbuf.data =3D g_new0(ChardevRingbuf, 1); - qemu_chr_parse_common(opts, qapi_ChardevRingbuf_base(ringbuf)); - - val =3D qemu_opt_get_size(opts, "size", 0); - if (val !=3D 0) { - ringbuf->has_size =3D true; - ringbuf->size =3D val; - } -} - static void char_ringbuf_class_init(ObjectClass *oc, void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_ringbuf; cc->open =3D qemu_chr_open_ringbuf; cc->chr_write =3D ringbuf_chr_write; } diff --git a/chardev/char-serial.c b/chardev/char-serial.c index 7c3d84ae24..7e207339dc 100644 --- a/chardev/char-serial.c +++ b/chardev/char-serial.c @@ -279,27 +279,10 @@ static void qmp_chardev_open_serial(Chardev *chr, #endif /* __linux__ || __sun__ */ =20 #ifdef HAVE_CHARDEV_SERIAL -static void qemu_chr_parse_serial(QemuOpts *opts, ChardevBackend *backend, - Error **errp) -{ - const char *device =3D qemu_opt_get(opts, "path"); - ChardevHostdev *serial; - - if (device =3D=3D NULL) { - error_setg(errp, "chardev: serial/tty: no device path given"); - return; - } - backend->type =3D CHARDEV_BACKEND_KIND_SERIAL; - serial =3D backend->u.serial.data =3D g_new0(ChardevHostdev, 1); - qemu_chr_parse_common(opts, qapi_ChardevHostdev_base(serial)); - serial->device =3D g_strdup(device); -} - static void char_serial_class_init(ObjectClass *oc, void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_serial; cc->open =3D qmp_chardev_open_serial; #ifndef _WIN32 cc->chr_ioctl =3D tty_serial_ioctl; diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 6bf916a3e4..a38b9d939f 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -1394,97 +1394,6 @@ static void qmp_chardev_open_socket(Chardev *chr, } } =20 -static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend, - Error **errp) -{ - const char *path =3D qemu_opt_get(opts, "path"); - const char *host =3D qemu_opt_get(opts, "host"); - const char *port =3D qemu_opt_get(opts, "port"); - const char *fd =3D qemu_opt_get(opts, "fd"); -#ifdef CONFIG_LINUX - bool tight =3D qemu_opt_get_bool(opts, "tight", true); - bool abstract =3D qemu_opt_get_bool(opts, "abstract", false); -#endif - SocketAddressLegacy *addr; - ChardevSocket *sock; - - if ((!!path + !!fd + !!host) !=3D 1) { - error_setg(errp, - "Exactly one of 'path', 'fd' or 'host' required"); - return; - } - - if (host && !port) { - error_setg(errp, "chardev: socket: no port given"); - return; - } - - backend->type =3D CHARDEV_BACKEND_KIND_SOCKET; - sock =3D backend->u.socket.data =3D g_new0(ChardevSocket, 1); - qemu_chr_parse_common(opts, qapi_ChardevSocket_base(sock)); - - sock->has_nodelay =3D qemu_opt_get(opts, "delay"); - sock->nodelay =3D !qemu_opt_get_bool(opts, "delay", true); - /* - * We have different default to QMP for 'server', hence - * we can't just check for existence of 'server' - */ - sock->has_server =3D true; - sock->server =3D qemu_opt_get_bool(opts, "server", false); - sock->has_telnet =3D qemu_opt_get(opts, "telnet"); - sock->telnet =3D qemu_opt_get_bool(opts, "telnet", false); - sock->has_tn3270 =3D qemu_opt_get(opts, "tn3270"); - sock->tn3270 =3D qemu_opt_get_bool(opts, "tn3270", false); - sock->has_websocket =3D qemu_opt_get(opts, "websocket"); - sock->websocket =3D qemu_opt_get_bool(opts, "websocket", false); - /* - * We have different default to QMP for 'wait' when 'server' - * is set, hence we can't just check for existence of 'wait' - */ - sock->has_wait =3D qemu_opt_find(opts, "wait") || sock->server; - sock->wait =3D qemu_opt_get_bool(opts, "wait", true); - sock->has_reconnect =3D qemu_opt_find(opts, "reconnect"); - sock->reconnect =3D qemu_opt_get_number(opts, "reconnect", 0); - sock->has_tls_creds =3D qemu_opt_get(opts, "tls-creds"); - sock->tls_creds =3D g_strdup(qemu_opt_get(opts, "tls-creds")); - sock->has_tls_authz =3D qemu_opt_get(opts, "tls-authz"); - sock->tls_authz =3D g_strdup(qemu_opt_get(opts, "tls-authz")); - - addr =3D g_new0(SocketAddressLegacy, 1); - if (path) { - UnixSocketAddress *q_unix; - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - q_unix =3D addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - q_unix->path =3D g_strdup(path); -#ifdef CONFIG_LINUX - q_unix->has_tight =3D true; - q_unix->tight =3D tight; - q_unix->has_abstract =3D true; - q_unix->abstract =3D abstract; -#endif - } else if (host) { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - addr->u.inet.data =3D g_new(InetSocketAddress, 1); - *addr->u.inet.data =3D (InetSocketAddress) { - .host =3D g_strdup(host), - .port =3D g_strdup(port), - .has_to =3D qemu_opt_get(opts, "to"), - .to =3D qemu_opt_get_number(opts, "to", 0), - .has_ipv4 =3D qemu_opt_get(opts, "ipv4"), - .ipv4 =3D qemu_opt_get_bool(opts, "ipv4", 0), - .has_ipv6 =3D qemu_opt_get(opts, "ipv6"), - .ipv6 =3D qemu_opt_get_bool(opts, "ipv6", 0), - }; - } else if (fd) { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_FD; - addr->u.fd.data =3D g_new(String, 1); - addr->u.fd.data->str =3D g_strdup(fd); - } else { - g_assert_not_reached(); - } - sock->addr =3D addr; -} - static void qemu_chr_translate_socket(QDict *args) { const char *path =3D qdict_get_try_str(args, "path"); @@ -1557,7 +1466,6 @@ static void char_socket_class_init(ObjectClass *oc, v= oid *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_socket; cc->translate_legacy_options =3D qemu_chr_translate_socket; cc->open =3D qmp_chardev_open_socket; cc->chr_wait_connected =3D tcp_chr_wait_connected; diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c index 403da308c9..74e2b25e9b 100644 --- a/chardev/char-stdio.c +++ b/chardev/char-stdio.c @@ -117,23 +117,10 @@ static void qemu_chr_open_stdio(Chardev *chr, } #endif =20 -static void qemu_chr_parse_stdio(QemuOpts *opts, ChardevBackend *backend, - Error **errp) -{ - ChardevStdio *stdio; - - backend->type =3D CHARDEV_BACKEND_KIND_STDIO; - stdio =3D backend->u.stdio.data =3D g_new0(ChardevStdio, 1); - qemu_chr_parse_common(opts, qapi_ChardevStdio_base(stdio)); - stdio->has_signal =3D true; - stdio->signal =3D qemu_opt_get_bool(opts, "signal", true); -} - static void char_stdio_class_init(ObjectClass *oc, void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_stdio; #ifndef _WIN32 cc->open =3D qemu_chr_open_stdio; cc->chr_set_echo =3D qemu_chr_set_echo_stdio; diff --git a/chardev/char-udp.c b/chardev/char-udp.c index 61752b1c51..1543fbca0c 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -133,65 +133,6 @@ static void char_udp_finalize(Object *obj) qemu_chr_be_event(chr, CHR_EVENT_CLOSED); } =20 -static void qemu_chr_parse_udp(QemuOpts *opts, ChardevBackend *backend, - Error **errp) -{ - const char *host =3D qemu_opt_get(opts, "host"); - const char *port =3D qemu_opt_get(opts, "port"); - const char *localaddr =3D qemu_opt_get(opts, "localaddr"); - const char *localport =3D qemu_opt_get(opts, "localport"); - bool has_local =3D false; - SocketAddressLegacy *addr; - ChardevUdp *udp; - - backend->type =3D CHARDEV_BACKEND_KIND_UDP; - if (host =3D=3D NULL || strlen(host) =3D=3D 0) { - host =3D "localhost"; - } - if (port =3D=3D NULL || strlen(port) =3D=3D 0) { - error_setg(errp, "chardev: udp: remote port not specified"); - return; - } - if (localport =3D=3D NULL || strlen(localport) =3D=3D 0) { - localport =3D "0"; - } else { - has_local =3D true; - } - if (localaddr =3D=3D NULL || strlen(localaddr) =3D=3D 0) { - localaddr =3D ""; - } else { - has_local =3D true; - } - - udp =3D backend->u.udp.data =3D g_new0(ChardevUdp, 1); - qemu_chr_parse_common(opts, qapi_ChardevUdp_base(udp)); - - addr =3D g_new0(SocketAddressLegacy, 1); - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - addr->u.inet.data =3D g_new(InetSocketAddress, 1); - *addr->u.inet.data =3D (InetSocketAddress) { - .host =3D g_strdup(host), - .port =3D g_strdup(port), - .has_ipv4 =3D qemu_opt_get(opts, "ipv4"), - .ipv4 =3D qemu_opt_get_bool(opts, "ipv4", 0), - .has_ipv6 =3D qemu_opt_get(opts, "ipv6"), - .ipv6 =3D qemu_opt_get_bool(opts, "ipv6", 0), - }; - udp->remote =3D addr; - - if (has_local) { - udp->has_local =3D true; - addr =3D g_new0(SocketAddressLegacy, 1); - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - addr->u.inet.data =3D g_new(InetSocketAddress, 1); - *addr->u.inet.data =3D (InetSocketAddress) { - .host =3D g_strdup(localaddr), - .port =3D g_strdup(localport), - }; - udp->local =3D addr; - } -} - static void qemu_chr_translate_udp(QDict *args) { QDict *remote; @@ -256,7 +197,6 @@ static void char_udp_class_init(ObjectClass *oc, void *= data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_udp; cc->translate_legacy_options =3D qemu_chr_translate_udp; cc->open =3D qmp_chardev_open_udp; cc->chr_write =3D udp_chr_write; diff --git a/chardev/char.c b/chardev/char.c index c3cfd473b4..a26fe5555e 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -497,17 +497,6 @@ fail: return NULL; } =20 -void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend) -{ - const char *logfile =3D qemu_opt_get(opts, "logfile"); - - backend->has_logfile =3D logfile !=3D NULL; - backend->logfile =3D g_strdup(logfile); - - backend->has_logappend =3D true; - backend->logappend =3D qemu_opt_get_bool(opts, "logappend", false); -} - static const ChardevClass *char_get_class(const char *driver, Error **errp) { ObjectClass *oc; diff --git a/chardev/spice.c b/chardev/spice.c index 1104426e3a..c87bd7e18e 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -317,38 +317,6 @@ static void qemu_chr_open_spice_port(Chardev *chr, vmc_register_interface(s); } =20 -static void qemu_chr_parse_spice_vmc(QemuOpts *opts, ChardevBackend *backe= nd, - Error **errp) -{ - const char *name =3D qemu_opt_get(opts, "name"); - ChardevSpiceChannel *spicevmc; - - if (name =3D=3D NULL) { - error_setg(errp, "chardev: spice channel: no name given"); - return; - } - backend->type =3D CHARDEV_BACKEND_KIND_SPICEVMC; - spicevmc =3D backend->u.spicevmc.data =3D g_new0(ChardevSpiceChannel, = 1); - qemu_chr_parse_common(opts, qapi_ChardevSpiceChannel_base(spicevmc)); - spicevmc->type =3D g_strdup(name); -} - -static void qemu_chr_parse_spice_port(QemuOpts *opts, ChardevBackend *back= end, - Error **errp) -{ - const char *name =3D qemu_opt_get(opts, "name"); - ChardevSpicePort *spiceport; - - if (name =3D=3D NULL) { - error_setg(errp, "chardev: spice port: no name given"); - return; - } - backend->type =3D CHARDEV_BACKEND_KIND_SPICEPORT; - spiceport =3D backend->u.spiceport.data =3D g_new0(ChardevSpicePort, 1= ); - qemu_chr_parse_common(opts, qapi_ChardevSpicePort_base(spiceport)); - spiceport->fqdn =3D g_strdup(name); -} - static void char_spice_class_init(ObjectClass *oc, void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); @@ -371,7 +339,6 @@ static void char_spicevmc_class_init(ObjectClass *oc, v= oid *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_spice_vmc; cc->open =3D qemu_chr_open_spice_vmc; cc->chr_set_fe_open =3D spice_vmc_set_fe_open; } @@ -386,7 +353,6 @@ static void char_spiceport_class_init(ObjectClass *oc, = void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_spice_port; cc->open =3D qemu_chr_open_spice_port; cc->chr_set_fe_open =3D spice_port_set_fe_open; } diff --git a/ui/console.c b/ui/console.c index e8e59707d3..7d8c1d1306 100644 --- a/ui/console.c +++ b/ui/console.c @@ -2386,40 +2386,6 @@ void qemu_display_help(void) } } =20 -void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend, Error **er= rp) -{ - int val; - ChardevVC *vc; - - backend->type =3D CHARDEV_BACKEND_KIND_VC; - vc =3D backend->u.vc.data =3D g_new0(ChardevVC, 1); - qemu_chr_parse_common(opts, qapi_ChardevVC_base(vc)); - - val =3D qemu_opt_get_number(opts, "width", 0); - if (val !=3D 0) { - vc->has_width =3D true; - vc->width =3D val; - } - - val =3D qemu_opt_get_number(opts, "height", 0); - if (val !=3D 0) { - vc->has_height =3D true; - vc->height =3D val; - } - - val =3D qemu_opt_get_number(opts, "cols", 0); - if (val !=3D 0) { - vc->has_cols =3D true; - vc->cols =3D val; - } - - val =3D qemu_opt_get_number(opts, "rows", 0); - if (val !=3D 0) { - vc->has_rows =3D true; - vc->rows =3D val; - } -} - static const TypeInfo qemu_console_info =3D { .name =3D TYPE_QEMU_CONSOLE, .parent =3D TYPE_OBJECT, @@ -2431,7 +2397,6 @@ static void char_vc_class_init(ObjectClass *oc, void = *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_vc; cc->open =3D vc_chr_open; cc->chr_write =3D vc_chr_write; cc->chr_set_echo =3D vc_chr_set_echo; diff --git a/ui/gtk.c b/ui/gtk.c index a752aa22be..7a5702c28b 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1738,7 +1738,6 @@ static void char_gd_vc_class_init(ObjectClass *oc, vo= id *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_vc; cc->open =3D gd_vc_open; cc->chr_write =3D gd_vc_chr_write; cc->chr_set_echo =3D gd_vc_chr_set_echo; diff --git a/ui/spice-app.c b/ui/spice-app.c index 026124ef56..f3418111fb 100644 --- a/ui/spice-app.c +++ b/ui/spice-app.c @@ -101,7 +101,6 @@ static void char_vc_class_init(ObjectClass *oc, void *d= ata) =20 vc->parent_open =3D cc->open; =20 - cc->parse =3D qemu_chr_parse_vc; cc->open =3D vc_chr_open; cc->chr_set_echo =3D vc_chr_set_echo; } --=20 2.28.0