From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813059; cv=none; d=zohomail.com; s=zohoarc; b=RtCaPMdZoC9xTyekVIQiDEiHvvxLA9KHjmPBZrtO7s614hOn1TUOLL0owrrUaaIXDtThHAxcm1lsRLLlHf8fMNgrLNU8siVJQv0/ouSRRM38sg6ZgELQEvDFGdJBa8bWa2OxslrXO0y15PyGboyjF6E6xKQ+HGTwCzjM2hfM8b8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813059; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LGj9xk/Pm83KB03G6LVj5ElLZzoxkSGN+CQtNgApbDQ=; b=lS9moo9bE0q4VQuWYRenW4XefNRJ2ecUd/Qnt9iPXNmePlB6625BX27lFcu0GleSMQRUlaCI/LUEnRhqFckLA1n7Ud224vvpAPuW82wKnZ1oI9/EbldgGJ+i2XW2SJ0/9y8UirEdkJvu80DL+ikIuaPWHJj3WW2f6Rw2CalzGTw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813059536240.22097565188426; Wed, 11 Feb 2026 04:30:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9MT-0007H6-6s; Wed, 11 Feb 2026 07:30:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9MR-0007Gv-8c for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:30:27 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9MP-0000BL-5f for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:30:26 -0500 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-65-AMhWbVJWNvKZZaJjRa3M1w-1; Wed, 11 Feb 2026 07:30:20 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 54D9918003FC; Wed, 11 Feb 2026 12:30:18 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A0C611956056; Wed, 11 Feb 2026 12:30:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813023; 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=LGj9xk/Pm83KB03G6LVj5ElLZzoxkSGN+CQtNgApbDQ=; b=NTzxXaF/dqhF7rO7lTRBGTdc9cQth5htbc9b25uTkkiVJhpeTL2nTW2KZzjv1IIThXuK25 Djcmaosh72zv+ctf47a+xu8CDYy2OGhB9eid5ybLygVDPWN+CyBLDho531zQVSludb7s+Z 78UxVU6uBZ/rGb8/iuq4aFHezlSYjy4= X-MC-Unique: AMhWbVJWNvKZZaJjRa3M1w-1 X-Mimecast-MFC-AGG-ID: AMhWbVJWNvKZZaJjRa3M1w_1770813018 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Eric K Subject: [PULL 01/14] char-udp: Fix initial backend open status Date: Wed, 11 Feb 2026 16:29:48 +0400 Message-ID: <20260211123007.3569932-2-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813061031158500 From: Eric K This patch removes the `*be_opened =3D false` override for the UDP chardev backend. Since UDP is connectionless it never sends a `CHR_EVENT_OPENED` so it is never marked open. This causes some frontends (e.g. virtio-serial) to never perform any operations on the socket. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2993 Signed-off-by: Eric K Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20251208225849.705554-1-erickra@cs.utexas.edu> --- chardev/char-udp.c | 2 -- tests/unit/test-char.c | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/chardev/char-udp.c b/chardev/char-udp.c index 572fab0ad13..1025f577a0d 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -215,8 +215,6 @@ static void qmp_chardev_open_udp(Chardev *chr, g_free(name); =20 s->ioc =3D QIO_CHANNEL(sioc); - /* be isn't opened until we get a connection */ - *be_opened =3D false; } =20 static void char_udp_class_init(ObjectClass *oc, const void *data) diff --git a/tests/unit/test-char.c b/tests/unit/test-char.c index 8a98e42cad0..2869c4e09df 100644 --- a/tests/unit/test-char.c +++ b/tests/unit/test-char.c @@ -1012,6 +1012,8 @@ static void char_udp_test_internal(Chardev *reuse_chr= , int sock) qemu_chr_fe_init(fe, chr, &error_abort); } =20 + g_assert(chr->be_open); + d.chr =3D chr; qemu_chr_fe_set_handlers(fe, socket_can_read_hello, socket_read_hello, NULL, NULL, &d, NULL, true); --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813055; cv=none; d=zohomail.com; s=zohoarc; b=oKWcVeaDfwBA7HwcMyBJTO4kXitByv5yfbruSE463ajI2HIeIGLvDWQ1ITo0H/3Y+KVkZeFZqCEl7rfyAYmMv7gseA/IviO/m+OOEz5tpYpHBZaqgOjyz5wIIAyAv5O6p5RW5kyzP5w54zdQElJXBSRSVlMyIsWYNpa6uhVc0jc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813055; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cGBq4qMkI/q12TmIhq+tbmp2Snz+Rz/20mUay39k8ag=; b=Nps8FlY6Y2fkM6vs0bf+UsjwjlC0valOBP3BTvoj9XkW4RqWtX5dLB2dZc5N+OJeaRiPSJffCF6ruw2dCpU46KjVsuov4XdkifaXl6dxPNSLAO7JYX8TiEtq5r/Y6YR5Gz8PRSz0nO0LoJzI71nTrvFylBKrcKPeApc/hSW2g28= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770813055381543.1209598995126; Wed, 11 Feb 2026 04:30:55 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1227447.1533852 (Exim 4.92) (envelope-from ) id 1vq9MU-0002Ib-T8; Wed, 11 Feb 2026 12:30:30 +0000 Received: by outflank-mailman (output) from mailman id 1227447.1533852; Wed, 11 Feb 2026 12:30:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vq9MU-0002IL-PM; Wed, 11 Feb 2026 12:30:30 +0000 Received: by outflank-mailman (input) for mailman id 1227447; Wed, 11 Feb 2026 12:30:29 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vq9MT-0001nh-Kb for xen-devel@lists.xenproject.org; Wed, 11 Feb 2026 12:30:29 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 721b9526-0745-11f1-b162-2bf370ae4941; Wed, 11 Feb 2026 13:30:28 +0100 (CET) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-372-KX-bclq4MP2GmkzEZbJ6MA-1; Wed, 11 Feb 2026 07:30:25 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C3A5D180025C; Wed, 11 Feb 2026 12:30:23 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4D1A3180066F; Wed, 11 Feb 2026 12:30:21 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 721b9526-0745-11f1-b162-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813027; 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=cGBq4qMkI/q12TmIhq+tbmp2Snz+Rz/20mUay39k8ag=; b=FHRdi0ClHZ5J9lxznEJoELYW/3/R3fJlQzdKwCiQyQm253TS1bCuWG6gRA1vkxspbg9lce IIcGyIc8jIQSuhvpuVLNzVe0UcCZBEAiJU01S63h9JFL7a3/jexGU2LFGqBv3TUFMs0nID RYJJOwuWZCZqYB2cGFgBOp2I0p/mwMQ= X-MC-Unique: KX-bclq4MP2GmkzEZbJ6MA-1 X-Mimecast-MFC-AGG-ID: KX-bclq4MP2GmkzEZbJ6MA_1770813024 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 02/14] ui/spice: Require spice-server >= 0.15.0 Date: Wed, 11 Feb 2026 16:29:49 +0400 Message-ID: <20260211123007.3569932-3-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-MFC-PROC-ID: VoCalRhe8zsb_DYcXXzNBMoSURMpIyTnQ_Lqv3Pf_68_1770813024 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813058466158500 From: Vladimir Sementsov-Ogievskiy For major distributions we have now: Debian 13: 0.15.2 Ubuntu 22.04: 0.15.0 RHEL-9/CentOS Stream 9: SPICE is removed Fedora 42: 0.15.1 OpenSUSE Leap 15.4: 0.15.0 Time to update the dependancy in QEMU and drop almost all SPICE_SERVER_VERSION checks. Suggested-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-2-vsementsov@yandex-team.ru> --- meson.build | 2 +- include/ui/qemu-spice.h | 4 ---- chardev/spice.c | 6 ------ hw/display/qxl.c | 11 ++--------- ui/spice-display.c | 8 ++------ 5 files changed, 5 insertions(+), 26 deletions(-) diff --git a/meson.build b/meson.build index 2d114e90184..9c12e0db601 100644 --- a/meson.build +++ b/meson.build @@ -1320,7 +1320,7 @@ if get_option('spice') \ .require(pixman.found(), error_message: 'cannot enable SPICE if pixman is not= available') \ .allowed() - spice =3D dependency('spice-server', version: '>=3D0.14.0', + spice =3D dependency('spice-server', version: '>=3D0.15.0', required: get_option('spice'), method: 'pkg-config') endif diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h index b7d493742c4..8e5e6b2a744 100644 --- a/include/ui/qemu-spice.h +++ b/include/ui/qemu-spice.h @@ -34,11 +34,7 @@ int qemu_spice_add_display_interface(QXLInstance *qxlin,= QemuConsole *con); int qemu_spice_migrate_info(const char *hostname, int port, int tls_port, const char *subject); =20 -#if SPICE_SERVER_VERSION >=3D 0x000f00 /* release 0.15.0 */ #define SPICE_HAS_ATTACHED_WORKER 1 -#else -#define SPICE_HAS_ATTACHED_WORKER 0 -#endif =20 #else /* CONFIG_SPICE */ =20 diff --git a/chardev/spice.c b/chardev/spice.c index db53b49da26..39b79d60fb4 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -278,12 +278,6 @@ static void qemu_chr_open_spice_vmc(Chardev *chr, } =20 *be_opened =3D false; -#if SPICE_SERVER_VERSION < 0x000e02 - /* Spice < 0.14.2 doesn't explicitly open smartcard chardev */ - if (strcmp(type, "smartcard") =3D=3D 0) { - *be_opened =3D true; - } -#endif chr_open(chr, type); } =20 diff --git a/hw/display/qxl.c b/hw/display/qxl.c index f29b736722c..fbba02113f7 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -261,11 +261,6 @@ static void qxl_spice_monitors_config_async(PCIQXLDevi= ce *qxl, int replay) QXL_COOKIE_TYPE_POST_LOAD_MONITORS_CONFIG, 0)); } else { -#if SPICE_SERVER_VERSION < 0x000e02 /* release 0.14.2 */ - if (qxl->max_outputs) { - spice_qxl_set_max_monitors(&qxl->ssd.qxl, qxl->max_outputs); - } -#endif qxl->guest_monitors_config =3D qxl->ram->monitors_config; spice_qxl_monitors_config_async(&qxl->ssd.qxl, qxl->ram->monitors_config, @@ -2109,6 +2104,8 @@ static void qxl_realize_common(PCIQXLDevice *qxl, Err= or **errp) uint8_t* config =3D qxl->pci.config; uint32_t pci_device_rev; uint32_t io_size; + Error *err =3D NULL; + char device_address[256] =3D ""; =20 qemu_spice_display_init_common(&qxl->ssd); qxl->mode =3D QXL_MODE_UNDEFINED; @@ -2208,9 +2205,6 @@ static void qxl_realize_common(PCIQXLDevice *qxl, Err= or **errp) return; } =20 -#if SPICE_SERVER_VERSION >=3D 0x000e02 /* release 0.14.2 */ - Error *err =3D NULL; - char device_address[256] =3D ""; if (qemu_console_fill_device_address(qxl->vga.con, device_address, sizeof(device_add= ress), &err)) { @@ -2221,7 +2215,6 @@ static void qxl_realize_common(PCIQXLDevice *qxl, Err= or **errp) } else { error_report_err(err); } -#endif =20 qemu_add_vm_change_state_handler(qxl_vm_change_state_handler, qxl); =20 diff --git a/ui/spice-display.c b/ui/spice-display.c index db71e866f89..f2304bb0ce2 100644 --- a/ui/spice-display.c +++ b/ui/spice-display.c @@ -689,13 +689,11 @@ static int interface_client_monitors_config(QXLInstan= ce *sin, if (mc->num_of_monitors > head) { info.width =3D mc->monitors[head].width; info.height =3D mc->monitors[head].height; -#if SPICE_SERVER_VERSION >=3D 0x000e04 /* release 0.14.4 */ if (mc->flags & VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE) { VDAgentMonitorMM *mm =3D (void *)&mc->monitors[mc->num_of_moni= tors]; info.width_mm =3D mm[head].width; info.height_mm =3D mm[head].height; } -#endif } =20 trace_qemu_spice_ui_info(ssd->qxl.id, info.width, info.height); @@ -1393,6 +1391,8 @@ static const DisplayGLCtxOps gl_ctx_ops =3D { static void qemu_spice_display_init_one(QemuConsole *con) { SimpleSpiceDisplay *ssd =3D g_new0(SimpleSpiceDisplay, 1); + Error *err =3D NULL; + char device_address[256] =3D ""; =20 qemu_spice_display_init_common(ssd); =20 @@ -1414,9 +1414,6 @@ static void qemu_spice_display_init_one(QemuConsole *= con) ssd->qxl.base.sif =3D &dpy_interface.base; qemu_spice_add_display_interface(&ssd->qxl, con); =20 -#if SPICE_SERVER_VERSION >=3D 0x000e02 /* release 0.14.2 */ - Error *err =3D NULL; - char device_address[256] =3D ""; if (qemu_console_fill_device_address(con, device_address, 256, &err)) { spice_qxl_set_device_info(&ssd->qxl, device_address, @@ -1425,7 +1422,6 @@ static void qemu_spice_display_init_one(QemuConsole *= con) } else { error_report_err(err); } -#endif =20 qemu_spice_create_host_memslot(ssd); =20 --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813053; cv=none; d=zohomail.com; s=zohoarc; b=bFDPpiwj7jE+a+wKup1pJ+cDVcHF+NfaiqM9DZ+iYhHXGBzhyfFxZGC6t0sILrZnaPqM3XhChgA+FLJvrqNOqP9A+YG24SJQTWm816nnX6xM4RtEqt4oy/0ERpUMErPntR82G3Z5ylYwBK4E6vX0zEfgsige/FxnjLvsxUZPjQM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813053; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=y3G7pz3JVMFqRvpJ05R+kBwpJ0ObSQg4ak0FyKLiTE8=; b=HfveCF+cMj6mRwjq/V+vj6phNsrpCYwsSC0iqtm+aNBKUCGfHWPMVTS+P7HIj+Oqw3kXqWYvqumsCejzP2nRw73Fqxiw3g7esABcPx+opCZb9kAFzKUvdkA05eYzLBZ2ExnlsLb0vDI05XChePXeOFiqo7Ns3kYQUAW4ayZNSoY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1770813053054718.3405242534423; Wed, 11 Feb 2026 04:30:53 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1227451.1533862 (Exim 4.92) (envelope-from ) id 1vq9Md-0002gf-C8; Wed, 11 Feb 2026 12:30:39 +0000 Received: by outflank-mailman (output) from mailman id 1227451.1533862; Wed, 11 Feb 2026 12:30:39 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vq9Md-0002gX-8R; Wed, 11 Feb 2026 12:30:39 +0000 Received: by outflank-mailman (input) for mailman id 1227451; Wed, 11 Feb 2026 12:30:37 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vq9Mb-00016c-U3 for xen-devel@lists.xenproject.org; Wed, 11 Feb 2026 12:30:37 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 76b4253e-0745-11f1-9ccf-f158ae23cfc8; Wed, 11 Feb 2026 13:30:36 +0100 (CET) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-480-CFV2PrjpPRWNUIY43HdbbQ-1; Wed, 11 Feb 2026 07:30:31 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A5ECE1800613; Wed, 11 Feb 2026 12:30:29 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B359B19560A3; Wed, 11 Feb 2026 12:30:27 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 76b4253e-0745-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813034; 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=y3G7pz3JVMFqRvpJ05R+kBwpJ0ObSQg4ak0FyKLiTE8=; b=VvDhOnybq1ZVO7LCm/vinOPqPmTxt6NdMM58lr/hzBR8YzbXk1ikiUKtkbYGS7A09Deo66 gkzek2z33VU0y1uKu9+a+8Jj//hNylZxdB1V4KnxCBNMnLBNG3n4Vn1yADBSK0hx7rS2RC JqgpBUniIz8QCcaLM7Z7M0FZPQ8Iju4= X-MC-Unique: CFV2PrjpPRWNUIY43HdbbQ-1 X-Mimecast-MFC-AGG-ID: CFV2PrjpPRWNUIY43HdbbQ_1770813030 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 03/14] ui/spice: drop SPICE_HAS_ATTACHED_WORKER macro Date: Wed, 11 Feb 2026 16:29:50 +0400 Message-ID: <20260211123007.3569932-4-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-MFC-PROC-ID: -q37x9RyfgxChA-RHDLxik9_cW0YOs0SZRY4Sl8UhGs_1770813030 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813054436158501 From: Vladimir Sementsov-Ogievskiy Since previous commit it is always 1. Let's just drop it. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-3-vsementsov@yandex-team.ru> --- include/ui/qemu-spice.h | 2 -- hw/display/qxl.c | 12 ------------ ui/spice-display.c | 11 ----------- 3 files changed, 25 deletions(-) diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h index 8e5e6b2a744..111a09ceca3 100644 --- a/include/ui/qemu-spice.h +++ b/include/ui/qemu-spice.h @@ -34,8 +34,6 @@ int qemu_spice_add_display_interface(QXLInstance *qxlin, = QemuConsole *con); int qemu_spice_migrate_info(const char *hostname, int port, int tls_port, const char *subject); =20 -#define SPICE_HAS_ATTACHED_WORKER 1 - #else /* CONFIG_SPICE */ =20 #include "qemu/error-report.h" diff --git a/hw/display/qxl.c b/hw/display/qxl.c index fbba02113f7..0551b38230b 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -530,13 +530,6 @@ static void interface_attached_worker(QXLInstance *sin) trace_qxl_interface_attach_worker(qxl->id); } =20 -#if !(SPICE_HAS_ATTACHED_WORKER) -static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worke= r) -{ - interface_attached_worker(sin); -} -#endif - static void interface_set_compression_level(QXLInstance *sin, int level) { PCIQXLDevice *qxl =3D container_of(sin, PCIQXLDevice, ssd.qxl); @@ -1131,12 +1124,7 @@ static const QXLInterface qxl_interface =3D { .base.major_version =3D SPICE_INTERFACE_QXL_MAJOR, .base.minor_version =3D SPICE_INTERFACE_QXL_MINOR, =20 -#if SPICE_HAS_ATTACHED_WORKER .attached_worker =3D interface_attached_worker, -#else - .attache_worker =3D interface_attach_worker, -#endif - .set_compression_level =3D interface_set_compression_level, .get_init_info =3D interface_get_init_info, =20 diff --git a/ui/spice-display.c b/ui/spice-display.c index f2304bb0ce2..28399f8a817 100644 --- a/ui/spice-display.c +++ b/ui/spice-display.c @@ -507,17 +507,10 @@ void qemu_spice_display_refresh(SimpleSpiceDisplay *s= sd) =20 /* spice display interface callbacks */ =20 -#if SPICE_HAS_ATTACHED_WORKER static void interface_attached_worker(QXLInstance *sin) { /* nothing to do */ } -#else -static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worke= r) -{ - /* nothing to do */ -} -#endif =20 static void interface_set_compression_level(QXLInstance *sin, int level) { @@ -707,11 +700,7 @@ static const QXLInterface dpy_interface =3D { .base.major_version =3D SPICE_INTERFACE_QXL_MAJOR, .base.minor_version =3D SPICE_INTERFACE_QXL_MINOR, =20 -#if SPICE_HAS_ATTACHED_WORKER .attached_worker =3D interface_attached_worker, -#else - .attache_worker =3D interface_attach_worker, -#endif .set_compression_level =3D interface_set_compression_level, .get_init_info =3D interface_get_init_info, =20 --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813069; cv=none; d=zohomail.com; s=zohoarc; b=AFJ8LQgzdm8R+mhz9cZ0wvxumXWts4w2nFLJ6u2+zhU/mFypAk8IcjdnGpZxQ+dT+gPoKoXvUw7Oxce5J/Vh2yjU3lVLEAEQwRR0Bn9EcCFsz2GVSyzMxI5EcKOVLxIvdhO89XsFllnGuwoKmQ67YaDNuei3Ts09Di0NBaKxCn0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813069; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=K/EYv/wOL3z8Ia2Topl38iZZVA139L2JWNE4O9fOHA4=; b=XmtxnrCmRbssjk9LdkvAPRj1bfYgCJpqi7r3bhpOEp+GBuLSiXdSXyTffORPXGKwNEtyTUL6kWwzymBwoe2UoFdESEZwj7hGo7nDbJPxvEVioKMKjp4TyTu46BD9sgo5nPkfJMfkkZS+OFPhDifzfBX66M94GFZp0+TAuahhlCs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177081306943267.68392264390468; Wed, 11 Feb 2026 04:31:09 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1227458.1533872 (Exim 4.92) (envelope-from ) id 1vq9Mk-0003DU-Lp; Wed, 11 Feb 2026 12:30:46 +0000 Received: by outflank-mailman (output) from mailman id 1227458.1533872; Wed, 11 Feb 2026 12:30:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vq9Mk-0003DI-HG; Wed, 11 Feb 2026 12:30:46 +0000 Received: by outflank-mailman (input) for mailman id 1227458; Wed, 11 Feb 2026 12:30:44 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vq9Mi-0001nh-N2 for xen-devel@lists.xenproject.org; Wed, 11 Feb 2026 12:30:44 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 7b48442a-0745-11f1-b162-2bf370ae4941; Wed, 11 Feb 2026 13:30:43 +0100 (CET) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-152-9f3tISB3O9Sfw3hm94Ys_Q-1; Wed, 11 Feb 2026 07:30:39 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5F12018002EB; Wed, 11 Feb 2026 12:30:37 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5B8511800464; Wed, 11 Feb 2026 12:30:33 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 7b48442a-0745-11f1-b162-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813042; 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=K/EYv/wOL3z8Ia2Topl38iZZVA139L2JWNE4O9fOHA4=; b=h1LkKvU6O5Dl6QgcxGWy36IBF0xZpwGByIcoRBQ1qNRyXAiYGndE0JJvr4MbPeQFN05slB 95x/MKx7H9wK12ReGbgMoPiUVGoItgGPonq8jZAL+eyvIQiQV6TRWOsrQ0eUitr6UxPhl4 4q4CxaIdpMdT+lg389Hl+BMM2fZ4iQk= X-MC-Unique: 9f3tISB3O9Sfw3hm94Ys_Q-1 X-Mimecast-MFC-AGG-ID: 9f3tISB3O9Sfw3hm94Ys_Q_1770813037 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 04/14] chardev: ChardevClass: consistent naming for handlers Date: Wed, 11 Feb 2026 16:29:51 +0400 Message-ID: <20260211123007.3569932-5-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-MFC-PROC-ID: y2z_rBTN_of1Yo9f7bEablhaXyvOchsCj89_W0_kFBo_1770813037 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813072118154100 From: Vladimir Sementsov-Ogievskiy Most handlers have name prefixed with "chr_". That's a good practice which helps to grep them. Convert the rest: .parse, .open, get/set_msgfds. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-4-vsementsov@yandex-team.ru> --- include/chardev/char.h | 8 ++++---- chardev/baum.c | 2 +- chardev/char-console.c | 2 +- chardev/char-fe.c | 8 ++++---- chardev/char-file.c | 4 ++-- chardev/char-hub.c | 4 ++-- chardev/char-mux.c | 4 ++-- chardev/char-null.c | 2 +- chardev/char-parallel.c | 4 ++-- chardev/char-pipe.c | 4 ++-- chardev/char-pty.c | 4 ++-- chardev/char-ringbuf.c | 4 ++-- chardev/char-serial.c | 4 ++-- chardev/char-socket.c | 8 ++++---- chardev/char-stdio.c | 4 ++-- chardev/char-udp.c | 4 ++-- chardev/char-win-stdio.c | 2 +- chardev/char.c | 8 ++++---- chardev/msmouse.c | 2 +- chardev/spice.c | 8 ++++---- chardev/wctablet.c | 2 +- gdbstub/system.c | 2 +- ui/console-vc.c | 4 ++-- ui/dbus-chardev.c | 8 ++++---- ui/dbus.c | 4 ++-- ui/gtk.c | 2 +- ui/spice-app.c | 6 +++--- ui/vdagent.c | 4 ++-- scripts/codeconverter/codeconverter/test_regexps.py | 2 +- 29 files changed, 62 insertions(+), 62 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index 192cad67d41..d33833b6c02 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -257,10 +257,10 @@ struct ChardevClass { bool supports_yank; =20 /* parse command line options and populate QAPI @backend */ - void (*parse)(QemuOpts *opts, ChardevBackend *backend, Error **errp); + void (*chr_parse)(QemuOpts *opts, ChardevBackend *backend, Error **err= p); =20 /* called after construction, open/starts the backend */ - void (*open)(Chardev *chr, ChardevBackend *backend, + void (*chr_open)(Chardev *chr, ChardevBackend *backend, bool *be_opened, Error **errp); =20 /* write buf to the backend */ @@ -282,10 +282,10 @@ struct ChardevClass { int (*chr_ioctl)(Chardev *s, int cmd, void *arg); =20 /* get ancillary-received fds during last read */ - int (*get_msgfds)(Chardev *s, int* fds, int num); + int (*chr_get_msgfds)(Chardev *s, int* fds, int num); =20 /* set ancillary fds to be sent with next write */ - int (*set_msgfds)(Chardev *s, int *fds, int num); + int (*chr_set_msgfds)(Chardev *s, int *fds, int num); =20 /* accept the given fd */ int (*chr_add_client)(Chardev *chr, int fd); diff --git a/chardev/baum.c b/chardev/baum.c index 157f8b95195..75e41965c11 100644 --- a/chardev/baum.c +++ b/chardev/baum.c @@ -676,7 +676,7 @@ static void char_braille_class_init(ObjectClass *oc, co= nst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->open =3D baum_chr_open; + cc->chr_open =3D baum_chr_open; cc->chr_write =3D baum_chr_write; cc->chr_accept_input =3D baum_chr_accept_input; } diff --git a/chardev/char-console.c b/chardev/char-console.c index 7e1bf642ebd..9a2e012d53f 100644 --- a/chardev/char-console.c +++ b/chardev/char-console.c @@ -38,7 +38,7 @@ static void char_console_class_init(ObjectClass *oc, cons= t void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->open =3D qemu_chr_open_win_con; + cc->chr_open =3D qemu_chr_open_win_con; } =20 static const TypeInfo char_console_type_info =3D { diff --git a/chardev/char-fe.c b/chardev/char-fe.c index 34b83fc1c4a..a44f2673731 100644 --- a/chardev/char-fe.c +++ b/chardev/char-fe.c @@ -130,8 +130,8 @@ int qemu_chr_fe_get_msgfds(CharFrontend *c, int *fds, i= nt len) return -1; } =20 - return CHARDEV_GET_CLASS(s)->get_msgfds ? - CHARDEV_GET_CLASS(s)->get_msgfds(s, fds, len) : -1; + return CHARDEV_GET_CLASS(s)->chr_get_msgfds ? + CHARDEV_GET_CLASS(s)->chr_get_msgfds(s, fds, len) : -1; } =20 int qemu_chr_fe_set_msgfds(CharFrontend *c, int *fds, int num) @@ -142,8 +142,8 @@ int qemu_chr_fe_set_msgfds(CharFrontend *c, int *fds, i= nt num) return -1; } =20 - return CHARDEV_GET_CLASS(s)->set_msgfds ? - CHARDEV_GET_CLASS(s)->set_msgfds(s, fds, num) : -1; + return CHARDEV_GET_CLASS(s)->chr_set_msgfds ? + CHARDEV_GET_CLASS(s)->chr_set_msgfds(s, fds, num) : -1; } =20 void qemu_chr_fe_accept_input(CharFrontend *c) diff --git a/chardev/char-file.c b/chardev/char-file.c index 1f7adf592ff..1e293e7054a 100644 --- a/chardev/char-file.c +++ b/chardev/char-file.c @@ -133,8 +133,8 @@ static void char_file_class_init(ObjectClass *oc, const= void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_file_out; - cc->open =3D qmp_chardev_open_file; + cc->chr_parse =3D qemu_chr_parse_file_out; + cc->chr_open =3D qmp_chardev_open_file; } =20 static const TypeInfo char_file_type_info =3D { diff --git a/chardev/char-hub.c b/chardev/char-hub.c index d0967c22336..082baa84ab8 100644 --- a/chardev/char-hub.c +++ b/chardev/char-hub.c @@ -276,8 +276,8 @@ static void char_hub_class_init(ObjectClass *oc, const = void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_hub; - cc->open =3D qemu_chr_open_hub; + cc->chr_parse =3D qemu_chr_parse_hub; + cc->chr_open =3D qemu_chr_open_hub; cc->chr_write =3D hub_chr_write; cc->chr_add_watch =3D hub_chr_add_watch; /* We handle events from backends only */ diff --git a/chardev/char-mux.c b/chardev/char-mux.c index db9e89f441d..c82c2da56dd 100644 --- a/chardev/char-mux.c +++ b/chardev/char-mux.c @@ -451,8 +451,8 @@ static void char_mux_class_init(ObjectClass *oc, const = 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_parse =3D qemu_chr_parse_mux; + cc->chr_open =3D qemu_chr_open_mux; cc->chr_write =3D mux_chr_write; cc->chr_accept_input =3D mux_chr_accept_input; cc->chr_add_watch =3D mux_chr_add_watch; diff --git a/chardev/char-null.c b/chardev/char-null.c index 89cb85da792..674603b3807 100644 --- a/chardev/char-null.c +++ b/chardev/char-null.c @@ -38,7 +38,7 @@ static void char_null_class_init(ObjectClass *oc, const v= oid *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->open =3D null_chr_open; + cc->chr_open =3D null_chr_open; } =20 static const TypeInfo char_null_type_info =3D { diff --git a/chardev/char-parallel.c b/chardev/char-parallel.c index 62a44b2f969..a0839b784b8 100644 --- a/chardev/char-parallel.c +++ b/chardev/char-parallel.c @@ -274,8 +274,8 @@ static void char_parallel_class_init(ObjectClass *oc, c= onst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_parallel; - cc->open =3D qmp_chardev_open_parallel; + cc->chr_parse =3D qemu_chr_parse_parallel; + cc->chr_open =3D qmp_chardev_open_parallel; cc->chr_ioctl =3D pp_ioctl; } =20 diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c index e9f3bb82904..a2cd322efe6 100644 --- a/chardev/char-pipe.c +++ b/chardev/char-pipe.c @@ -182,8 +182,8 @@ static void char_pipe_class_init(ObjectClass *oc, const= void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_pipe; - cc->open =3D qemu_chr_open_pipe; + cc->chr_parse =3D qemu_chr_parse_pipe; + cc->chr_open =3D qemu_chr_open_pipe; } =20 static const TypeInfo char_pipe_type_info =3D { diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 652b0bd9e73..1a15082b025 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -394,8 +394,8 @@ static void char_pty_class_init(ObjectClass *oc, const = void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D char_pty_parse; - cc->open =3D char_pty_open; + cc->chr_parse =3D char_pty_parse; + cc->chr_open =3D char_pty_open; cc->chr_write =3D char_pty_chr_write; cc->chr_update_read_handler =3D pty_chr_update_read_handler; cc->chr_add_watch =3D pty_chr_add_watch; diff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c index 98aadb6acfb..6d5ba667bb4 100644 --- a/chardev/char-ringbuf.c +++ b/chardev/char-ringbuf.c @@ -227,8 +227,8 @@ static void char_ringbuf_class_init(ObjectClass *oc, co= nst 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_parse =3D qemu_chr_parse_ringbuf; + cc->chr_open =3D qemu_chr_open_ringbuf; cc->chr_write =3D ringbuf_chr_write; } =20 diff --git a/chardev/char-serial.c b/chardev/char-serial.c index 4c6ca713eb1..97ed7adf736 100644 --- a/chardev/char-serial.c +++ b/chardev/char-serial.c @@ -305,8 +305,8 @@ static void char_serial_class_init(ObjectClass *oc, con= st void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_serial; - cc->open =3D qmp_chardev_open_serial; + cc->chr_parse =3D qemu_chr_parse_serial; + cc->chr_open =3D qmp_chardev_open_serial; #ifndef _WIN32 cc->chr_ioctl =3D tty_serial_ioctl; #endif diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 3f45dd2ecdc..149a6d8cc15 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -1585,14 +1585,14 @@ static void char_socket_class_init(ObjectClass *oc,= const void *data) =20 cc->supports_yank =3D true; =20 - cc->parse =3D qemu_chr_parse_socket; - cc->open =3D qmp_chardev_open_socket; + cc->chr_parse =3D qemu_chr_parse_socket; + cc->chr_open =3D qmp_chardev_open_socket; cc->chr_wait_connected =3D tcp_chr_wait_connected; cc->chr_write =3D tcp_chr_write; cc->chr_sync_read =3D tcp_chr_sync_read; cc->chr_disconnect =3D tcp_chr_disconnect; - cc->get_msgfds =3D tcp_get_msgfds; - cc->set_msgfds =3D tcp_set_msgfds; + cc->chr_get_msgfds =3D tcp_get_msgfds; + cc->chr_set_msgfds =3D tcp_set_msgfds; cc->chr_add_client =3D tcp_chr_add_client; cc->chr_add_watch =3D tcp_chr_add_watch; cc->chr_update_read_handler =3D tcp_chr_update_read_handler; diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c index 2568164a108..b7e9af1388f 100644 --- a/chardev/char-stdio.c +++ b/chardev/char-stdio.c @@ -142,9 +142,9 @@ static void char_stdio_class_init(ObjectClass *oc, cons= t void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_stdio; + cc->chr_parse =3D qemu_chr_parse_stdio; #ifndef _WIN32 - cc->open =3D qemu_chr_open_stdio; + cc->chr_open =3D qemu_chr_open_stdio; cc->chr_set_echo =3D qemu_chr_set_echo_stdio; #endif } diff --git a/chardev/char-udp.c b/chardev/char-udp.c index 1025f577a0d..71b8d8b37df 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -221,8 +221,8 @@ static void char_udp_class_init(ObjectClass *oc, const = void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D qemu_chr_parse_udp; - cc->open =3D qmp_chardev_open_udp; + cc->chr_parse =3D qemu_chr_parse_udp; + cc->chr_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-win-stdio.c b/chardev/char-win-stdio.c index fb802a00b13..26e67aef1ca 100644 --- a/chardev/char-win-stdio.c +++ b/chardev/char-win-stdio.c @@ -260,7 +260,7 @@ static void char_win_stdio_class_init(ObjectClass *oc, = const void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->open =3D qemu_chr_open_stdio; + cc->chr_open =3D qemu_chr_open_stdio; cc->chr_write =3D win_stdio_write; cc->chr_set_echo =3D qemu_chr_set_echo_win_stdio; } diff --git a/chardev/char.c b/chardev/char.c index 3e432195a5a..df37d1df161 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -267,8 +267,8 @@ static void qemu_char_open(Chardev *chr, ChardevBackend= *backend, } } =20 - if (cc->open) { - cc->open(chr, backend, be_opened, errp); + if (cc->chr_open) { + cc->chr_open(chr, backend, be_opened, errp); } } =20 @@ -604,8 +604,8 @@ ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Err= or **errp) backend =3D g_new0(ChardevBackend, 1); backend->type =3D CHARDEV_BACKEND_KIND_NULL; =20 - if (cc->parse) { - cc->parse(opts, backend, &local_err); + if (cc->chr_parse) { + cc->chr_parse(opts, backend, &local_err); if (local_err) { error_propagate(errp, local_err); qapi_free_ChardevBackend(backend); diff --git a/chardev/msmouse.c b/chardev/msmouse.c index 1a55755d397..84050164893 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -271,7 +271,7 @@ static void char_msmouse_class_init(ObjectClass *oc, co= nst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->open =3D msmouse_chr_open; + cc->chr_open =3D msmouse_chr_open; cc->chr_write =3D msmouse_chr_write; cc->chr_accept_input =3D msmouse_chr_accept_input; cc->chr_ioctl =3D msmouse_ioctl; diff --git a/chardev/spice.c b/chardev/spice.c index 39b79d60fb4..61caa6d0efe 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -364,8 +364,8 @@ static void char_spicevmc_class_init(ObjectClass *oc, c= onst void *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_parse =3D qemu_chr_parse_spice_vmc; + cc->chr_open =3D qemu_chr_open_spice_vmc; cc->chr_set_fe_open =3D spice_vmc_set_fe_open; } =20 @@ -380,8 +380,8 @@ static void char_spiceport_class_init(ObjectClass *oc, = const 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_parse =3D qemu_chr_parse_spice_port; + cc->chr_open =3D qemu_chr_open_spice_port; cc->chr_set_fe_open =3D spice_port_set_fe_open; } =20 diff --git a/chardev/wctablet.c b/chardev/wctablet.c index 0dc6ef08f59..8285a56e7bc 100644 --- a/chardev/wctablet.c +++ b/chardev/wctablet.c @@ -346,7 +346,7 @@ static void wctablet_chr_class_init(ObjectClass *oc, co= nst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->open =3D wctablet_chr_open; + cc->chr_open =3D wctablet_chr_open; cc->chr_write =3D wctablet_chr_write; cc->chr_ioctl =3D wctablet_chr_ioctl; cc->chr_accept_input =3D wctablet_chr_accept_input; diff --git a/gdbstub/system.c b/gdbstub/system.c index 8ec8b7ea336..29b9e16a908 100644 --- a/gdbstub/system.c +++ b/gdbstub/system.c @@ -244,7 +244,7 @@ static void char_gdb_class_init(ObjectClass *oc, const = void *data) ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 cc->internal =3D true; - cc->open =3D gdb_monitor_open; + cc->chr_open =3D gdb_monitor_open; cc->chr_write =3D gdb_monitor_write; } =20 diff --git a/ui/console-vc.c b/ui/console-vc.c index 830842064d6..931068d43ab 100644 --- a/ui/console-vc.c +++ b/ui/console-vc.c @@ -1185,8 +1185,8 @@ static void char_vc_class_init(ObjectClass *oc, const= void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D vc_chr_parse; - cc->open =3D vc_chr_open; + cc->chr_parse =3D vc_chr_parse; + cc->chr_open =3D vc_chr_open; cc->chr_write =3D vc_chr_write; cc->chr_accept_input =3D vc_chr_accept_input; cc->chr_set_echo =3D vc_chr_set_echo; diff --git a/ui/dbus-chardev.c b/ui/dbus-chardev.c index d05dddaf81b..f6c426e2209 100644 --- a/ui/dbus-chardev.c +++ b/ui/dbus-chardev.c @@ -205,12 +205,12 @@ dbus_chr_open(Chardev *chr, ChardevBackend *backend, opts =3D qemu_opts_create(qemu_find_opts("chardev"), NULL, 0, &error_a= bort); qemu_opt_set(opts, "server", "on", &error_abort); qemu_opt_set(opts, "wait", "off", &error_abort); - CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->parse( + CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_parse( opts, be, errp); if (*errp) { return; } - CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->open( + CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_open( chr, be, be_opened, errp); } =20 @@ -274,8 +274,8 @@ char_dbus_class_init(ObjectClass *oc, const void *data) DBusChardevClass *klass =3D DBUS_CHARDEV_CLASS(oc); ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D dbus_chr_parse; - cc->open =3D dbus_chr_open; + cc->chr_parse =3D dbus_chr_parse; + cc->chr_open =3D dbus_chr_open; cc->chr_set_fe_open =3D dbus_chr_set_fe_open; cc->chr_set_echo =3D dbus_chr_set_echo; klass->parent_chr_be_event =3D cc->chr_be_event; diff --git a/ui/dbus.c b/ui/dbus.c index d2dff332585..31f6eb1189f 100644 --- a/ui/dbus.c +++ b/ui/dbus.c @@ -451,8 +451,8 @@ dbus_vc_class_init(ObjectClass *oc, const void *data) DBusVCClass *klass =3D DBUS_VC_CLASS(oc); ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - klass->parent_parse =3D cc->parse; - cc->parse =3D dbus_vc_parse; + klass->parent_parse =3D cc->chr_parse; + cc->chr_parse =3D dbus_vc_parse; } =20 static const TypeInfo dbus_vc_type_info =3D { diff --git a/ui/gtk.c b/ui/gtk.c index e83a3666258..6217e9552e3 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1985,7 +1985,7 @@ static void char_gd_vc_class_init(ObjectClass *oc, co= nst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->open =3D gd_vc_open; + cc->chr_open =3D gd_vc_open; cc->chr_write =3D gd_vc_chr_write; cc->chr_accept_input =3D gd_vc_chr_accept_input; cc->chr_set_echo =3D gd_vc_chr_set_echo; diff --git a/ui/spice-app.c b/ui/spice-app.c index 24f78f305c4..ea0b62a22b7 100644 --- a/ui/spice-app.c +++ b/ui/spice-app.c @@ -106,10 +106,10 @@ static void char_vc_class_init(ObjectClass *oc, const= void *data) VCChardevClass *vc =3D CHARDEV_VC_CLASS(oc); ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - vc->parent_open =3D cc->open; + vc->parent_open =3D cc->chr_open; =20 - cc->parse =3D vc_chr_parse; - cc->open =3D vc_chr_open; + cc->chr_parse =3D vc_chr_parse; + cc->chr_open =3D vc_chr_open; cc->chr_set_echo =3D vc_chr_set_echo; } =20 diff --git a/ui/vdagent.c b/ui/vdagent.c index 142a3691ac9..090771ab171 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -924,8 +924,8 @@ static void vdagent_chr_class_init(ObjectClass *oc, con= st void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->parse =3D vdagent_chr_parse; - cc->open =3D vdagent_chr_open; + cc->chr_parse =3D vdagent_chr_parse; + cc->chr_open =3D vdagent_chr_open; cc->chr_write =3D vdagent_chr_write; cc->chr_set_fe_open =3D vdagent_chr_set_fe_open; cc->chr_accept_input =3D vdagent_chr_accept_input; diff --git a/scripts/codeconverter/codeconverter/test_regexps.py b/scripts/= codeconverter/codeconverter/test_regexps.py index b00e9ef15b2..d3a5cc3ad38 100644 --- a/scripts/codeconverter/codeconverter/test_regexps.py +++ b/scripts/codeconverter/codeconverter/test_regexps.py @@ -57,7 +57,7 @@ def fullmatch(regexp, s): =20 print(RE_TYPEINFO_START) assert re.search(RE_TYPEINFO_START, r''' - cc->open =3D qmp_chardev_open_file; + cc->chr_open =3D qmp_chardev_open_file; } =20 static const TypeInfo char_file_type_info =3D { --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813069; cv=none; d=zohomail.com; s=zohoarc; b=c7JyZG5RYjxp1kWJWhzqy5PkbjcBsvfFdiozkp9y8FTNBK7yArKuQ5Y7HtsicmhZOneWxG31Ow+f/RCVeqG2TyAni9piefOEk/DfAdwPzFdwWyb516WqO9z49y9vnPxIT/6GUHTT/MdibxAEmZ1E04XITOeSx92lq3fVIHIHZ1A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813069; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6UIUvqKAVHmKYMD5HBaon7fRgToMxwvi5ehZIc//TG8=; b=ZlKPOqshkAqGDNoHd8dPUzAG5FlrwDlTVimbB5DzJDZlrqTtH6tIyDEWnbAD9vkS/AmnnV2BtLt8s/aFgoyVhRE3rqYK48aRr5R5oEsIczg62L1tv8B9cjdlMeNcaiht+EdsZ2sU7hlQdj87n2L/gSWbRLIGtyWVaw3ABie4u+g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177081306958412.136919257651925; Wed, 11 Feb 2026 04:31:09 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1227468.1533882 (Exim 4.92) (envelope-from ) id 1vq9Mp-0003cE-30; Wed, 11 Feb 2026 12:30:51 +0000 Received: by outflank-mailman (output) from mailman id 1227468.1533882; Wed, 11 Feb 2026 12:30:51 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vq9Mo-0003bz-VV; Wed, 11 Feb 2026 12:30:50 +0000 Received: by outflank-mailman (input) for mailman id 1227468; Wed, 11 Feb 2026 12:30:49 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vq9Mn-0001nh-Gb for xen-devel@lists.xenproject.org; Wed, 11 Feb 2026 12:30:49 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 7e056fb0-0745-11f1-b162-2bf370ae4941; Wed, 11 Feb 2026 13:30:48 +0100 (CET) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-696-zHKrClWFPBOizOCdyanCjA-1; Wed, 11 Feb 2026 07:30:45 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 97CA3180034A; Wed, 11 Feb 2026 12:30:43 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0AAFE1800671; Wed, 11 Feb 2026 12:30:41 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 7e056fb0-0745-11f1-b162-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813047; 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=6UIUvqKAVHmKYMD5HBaon7fRgToMxwvi5ehZIc//TG8=; b=FzfoXfEnlO8opgcPShRvpqQ9Q2xMUOGOz8X3Me3sYIU4/128sQyAagN+gxiiYhZjB6ZsPD ALu6lmxxUbjQb5MF/Yuxzd4KnR+Ys87HP66bwcFWvuvFBAkNxgrn6FBv/HOhTL7slhplEH NvLg2T/VOHOj4SrPYG/KQRLckZ8hisg= X-MC-Unique: zHKrClWFPBOizOCdyanCjA-1 X-Mimecast-MFC-AGG-ID: zHKrClWFPBOizOCdyanCjA_1770813044 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 05/14] chardev: consistent naming for ChardevClass handlers implementations Date: Wed, 11 Feb 2026 16:29:52 +0400 Message-ID: <20260211123007.3569932-6-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-MFC-PROC-ID: 0BcZdT8t_rvHGJUwOwzpeb2gQKhqSJiEo8pQEgtOM00_1770813044 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813084261158500 From: Vladimir Sementsov-Ogievskiy Most handlers implementations has name like {unit_name}_{handler_name}, which is usual and well-recognized pattern. Convert the rest (especially with useless qemu_ prefixes and misleading qmp_ prefixes) to the common pattern. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-5-vsementsov@yandex-team.ru> --- chardev/char-console.c | 10 ++--- chardev/char-file.c | 16 ++++---- chardev/char-hub.c | 15 ++++--- chardev/char-mux.c | 15 ++++--- chardev/char-parallel.c | 28 ++++++------- chardev/char-pipe.c | 24 +++++------ chardev/char-pty.c | 19 +++++---- chardev/char-ringbuf.c | 16 ++++---- chardev/char-serial.c | 28 ++++++------- chardev/char-socket.c | 25 ++++++------ chardev/char-stdio.c | 22 +++++----- chardev/char-udp.c | 15 ++++--- chardev/char-win-stdio.c | 20 +++++----- chardev/msmouse.c | 4 +- chardev/spice.c | 40 +++++++++---------- gdbstub/system.c | 8 ++-- ui/gtk.c | 4 +- .../codeconverter/test_regexps.py | 2 +- 18 files changed, 153 insertions(+), 158 deletions(-) diff --git a/chardev/char-console.c b/chardev/char-console.c index 9a2e012d53f..f3ef1a7748c 100644 --- a/chardev/char-console.c +++ b/chardev/char-console.c @@ -26,10 +26,10 @@ #include "chardev/char-win.h" #include "qemu/module.h" =20 -static void qemu_chr_open_win_con(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void console_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true); } @@ -38,7 +38,7 @@ static void char_console_class_init(ObjectClass *oc, cons= t void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_open =3D qemu_chr_open_win_con; + cc->chr_open =3D console_chr_open; } =20 static const TypeInfo char_console_type_info =3D { diff --git a/chardev/char-file.c b/chardev/char-file.c index 1e293e7054a..568600bb7c4 100644 --- a/chardev/char-file.c +++ b/chardev/char-file.c @@ -34,10 +34,10 @@ #include "chardev/char-fd.h" #endif =20 -static void qmp_chardev_open_file(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void file_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevFile *file =3D backend->u.file.data; #ifdef _WIN32 @@ -102,8 +102,8 @@ static void qmp_chardev_open_file(Chardev *chr, #endif } =20 -static void qemu_chr_parse_file_out(QemuOpts *opts, ChardevBackend *backen= d, - Error **errp) +static void file_chr_parse(QemuOpts *opts, ChardevBackend *backend, + Error **errp) { const char *path =3D qemu_opt_get(opts, "path"); const char *inpath =3D qemu_opt_get(opts, "input-path"); @@ -133,8 +133,8 @@ static void char_file_class_init(ObjectClass *oc, const= void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_file_out; - cc->chr_open =3D qmp_chardev_open_file; + cc->chr_parse =3D file_chr_parse; + cc->chr_open =3D file_chr_open; } =20 static const TypeInfo char_file_type_info =3D { diff --git a/chardev/char-hub.c b/chardev/char-hub.c index 082baa84ab8..11556dfa72b 100644 --- a/chardev/char-hub.c +++ b/chardev/char-hub.c @@ -203,10 +203,10 @@ static void hub_chr_update_read_handlers(Chardev *chr) } } =20 -static void qemu_chr_open_hub(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void hub_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevHub *hub =3D backend->u.hub.data; HubChardev *d =3D HUB_CHARDEV(chr); @@ -245,8 +245,7 @@ static void qemu_chr_open_hub(Chardev *chr, *be_opened =3D false; } =20 -static void qemu_chr_parse_hub(QemuOpts *opts, ChardevBackend *backend, - Error **errp) +static void hub_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) { ChardevHub *hub; strList **tail; @@ -276,8 +275,8 @@ static void char_hub_class_init(ObjectClass *oc, const = void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_hub; - cc->chr_open =3D qemu_chr_open_hub; + cc->chr_parse =3D hub_chr_parse; + cc->chr_open =3D hub_chr_open; cc->chr_write =3D hub_chr_write; cc->chr_add_watch =3D hub_chr_add_watch; /* We handle events from backends only */ diff --git a/chardev/char-mux.c b/chardev/char-mux.c index c82c2da56dd..f38d66b21f1 100644 --- a/chardev/char-mux.c +++ b/chardev/char-mux.c @@ -361,10 +361,10 @@ void mux_set_focus(Chardev *chr, unsigned int focus) mux_chr_send_event(d, d->focus, CHR_EVENT_MUX_IN); } =20 -static void qemu_chr_open_mux(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void mux_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevMux *mux =3D backend->u.mux.data; Chardev *drv; @@ -384,8 +384,7 @@ 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) +static void mux_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) { const char *chardev =3D qemu_opt_get(opts, "chardev"); ChardevMux *mux; @@ -451,8 +450,8 @@ static void char_mux_class_init(ObjectClass *oc, const = void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_mux; - cc->chr_open =3D qemu_chr_open_mux; + cc->chr_parse =3D mux_chr_parse; + cc->chr_open =3D mux_chr_open; cc->chr_write =3D mux_chr_write; cc->chr_accept_input =3D mux_chr_accept_input; cc->chr_add_watch =3D mux_chr_add_watch; diff --git a/chardev/char-parallel.c b/chardev/char-parallel.c index a0839b784b8..1be1ef46292 100644 --- a/chardev/char-parallel.c +++ b/chardev/char-parallel.c @@ -70,7 +70,7 @@ static int pp_hw_mode(ParallelChardev *s, uint16_t mode) return 1; } =20 -static int pp_ioctl(Chardev *chr, int cmd, void *arg) +static int parallel_chr_ioctl(Chardev *chr, int cmd, void *arg) { ParallelChardev *drv =3D PARALLEL_CHARDEV(chr); int fd =3D drv->fd; @@ -157,7 +157,7 @@ static int pp_ioctl(Chardev *chr, int cmd, void *arg) return 0; } =20 -static void qemu_chr_open_pp_fd(Chardev *chr, +static void parallel_chr_open_fd(Chardev *chr, int fd, bool *be_opened, Error **errp) @@ -185,7 +185,7 @@ typedef struct { #define PARALLEL_CHARDEV(obj) \ OBJECT_CHECK(ParallelChardev, (obj), TYPE_CHARDEV_PARALLEL) =20 -static int pp_ioctl(Chardev *chr, int cmd, void *arg) +static int parallel_chr_ioctl(Chardev *chr, int cmd, void *arg) { ParallelChardev *drv =3D PARALLEL_CHARDEV(chr); uint8_t b; @@ -227,7 +227,7 @@ static int pp_ioctl(Chardev *chr, int cmd, void *arg) return 0; } =20 -static void qemu_chr_open_pp_fd(Chardev *chr, +static void parallel_chr_open_fd(Chardev *chr, int fd, bool *be_opened, Error **errp) @@ -239,10 +239,10 @@ static void qemu_chr_open_pp_fd(Chardev *chr, #endif =20 #ifdef HAVE_CHARDEV_PARALLEL -static void qmp_chardev_open_parallel(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void parallel_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevHostdev *parallel =3D backend->u.parallel.data; int fd; @@ -251,11 +251,11 @@ static void qmp_chardev_open_parallel(Chardev *chr, if (fd < 0) { return; } - qemu_chr_open_pp_fd(chr, fd, be_opened, errp); + parallel_chr_open_fd(chr, fd, be_opened, errp); } =20 -static void qemu_chr_parse_parallel(QemuOpts *opts, ChardevBackend *backen= d, - Error **errp) +static void parallel_chr_parse(QemuOpts *opts, ChardevBackend *backend, + Error **errp) { const char *device =3D qemu_opt_get(opts, "path"); ChardevHostdev *parallel; @@ -274,9 +274,9 @@ static void char_parallel_class_init(ObjectClass *oc, c= onst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_parallel; - cc->chr_open =3D qmp_chardev_open_parallel; - cc->chr_ioctl =3D pp_ioctl; + cc->chr_parse =3D parallel_chr_parse; + cc->chr_open =3D parallel_chr_open; + cc->chr_ioctl =3D parallel_chr_ioctl; } =20 static void char_parallel_finalize(Object *obj) diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c index a2cd322efe6..e84492d42b6 100644 --- a/chardev/char-pipe.c +++ b/chardev/char-pipe.c @@ -103,10 +103,10 @@ static int win_chr_pipe_init(Chardev *chr, const char= *filename, return -1; } =20 -static void qemu_chr_open_pipe(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void pipe_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevHostdev *opts =3D backend->u.pipe.data; const char *filename =3D opts->device; @@ -118,10 +118,10 @@ static void qemu_chr_open_pipe(Chardev *chr, =20 #else =20 -static void qemu_chr_open_pipe(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void pipe_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevHostdev *opts =3D backend->u.pipe.data; int fd_in, fd_out; @@ -162,8 +162,8 @@ static void qemu_chr_open_pipe(Chardev *chr, =20 #endif /* !_WIN32 */ =20 -static void qemu_chr_parse_pipe(QemuOpts *opts, ChardevBackend *backend, - Error **errp) +static void pipe_chr_parse(QemuOpts *opts, ChardevBackend *backend, + Error **errp) { const char *device =3D qemu_opt_get(opts, "path"); ChardevHostdev *dev; @@ -182,8 +182,8 @@ static void char_pipe_class_init(ObjectClass *oc, const= void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_pipe; - cc->chr_open =3D qemu_chr_open_pipe; + cc->chr_parse =3D pipe_chr_parse; + cc->chr_open =3D pipe_chr_open; } =20 static const TypeInfo char_pipe_type_info =3D { diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 1a15082b025..909ab01f5f2 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -105,7 +105,7 @@ static void pty_chr_update_read_handler(Chardev *chr) } } =20 -static int char_pty_chr_write(Chardev *chr, const uint8_t *buf, int len) +static int pty_chr_write(Chardev *chr, const uint8_t *buf, int len) { PtyChardev *s =3D PTY_CHARDEV(chr); GPollFD pfd; @@ -331,10 +331,10 @@ static int qemu_openpty_raw(int *aslave, char *pty_na= me) return amaster; } =20 -static void char_pty_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void pty_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { PtyChardev *s; int master_fd, slave_fd; @@ -378,8 +378,7 @@ static void char_pty_open(Chardev *chr, } } =20 -static void char_pty_parse(QemuOpts *opts, ChardevBackend *backend, - Error **errp) +static void pty_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) { const char *path =3D qemu_opt_get(opts, "path"); ChardevPty *pty; @@ -394,9 +393,9 @@ static void char_pty_class_init(ObjectClass *oc, const = void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D char_pty_parse; - cc->chr_open =3D char_pty_open; - cc->chr_write =3D char_pty_chr_write; + cc->chr_parse =3D pty_chr_parse; + cc->chr_open =3D pty_chr_open; + cc->chr_write =3D pty_chr_write; cc->chr_update_read_handler =3D pty_chr_update_read_handler; cc->chr_add_watch =3D pty_chr_add_watch; } diff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c index 6d5ba667bb4..19652fe2b3a 100644 --- a/chardev/char-ringbuf.c +++ b/chardev/char-ringbuf.c @@ -92,10 +92,10 @@ static void char_ringbuf_finalize(Object *obj) g_free(d->cbuf); } =20 -static void qemu_chr_open_ringbuf(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void ringbuf_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevRingbuf *opts =3D backend->u.ringbuf.data; RingBufChardev *d =3D RINGBUF_CHARDEV(chr); @@ -206,8 +206,8 @@ char *qmp_ringbuf_read(const char *device, int64_t size, return data; } =20 -static void qemu_chr_parse_ringbuf(QemuOpts *opts, ChardevBackend *backend, - Error **errp) +static void ringbuf_chr_parse(QemuOpts *opts, ChardevBackend *backend, + Error **errp) { int val; ChardevRingbuf *ringbuf; @@ -227,8 +227,8 @@ static void char_ringbuf_class_init(ObjectClass *oc, co= nst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_ringbuf; - cc->chr_open =3D qemu_chr_open_ringbuf; + cc->chr_parse =3D ringbuf_chr_parse; + cc->chr_open =3D ringbuf_chr_open; cc->chr_write =3D ringbuf_chr_write; } =20 diff --git a/chardev/char-serial.c b/chardev/char-serial.c index 97ed7adf736..54c2b3935cf 100644 --- a/chardev/char-serial.c +++ b/chardev/char-serial.c @@ -41,10 +41,10 @@ =20 #ifdef _WIN32 =20 -static void qmp_chardev_open_serial(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void serial_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevHostdev *serial =3D backend->u.serial.data; =20 @@ -176,7 +176,7 @@ static void tty_serial_init(int fd, int speed, tcsetattr(fd, TCSANOW, &tty); } =20 -static int tty_serial_ioctl(Chardev *chr, int cmd, void *arg) +static int serial_chr_ioctl(Chardev *chr, int cmd, void *arg) { FDChardev *s =3D FD_CHARDEV(chr); QIOChannelFile *fioc =3D QIO_CHANNEL_FILE(s->ioc_in); @@ -258,10 +258,10 @@ static int tty_serial_ioctl(Chardev *chr, int cmd, vo= id *arg) return 0; } =20 -static void qmp_chardev_open_serial(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void serial_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevHostdev *serial =3D backend->u.serial.data; int fd; @@ -285,8 +285,8 @@ 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) +static void serial_chr_parse(QemuOpts *opts, ChardevBackend *backend, + Error **errp) { const char *device =3D qemu_opt_get(opts, "path"); ChardevHostdev *serial; @@ -305,10 +305,10 @@ static void char_serial_class_init(ObjectClass *oc, c= onst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_serial; - cc->chr_open =3D qmp_chardev_open_serial; + cc->chr_parse =3D serial_chr_parse; + cc->chr_open =3D serial_chr_open; #ifndef _WIN32 - cc->chr_ioctl =3D tty_serial_ioctl; + cc->chr_ioctl =3D serial_chr_ioctl; #endif } =20 diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 149a6d8cc15..a3203f2f97b 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -222,7 +222,7 @@ static void tcp_chr_process_IAC_bytes(Chardev *chr, *size =3D j; } =20 -static int tcp_get_msgfds(Chardev *chr, int *fds, int num) +static int tcp_chr_get_msgfds(Chardev *chr, int *fds, int num) { SocketChardev *s =3D SOCKET_CHARDEV(chr); =20 @@ -248,7 +248,7 @@ static int tcp_get_msgfds(Chardev *chr, int *fds, int n= um) return to_copy; } =20 -static int tcp_set_msgfds(Chardev *chr, int *fds, int num) +static int tcp_chr_set_msgfds(Chardev *chr, int *fds, int num) { SocketChardev *s =3D SOCKET_CHARDEV(chr); =20 @@ -367,7 +367,7 @@ static void tcp_chr_free_connection(Chardev *chr) =20 remove_hup_source(s); =20 - tcp_set_msgfds(chr, NULL, 0); + tcp_chr_set_msgfds(chr, NULL, 0); remove_fd_in_watch(chr); if (s->registered_yank && (s->state =3D=3D TCP_CHARDEV_STATE_CONNECTING @@ -1365,10 +1365,10 @@ static bool qmp_chardev_validate_socket(ChardevSock= et *sock, } =20 =20 -static void qmp_chardev_open_socket(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void tcp_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { SocketChardev *s =3D SOCKET_CHARDEV(chr); ChardevSocket *sock =3D backend->u.socket.data; @@ -1456,8 +1456,7 @@ static void qmp_chardev_open_socket(Chardev *chr, } } =20 -static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend, - Error **errp) +static void tcp_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) { const char *path =3D qemu_opt_get(opts, "path"); const char *host =3D qemu_opt_get(opts, "host"); @@ -1585,14 +1584,14 @@ static void char_socket_class_init(ObjectClass *oc,= const void *data) =20 cc->supports_yank =3D true; =20 - cc->chr_parse =3D qemu_chr_parse_socket; - cc->chr_open =3D qmp_chardev_open_socket; + cc->chr_parse =3D tcp_chr_parse; + cc->chr_open =3D tcp_chr_open; cc->chr_wait_connected =3D tcp_chr_wait_connected; cc->chr_write =3D tcp_chr_write; cc->chr_sync_read =3D tcp_chr_sync_read; cc->chr_disconnect =3D tcp_chr_disconnect; - cc->chr_get_msgfds =3D tcp_get_msgfds; - cc->chr_set_msgfds =3D tcp_set_msgfds; + cc->chr_get_msgfds =3D tcp_chr_get_msgfds; + cc->chr_set_msgfds =3D tcp_chr_set_msgfds; cc->chr_add_client =3D tcp_chr_add_client; cc->chr_add_watch =3D tcp_chr_add_watch; cc->chr_update_read_handler =3D tcp_chr_update_read_handler; diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c index b7e9af1388f..f0920a23faa 100644 --- a/chardev/char-stdio.c +++ b/chardev/char-stdio.c @@ -56,7 +56,7 @@ static void term_exit(void) } } =20 -static void qemu_chr_set_echo_stdio(Chardev *chr, bool echo) +static void stdio_chr_set_echo(Chardev *chr, bool echo) { struct termios tty; =20 @@ -82,13 +82,13 @@ static void qemu_chr_set_echo_stdio(Chardev *chr, bool = echo) static void term_stdio_handler(int sig) { /* restore echo after resume from suspend. */ - qemu_chr_set_echo_stdio(NULL, stdio_echo_state); + stdio_chr_set_echo(NULL, stdio_echo_state); } =20 -static void qemu_chr_open_stdio(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void stdio_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevStdio *opts =3D backend->u.stdio.data; struct sigaction act; @@ -122,11 +122,11 @@ static void qemu_chr_open_stdio(Chardev *chr, sigaction(SIGCONT, &act, NULL); =20 stdio_allow_signal =3D !opts->has_signal || opts->signal; - qemu_chr_set_echo_stdio(chr, false); + stdio_chr_set_echo(chr, false); } #endif =20 -static void qemu_chr_parse_stdio(QemuOpts *opts, ChardevBackend *backend, +static void stdio_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **errp) { ChardevStdio *stdio; @@ -142,10 +142,10 @@ static void char_stdio_class_init(ObjectClass *oc, co= nst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_stdio; + cc->chr_parse =3D stdio_chr_parse; #ifndef _WIN32 - cc->chr_open =3D qemu_chr_open_stdio; - cc->chr_set_echo =3D qemu_chr_set_echo_stdio; + cc->chr_open =3D stdio_chr_open; + cc->chr_set_echo =3D stdio_chr_set_echo; #endif } =20 diff --git a/chardev/char-udp.c b/chardev/char-udp.c index 71b8d8b37df..18f4322408a 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -131,8 +131,7 @@ 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) +static void udp_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) { const char *host =3D qemu_opt_get(opts, "host"); const char *port =3D qemu_opt_get(opts, "port"); @@ -189,10 +188,10 @@ static void qemu_chr_parse_udp(QemuOpts *opts, Charde= vBackend *backend, } } =20 -static void qmp_chardev_open_udp(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void upd_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevUdp *udp =3D backend->u.udp.data; SocketAddress *local_addr =3D socket_address_flatten(udp->local); @@ -221,8 +220,8 @@ static void char_udp_class_init(ObjectClass *oc, const = void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_udp; - cc->chr_open =3D qmp_chardev_open_udp; + cc->chr_parse =3D udp_chr_parse; + cc->chr_open =3D upd_chr_open; cc->chr_write =3D udp_chr_write; cc->chr_update_read_handler =3D udp_chr_update_read_handler; } diff --git a/chardev/char-win-stdio.c b/chardev/char-win-stdio.c index 26e67aef1ca..866f3a20398 100644 --- a/chardev/char-win-stdio.c +++ b/chardev/char-win-stdio.c @@ -128,7 +128,7 @@ static void win_stdio_thread_wait_func(void *opaque) SetEvent(stdio->hInputDoneEvent); } =20 -static void qemu_chr_set_echo_win_stdio(Chardev *chr, bool echo) +static void win_stiod_chr_set_echo(Chardev *chr, bool echo) { WinStdioChardev *stdio =3D WIN_STDIO_CHARDEV(chr); DWORD dwMode =3D 0; @@ -142,10 +142,10 @@ static void qemu_chr_set_echo_win_stdio(Chardev *chr,= bool echo) } } =20 -static void qemu_chr_open_stdio(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void win_stdio_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevStdio *opts =3D backend->u.stdio.data; bool stdio_allow_signal =3D !opts->has_signal || opts->signal; @@ -206,7 +206,7 @@ static void qemu_chr_open_stdio(Chardev *chr, =20 SetConsoleMode(stdio->hStdIn, dwMode); =20 - qemu_chr_set_echo_win_stdio(chr, false); + win_stiod_chr_set_echo(chr, false); =20 return; =20 @@ -237,7 +237,7 @@ static void char_win_stdio_finalize(Object *obj) } } =20 -static int win_stdio_write(Chardev *chr, const uint8_t *buf, int len) +static int win_stdio_chr_write(Chardev *chr, const uint8_t *buf, int len) { HANDLE hStdOut =3D GetStdHandle(STD_OUTPUT_HANDLE); DWORD dwSize; @@ -260,9 +260,9 @@ static void char_win_stdio_class_init(ObjectClass *oc, = const void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_open =3D qemu_chr_open_stdio; - cc->chr_write =3D win_stdio_write; - cc->chr_set_echo =3D qemu_chr_set_echo_win_stdio; + cc->chr_open =3D win_stdio_chr_open; + cc->chr_write =3D win_stdio_chr_write; + cc->chr_set_echo =3D win_stiod_chr_set_echo; } =20 static const TypeInfo char_win_stdio_type_info =3D { diff --git a/chardev/msmouse.c b/chardev/msmouse.c index 84050164893..d07cd998cb5 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -178,7 +178,7 @@ static const QemuInputHandler msmouse_handler =3D { .sync =3D msmouse_input_sync, }; =20 -static int msmouse_ioctl(Chardev *chr, int cmd, void *arg) +static int msmouse_chr_ioctl(Chardev *chr, int cmd, void *arg) { MouseChardev *mouse =3D MOUSE_CHARDEV(chr); int c, i, j; @@ -274,7 +274,7 @@ static void char_msmouse_class_init(ObjectClass *oc, co= nst void *data) cc->chr_open =3D msmouse_chr_open; cc->chr_write =3D msmouse_chr_write; cc->chr_accept_input =3D msmouse_chr_accept_input; - cc->chr_ioctl =3D msmouse_ioctl; + cc->chr_ioctl =3D msmouse_chr_ioctl; } =20 static const TypeInfo char_msmouse_type_info =3D { diff --git a/chardev/spice.c b/chardev/spice.c index 61caa6d0efe..3ea25706653 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -215,7 +215,7 @@ static void char_spice_finalize(Object *obj) g_free((char *)s->sin.portname); } =20 -static void spice_vmc_set_fe_open(struct Chardev *chr, int fe_open) +static void spice_vmc_chr_set_fe_open(struct Chardev *chr, int fe_open) { SpiceChardev *s =3D SPICE_CHARDEV(chr); if (fe_open) { @@ -225,7 +225,7 @@ static void spice_vmc_set_fe_open(struct Chardev *chr, = int fe_open) } } =20 -static void spice_port_set_fe_open(struct Chardev *chr, int fe_open) +static void spice_port_chr_set_fe_open(struct Chardev *chr, int fe_open) { SpiceChardev *s =3D SPICE_CHARDEV(chr); =20 @@ -251,10 +251,10 @@ static void chr_open(Chardev *chr, const char *subtyp= e) s->sin.subtype =3D g_strdup(subtype); } =20 -static void qemu_chr_open_spice_vmc(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void spice_vmc_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevSpiceChannel *spicevmc =3D backend->u.spicevmc.data; const char *type =3D spicevmc->type; @@ -281,10 +281,10 @@ static void qemu_chr_open_spice_vmc(Chardev *chr, chr_open(chr, type); } =20 -static void qemu_chr_open_spice_port(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void spice_port_chr_open(Chardev *chr, + ChardevBackend *backend, + bool *be_opened, + Error **errp) { ChardevSpicePort *spiceport =3D backend->u.spiceport.data; const char *name =3D spiceport->fqdn; @@ -309,8 +309,8 @@ 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) +static void spice_vmc_chr_parse(QemuOpts *opts, ChardevBackend *backend, + Error **errp) { const char *name =3D qemu_opt_get(opts, "name"); ChardevSpiceChannel *spicevmc; @@ -325,8 +325,8 @@ static void qemu_chr_parse_spice_vmc(QemuOpts *opts, Ch= ardevBackend *backend, spicevmc->type =3D g_strdup(name); } =20 -static void qemu_chr_parse_spice_port(QemuOpts *opts, ChardevBackend *back= end, - Error **errp) +static void spice_port_chr_parse(QemuOpts *opts, ChardevBackend *backend, + Error **errp) { const char *name =3D qemu_opt_get(opts, "name"); ChardevSpicePort *spiceport; @@ -364,9 +364,9 @@ static void char_spicevmc_class_init(ObjectClass *oc, c= onst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_spice_vmc; - cc->chr_open =3D qemu_chr_open_spice_vmc; - cc->chr_set_fe_open =3D spice_vmc_set_fe_open; + cc->chr_parse =3D spice_vmc_chr_parse; + cc->chr_open =3D spice_vmc_chr_open; + cc->chr_set_fe_open =3D spice_vmc_chr_set_fe_open; } =20 static const TypeInfo char_spicevmc_type_info =3D { @@ -380,9 +380,9 @@ static void char_spiceport_class_init(ObjectClass *oc, = const void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_parse =3D qemu_chr_parse_spice_port; - cc->chr_open =3D qemu_chr_open_spice_port; - cc->chr_set_fe_open =3D spice_port_set_fe_open; + cc->chr_parse =3D spice_port_chr_parse; + cc->chr_open =3D spice_port_chr_open; + cc->chr_set_fe_open =3D spice_port_chr_set_fe_open; } =20 static const TypeInfo char_spiceport_type_info =3D { diff --git a/gdbstub/system.c b/gdbstub/system.c index 29b9e16a908..e161b14485b 100644 --- a/gdbstub/system.c +++ b/gdbstub/system.c @@ -225,7 +225,7 @@ static void gdb_sigterm_handler(int signal) } #endif =20 -static int gdb_monitor_write(Chardev *chr, const uint8_t *buf, int len) +static int gdb_chr_write(Chardev *chr, const uint8_t *buf, int len) { g_autoptr(GString) hex_buf =3D g_string_new("O"); gdb_memtohex(hex_buf, buf, len); @@ -233,7 +233,7 @@ static int gdb_monitor_write(Chardev *chr, const uint8_= t *buf, int len) return len; } =20 -static void gdb_monitor_open(Chardev *chr, ChardevBackend *backend, +static void gdb_chr_open(Chardev *chr, ChardevBackend *backend, bool *be_opened, Error **errp) { *be_opened =3D false; @@ -244,8 +244,8 @@ static void char_gdb_class_init(ObjectClass *oc, const = void *data) ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 cc->internal =3D true; - cc->chr_open =3D gdb_monitor_open; - cc->chr_write =3D gdb_monitor_write; + cc->chr_open =3D gdb_chr_open; + cc->chr_write =3D gdb_chr_write; } =20 #define TYPE_CHARDEV_GDB "chardev-gdb" diff --git a/ui/gtk.c b/ui/gtk.c index 6217e9552e3..acf55cdfce2 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1963,7 +1963,7 @@ static void gd_vc_chr_set_echo(Chardev *chr, bool ech= o) =20 static int nb_vcs; static Chardev *vcs[MAX_VCS]; -static void gd_vc_open(Chardev *chr, +static void gd_vc_chr_open(Chardev *chr, ChardevBackend *backend, bool *be_opened, Error **errp) @@ -1985,7 +1985,7 @@ static void char_gd_vc_class_init(ObjectClass *oc, co= nst void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_open =3D gd_vc_open; + cc->chr_open =3D gd_vc_chr_open; cc->chr_write =3D gd_vc_chr_write; cc->chr_accept_input =3D gd_vc_chr_accept_input; cc->chr_set_echo =3D gd_vc_chr_set_echo; diff --git a/scripts/codeconverter/codeconverter/test_regexps.py b/scripts/= codeconverter/codeconverter/test_regexps.py index d3a5cc3ad38..2b9f5b80111 100644 --- a/scripts/codeconverter/codeconverter/test_regexps.py +++ b/scripts/codeconverter/codeconverter/test_regexps.py @@ -57,7 +57,7 @@ def fullmatch(regexp, s): =20 print(RE_TYPEINFO_START) assert re.search(RE_TYPEINFO_START, r''' - cc->chr_open =3D qmp_chardev_open_file; + cc->chr_open =3D file_chr_open; } =20 static const TypeInfo char_file_type_info =3D { --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813066; cv=none; d=zohomail.com; s=zohoarc; b=V1nmgaKAQpI6PCOc2qmLU2gi4WPBrDAYSBun7BCXyszgtf6zhzJA8ctIeIL+ZkKmbCHK8RT60P/pnAeKMqbdHLQIpToCQNg8Xe10zYBaAhbhnXMb8E+Ki48z8zcv6qhUTkxERapLh4UwYHFKBT4xKaVyDLCINHbIxoNDeuyl7Cc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813066; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ARe11uBwUQtZK+r/LyMwdLX8qnRbouC5icUkGH7AqSA=; b=A0wlXgKuCucjWrcl/ahFySPFcfczBtPM2bc/L7/rKBrC958kFUOKmWQeCWD4jnHSU75pnTFzi4eAN1LqkikGEeLPMrkZgRcP/0+QpTwA4U5O1bWF+C+Foshho43fIp+zLzBpFtV6NUWAIUInZq3TejDkzKIqwJdj+jJsZ4A7KgM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813066655896.3726854220082; Wed, 11 Feb 2026 04:31:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9Mw-00080b-LG; Wed, 11 Feb 2026 07:30:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9Mu-0007sW-VW for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:30:56 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9Mr-0000DT-Iu for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:30:56 -0500 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-210-8dzO44fAOkO8hgNBHIWcLA-1; Wed, 11 Feb 2026 07:30:51 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D574E18005BC; Wed, 11 Feb 2026 12:30:49 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4E1B21800465; Wed, 11 Feb 2026 12:30:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813052; 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=ARe11uBwUQtZK+r/LyMwdLX8qnRbouC5icUkGH7AqSA=; b=cFju0VgVIdmRA+A1D127y9UhK2cd9XECFqYaoPdSkbYqoZzXRPCCQbwenzow/1iqk2Ij82 R8IXgai9lHwi2JowP98rhg4GRzE7y96CX/wEWA0Rp4Iw6cf6e5YF0zqgoKMqdAeh7rhjbp BQ4FkJ1skz7Vx8/5Oc72afRcaiji4i0= X-MC-Unique: 8dzO44fAOkO8hgNBHIWcLA-1 X-Mimecast-MFC-AGG-ID: 8dzO44fAOkO8hgNBHIWcLA_1770813050 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 06/14] chardev: .chr_open(): drop be_opened parameter Date: Wed, 11 Feb 2026 16:29:53 +0400 Message-ID: <20260211123007.3569932-7-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 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=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813068183154100 From: Vladimir Sementsov-Ogievskiy The logic around the parameter is rather tricky. Let's instead explicitly send CHR_EVENT_OPENED in all backends where needed. Signed-off-by: Vladimir Sementsov-Ogievskiy [ Marc-Andr=C3=A9 - add CHR_EVENT_OPENED in udp_chr_open() ] Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-6-vsementsov@yandex-team.ru> --- include/chardev/char.h | 3 +-- chardev/baum.c | 7 +++---- chardev/char-console.c | 5 ++--- chardev/char-file.c | 7 +++---- chardev/char-hub.c | 11 +++++------ chardev/char-mux.c | 19 +++++++++++-------- chardev/char-null.c | 7 ++----- chardev/char-parallel.c | 15 ++++----------- chardev/char-pipe.c | 14 ++++++-------- chardev/char-pty.c | 6 +----- chardev/char-ringbuf.c | 3 ++- chardev/char-serial.c | 18 +++++++++--------- chardev/char-socket.c | 10 +++------- chardev/char-stdio.c | 7 +++---- chardev/char-udp.c | 6 ++---- chardev/char-win-stdio.c | 2 +- chardev/char.c | 11 +++-------- chardev/msmouse.c | 4 ++-- chardev/spice.c | 10 ++-------- chardev/wctablet.c | 5 ++--- gdbstub/system.c | 5 ++--- ui/console-vc.c | 7 ++----- ui/dbus-chardev.c | 6 ++---- ui/gtk.c | 9 +++------ ui/spice-app.c | 10 +++------- ui/vdagent.c | 3 +-- 26 files changed, 80 insertions(+), 130 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index d33833b6c02..aa42e01b8a3 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -260,8 +260,7 @@ struct ChardevClass { void (*chr_parse)(QemuOpts *opts, ChardevBackend *backend, Error **err= p); =20 /* called after construction, open/starts the backend */ - void (*chr_open)(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp); + void (*chr_open)(Chardev *chr, ChardevBackend *backend, Error **errp); =20 /* write buf to the backend */ int (*chr_write)(Chardev *s, const uint8_t *buf, int len); diff --git a/chardev/baum.c b/chardev/baum.c index 75e41965c11..4b97d630ffb 100644 --- a/chardev/baum.c +++ b/chardev/baum.c @@ -642,10 +642,7 @@ static void char_braille_finalize(Object *obj) } } =20 -static void baum_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void baum_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { BaumChardev *baum =3D BAUM_CHARDEV(chr); brlapi_handle_t *handle; @@ -670,6 +667,8 @@ static void baum_chr_open(Chardev *chr, * as an integer, but in practice it seems to work */ qemu_set_fd_handler(baum->brlapi_fd, baum_chr_read, NULL, baum); + + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 static void char_braille_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-console.c b/chardev/char-console.c index f3ef1a7748c..423f0f4cc4e 100644 --- a/chardev/char-console.c +++ b/chardev/char-console.c @@ -26,12 +26,11 @@ #include "chardev/char-win.h" #include "qemu/module.h" =20 -static void console_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, +static void console_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true); + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 static void char_console_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-file.c b/chardev/char-file.c index 568600bb7c4..34ef386abc5 100644 --- a/chardev/char-file.c +++ b/chardev/char-file.c @@ -34,10 +34,7 @@ #include "chardev/char-fd.h" #endif =20 -static void file_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void file_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { ChardevFile *file =3D backend->u.file.data; #ifdef _WIN32 @@ -100,6 +97,8 @@ static void file_chr_open(Chardev *chr, return; } #endif + + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 static void file_chr_parse(QemuOpts *opts, ChardevBackend *backend, diff --git a/chardev/char-hub.c b/chardev/char-hub.c index 11556dfa72b..aa6058c2f6f 100644 --- a/chardev/char-hub.c +++ b/chardev/char-hub.c @@ -203,10 +203,7 @@ static void hub_chr_update_read_handlers(Chardev *chr) } } =20 -static void hub_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void hub_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { ChardevHub *hub =3D backend->u.hub.data; HubChardev *d =3D HUB_CHARDEV(chr); @@ -241,8 +238,10 @@ static void hub_chr_open(Chardev *chr, list =3D list->next; } =20 - /* Closed until an explicit event from backend */ - *be_opened =3D false; + /* + * Closed until an explicit event from backend, so we don't + * send CHR_EVENT_OPENED now. + */ } =20 static void hub_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) diff --git a/chardev/char-mux.c b/chardev/char-mux.c index f38d66b21f1..7210df431fc 100644 --- a/chardev/char-mux.c +++ b/chardev/char-mux.c @@ -361,10 +361,7 @@ void mux_set_focus(Chardev *chr, unsigned int focus) mux_chr_send_event(d, d->focus, CHR_EVENT_MUX_IN); } =20 -static void mux_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void mux_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { ChardevMux *mux =3D backend->u.mux.data; Chardev *drv; @@ -377,11 +374,17 @@ static void mux_chr_open(Chardev *chr, } =20 d->focus =3D -1; - /* only default to opened state if we've realized the initial - * set of muxes + if (!qemu_chr_fe_init(&d->chr, drv, errp)) { + return; + } + + /* + * Only move to opened state if we've realized + * the initial set of muxes: */ - *be_opened =3D muxes_opened; - qemu_chr_fe_init(&d->chr, drv, errp); + if (muxes_opened) { + qemu_chr_be_event(chr, CHR_EVENT_OPENED); + } } =20 static void mux_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) diff --git a/chardev/char-null.c b/chardev/char-null.c index 674603b3807..900b5febb6c 100644 --- a/chardev/char-null.c +++ b/chardev/char-null.c @@ -26,12 +26,9 @@ #include "chardev/char.h" #include "qemu/module.h" =20 -static void null_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void null_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { - *be_opened =3D false; + /* do not send CHR_EVENT_OPENED */ } =20 static void char_null_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-parallel.c b/chardev/char-parallel.c index 1be1ef46292..359efa3c9c8 100644 --- a/chardev/char-parallel.c +++ b/chardev/char-parallel.c @@ -157,10 +157,7 @@ static int parallel_chr_ioctl(Chardev *chr, int cmd, v= oid *arg) return 0; } =20 -static void parallel_chr_open_fd(Chardev *chr, - int fd, - bool *be_opened, - Error **errp) +static void parallel_chr_open_fd(Chardev *chr, int fd, Error **errp) { ParallelChardev *drv =3D PARALLEL_CHARDEV(chr); =20 @@ -172,6 +169,7 @@ static void parallel_chr_open_fd(Chardev *chr, } =20 drv->mode =3D IEEE1284_MODE_COMPAT; + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } #endif /* __linux__ */ =20 @@ -227,21 +225,16 @@ static int parallel_chr_ioctl(Chardev *chr, int cmd, = void *arg) return 0; } =20 -static void parallel_chr_open_fd(Chardev *chr, - int fd, - bool *be_opened, - Error **errp) +static void parallel_chr_open_fd(Chardev *chr, int fd, Error **errp) { ParallelChardev *drv =3D PARALLEL_CHARDEV(chr); drv->fd =3D fd; - *be_opened =3D false; } #endif =20 #ifdef HAVE_CHARDEV_PARALLEL static void parallel_chr_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) { ChardevHostdev *parallel =3D backend->u.parallel.data; @@ -251,7 +244,7 @@ static void parallel_chr_open(Chardev *chr, if (fd < 0) { return; } - parallel_chr_open_fd(chr, fd, be_opened, errp); + parallel_chr_open_fd(chr, fd, errp); } =20 static void parallel_chr_parse(QemuOpts *opts, ChardevBackend *backend, diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c index e84492d42b6..2f26372dfc9 100644 --- a/chardev/char-pipe.c +++ b/chardev/char-pipe.c @@ -103,10 +103,7 @@ static int win_chr_pipe_init(Chardev *chr, const char = *filename, return -1; } =20 -static void pipe_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { ChardevHostdev *opts =3D backend->u.pipe.data; const char *filename =3D opts->device; @@ -114,14 +111,13 @@ static void pipe_chr_open(Chardev *chr, if (win_chr_pipe_init(chr, filename, errp) < 0) { return; } + + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 #else =20 -static void pipe_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { ChardevHostdev *opts =3D backend->u.pipe.data; int fd_in, fd_out; @@ -158,6 +154,8 @@ static void pipe_chr_open(Chardev *chr, } return; } + + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 #endif /* !_WIN32 */ diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 909ab01f5f2..d4d69a29a95 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -331,10 +331,7 @@ static int qemu_openpty_raw(int *aslave, char *pty_nam= e) return amaster; } =20 -static void pty_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void pty_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { PtyChardev *s; int master_fd, slave_fd; @@ -364,7 +361,6 @@ static void pty_chr_open(Chardev *chr, qio_channel_set_name(s->ioc, name); g_free(name); s->timer_src =3D NULL; - *be_opened =3D false; =20 /* create symbolic link */ if (path) { diff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c index 19652fe2b3a..30b17a96d3a 100644 --- a/chardev/char-ringbuf.c +++ b/chardev/char-ringbuf.c @@ -94,7 +94,6 @@ static void char_ringbuf_finalize(Object *obj) =20 static void ringbuf_chr_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) { ChardevRingbuf *opts =3D backend->u.ringbuf.data; @@ -111,6 +110,8 @@ static void ringbuf_chr_open(Chardev *chr, d->prod =3D 0; d->cons =3D 0; d->cbuf =3D g_malloc0(d->size); + + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 void qmp_ringbuf_write(const char *device, const char *data, diff --git a/chardev/char-serial.c b/chardev/char-serial.c index 54c2b3935cf..9995f184258 100644 --- a/chardev/char-serial.c +++ b/chardev/char-serial.c @@ -41,14 +41,15 @@ =20 #ifdef _WIN32 =20 -static void serial_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void serial_chr_open(Chardev *chr, ChardevBackend *backend, Error *= *errp) { ChardevHostdev *serial =3D backend->u.serial.data; + int ret =3D win_chr_serial_init(chr, serial->device, errp); + if (ret < 0) { + return; + } =20 - win_chr_serial_init(chr, serial->device, errp); + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 #elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \ @@ -258,10 +259,7 @@ static int serial_chr_ioctl(Chardev *chr, int cmd, voi= d *arg) return 0; } =20 -static void serial_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void serial_chr_open(Chardev *chr, ChardevBackend *backend, Error *= *errp) { ChardevHostdev *serial =3D backend->u.serial.data; int fd; @@ -281,6 +279,8 @@ static void serial_chr_open(Chardev *chr, close(fd); return; } + + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } #endif /* __linux__ || __sun__ */ =20 diff --git a/chardev/char-socket.c b/chardev/char-socket.c index a3203f2f97b..2951b2ec9be 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -1365,10 +1365,7 @@ static bool qmp_chardev_validate_socket(ChardevSocke= t *sock, } =20 =20 -static void tcp_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { SocketChardev *s =3D SOCKET_CHARDEV(chr); ChardevSocket *sock =3D backend->u.socket.data; @@ -1439,9 +1436,6 @@ static void tcp_chr_open(Chardev *chr, } s->registered_yank =3D true; =20 - /* be isn't opened until we get a connection */ - *be_opened =3D false; - update_disconnected_filename(s); =20 if (s->is_listen) { @@ -1454,6 +1448,8 @@ static void tcp_chr_open(Chardev *chr, return; } } + + /* be isn't opened until we get a connection */ } =20 static void tcp_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c index f0920a23faa..534f6ed5658 100644 --- a/chardev/char-stdio.c +++ b/chardev/char-stdio.c @@ -85,10 +85,7 @@ static void term_stdio_handler(int sig) stdio_chr_set_echo(NULL, stdio_echo_state); } =20 -static void stdio_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void stdio_chr_open(Chardev *chr, ChardevBackend *backend, Error **= errp) { ChardevStdio *opts =3D backend->u.stdio.data; struct sigaction act; @@ -123,6 +120,8 @@ static void stdio_chr_open(Chardev *chr, =20 stdio_allow_signal =3D !opts->has_signal || opts->signal; stdio_chr_set_echo(chr, false); + + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } #endif =20 diff --git a/chardev/char-udp.c b/chardev/char-udp.c index 18f4322408a..4c81c95e656 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -188,10 +188,7 @@ static void udp_chr_parse(QemuOpts *opts, ChardevBacke= nd *backend, Error **errp) } } =20 -static void upd_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void upd_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { ChardevUdp *udp =3D backend->u.udp.data; SocketAddress *local_addr =3D socket_address_flatten(udp->local); @@ -214,6 +211,7 @@ static void upd_chr_open(Chardev *chr, g_free(name); =20 s->ioc =3D QIO_CHANNEL(sioc); + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 static void char_udp_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-win-stdio.c b/chardev/char-win-stdio.c index 866f3a20398..0535960ff1b 100644 --- a/chardev/char-win-stdio.c +++ b/chardev/char-win-stdio.c @@ -144,7 +144,6 @@ static void win_stiod_chr_set_echo(Chardev *chr, bool e= cho) =20 static void win_stdio_chr_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) { ChardevStdio *opts =3D backend->u.stdio.data; @@ -208,6 +207,7 @@ static void win_stdio_chr_open(Chardev *chr, =20 win_stiod_chr_set_echo(chr, false); =20 + qemu_chr_be_event(chr, CHR_EVENT_OPENED); return; =20 err3: diff --git a/chardev/char.c b/chardev/char.c index df37d1df161..44bfed36272 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -246,8 +246,7 @@ int qemu_chr_add_client(Chardev *s, int fd) CHARDEV_GET_CLASS(s)->chr_add_client(s, fd) : -1; } =20 -static void qemu_char_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) +static void qemu_char_open(Chardev *chr, ChardevBackend *backend, Error **= errp) { ChardevClass *cc =3D CHARDEV_GET_CLASS(chr); /* Any ChardevCommon member would work */ @@ -268,7 +267,7 @@ static void qemu_char_open(Chardev *chr, ChardevBackend= *backend, } =20 if (cc->chr_open) { - cc->chr_open(chr, backend, be_opened, errp); + cc->chr_open(chr, backend, errp); } } =20 @@ -1009,7 +1008,6 @@ static Chardev *chardev_new(const char *id, const cha= r *typename, Object *obj; Chardev *chr =3D NULL; Error *local_err =3D NULL; - bool be_opened =3D true; =20 assert(g_str_has_prefix(typename, "chardev-")); assert(id); @@ -1020,7 +1018,7 @@ static Chardev *chardev_new(const char *id, const cha= r *typename, chr->label =3D g_strdup(id); chr->gcontext =3D gcontext; =20 - qemu_char_open(chr, backend, &be_opened, &local_err); + qemu_char_open(chr, backend, &local_err); if (local_err) { error_propagate(errp, local_err); object_unref(obj); @@ -1030,9 +1028,6 @@ static Chardev *chardev_new(const char *id, const cha= r *typename, if (!chr->filename) { chr->filename =3D g_strdup(typename + 8); } - if (be_opened) { - qemu_chr_be_event(chr, CHR_EVENT_OPENED); - } =20 return chr; } diff --git a/chardev/msmouse.c b/chardev/msmouse.c index d07cd998cb5..9dc04e3b3ec 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -255,16 +255,16 @@ static void char_msmouse_finalize(Object *obj) =20 static void msmouse_chr_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) { MouseChardev *mouse =3D MOUSE_CHARDEV(chr); =20 - *be_opened =3D false; mouse->hs =3D qemu_input_handler_register((DeviceState *)mouse, &msmouse_handler); mouse->tiocm =3D 0; fifo8_create(&mouse->outbuf, MSMOUSE_BUF_SZ); + + /* Never send CHR_EVENT_OPENED */ } =20 static void char_msmouse_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/spice.c b/chardev/spice.c index 3ea25706653..f5b1f585eb1 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -251,9 +251,7 @@ static void chr_open(Chardev *chr, const char *subtype) s->sin.subtype =3D g_strdup(subtype); } =20 -static void spice_vmc_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, +static void spice_vmc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { ChardevSpiceChannel *spicevmc =3D backend->u.spicevmc.data; @@ -277,13 +275,10 @@ static void spice_vmc_chr_open(Chardev *chr, return; } =20 - *be_opened =3D false; chr_open(chr, type); } =20 -static void spice_port_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, +static void spice_port_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { ChardevSpicePort *spiceport =3D backend->u.spiceport.data; @@ -302,7 +297,6 @@ static void spice_port_chr_open(Chardev *chr, =20 chr_open(chr, "port"); =20 - *be_opened =3D false; s =3D SPICE_CHARDEV(chr); s->sin.portname =3D g_strdup(name); =20 diff --git a/chardev/wctablet.c b/chardev/wctablet.c index 8285a56e7bc..65b2ceb58c9 100644 --- a/chardev/wctablet.c +++ b/chardev/wctablet.c @@ -326,13 +326,10 @@ static void wctablet_chr_finalize(Object *obj) =20 static void wctablet_chr_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) { TabletChardev *tablet =3D WCTABLET_CHARDEV(chr); =20 - *be_opened =3D true; - /* init state machine */ memcpy(tablet->outbuf, WC_FULL_CONFIG_STRING, WC_FULL_CONFIG_STRING_LE= NGTH); tablet->outlen =3D WC_FULL_CONFIG_STRING_LENGTH; @@ -340,6 +337,8 @@ static void wctablet_chr_open(Chardev *chr, =20 tablet->hs =3D qemu_input_handler_register((DeviceState *)tablet, &wctablet_handler); + + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 static void wctablet_chr_class_init(ObjectClass *oc, const void *data) diff --git a/gdbstub/system.c b/gdbstub/system.c index e161b14485b..982857f314a 100644 --- a/gdbstub/system.c +++ b/gdbstub/system.c @@ -233,10 +233,9 @@ static int gdb_chr_write(Chardev *chr, const uint8_t *= buf, int len) return len; } =20 -static void gdb_chr_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) +static void gdb_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { - *be_opened =3D false; + /* Never send CHR_EVENT_OPENED */ } =20 static void char_gdb_class_init(ObjectClass *oc, const void *data) diff --git a/ui/console-vc.c b/ui/console-vc.c index 931068d43ab..4c8ea4c1485 100644 --- a/ui/console-vc.c +++ b/ui/console-vc.c @@ -1093,10 +1093,7 @@ void qemu_text_console_update_size(QemuTextConsole *= c) dpy_text_resize(QEMU_CONSOLE(c), c->width, c->height); } =20 -static void vc_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **err= p) { ChardevVC *vc =3D backend->u.vc.data; VCChardev *drv =3D VC_CHARDEV(chr); @@ -1144,7 +1141,7 @@ static void vc_chr_open(Chardev *chr, drv->t_attrib =3D TEXT_ATTRIBUTES_DEFAULT; } =20 - *be_opened =3D true; + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 static void vc_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **= errp) diff --git a/ui/dbus-chardev.c b/ui/dbus-chardev.c index f6c426e2209..3e471f84cd8 100644 --- a/ui/dbus-chardev.c +++ b/ui/dbus-chardev.c @@ -176,9 +176,7 @@ dbus_chr_send_break( return DBUS_METHOD_INVOCATION_HANDLED; } =20 -static void -dbus_chr_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) +static void dbus_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { ERRP_GUARD(); =20 @@ -211,7 +209,7 @@ dbus_chr_open(Chardev *chr, ChardevBackend *backend, return; } CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_open( - chr, be, be_opened, errp); + chr, be, errp); } =20 static void diff --git a/ui/gtk.c b/ui/gtk.c index acf55cdfce2..44b2b868ec9 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1963,10 +1963,7 @@ static void gd_vc_chr_set_echo(Chardev *chr, bool ec= ho) =20 static int nb_vcs; static Chardev *vcs[MAX_VCS]; -static void gd_vc_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void gd_vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **= errp) { if (nb_vcs =3D=3D MAX_VCS) { error_setg(errp, "Maximum number of consoles reached"); @@ -1975,10 +1972,10 @@ static void gd_vc_chr_open(Chardev *chr, =20 vcs[nb_vcs++] =3D chr; =20 - /* console/chardev init sometimes completes elsewhere in a 2nd + /* + * console/chardev init sometimes completes elsewhere in a 2nd * stage, so defer OPENED events until they are fully initialized */ - *be_opened =3D false; } =20 static void char_gd_vc_class_init(ObjectClass *oc, const void *data) diff --git a/ui/spice-app.c b/ui/spice-app.c index ea0b62a22b7..7ac9ae4e78d 100644 --- a/ui/spice-app.c +++ b/ui/spice-app.c @@ -49,8 +49,7 @@ struct VCChardev { =20 struct VCChardevClass { ChardevClass parent; - void (*parent_open)(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp); + void (*parent_open)(Chardev *chr, ChardevBackend *backend, Error **err= p); }; =20 #define TYPE_CHARDEV_VC "chardev-vc" @@ -67,10 +66,7 @@ chr_spice_backend_new(void) return be; } =20 -static void vc_chr_open(Chardev *chr, - ChardevBackend *backend, - bool *be_opened, - Error **errp) +static void vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **err= p) { VCChardevClass *vc =3D CHARDEV_VC_GET_CLASS(chr); ChardevBackend *be; @@ -87,7 +83,7 @@ static void vc_chr_open(Chardev *chr, be =3D chr_spice_backend_new(); be->u.spiceport.data->fqdn =3D fqdn ? g_strdup(fqdn) : g_strdup_printf("org.qemu.console.%s", chr->label= ); - vc->parent_open(chr, be, be_opened, errp); + vc->parent_open(chr, be, errp); qapi_free_ChardevBackend(be); } =20 diff --git a/ui/vdagent.c b/ui/vdagent.c index 090771ab171..644e9acaaeb 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -662,7 +662,6 @@ static void vdagent_chr_recv_clipboard(VDAgentChardev *= vd, VDAgentMessage *msg) =20 static void vdagent_chr_open(Chardev *chr, ChardevBackend *backend, - bool *be_opened, Error **errp) { VDAgentChardev *vd =3D QEMU_VDAGENT_CHARDEV(chr); @@ -692,7 +691,7 @@ static void vdagent_chr_open(Chardev *chr, &vdagent_mouse_handler); } =20 - *be_opened =3D true; + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } =20 static void vdagent_clipboard_peer_register(VDAgentChardev *vd) --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813096; cv=none; d=zohomail.com; s=zohoarc; b=U39PgLjRVFB1a1kGWWy3IIov+pQT9tpuz525vlT4D8qezhyYP7DfOyAoJMMnfVydXm2VseAeg9JmQFTZ43WBniK8zsyvHbrF6TYJhemOtgDfWkT/1cQazhgiKWDQEqiP4BKw++9/P0XnlztH//ofIG/eoSvH1J5Zz7SomLtwbds= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813096; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dLHfC75X0gnITV5XgkytU+NTkgxXg1ikFTWZtIHy/IU=; b=dh4U3u4Ji3wk1KkxNmBdSif2Bi5U7KdctDbgAdw2ABs7bvbm+Fe9StZ2TJ31Zv5cg9odGFVWxFSbvJ1vKXJKPsQ7OEbVX2LjnI5ub4HqifoneJrejPu0z4qWri/Wpta3a1lehr8zbe55gBsfb4fCWA7veBnPRL1RZY8kynV4s1w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813096584246.66368343609759; Wed, 11 Feb 2026 04:31:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9N6-00007m-0B; Wed, 11 Feb 2026 07:31:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9N4-00006e-Ub for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:06 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9N0-0000EO-H1 for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:06 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-639-30M7JcaDOLavjNI8Ti6E3A-1; Wed, 11 Feb 2026 07:30:58 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 236821955E77; Wed, 11 Feb 2026 12:30:56 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8EA3E180066A; Wed, 11 Feb 2026 12:30:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813061; 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=dLHfC75X0gnITV5XgkytU+NTkgxXg1ikFTWZtIHy/IU=; b=NyluingiuhwKhURqUo5G68x1bWeqOHT5xVw/kbXZcspyvxEANtOvIWZZ39f962RlPhW1nB 7kzBNc6bb556nMwicqmB4azZwVm9D6p5oLmiffR1+wAKTRhh1ku2OT7PgGxK/U6x1Z1Tf9 JP8XCRXGsUf3qVAGCxAiZEd4ebZ/fPw= X-MC-Unique: 30M7JcaDOLavjNI8Ti6E3A-1 X-Mimecast-MFC-AGG-ID: 30M7JcaDOLavjNI8Ti6E3A_1770813056 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 07/14] chardev: .chr_open(): add boolean return value Date: Wed, 11 Feb 2026 16:29:54 +0400 Message-ID: <20260211123007.3569932-8-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813098476154100 From: Vladimir Sementsov-Ogievskiy Add boolean return value to follow common recommendations for functions with errrp in include/qapi/error.h Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-7-vsementsov@yandex-team.ru> --- include/chardev/char.h | 2 +- chardev/baum.c | 5 +++-- chardev/char-console.c | 1 + chardev/char-file.c | 13 +++++++------ chardev/char-hub.c | 11 ++++++----- chardev/char-mux.c | 8 +++++--- chardev/char-null.c | 4 ++-- chardev/char-parallel.c | 14 ++++++++------ chardev/char-pipe.c | 12 +++++++----- chardev/char-pty.c | 9 ++++++--- chardev/char-ringbuf.c | 5 +++-- chardev/char-serial.c | 15 +++++++++------ chardev/char-socket.c | 17 +++++++++-------- chardev/char-stdio.c | 11 ++++++----- chardev/char-udp.c | 5 +++-- chardev/char-win-stdio.c | 7 ++++--- chardev/msmouse.c | 3 ++- chardev/spice.c | 12 +++++++----- chardev/wctablet.c | 3 ++- gdbstub/system.c | 3 ++- ui/console-vc.c | 3 ++- ui/dbus-chardev.c | 6 +++--- ui/gtk.c | 5 +++-- ui/spice-app.c | 10 ++++++---- ui/vdagent.c | 10 +++++----- 25 files changed, 112 insertions(+), 82 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index aa42e01b8a3..e1bf97222b8 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -260,7 +260,7 @@ struct ChardevClass { void (*chr_parse)(QemuOpts *opts, ChardevBackend *backend, Error **err= p); =20 /* called after construction, open/starts the backend */ - void (*chr_open)(Chardev *chr, ChardevBackend *backend, Error **errp); + bool (*chr_open)(Chardev *chr, ChardevBackend *backend, Error **errp); =20 /* write buf to the backend */ int (*chr_write)(Chardev *s, const uint8_t *buf, int len); diff --git a/chardev/baum.c b/chardev/baum.c index 4b97d630ffb..1219963656b 100644 --- a/chardev/baum.c +++ b/chardev/baum.c @@ -642,7 +642,7 @@ static void char_braille_finalize(Object *obj) } } =20 -static void baum_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) +static bool baum_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { BaumChardev *baum =3D BAUM_CHARDEV(chr); brlapi_handle_t *handle; @@ -656,7 +656,7 @@ static void baum_chr_open(Chardev *chr, ChardevBackend = *backend, Error **errp) brlapi_strerror(brlapi_error_location())); g_free(handle); baum->brlapi =3D NULL; - return; + return false; } baum->deferred_init =3D 0; =20 @@ -669,6 +669,7 @@ static void baum_chr_open(Chardev *chr, ChardevBackend = *backend, Error **errp) qemu_set_fd_handler(baum->brlapi_fd, baum_chr_read, NULL, baum); =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 static void char_braille_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-console.c b/chardev/char-console.c index 423f0f4cc4e..c911cc62e3c 100644 --- a/chardev/char-console.c +++ b/chardev/char-console.c @@ -31,6 +31,7 @@ static void console_chr_open(Chardev *chr, ChardevBackend= *backend, { win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true); qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 static void char_console_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-file.c b/chardev/char-file.c index 34ef386abc5..b0dd9d5f870 100644 --- a/chardev/char-file.c +++ b/chardev/char-file.c @@ -34,7 +34,7 @@ #include "chardev/char-fd.h" #endif =20 -static void file_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) +static bool file_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { ChardevFile *file =3D backend->u.file.data; #ifdef _WIN32 @@ -44,7 +44,7 @@ static void file_chr_open(Chardev *chr, ChardevBackend *b= ackend, Error **errp) =20 if (file->in) { error_setg(errp, "input file not supported"); - return; + return false; } =20 if (file->has_append && file->append) { @@ -61,7 +61,7 @@ static void file_chr_open(Chardev *chr, ChardevBackend *b= ackend, Error **errp) FILE_ATTRIBUTE_NORMAL, NULL); if (out =3D=3D INVALID_HANDLE_VALUE) { error_setg(errp, "open %s failed", file->out); - return; + return false; } =20 win_chr_set_file(chr, out, false); @@ -77,7 +77,7 @@ static void file_chr_open(Chardev *chr, ChardevBackend *b= ackend, Error **errp) =20 out =3D qmp_chardev_open_file_source(file->out, flags, errp); if (out < 0) { - return; + return false; } =20 if (file->in) { @@ -85,7 +85,7 @@ static void file_chr_open(Chardev *chr, ChardevBackend *b= ackend, Error **errp) in =3D qmp_chardev_open_file_source(file->in, flags, errp); if (in < 0) { qemu_close(out); - return; + return false; } } =20 @@ -94,11 +94,12 @@ static void file_chr_open(Chardev *chr, ChardevBackend = *backend, Error **errp) if (in >=3D 0) { qemu_close(in); } - return; + return false; } #endif =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 static void file_chr_parse(QemuOpts *opts, ChardevBackend *backend, diff --git a/chardev/char-hub.c b/chardev/char-hub.c index aa6058c2f6f..05cf722b5b0 100644 --- a/chardev/char-hub.c +++ b/chardev/char-hub.c @@ -203,7 +203,7 @@ static void hub_chr_update_read_handlers(Chardev *chr) } } =20 -static void hub_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) +static bool hub_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { ChardevHub *hub =3D backend->u.hub.data; HubChardev *d =3D HUB_CHARDEV(chr); @@ -213,7 +213,7 @@ static void hub_chr_open(Chardev *chr, ChardevBackend *= backend, Error **errp) =20 if (list =3D=3D NULL) { error_setg(errp, "hub: 'chardevs' list is not defined"); - return; + return false; } =20 while (list) { @@ -223,17 +223,17 @@ static void hub_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) if (s =3D=3D NULL) { error_setg(errp, "hub: chardev can't be found by id '%s'", list->value); - return; + return false; } if (CHARDEV_IS_HUB(s) || CHARDEV_IS_MUX(s)) { error_setg(errp, "hub: multiplexers and hub devices can't be " "stacked, check chardev '%s', chardev should not " "be a hub device or have 'mux=3Don' enabled", list->value); - return; + return false; } if (!hub_chr_attach_chardev(d, s, errp)) { - return; + return false; } list =3D list->next; } @@ -242,6 +242,7 @@ static void hub_chr_open(Chardev *chr, ChardevBackend *= backend, Error **errp) * Closed until an explicit event from backend, so we don't * send CHR_EVENT_OPENED now. */ + return true; } =20 static void hub_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) diff --git a/chardev/char-mux.c b/chardev/char-mux.c index 7210df431fc..881443d869d 100644 --- a/chardev/char-mux.c +++ b/chardev/char-mux.c @@ -361,7 +361,7 @@ void mux_set_focus(Chardev *chr, unsigned int focus) mux_chr_send_event(d, d->focus, CHR_EVENT_MUX_IN); } =20 -static void mux_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) +static bool mux_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { ChardevMux *mux =3D backend->u.mux.data; Chardev *drv; @@ -370,12 +370,12 @@ static void mux_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) drv =3D qemu_chr_find(mux->chardev); if (drv =3D=3D NULL) { error_setg(errp, "mux: base chardev %s not found", mux->chardev); - return; + return false; } =20 d->focus =3D -1; if (!qemu_chr_fe_init(&d->chr, drv, errp)) { - return; + return false; } =20 /* @@ -385,6 +385,8 @@ static void mux_chr_open(Chardev *chr, ChardevBackend *= backend, Error **errp) if (muxes_opened) { qemu_chr_be_event(chr, CHR_EVENT_OPENED); } + + return true; } =20 static void mux_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) diff --git a/chardev/char-null.c b/chardev/char-null.c index 900b5febb6c..d5a101178bb 100644 --- a/chardev/char-null.c +++ b/chardev/char-null.c @@ -26,9 +26,9 @@ #include "chardev/char.h" #include "qemu/module.h" =20 -static void null_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) +static bool null_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { - /* do not send CHR_EVENT_OPENED */ + return true; } =20 static void char_null_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-parallel.c b/chardev/char-parallel.c index 359efa3c9c8..cbf87e660da 100644 --- a/chardev/char-parallel.c +++ b/chardev/char-parallel.c @@ -157,7 +157,7 @@ static int parallel_chr_ioctl(Chardev *chr, int cmd, vo= id *arg) return 0; } =20 -static void parallel_chr_open_fd(Chardev *chr, int fd, Error **errp) +static bool parallel_chr_open_fd(Chardev *chr, int fd, Error **errp) { ParallelChardev *drv =3D PARALLEL_CHARDEV(chr); =20 @@ -165,11 +165,12 @@ static void parallel_chr_open_fd(Chardev *chr, int fd= , Error **errp) =20 if (ioctl(fd, PPCLAIM) < 0) { error_setg_errno(errp, errno, "not a parallel port"); - return; + return false; } =20 drv->mode =3D IEEE1284_MODE_COMPAT; qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } #endif /* __linux__ */ =20 @@ -225,15 +226,16 @@ static int parallel_chr_ioctl(Chardev *chr, int cmd, = void *arg) return 0; } =20 -static void parallel_chr_open_fd(Chardev *chr, int fd, Error **errp) +static bool parallel_chr_open_fd(Chardev *chr, int fd, Error **errp) { ParallelChardev *drv =3D PARALLEL_CHARDEV(chr); drv->fd =3D fd; + return true; } #endif =20 #ifdef HAVE_CHARDEV_PARALLEL -static void parallel_chr_open(Chardev *chr, +static bool parallel_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { @@ -242,9 +244,9 @@ static void parallel_chr_open(Chardev *chr, =20 fd =3D qmp_chardev_open_file_source(parallel->device, O_RDWR, errp); if (fd < 0) { - return; + return false; } - parallel_chr_open_fd(chr, fd, errp); + return parallel_chr_open_fd(chr, fd, errp); } =20 static void parallel_chr_parse(QemuOpts *opts, ChardevBackend *backend, diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c index 2f26372dfc9..472b3e0801f 100644 --- a/chardev/char-pipe.c +++ b/chardev/char-pipe.c @@ -103,21 +103,22 @@ static int win_chr_pipe_init(Chardev *chr, const char= *filename, return -1; } =20 -static void pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) +static bool pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { ChardevHostdev *opts =3D backend->u.pipe.data; const char *filename =3D opts->device; =20 if (win_chr_pipe_init(chr, filename, errp) < 0) { - return; + return false; } =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 #else =20 -static void pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) +static bool pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { ChardevHostdev *opts =3D backend->u.pipe.data; int fd_in, fd_out; @@ -143,7 +144,7 @@ static void pipe_chr_open(Chardev *chr, ChardevBackend = *backend, Error **errp) ); if (fd_in < 0) { error_setg_file_open(errp, errno, filename); - return; + return false; } } =20 @@ -152,10 +153,11 @@ static void pipe_chr_open(Chardev *chr, ChardevBacken= d *backend, Error **errp) if (fd_out !=3D fd_in) { close(fd_out); } - return; + return false; } =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 #endif /* !_WIN32 */ diff --git a/chardev/char-pty.c b/chardev/char-pty.c index d4d69a29a95..9e26e97baf5 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -331,7 +331,7 @@ static int qemu_openpty_raw(int *aslave, char *pty_name) return amaster; } =20 -static void pty_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) +static bool pty_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { PtyChardev *s; int master_fd, slave_fd; @@ -342,13 +342,13 @@ static void pty_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) master_fd =3D qemu_openpty_raw(&slave_fd, pty_name); if (master_fd < 0) { error_setg_errno(errp, errno, "Failed to create PTY"); - return; + return false; } =20 close(slave_fd); if (!qemu_set_blocking(master_fd, false, errp)) { close(master_fd); - return; + return false; } =20 chr->filename =3D g_strdup_printf("pty:%s", pty_name); @@ -368,10 +368,13 @@ static void pty_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) =20 if (res !=3D 0) { error_setg_errno(errp, errno, "Failed to create PTY symlink"); + return false; } else { s->path =3D g_strdup(path); } } + + return true; } =20 static void pty_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) diff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c index 30b17a96d3a..8f998d26a49 100644 --- a/chardev/char-ringbuf.c +++ b/chardev/char-ringbuf.c @@ -92,7 +92,7 @@ static void char_ringbuf_finalize(Object *obj) g_free(d->cbuf); } =20 -static void ringbuf_chr_open(Chardev *chr, +static bool ringbuf_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { @@ -104,7 +104,7 @@ static void ringbuf_chr_open(Chardev *chr, /* The size must be power of 2 */ if (d->size & (d->size - 1)) { error_setg(errp, "size of ringbuf chardev must be power of two"); - return; + return false; } =20 d->prod =3D 0; @@ -112,6 +112,7 @@ static void ringbuf_chr_open(Chardev *chr, d->cbuf =3D g_malloc0(d->size); =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 void qmp_ringbuf_write(const char *device, const char *data, diff --git a/chardev/char-serial.c b/chardev/char-serial.c index 9995f184258..0c73bafc545 100644 --- a/chardev/char-serial.c +++ b/chardev/char-serial.c @@ -41,15 +41,17 @@ =20 #ifdef _WIN32 =20 -static void serial_chr_open(Chardev *chr, ChardevBackend *backend, Error *= *errp) +static bool serial_chr_open(Chardev *chr, ChardevBackend *backend, Error *= *errp) { ChardevHostdev *serial =3D backend->u.serial.data; int ret =3D win_chr_serial_init(chr, serial->device, errp); if (ret < 0) { - return; + return false; } =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + + return true; } =20 #elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \ @@ -259,7 +261,7 @@ static int serial_chr_ioctl(Chardev *chr, int cmd, void= *arg) return 0; } =20 -static void serial_chr_open(Chardev *chr, ChardevBackend *backend, Error *= *errp) +static bool serial_chr_open(Chardev *chr, ChardevBackend *backend, Error *= *errp) { ChardevHostdev *serial =3D backend->u.serial.data; int fd; @@ -267,20 +269,21 @@ static void serial_chr_open(Chardev *chr, ChardevBack= end *backend, Error **errp) fd =3D qmp_chardev_open_file_source(serial->device, O_RDWR | O_NONBLOC= K, errp); if (fd < 0) { - return; + return false; } if (!qemu_set_blocking(fd, false, errp)) { close(fd); - return; + return false; } tty_serial_init(fd, 115200, 'N', 8, 1); =20 if (!qemu_chr_open_fd(chr, fd, fd, errp)) { close(fd); - return; + return false; } =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } #endif /* __linux__ || __sun__ */ =20 diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 2951b2ec9be..908bbdbc124 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -1365,7 +1365,7 @@ static bool qmp_chardev_validate_socket(ChardevSocket= *sock, } =20 =20 -static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) +static bool tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { SocketChardev *s =3D SOCKET_CHARDEV(chr); ChardevSocket *sock =3D backend->u.socket.data; @@ -1390,7 +1390,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) if (!creds) { error_setg(errp, "No TLS credentials with id '%s'", sock->tls_creds); - return; + return false; } s->tls_creds =3D (QCryptoTLSCreds *) object_dynamic_cast(creds, @@ -1398,7 +1398,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) if (!s->tls_creds) { error_setg(errp, "Object with id '%s' is not TLS credentials", sock->tls_creds); - return; + return false; } object_ref(OBJECT(s->tls_creds)); if (!qcrypto_tls_creds_check_endpoint(s->tls_creds, @@ -1406,7 +1406,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) ? QCRYPTO_TLS_CREDS_ENDPOINT_SER= VER : QCRYPTO_TLS_CREDS_ENDPOINT_CLI= ENT, errp)) { - return; + return false; } } s->tls_authz =3D g_strdup(sock->tls_authz); @@ -1414,7 +1414,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) s->addr =3D addr =3D socket_address_flatten(sock->addr); =20 if (!qmp_chardev_validate_socket(sock, addr, errp)) { - return; + return false; } =20 qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_RECONNECTABLE); @@ -1431,7 +1431,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) */ if (!chr->handover_yank_instance) { if (!yank_register_instance(CHARDEV_YANK_INSTANCE(chr->label), err= p)) { - return; + return false; } } s->registered_yank =3D true; @@ -1441,15 +1441,16 @@ static void tcp_chr_open(Chardev *chr, ChardevBacke= nd *backend, Error **errp) if (s->is_listen) { if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270, is_waitconnect, errp) < 0) { - return; + return false; } } else { if (qmp_chardev_open_socket_client(chr, reconnect_ms, errp) < 0) { - return; + return false; } } =20 /* be isn't opened until we get a connection */ + return true; } =20 static void tcp_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error *= *errp) diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c index 534f6ed5658..fe1cbb2d880 100644 --- a/chardev/char-stdio.c +++ b/chardev/char-stdio.c @@ -85,19 +85,19 @@ static void term_stdio_handler(int sig) stdio_chr_set_echo(NULL, stdio_echo_state); } =20 -static void stdio_chr_open(Chardev *chr, ChardevBackend *backend, Error **= errp) +static bool stdio_chr_open(Chardev *chr, ChardevBackend *backend, Error **= errp) { ChardevStdio *opts =3D backend->u.stdio.data; struct sigaction act; =20 if (is_daemonized()) { error_setg(errp, "cannot use stdio with -daemonize"); - return; + return false; } =20 if (stdio_in_use) { error_setg(errp, "cannot use stdio by multiple character devices"); - return; + return false; } =20 stdio_in_use =3D true; @@ -105,11 +105,11 @@ static void stdio_chr_open(Chardev *chr, ChardevBacke= nd *backend, Error **errp) old_fd1_flags =3D fcntl(1, F_GETFL); tcgetattr(0, &oldtty); if (!qemu_set_blocking(0, false, errp)) { - return; + return false; } =20 if (!qemu_chr_open_fd(chr, 0, 1, errp)) { - return; + return false; } =20 atexit(term_exit); @@ -122,6 +122,7 @@ static void stdio_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) stdio_chr_set_echo(chr, false); =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } #endif =20 diff --git a/chardev/char-udp.c b/chardev/char-udp.c index 4c81c95e656..423000832ff 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -188,7 +188,7 @@ static void udp_chr_parse(QemuOpts *opts, ChardevBacken= d *backend, Error **errp) } } =20 -static void upd_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) +static bool upd_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { ChardevUdp *udp =3D backend->u.udp.data; SocketAddress *local_addr =3D socket_address_flatten(udp->local); @@ -203,7 +203,7 @@ static void upd_chr_open(Chardev *chr, ChardevBackend *= backend, Error **errp) qapi_free_SocketAddress(remote_addr); if (ret < 0) { object_unref(OBJECT(sioc)); - return; + return false; } =20 name =3D g_strdup_printf("chardev-udp-%s", chr->label); @@ -212,6 +212,7 @@ static void upd_chr_open(Chardev *chr, ChardevBackend *= backend, Error **errp) =20 s->ioc =3D QIO_CHANNEL(sioc); qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 static void char_udp_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-win-stdio.c b/chardev/char-win-stdio.c index 0535960ff1b..bb9c195a8b1 100644 --- a/chardev/char-win-stdio.c +++ b/chardev/char-win-stdio.c @@ -142,7 +142,7 @@ static void win_stiod_chr_set_echo(Chardev *chr, bool e= cho) } } =20 -static void win_stdio_chr_open(Chardev *chr, +static bool win_stdio_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { @@ -155,7 +155,7 @@ static void win_stdio_chr_open(Chardev *chr, stdio->hStdIn =3D GetStdHandle(STD_INPUT_HANDLE); if (stdio->hStdIn =3D=3D INVALID_HANDLE_VALUE) { error_setg(errp, "cannot open stdio: invalid handle"); - return; + return false; } =20 is_console =3D GetConsoleMode(stdio->hStdIn, &dwMode) !=3D 0; @@ -208,7 +208,7 @@ static void win_stdio_chr_open(Chardev *chr, win_stiod_chr_set_echo(chr, false); =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); - return; + return true; =20 err3: qemu_del_wait_object(stdio->hInputReadyEvent, NULL, NULL); @@ -217,6 +217,7 @@ err2: CloseHandle(stdio->hInputDoneEvent); err1: qemu_del_wait_object(stdio->hStdIn, NULL, NULL); + return false; } =20 static void char_win_stdio_finalize(Object *obj) diff --git a/chardev/msmouse.c b/chardev/msmouse.c index 9dc04e3b3ec..365f04546e9 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -253,7 +253,7 @@ static void char_msmouse_finalize(Object *obj) fifo8_destroy(&mouse->outbuf); } =20 -static void msmouse_chr_open(Chardev *chr, +static bool msmouse_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { @@ -265,6 +265,7 @@ static void msmouse_chr_open(Chardev *chr, fifo8_create(&mouse->outbuf, MSMOUSE_BUF_SZ); =20 /* Never send CHR_EVENT_OPENED */ + return true; } =20 static void char_msmouse_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/spice.c b/chardev/spice.c index f5b1f585eb1..ad97d98ac6b 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -251,7 +251,7 @@ static void chr_open(Chardev *chr, const char *subtype) s->sin.subtype =3D g_strdup(subtype); } =20 -static void spice_vmc_chr_open(Chardev *chr, ChardevBackend *backend, +static bool spice_vmc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { ChardevSpiceChannel *spicevmc =3D backend->u.spicevmc.data; @@ -272,13 +272,14 @@ static void spice_vmc_chr_open(Chardev *chr, ChardevB= ackend *backend, subtypes); =20 g_free(subtypes); - return; + return false; } =20 chr_open(chr, type); + return true; } =20 -static void spice_port_chr_open(Chardev *chr, ChardevBackend *backend, +static bool spice_port_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { ChardevSpicePort *spiceport =3D backend->u.spiceport.data; @@ -287,12 +288,12 @@ static void spice_port_chr_open(Chardev *chr, Chardev= Backend *backend, =20 if (name =3D=3D NULL) { error_setg(errp, "missing name parameter"); - return; + return false; } =20 if (!using_spice) { error_setg(errp, "spice not enabled"); - return; + return false; } =20 chr_open(chr, "port"); @@ -301,6 +302,7 @@ static void spice_port_chr_open(Chardev *chr, ChardevBa= ckend *backend, s->sin.portname =3D g_strdup(name); =20 vmc_register_interface(s); + return true; } =20 static void spice_vmc_chr_parse(QemuOpts *opts, ChardevBackend *backend, diff --git a/chardev/wctablet.c b/chardev/wctablet.c index 65b2ceb58c9..214d5ca2e28 100644 --- a/chardev/wctablet.c +++ b/chardev/wctablet.c @@ -324,7 +324,7 @@ static void wctablet_chr_finalize(Object *obj) } } =20 -static void wctablet_chr_open(Chardev *chr, +static bool wctablet_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { @@ -339,6 +339,7 @@ static void wctablet_chr_open(Chardev *chr, &wctablet_handler); =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 static void wctablet_chr_class_init(ObjectClass *oc, const void *data) diff --git a/gdbstub/system.c b/gdbstub/system.c index 982857f314a..e86c5870abc 100644 --- a/gdbstub/system.c +++ b/gdbstub/system.c @@ -233,9 +233,10 @@ static int gdb_chr_write(Chardev *chr, const uint8_t *= buf, int len) return len; } =20 -static void gdb_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) +static bool gdb_chr_open(Chardev *chr, ChardevBackend *backend, Error **er= rp) { /* Never send CHR_EVENT_OPENED */ + return true; } =20 static void char_gdb_class_init(ObjectClass *oc, const void *data) diff --git a/ui/console-vc.c b/ui/console-vc.c index 4c8ea4c1485..f22806fed79 100644 --- a/ui/console-vc.c +++ b/ui/console-vc.c @@ -1093,7 +1093,7 @@ void qemu_text_console_update_size(QemuTextConsole *c) dpy_text_resize(QEMU_CONSOLE(c), c->width, c->height); } =20 -static void vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **err= p) +static bool vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **err= p) { ChardevVC *vc =3D backend->u.vc.data; VCChardev *drv =3D VC_CHARDEV(chr); @@ -1142,6 +1142,7 @@ static void vc_chr_open(Chardev *chr, ChardevBackend = *backend, Error **errp) } =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 static void vc_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **= errp) diff --git a/ui/dbus-chardev.c b/ui/dbus-chardev.c index 3e471f84cd8..9442b475517 100644 --- a/ui/dbus-chardev.c +++ b/ui/dbus-chardev.c @@ -176,7 +176,7 @@ dbus_chr_send_break( return DBUS_METHOD_INVOCATION_HANDLED; } =20 -static void dbus_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) +static bool dbus_chr_open(Chardev *chr, ChardevBackend *backend, Error **e= rrp) { ERRP_GUARD(); =20 @@ -206,9 +206,9 @@ static void dbus_chr_open(Chardev *chr, ChardevBackend = *backend, Error **errp) CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_parse( opts, be, errp); if (*errp) { - return; + return false; } - CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_open( + return CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_o= pen( chr, be, errp); } =20 diff --git a/ui/gtk.c b/ui/gtk.c index 44b2b868ec9..9ebe7e8df0d 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1963,11 +1963,11 @@ static void gd_vc_chr_set_echo(Chardev *chr, bool e= cho) =20 static int nb_vcs; static Chardev *vcs[MAX_VCS]; -static void gd_vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **= errp) +static bool gd_vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **= errp) { if (nb_vcs =3D=3D MAX_VCS) { error_setg(errp, "Maximum number of consoles reached"); - return; + return false; } =20 vcs[nb_vcs++] =3D chr; @@ -1976,6 +1976,7 @@ static void gd_vc_chr_open(Chardev *chr, ChardevBacke= nd *backend, Error **errp) * console/chardev init sometimes completes elsewhere in a 2nd * stage, so defer OPENED events until they are fully initialized */ + return true; } =20 static void char_gd_vc_class_init(ObjectClass *oc, const void *data) diff --git a/ui/spice-app.c b/ui/spice-app.c index 7ac9ae4e78d..9e55f273715 100644 --- a/ui/spice-app.c +++ b/ui/spice-app.c @@ -49,7 +49,7 @@ struct VCChardev { =20 struct VCChardevClass { ChardevClass parent; - void (*parent_open)(Chardev *chr, ChardevBackend *backend, Error **err= p); + bool (*parent_init)(Chardev *chr, ChardevBackend *backend, Error **err= p); }; =20 #define TYPE_CHARDEV_VC "chardev-vc" @@ -66,11 +66,12 @@ chr_spice_backend_new(void) return be; } =20 -static void vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **err= p) +static bool vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **err= p) { VCChardevClass *vc =3D CHARDEV_VC_GET_CLASS(chr); ChardevBackend *be; const char *fqdn =3D NULL; + bool ok; =20 if (strstart(chr->label, "serial", NULL)) { fqdn =3D "org.qemu.console.serial.0"; @@ -83,8 +84,9 @@ static void vc_chr_open(Chardev *chr, ChardevBackend *bac= kend, Error **errp) be =3D chr_spice_backend_new(); be->u.spiceport.data->fqdn =3D fqdn ? g_strdup(fqdn) : g_strdup_printf("org.qemu.console.%s", chr->label= ); - vc->parent_open(chr, be, errp); + ok =3D vc->parent_init(chr, be, errp); qapi_free_ChardevBackend(be); + return ok; } =20 static void vc_chr_set_echo(Chardev *chr, bool echo) @@ -102,7 +104,7 @@ static void char_vc_class_init(ObjectClass *oc, const v= oid *data) VCChardevClass *vc =3D CHARDEV_VC_CLASS(oc); ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - vc->parent_open =3D cc->chr_open; + vc->parent_init =3D cc->chr_open; =20 cc->chr_parse =3D vc_chr_parse; cc->chr_open =3D vc_chr_open; diff --git a/ui/vdagent.c b/ui/vdagent.c index 644e9acaaeb..7ff0861f3e9 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -660,8 +660,7 @@ static void vdagent_chr_recv_clipboard(VDAgentChardev *= vd, VDAgentMessage *msg) /* ------------------------------------------------------------------ */ /* chardev backend */ =20 -static void vdagent_chr_open(Chardev *chr, - ChardevBackend *backend, +static bool vdagent_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp) { VDAgentChardev *vd =3D QEMU_VDAGENT_CHARDEV(chr); @@ -673,7 +672,7 @@ static void vdagent_chr_open(Chardev *chr, * so we have to byteswap everything on BE hosts. */ error_setg(errp, "vdagent is not supported on bigendian hosts"); - return; + return false; #endif =20 vd->mouse =3D VDAGENT_MOUSE_DEFAULT; @@ -692,6 +691,7 @@ static void vdagent_chr_open(Chardev *chr, } =20 qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 static void vdagent_clipboard_peer_register(VDAgentChardev *vd) @@ -1074,7 +1074,7 @@ static const VMStateDescription vmstate_vdagent =3D { } }; =20 -static void vdagent_chr_init(Object *obj) +static void vdagent_chr_instance_init(Object *obj) { VDAgentChardev *vd =3D QEMU_VDAGENT_CHARDEV(obj); =20 @@ -1097,7 +1097,7 @@ static const TypeInfo vdagent_chr_type_info =3D { .name =3D TYPE_CHARDEV_QEMU_VDAGENT, .parent =3D TYPE_CHARDEV, .instance_size =3D sizeof(VDAgentChardev), - .instance_init =3D vdagent_chr_init, + .instance_init =3D vdagent_chr_instance_init, .instance_finalize =3D vdagent_chr_fini, .class_init =3D vdagent_chr_class_init, }; --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813107; cv=none; d=zohomail.com; s=zohoarc; b=cuMEkELQ9ldhDjwPQxIi7p4Dk356Dde688/V1venRXWv0iWLCBU1VdgxQGhS0/8YwqCncjoiMwlrl1kwSSnaRFaRfEwhZ02eARfZlyS9iUpZbH94iVva1txiupcfTAqomwV/yP0atgFCPnUZThByXFDyqP6nPGU0/Slndd7Upfk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813107; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=47+h7KsUk4pIeVRSrl5x3R/+mYPfTcUJPXIJdzZh/Nw=; b=VCV3/VjESQCtTkv/3fDkGET3qyVFfsrocQC4dm5L0qkRUzuwZ/MWQSerphkmDu8M1qgUCtUnLybTcsCNA9BqEXKgdhBbxjtIYwxXBxayMBVUHu+qslJ/iGVyQW7YSJJA+Cgm0avEvVdUs09jogHHQIGocBSv5WwDpXg8l0hhxV8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813107463719.246865200787; Wed, 11 Feb 2026 04:31:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9NA-0000HI-J5; Wed, 11 Feb 2026 07:31:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9N8-0000Ar-9L for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:10 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9N6-0000F3-Id for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:09 -0500 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-45-pzo26kLgOTqOlnqtBd77Iw-1; Wed, 11 Feb 2026 07:31:04 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D4B261800282; Wed, 11 Feb 2026 12:31:01 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5A08C1956056; Wed, 11 Feb 2026 12:30:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813067; 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=47+h7KsUk4pIeVRSrl5x3R/+mYPfTcUJPXIJdzZh/Nw=; b=MFaYlZbAwjD3Wk5zykf1DRFQ3U3spCBoJv+qMv9A7nwWIJR/q8TFqxVYtsbcOAn2giBMqN rRBtNIrO0yZEQ7qc/zukPoOZBAf+9MOHmn4Pa3pTK+DluZ2K2EPVxrwYHAa5y9U6j/GmCI 995Z6fm+sOu6AYSz1HT8/3xjU/wJqjI= X-MC-Unique: pzo26kLgOTqOlnqtBd77Iw-1 X-Mimecast-MFC-AGG-ID: pzo26kLgOTqOlnqtBd77Iw_1770813062 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 08/14] chardev/char-pty: store pty_name into PtyChardev state Date: Wed, 11 Feb 2026 16:29:55 +0400 Message-ID: <20260211123007.3569932-9-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813110536154100 From: Vladimir Sementsov-Ogievskiy We'll use it in following commit. Note the bonus: stop use blind strcpy(). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-8-vsementsov@yandex-team.ru> --- chardev/char-pty.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 9e26e97baf5..a582aa7bc73 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -43,6 +43,7 @@ struct PtyChardev { int connected; GSource *timer_src; char *path; + char *pty_name; }; typedef struct PtyChardev PtyChardev; =20 @@ -303,7 +304,7 @@ static void cfmakeraw (struct termios *termios_p) #endif =20 /* like openpty() but also makes it raw; return master fd */ -static int qemu_openpty_raw(int *aslave, char *pty_name) +static int qemu_openpty_raw(int *aslave, char **pty_name) { int amaster; struct termios tty; @@ -324,9 +325,7 @@ static int qemu_openpty_raw(int *aslave, char *pty_name) cfmakeraw(&tty); tcsetattr(*aslave, TCSAFLUSH, &tty); =20 - if (pty_name) { - strcpy(pty_name, q_ptsname(amaster)); - } + *pty_name =3D g_strdup(q_ptsname(amaster)); =20 return amaster; } @@ -335,11 +334,12 @@ static bool pty_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) { PtyChardev *s; int master_fd, slave_fd; - char pty_name[PATH_MAX]; char *name; char *path =3D backend->u.pty.data->path; =20 - master_fd =3D qemu_openpty_raw(&slave_fd, pty_name); + s =3D PTY_CHARDEV(chr); + + master_fd =3D qemu_openpty_raw(&slave_fd, &s->pty_name); if (master_fd < 0) { error_setg_errno(errp, errno, "Failed to create PTY"); return false; @@ -351,11 +351,10 @@ static bool pty_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) return false; } =20 - chr->filename =3D g_strdup_printf("pty:%s", pty_name); + chr->filename =3D g_strdup_printf("pty:%s", s->pty_name); qemu_printf("char device redirected to %s (label %s)\n", - pty_name, chr->label); + s->pty_name, chr->label); =20 - s =3D PTY_CHARDEV(chr); s->ioc =3D QIO_CHANNEL(qio_channel_file_new_fd(master_fd)); name =3D g_strdup_printf("chardev-pty-%s", chr->label); qio_channel_set_name(s->ioc, name); @@ -364,7 +363,7 @@ static bool pty_chr_open(Chardev *chr, ChardevBackend *= backend, Error **errp) =20 /* create symbolic link */ if (path) { - int res =3D symlink(pty_name, path); + int res =3D symlink(s->pty_name, path); =20 if (res !=3D 0) { error_setg_errno(errp, errno, "Failed to create PTY symlink"); --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813098; cv=none; d=zohomail.com; s=zohoarc; b=knk+HxwiRaef5+Y8v01Hbt49LP8/p8tk5RghrJdvR0feW60bo4EtCVHdQZpM8+26ZZapb4bn2vma5WGK7+FMRleJByX7LHDgrNTAWypYR8Ki3cywWkBS7bdoza4I4EIX7WlXw6NHGZR294sIQNHh3gXZXZzljSgGPFJ2XrCM/dM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813098; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=F4BORkMGuDDVLyTEyiaLb3JWHa0y/2ix01bD3RCQTgw=; b=jW9LAFUnglg/DZUiMuU/C4v8CqvYsvKF5gfrMpShmj5FTP8lt7KRxTdOmIN4D3ByEhFo/Kol5wl0gSDhMBzSIpQOPsRAwMKczgIrEtmKlegDlQxKop0HN8fILrDfOLmZ5VWnps2cKaK3ZlFSmF0hy+KBZAlPpcgLdrTYCmh7Tzw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813098145224.2856939246807; Wed, 11 Feb 2026 04:31:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9NF-0000OW-TD; Wed, 11 Feb 2026 07:31:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NE-0000KI-9W for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NC-0000Fa-Hx for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:15 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-389-qiGiuxj6PlqMG7wbownoNg-1; Wed, 11 Feb 2026 07:31:09 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A8B1619560A2; Wed, 11 Feb 2026 12:31:07 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0EFB618004AD; Wed, 11 Feb 2026 12:31:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813073; 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=F4BORkMGuDDVLyTEyiaLb3JWHa0y/2ix01bD3RCQTgw=; b=QEX9MOxYMD0oTiw7S+mpm8n1JmSR3liCrmVTxUsLWz7XJCRsNv1ZIzjKWsLNN6664AtrWH 5nlY+sJY/0U4TrvkGZ43Bm690VJuJw9IQPm+J2ij8km5epX3Kz5EwxLqPcoTPARMnlSKDJ 8JMXafZ9n4ecjPJyy6bjoBwZu5B65m4= X-MC-Unique: qiGiuxj6PlqMG7wbownoNg-1 X-Mimecast-MFC-AGG-ID: qiGiuxj6PlqMG7wbownoNg_1770813067 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 09/14] chardev: introduce .chr_get_pty_name() handler Date: Wed, 11 Feb 2026 16:29:56 +0400 Message-ID: <20260211123007.3569932-10-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813100580154100 From: Vladimir Sementsov-Ogievskiy Currently we do two wrong things: 1. Abuse s->filename to get pty_name from it 2. Violate layering with help of CHARDEV_IS_PTY() Let's get rid of both, and introduce correct way to get pty name in generic code, if available. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-9-vsementsov@yandex-team.ru> --- include/chardev/char.h | 7 +++++-- chardev/char-pty.c | 7 +++++++ chardev/char.c | 19 +++++++++++++------ hw/char/xen_console.c | 7 ++++--- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index e1bf97222b8..ada5529fa6c 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -247,8 +247,6 @@ OBJECT_DECLARE_TYPE(Chardev, ChardevClass, CHARDEV) =20 #define CHARDEV_IS_RINGBUF(chr) \ object_dynamic_cast(OBJECT(chr), TYPE_CHARDEV_RINGBUF) -#define CHARDEV_IS_PTY(chr) \ - object_dynamic_cast(OBJECT(chr), TYPE_CHARDEV_PTY) =20 struct ChardevClass { ObjectClass parent_class; @@ -308,6 +306,9 @@ struct ChardevClass { void (*chr_be_event)(Chardev *s, QEMUChrEvent event); =20 void (*chr_listener_cleanup)(Chardev *chr); + + /* return PTY name if available */ + char *(*chr_get_pty_name)(Chardev *s); }; =20 Chardev *qemu_chardev_new(const char *id, const char *typename, @@ -322,4 +323,6 @@ GSource *qemu_chr_timeout_add_ms(Chardev *chr, guint ms, void suspend_mux_open(void); void resume_mux_open(void); =20 +char *qemu_chr_get_pty_name(Chardev *chr); + #endif diff --git a/chardev/char-pty.c b/chardev/char-pty.c index a582aa7bc73..047aade09e5 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -387,6 +387,12 @@ static void pty_chr_parse(QemuOpts *opts, ChardevBacke= nd *backend, Error **errp) pty->path =3D g_strdup(path); } =20 +static char *pty_chr_get_pty_name(Chardev *chr) +{ + PtyChardev *s =3D PTY_CHARDEV(chr); + return g_strdup(s->pty_name); +} + static void char_pty_class_init(ObjectClass *oc, const void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); @@ -396,6 +402,7 @@ static void char_pty_class_init(ObjectClass *oc, const = void *data) cc->chr_write =3D pty_chr_write; cc->chr_update_read_handler =3D pty_chr_update_read_handler; cc->chr_add_watch =3D pty_chr_add_watch; + cc->chr_get_pty_name =3D pty_chr_get_pty_name; } =20 static const TypeInfo char_pty_type_info =3D { diff --git a/chardev/char.c b/chardev/char.c index 44bfed36272..0dc792b88f7 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -1090,9 +1090,7 @@ ChardevReturn *qmp_chardev_add(const char *id, Charde= vBackend *backend, } =20 ret =3D g_new0(ChardevReturn, 1); - if (CHARDEV_IS_PTY(chr)) { - ret->pty =3D g_strdup(chr->filename + 4); - } + ret->pty =3D qemu_chr_get_pty_name(chr); =20 return ret; =20 @@ -1101,6 +1099,17 @@ err: return NULL; } =20 +char *qemu_chr_get_pty_name(Chardev *chr) +{ + ChardevClass *cc =3D CHARDEV_GET_CLASS(chr); + + if (cc->chr_get_pty_name) { + return cc->chr_get_pty_name(chr); + } + + return NULL; +} + ChardevReturn *qmp_chardev_change(const char *id, ChardevBackend *backend, Error **errp) { @@ -1192,9 +1201,7 @@ ChardevReturn *qmp_chardev_change(const char *id, Cha= rdevBackend *backend, object_unref(OBJECT(chr_new)); =20 ret =3D g_new0(ChardevReturn, 1); - if (CHARDEV_IS_PTY(chr_new)) { - ret->pty =3D g_strdup(chr_new->filename + 4); - } + ret->pty =3D qemu_chr_get_pty_name(chr_new); =20 return ret; } diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index 8ee098d9ad4..bdeb76dc870 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -418,6 +418,7 @@ static void xen_console_realize(XenDevice *xendev, Erro= r **errp) XenConsole *con =3D XEN_CONSOLE_DEVICE(xendev); Chardev *cs =3D qemu_chr_fe_get_driver(&con->chr); unsigned int u; + g_autofree char *pty_name =3D NULL; =20 if (!cs) { error_setg(errp, "no backing character device"); @@ -450,9 +451,9 @@ static void xen_console_realize(XenDevice *xendev, Erro= r **errp) =20 trace_xen_console_realize(con->dev, object_get_typename(OBJECT(cs))); =20 - if (CHARDEV_IS_PTY(cs)) { - /* Strip the leading 'pty:' */ - xen_device_frontend_printf(xendev, "tty", "%s", cs->filename + 4); + pty_name =3D qemu_chr_get_pty_name(cs); + if (pty_name) { + xen_device_frontend_printf(xendev, "tty", "%s", pty_name); } =20 /* No normal PV driver initialization for the primary console under Xe= n */ --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813137; cv=none; d=zohomail.com; s=zohoarc; b=iA6FMosa0r/743E4H5MKtcqPnD4hZmFEmBqaej7/hQPCh/wbmQSyVxcw5tDSfBF6Iqb0AICLKj1nY4tuDB92EVuVJ9uql+8+z5XYr5xLig+a2diAh1q685dksZ8wV2mLvKv7iBXnHjjpCeNfyf7IQKRaxmKnbmFfLMjWcoIVJjY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813137; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NawPSV0+R7Z6iBTNYDG41PH3COFdnG/VW+iZ15ECL/g=; b=fvy0f2vxvhBZRC3/dsvPhCz4XOFmqEszINpuz7aBChiwS20XJBgt4rRzNzeh15yjwrVwYGz8r73ikSnNztsUARqg18J8Q1EVIFn7PmpNH0ICWYPlQapkrKRbtTk0SUhHmQTFGfbeE53inS8wc0/xntlPoidIp3UXo6OeQkPkItk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813136994592.6697568368768; Wed, 11 Feb 2026 04:32:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9NZ-0000wv-RQ; Wed, 11 Feb 2026 07:31:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NJ-0000au-PU for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:25 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NH-0000G0-Lq for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:21 -0500 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-27-vuGe2ZcvOIGOm3x7YZ09mA-1; Wed, 11 Feb 2026 07:31:15 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CCC011800454; Wed, 11 Feb 2026 12:31:13 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 738A330001A8; Wed, 11 Feb 2026 12:31:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813079; 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=NawPSV0+R7Z6iBTNYDG41PH3COFdnG/VW+iZ15ECL/g=; b=JPQqM7x1SHgUi88i87dCfJNmVWVCJgTz44mhIZCHfvF4HisQDwIUBB0FtwFkJRV5CtOcNu LlM2qeBgigxbFU+GedQ9rT0r4CWxID1PxJH97MsxDsQnAi8JEYWq1NR87xPKwGrKZ1v33+ lE39QDgU2REkLWvT5yEZvLxNeDMOk1A= X-MC-Unique: vuGe2ZcvOIGOm3x7YZ09mA-1 X-Mimecast-MFC-AGG-ID: vuGe2ZcvOIGOm3x7YZ09mA_1770813074 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 10/14] chardev: rework filename handling Date: Wed, 11 Feb 2026 16:29:57 +0400 Message-ID: <20260211123007.3569932-11-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 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=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813139350154100 From: Vladimir Sementsov-Ogievskiy Instead of checking, did backend set the filename state or not, let's be stateless: filename is needed rarely, so, let's just have a generic function (with optional implementation by backends) to get it. Signed-off-by: Vladimir Sementsov-Ogievskiy [ Marc-Andr=C3=A9 - fix leak in ivshmem-pci.c ] Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-10-vsementsov@yandex-team.ru> --- include/chardev/char.h | 5 ++++- chardev/char-pty.c | 8 +++++++- chardev/char-socket.c | 31 ++++++++++++------------------- chardev/char.c | 21 +++++++++++++++------ hw/misc/ivshmem-pci.c | 7 ++++--- 5 files changed, 42 insertions(+), 30 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index ada5529fa6c..81bc0cbdf2a 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -62,7 +62,6 @@ struct Chardev { QemuMutex chr_write_lock; CharFrontend *fe; char *label; - char *filename; int logfd; int be_open; /* used to coordinate the chardev-change special-case: */ @@ -309,6 +308,9 @@ struct ChardevClass { =20 /* return PTY name if available */ char *(*chr_get_pty_name)(Chardev *s); + + /* get filename for reporting */ + char *(*chr_get_filename)(Chardev *s); }; =20 Chardev *qemu_chardev_new(const char *id, const char *typename, @@ -324,5 +326,6 @@ void suspend_mux_open(void); void resume_mux_open(void); =20 char *qemu_chr_get_pty_name(Chardev *chr); +char *qemu_chr_get_filename(Chardev *chr); =20 #endif diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 047aade09e5..7e95132cdbb 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -351,7 +351,6 @@ static bool pty_chr_open(Chardev *chr, ChardevBackend *= backend, Error **errp) return false; } =20 - chr->filename =3D g_strdup_printf("pty:%s", s->pty_name); qemu_printf("char device redirected to %s (label %s)\n", s->pty_name, chr->label); =20 @@ -393,6 +392,12 @@ static char *pty_chr_get_pty_name(Chardev *chr) return g_strdup(s->pty_name); } =20 +static char *pty_chr_get_filename(Chardev *chr) +{ + PtyChardev *s =3D PTY_CHARDEV(chr); + return g_strdup_printf("pty:%s", s->pty_name); +} + static void char_pty_class_init(ObjectClass *oc, const void *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); @@ -403,6 +408,7 @@ static void char_pty_class_init(ObjectClass *oc, const = void *data) cc->chr_update_read_handler =3D pty_chr_update_read_handler; cc->chr_add_watch =3D pty_chr_add_watch; cc->chr_get_pty_name =3D pty_chr_get_pty_name; + cc->chr_get_filename =3D pty_chr_get_filename; } =20 static const TypeInfo char_pty_type_info =3D { diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 908bbdbc124..5adeb908659 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -40,6 +40,7 @@ =20 static gboolean socket_reconnect_timeout(gpointer opaque); static void tcp_chr_telnet_init(Chardev *chr); +static char *qemu_chr_compute_filename(SocketChardev *s); =20 static void tcp_chr_change_state(SocketChardev *s, TCPChardevState state) { @@ -384,8 +385,6 @@ static void tcp_chr_free_connection(Chardev *chr) s->sioc =3D NULL; object_unref(OBJECT(s->ioc)); s->ioc =3D NULL; - g_free(chr->filename); - chr->filename =3D NULL; tcp_chr_change_state(s, TCP_CHARDEV_STATE_DISCONNECTED); } =20 @@ -439,16 +438,17 @@ static char *qemu_chr_socket_address(SocketChardev *s= , const char *prefix) } } =20 -static void update_disconnected_filename(SocketChardev *s) +static char *tcp_chr_get_filename(Chardev *chr) { - Chardev *chr =3D CHARDEV(s); + SocketChardev *s =3D SOCKET_CHARDEV(chr); =20 - g_free(chr->filename); - if (s->addr) { - chr->filename =3D qemu_chr_socket_address(s, "disconnected:"); - } else { - chr->filename =3D g_strdup("disconnected:socket"); + if (s->state =3D=3D TCP_CHARDEV_STATE_CONNECTED) { + return qemu_chr_compute_filename(s); + } else if (s->addr) { + return qemu_chr_socket_address(s, "disconnected:"); } + + return g_strdup("disconnected:socket"); } =20 /* NB may be called even if tcp_chr_connect has not been @@ -468,7 +468,6 @@ static void tcp_chr_disconnect_locked(Chardev *chr) qio_net_listener_set_client_func_full(s->listener, tcp_chr_accept, chr, NULL, chr->gcontext); } - update_disconnected_filename(s); if (emit_close) { qemu_chr_be_event(chr, CHR_EVENT_CLOSED); } @@ -639,9 +638,6 @@ static void tcp_chr_connect(void *opaque) Chardev *chr =3D CHARDEV(opaque); SocketChardev *s =3D SOCKET_CHARDEV(opaque); =20 - g_free(chr->filename); - chr->filename =3D qemu_chr_compute_filename(s); - tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTED); update_ioc_handlers(s); qemu_chr_be_event(chr, CHR_EVENT_OPENED); @@ -1000,8 +996,8 @@ static void tcp_chr_accept_server_sync(Chardev *chr) { SocketChardev *s =3D SOCKET_CHARDEV(chr); QIOChannelSocket *sioc; - info_report("QEMU waiting for connection on: %s", - chr->filename); + g_autofree char *filename =3D qemu_chr_get_filename(chr); + info_report("QEMU waiting for connection on: %s", filename); tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); sioc =3D qio_net_listener_wait_client(s->listener); tcp_chr_set_client_ioc_name(chr, sioc); @@ -1258,8 +1254,6 @@ static int qmp_chardev_open_socket_server(Chardev *ch= r, s->addr =3D qio_net_listener_get_local_address(s->listener, 0, errp); =20 skip_listen: - update_disconnected_filename(s); - if (is_waitconnect) { tcp_chr_accept_server_sync(chr); } else { @@ -1436,8 +1430,6 @@ static bool tcp_chr_open(Chardev *chr, ChardevBackend= *backend, Error **errp) } s->registered_yank =3D true; =20 - update_disconnected_filename(s); - if (s->is_listen) { if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270, is_waitconnect, errp) < 0) { @@ -1593,6 +1585,7 @@ static void char_socket_class_init(ObjectClass *oc, c= onst void *data) cc->chr_add_watch =3D tcp_chr_add_watch; cc->chr_update_read_handler =3D tcp_chr_update_read_handler; cc->chr_listener_cleanup =3D tcp_chr_listener_cleanup; + cc->chr_get_filename =3D tcp_chr_get_filename; =20 object_class_property_add(oc, "addr", "SocketAddress", char_socket_get_addr, NULL, diff --git a/chardev/char.c b/chardev/char.c index 0dc792b88f7..3373c9b61f8 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -309,7 +309,6 @@ static void char_finalize(Object *obj) if (chr->fe) { chr->fe->chr =3D NULL; } - g_free(chr->filename); g_free(chr->label); if (chr->logfd !=3D -1) { close(chr->logfd); @@ -796,7 +795,7 @@ static int qmp_query_chardev_foreach(Object *obj, void = *data) ChardevInfo *value =3D g_malloc0(sizeof(*value)); =20 value->label =3D g_strdup(chr->label); - value->filename =3D g_strdup(chr->filename); + value->filename =3D qemu_chr_get_filename(chr); value->frontend_open =3D chr->fe && chr->fe->fe_is_open; =20 QAPI_LIST_PREPEND(*list, value); @@ -1025,10 +1024,6 @@ static Chardev *chardev_new(const char *id, const ch= ar *typename, return NULL; } =20 - if (!chr->filename) { - chr->filename =3D g_strdup(typename + 8); - } - return chr; } =20 @@ -1110,6 +1105,20 @@ char *qemu_chr_get_pty_name(Chardev *chr) return NULL; } =20 +char *qemu_chr_get_filename(Chardev *chr) +{ + ChardevClass *cc =3D CHARDEV_GET_CLASS(chr); + const char *typename; + + if (cc->chr_get_filename) { + return cc->chr_get_filename(chr); + } + + typename =3D object_get_typename(OBJECT(chr)); + assert(g_str_has_prefix(typename, "chardev-")); + return g_strdup(typename + 8); +} + ChardevReturn *qmp_chardev_change(const char *id, ChardevBackend *backend, Error **errp) { diff --git a/hw/misc/ivshmem-pci.c b/hw/misc/ivshmem-pci.c index b9162589a02..a3a43f53bd1 100644 --- a/hw/misc/ivshmem-pci.c +++ b/hw/misc/ivshmem-pci.c @@ -873,10 +873,11 @@ static void ivshmem_common_realize(PCIDevice *dev, Er= ror **errp) host_memory_backend_set_mapped(s->hostmem, true); } else { Chardev *chr =3D qemu_chr_fe_get_driver(&s->server_chr); - assert(chr); + g_autofree char *filename =3D NULL; =20 - IVSHMEM_DPRINTF("using shared memory server (socket =3D %s)\n", - chr->filename); + assert(chr); + filename =3D qemu_chr_get_filename(chr); + IVSHMEM_DPRINTF("using shared memory server (socket =3D %s)\n", fi= lename); =20 /* we allocate enough space for 16 peers and grow as needed */ resize_peers(s, 16); --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813114; cv=none; d=zohomail.com; s=zohoarc; b=O2oqAJd8IHQZTnJcaloQzozp9w/bpXEN7HGVF25GPZN2UFyEuuVgDkD78e4WI4UGQeertiwcBY0wmol83ehHP9pqOAQUHtuWVB4zXsGJMab1F+rNAdTHXWLmFZVx7wL3E/o51XrccnYTyhX+suR9SWNOyjfbexKz+y351RIbKW8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813114; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4feRG+PIqLPyCpVStJ7uIxka6xWW9klU080X9xA3hKo=; b=C1m9AYkForYZAEmXSb6RjXoCtZ+kLPNtKwIHpMeFO7+Htws3ehb4XMWwPAUU19O1NnCXmMkOCRed190r3H9AXYnzNG6PKaIvtJNmuvmeUlAYlpufes6FSP7Z8I++xIoWyvS19U7CxDS1fYr6A6OFZYPkeyR4WxaX/CXSdkW2Nis= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813114771330.86783663660424; Wed, 11 Feb 2026 04:31:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9Nd-00015i-6l; Wed, 11 Feb 2026 07:31:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NO-0000dQ-9B for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:26 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NM-0000GJ-M1 for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:25 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-581-YbVOGn9zNVSxTeUqeeVBow-1; Wed, 11 Feb 2026 07:31:20 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1C26A1955F12; Wed, 11 Feb 2026 12:31:19 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1B18930001A8; Wed, 11 Feb 2026 12:31:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813084; 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=4feRG+PIqLPyCpVStJ7uIxka6xWW9klU080X9xA3hKo=; b=KLhwj8mOQsLRiz3wqlwrPv5Oj1JunlSasxi5WQpjT0nv2FQJHCM1/Njp5e7uoX/G8YX2YN G3ldxgsdMDemgsytA6O5vQwq4ilb+j+SKP5tynQdDM/dtQpg7zkLLW6a0wJW+pVWHjpx/C UY79oNVZjVjxA5ufdpimo4/1h0yFIlg= X-MC-Unique: YbVOGn9zNVSxTeUqeeVBow-1 X-Mimecast-MFC-AGG-ID: YbVOGn9zNVSxTeUqeeVBow_1770813079 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 11/14] chardev/char: qemu_char_open(): add return value Date: Wed, 11 Feb 2026 16:29:58 +0400 Message-ID: <20260211123007.3569932-12-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 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=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813116706158500 From: Vladimir Sementsov-Ogievskiy Accordingly with recommendations in include/qapi/error.h accompany errp by boolean return value and get rid of error propagation. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260115144606.233252-11-vsementsov@yandex-team.ru> --- chardev/char.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 3373c9b61f8..5d00cac2f31 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -246,7 +246,7 @@ int qemu_chr_add_client(Chardev *s, int fd) CHARDEV_GET_CLASS(s)->chr_add_client(s, fd) : -1; } =20 -static void qemu_char_open(Chardev *chr, ChardevBackend *backend, Error **= errp) +static bool qemu_char_open(Chardev *chr, ChardevBackend *backend, Error **= errp) { ChardevClass *cc =3D CHARDEV_GET_CLASS(chr); /* Any ChardevCommon member would work */ @@ -262,13 +262,15 @@ static void qemu_char_open(Chardev *chr, ChardevBacke= nd *backend, Error **errp) } chr->logfd =3D qemu_create(common->logfile, flags, 0666, errp); if (chr->logfd < 0) { - return; + return false; } } =20 - if (cc->chr_open) { - cc->chr_open(chr, backend, errp); + if (!cc->chr_open) { + return true; } + + return cc->chr_open(chr, backend, errp); } =20 static void char_init(Object *obj) @@ -1006,7 +1008,6 @@ static Chardev *chardev_new(const char *id, const cha= r *typename, { Object *obj; Chardev *chr =3D NULL; - Error *local_err =3D NULL; =20 assert(g_str_has_prefix(typename, "chardev-")); assert(id); @@ -1017,9 +1018,7 @@ static Chardev *chardev_new(const char *id, const cha= r *typename, chr->label =3D g_strdup(id); chr->gcontext =3D gcontext; =20 - qemu_char_open(chr, backend, &local_err); - if (local_err) { - error_propagate(errp, local_err); + if (!qemu_char_open(chr, backend, errp)) { object_unref(obj); return NULL; } --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813116; cv=none; d=zohomail.com; s=zohoarc; b=YRk0UUoT1Jb/yJftzzypGiDjcDw3vEH5GmREeCG27bhenKcXhbCjKpDGkOhkGFss4+FUk7aybqCs5awi/rMbdgYm4yrzgKusscKp/DKrC9XbPZCrlPVACyu9HNBihegTa27WE6rl30rhCl3iR07dcuGjcvhqk11kuR0pi9NIar8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813116; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tpYjeot8p53E9hbudpSJPO+xYO8RwO13MoSHQweyb84=; b=FkFFBqAkGy55vMDULBqSSgWV4HOgWo07f2ipFle85ZokEooMW9l+caYh8L+AGmPenw4aqpKVe4fSVxSMBi2hp4xGsOLKWRHXz9V+fVAmx7Ny1EewOH3Ow1RxAB8hv9tZcw1DX0f2aaD9oGgDsA7xVzXjrOG9fgkdO7eXqNd7PQI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813116540875.4003661026147; Wed, 11 Feb 2026 04:31:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9Ne-00016N-6h; Wed, 11 Feb 2026 07:31:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NU-0000oL-V9 for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NS-0000Gs-4V for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:31 -0500 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-663-O6N5zASFObGpSC7yEto7wA-1; Wed, 11 Feb 2026 07:31:26 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 65CB419560A3; Wed, 11 Feb 2026 12:31:24 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 235A318003F6; Wed, 11 Feb 2026 12:31:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813089; 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=tpYjeot8p53E9hbudpSJPO+xYO8RwO13MoSHQweyb84=; b=JCG7WAJNXG042yyBVm5YVFFN/Z+jbzpOgc7zl+JEHtffvq0atvsh1G4ZDvXUCmReR0d11+ sA5BsHCy2bqExEb3tXtISy/2gZCyEupkIa65AWpBIYQ7Y1XhbKfu4Lqh/wJFbTMYpoSskN NFE1OU75Ne+ii/MCHlW23UBkiIJYn00= X-MC-Unique: O6N5zASFObGpSC7yEto7wA-1 X-Mimecast-MFC-AGG-ID: O6N5zASFObGpSC7yEto7wA_1770813084 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 12/14] char: qemu_chr_write_log() use qemu_write_full() Date: Wed, 11 Feb 2026 16:29:59 +0400 Message-ID: <20260211123007.3569932-13-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 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=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813118682154100 From: Vladimir Sementsov-Ogievskiy logfd is blocking, so we don't need to care about EAGAIN. Let's simply use qemu_write_full(). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau Message-ID: <20260201173633.413934-2-vsementsov@yandex-team.ru> --- chardev/char.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 5d00cac2f31..4b285baf029 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -82,29 +82,17 @@ void qemu_chr_be_event(Chardev *s, QEMUChrEvent event) CHARDEV_GET_CLASS(s)->chr_be_event(s, event); } =20 -/* Not reporting errors from writing to logfile, as logs are - * defined to be "best effort" only */ static void qemu_chr_write_log(Chardev *s, const uint8_t *buf, size_t len) { - size_t done =3D 0; - ssize_t ret; - if (s->logfd < 0) { return; } =20 - while (done < len) { - retry: - ret =3D write(s->logfd, buf + done, len - done); - if (ret =3D=3D -1 && errno =3D=3D EAGAIN) { - g_usleep(100); - goto retry; - } - - if (ret <=3D 0) { - return; - } - done +=3D ret; + if (qemu_write_full(s->logfd, buf, len) < len) { + /* + * qemu_write_full() is defined with G_GNUC_WARN_UNUSED_RESULT, + * but logging is best=E2=80=91effort, we do ignore errors. + */ } } =20 --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813138; cv=none; d=zohomail.com; s=zohoarc; b=KOnLL4dB8XxgVxthpq0iP20tDNZidzrnsTSw8WYAth/iuI4szvyzL2e7D4kcZrqKU9V+LWYklQWp3BP/m+z276b81Un0AT7HMlCjrxfbU2GIQnkqpuZZmJHs/925O7E+JSuJCR+FMu3zz98ujoGpdQXJcmnngsAChLaJiSEoFWQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813138; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jM55cKZhaLYd8jeB1eDli6p7CvLSuDmkHDqz2KhxR1g=; b=Sl1SkZ3c8WlFeJx4CM/YVGKen33S9FbV8+UsLkfqKKgjDGl4vvoxSWuaVjIzlItI6McynBu64h6iQq6iDB7Oqu93VQnKqCDZ7aK0phtTND7Ib+ob0zxRofx0iCK9VWOnPk9Bk3iuYIeawyNrYIE0jYmvMEzGjFXiBWbINCgpv9s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813138322802.8701763824535; Wed, 11 Feb 2026 04:32:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9Nn-0001JE-JO; Wed, 11 Feb 2026 07:31:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NY-0000t7-Cx for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:37 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9NX-0000K3-0D for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:36 -0500 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-676-FYZ-7oebMfKy2oSzbnuHug-1; Wed, 11 Feb 2026 07:31:31 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 69E491800282; Wed, 11 Feb 2026 12:31:29 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6BED718003F6; Wed, 11 Feb 2026 12:31:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813094; 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=jM55cKZhaLYd8jeB1eDli6p7CvLSuDmkHDqz2KhxR1g=; b=Z7IMSXpWHfPCAklRvbAXDGpqlE3WPHcKlTdLoAdhMGVjXTC5vuf0Skqeco+9BFVteyDHIj l3MRUVOWEcF+q7274Wwckr5uWAizJl0dliCbrCWYfLSh0xyGZUsXWYWxd7xUiEVVkppFUn FXPqVzBDCWDe/es0zo3diq3X5X+awb4= X-MC-Unique: FYZ-7oebMfKy2oSzbnuHug-1 X-Mimecast-MFC-AGG-ID: FYZ-7oebMfKy2oSzbnuHug_1770813089 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 13/14] error-report: make real_time_iso8601() public Date: Wed, 11 Feb 2026 16:30:00 +0400 Message-ID: <20260211123007.3569932-14-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 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=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813141036154100 From: Vladimir Sementsov-Ogievskiy To be reused in the following commit. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau Message-ID: <20260201173633.413934-3-vsementsov@yandex-team.ru> --- include/qemu/error-report.h | 6 ++++++ util/error-report.c | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h index 3ae2357fda5..dc423d36071 100644 --- a/include/qemu/error-report.h +++ b/include/qemu/error-report.h @@ -74,4 +74,10 @@ extern bool message_with_timestamp; extern bool error_with_guestname; extern const char *error_guest_name; =20 +/* + * Return current datetime in ISO 8601 format. + * Caller is responsible to g_free() the returned string. + */ +char *real_time_iso8601(void); + #endif diff --git a/util/error-report.c b/util/error-report.c index 1b17c11de19..d6b7448183a 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -169,8 +169,7 @@ static void print_loc(void) } } =20 -static char * -real_time_iso8601(void) +char *real_time_iso8601(void) { g_autoptr(GDateTime) dt =3D g_date_time_new_now_utc(); return g_date_time_format_iso8601(dt); --=20 2.52.0 From nobody Sun Apr 12 04:23:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770813143; cv=none; d=zohomail.com; s=zohoarc; b=QRp6wtjw27hsaGHxAIcF/4AaGBfx7ttZmJ7/QVxBxEC2JwMbh4sGgapVOfnmbMO2hcrGkKrZXw+RmXNIvPtVmL5DooTtjZZ7pspYbYOh7OGugy11BIJxTedgvLchoQbVeDwTAdN3dJjzT8/oLulLhoXeywRJdHcf0AsMGyoRWRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770813143; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oafPsMhhX2LYktt1mZytvPrd7reHuMI6cpisN3UVjHk=; b=EBSyr0oQ1P2hoAnM26bsisSpwP3dwOzJophoLlHEn1YZZbzra9G5knwOlteeCvoGyCsAtQIWDmHRspnmKySw2e2GWt0wEN2pnMXh3iIZmU8cFob1pV7heJo47NAvvJQ8fZhwLu3rHutZ7btqH3CUteVxt/fBWBqoKtqSndQR0Sw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770813143365905.1301341179202; Wed, 11 Feb 2026 04:32:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vq9No-0001Ja-8p; Wed, 11 Feb 2026 07:31:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9Ne-00018T-4y for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vq9Nc-0000NK-CK for qemu-devel@nongnu.org; Wed, 11 Feb 2026 07:31:41 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-68-WIujemrANsyyw5L1QkdvYg-1; Wed, 11 Feb 2026 07:31:36 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C10951955F27; Wed, 11 Feb 2026 12:31:34 +0000 (UTC) Received: from localhost (unknown [10.45.242.6]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 7D7B130001BF; Wed, 11 Feb 2026 12:31:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770813099; 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=oafPsMhhX2LYktt1mZytvPrd7reHuMI6cpisN3UVjHk=; b=aj445UeDgTtmkriiBG7dMmAJdELD6NkG3uNoUrYCkXLQeRhs/lu2oggiW//LVwmuDYX8yX s2uVXbaRM27ZmXdwLVlJWoxOBC+YZ2h2GJ3mTqXfwoQg/+fncAq2fneyq1de2EX0h0EVMQ B0L70j63ZFcaaIbKdoIWj0aQfzmc5iE= X-MC-Unique: WIujemrANsyyw5L1QkdvYg-1 X-Mimecast-MFC-AGG-ID: WIujemrANsyyw5L1QkdvYg_1770813094 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Eduardo Habkost , xen-devel@lists.xenproject.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Markus Armbruster , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Anthony PERARD , Eric Blake , Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefano Stabellini , Paul Durrant , Vladimir Sementsov-Ogievskiy Subject: [PULL 14/14] chardev: add logtimestamp option Date: Wed, 11 Feb 2026 16:30:01 +0400 Message-ID: <20260211123007.3569932-15-marcandre.lureau@redhat.com> In-Reply-To: <20260211123007.3569932-1-marcandre.lureau@redhat.com> References: <20260211123007.3569932-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 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=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1770813145124154100 From: Vladimir Sementsov-Ogievskiy Add an option to inject timestamps into serial log file. That simplifies debugging a lot, when you can simply compare QEMU logs with guest console logs. Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau Message-ID: <20260201173633.413934-4-vsementsov@yandex-team.ru> --- qapi/char.json | 6 +++- include/chardev/char.h | 2 ++ chardev/char.c | 63 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/qapi/char.json b/qapi/char.json index 140614f82c3..a4abafa6803 100644 --- a/qapi/char.json +++ b/qapi/char.json @@ -197,11 +197,15 @@ # @logappend: true to append instead of truncate (default to false to # truncate) # +# @logtimestamp: true to insert timestamps into logfile +# (default false) (since 11.0) +# # Since: 2.6 ## { 'struct': 'ChardevCommon', 'data': { '*logfile': 'str', - '*logappend': 'bool' } } + '*logappend': 'bool', + '*logtimestamp': 'bool' } } =20 ## # @ChardevFile: diff --git a/include/chardev/char.h b/include/chardev/char.h index 81bc0cbdf2a..c2c42e4b7a3 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -63,6 +63,8 @@ struct Chardev { CharFrontend *fe; char *label; int logfd; + bool logtimestamp; + bool log_line_start; int be_open; /* used to coordinate the chardev-change special-case: */ bool handover_yank_instance; diff --git a/chardev/char.c b/chardev/char.c index 4b285baf029..48b326d57b9 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -82,12 +82,8 @@ void qemu_chr_be_event(Chardev *s, QEMUChrEvent event) CHARDEV_GET_CLASS(s)->chr_be_event(s, event); } =20 -static void qemu_chr_write_log(Chardev *s, const uint8_t *buf, size_t len) +static void do_write_log(Chardev *s, const uint8_t *buf, size_t len) { - if (s->logfd < 0) { - return; - } - if (qemu_write_full(s->logfd, buf, len) < len) { /* * qemu_write_full() is defined with G_GNUC_WARN_UNUSED_RESULT, @@ -96,6 +92,55 @@ static void qemu_chr_write_log(Chardev *s, const uint8_t= *buf, size_t len) } } =20 +static void do_write_log_timestamps(Chardev *s, const uint8_t *buf, size_t= len) +{ + g_autofree char *timestr =3D NULL; + + while (len) { + size_t i; + + if (s->log_line_start) { + if (!timestr) { + timestr =3D real_time_iso8601(); + } + do_write_log(s, (const uint8_t *)timestr, strlen(timestr)); + do_write_log(s, (const uint8_t *)" ", 1); + s->log_line_start =3D false; + } + + for (i =3D 0; i < len; i++) { + if (buf[i] =3D=3D '\n') { + break; + } + } + + if (i =3D=3D len) { + /* not found \n */ + do_write_log(s, buf, len); + return; + } + + i +=3D 1; + do_write_log(s, buf, i); + buf +=3D i; + len -=3D i; + s->log_line_start =3D true; + } +} + +static void qemu_chr_write_log(Chardev *s, const uint8_t *buf, size_t len) +{ + if (s->logfd < 0) { + return; + } + + if (s->logtimestamp) { + do_write_log_timestamps(s, buf, len); + } else { + do_write_log(s, buf, len); + } +} + static int qemu_chr_write_buffer(Chardev *s, const uint8_t *buf, int len, int *offset, bool write_all) @@ -248,6 +293,7 @@ static bool qemu_char_open(Chardev *chr, ChardevBackend= *backend, Error **errp) } else { flags |=3D O_TRUNC; } + chr->logtimestamp =3D common->has_logtimestamp && common->logtimes= tamp; chr->logfd =3D qemu_create(common->logfile, flags, 0666, errp); if (chr->logfd < 0) { return false; @@ -267,6 +313,7 @@ static void char_init(Object *obj) =20 chr->handover_yank_instance =3D false; chr->logfd =3D -1; + chr->log_line_start =3D true; qemu_mutex_init(&chr->chr_write_lock); =20 /* @@ -505,6 +552,9 @@ void qemu_chr_parse_common(QemuOpts *opts, ChardevCommo= n *backend) backend->logfile =3D g_strdup(logfile); backend->has_logappend =3D true; backend->logappend =3D qemu_opt_get_bool(opts, "logappend", false); + + backend->has_logtimestamp =3D true; + backend->logtimestamp =3D qemu_opt_get_bool(opts, "logtimestamp", fals= e); } =20 static const ChardevClass *char_get_class(const char *driver, Error **errp) @@ -956,6 +1006,9 @@ QemuOptsList qemu_chardev_opts =3D { },{ .name =3D "logappend", .type =3D QEMU_OPT_BOOL, + },{ + .name =3D "logtimestamp", + .type =3D QEMU_OPT_BOOL, },{ .name =3D "mouse", .type =3D QEMU_OPT_BOOL, --=20 2.52.0