From nobody Sun Apr 12 04:23:18 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=1770976228; cv=none; d=zohomail.com; s=zohoarc; b=Ul2XiZmM69uyskI2FgS1Xhnebtm3/WAYZ5QpmC1qeTAbKqB+kaC/NkgG07K4GO/3j+uD7fKgkGXgZMkR+/sZ1sO7pGRSsWTqRzESoKFa+9TAZrmZsYT/5Mbnno8T/xs1bY49EugxwsnED5ABBYUyEpKS6LUoFHoB5+RAjm6/S18= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976228; 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=LGj9xk/Pm83KB03G6LVj5ElLZzoxkSGN+CQtNgApbDQ=; b=HyQogkH3EgmkKpQH5B9v19QAqdpt6aojHRrM//oAIMVxeeJ9rbAD2Jg7JI9ZSO0+cXNIkPuz7tumpXm4rP6GSy5LYROQiM24scwIJ6Y1jrQNJRcms0vEM+svTW4Kpawkmiz2lKZxFtySP8jVDbzU1ir1BteHYf9jz+q3MlePAdk= 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 1770976228812981.7695176079967; Fri, 13 Feb 2026 01:50:28 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1230419.1535908 (Exim 4.92) (envelope-from ) id 1vqpoT-0002zy-SJ; Fri, 13 Feb 2026 09:50:13 +0000 Received: by outflank-mailman (output) from mailman id 1230419.1535908; Fri, 13 Feb 2026 09:50:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vqpoT-0002yn-Jy; Fri, 13 Feb 2026 09:50:13 +0000 Received: by outflank-mailman (input) for mailman id 1230419; Fri, 13 Feb 2026 09:50:13 +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 1vqpoT-0001Ng-2N for xen-devel@lists.xenproject.org; Fri, 13 Feb 2026 09:50:13 +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 5a4ec232-08c1-11f1-9ccf-f158ae23cfc8; Fri, 13 Feb 2026 10:49:57 +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-550-qdD6mjHEOhySnGIcF1UXMg-1; Fri, 13 Feb 2026 04:49:52 -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 564761800BD2; Fri, 13 Feb 2026 09:49:45 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DC1BD1800678; Fri, 13 Feb 2026 09:49:43 +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: 5a4ec232-08c1-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976195; 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=iCbKUNEFIbstVJGW8rrDn1zDuLlcsZLSLnR4GLsh4DsKfrEFjYwYLeLbe6a+wS3uZ1V1JI c5TFoziv0o0+Uo4hjEEUyIE4SewPZt50Q2zGUdrqu7RPbnl9DTSwgEMyhXZW5oQ5T2U5GK cc/6dC+Py2egf2PVJ+samBWotQFUKFs= X-MC-Unique: qdD6mjHEOhySnGIcF1UXMg-1 X-Mimecast-MFC-AGG-ID: qdD6mjHEOhySnGIcF1UXMg_1770976189 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Eric K Subject: [PULL v2 01/15] char-udp: Fix initial backend open status Date: Fri, 13 Feb 2026 10:49:20 +0100 Message-ID: <20260213094938.4074478-2-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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: HHKQAw6KNaeTwwnxzeeCCq3ZF3rMm1DGWMyjTY3iz8w_1770976189 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: 1770976229371158500 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:18 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=1770976234; cv=none; d=zohomail.com; s=zohoarc; b=jxQ8cH/U+xz+hxIi1MIso1MNyw+hxCyvEKLrVvarc3DzuJv6KomW0CqhGKzb8TQQoG9DL1O6gzKr6QVFkv/cN6Ii6XWZy0OFogEg25/3BP+mOlAWdIyy5k+g+KpXph1tkA5hjII9Ar9yj2i5HjzE/03vTb8ddAsNwFK+5F663Xs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976234; 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=kwUJ3BjGqSrzivArY1rYym7qexid2kYuXoU98jIvc3E=; b=kKmsSiiv6bM24lhnkRbRwUtzxYc8C3h3zZfYDlZh3dUgV116twHpElyjfNZeq2QciYOrXtCsNWIJwy74lDOK+OF779P6VJRNofM7xthvyV6WGdT8bA99wCF0ra+fFwbRY80Lar6R+nPNptzVjH4CsHuGEqHHQqdRxfxgxenfSwQ= 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 1770976234823826.7641706008675; Fri, 13 Feb 2026 01:50:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpoN-0006t8-K4; Fri, 13 Feb 2026 04:50:07 -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 1vqpoJ-0006j4-PM for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:04 -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 1vqpoH-00073G-0T for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:02 -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-658-aMc26E4sPAy9t4jQ84TMZQ-1; Fri, 13 Feb 2026 04:49:56 -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 1714C185FCC3; Fri, 13 Feb 2026 09:49:49 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E4B161800465; Fri, 13 Feb 2026 09:49:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976200; 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=kwUJ3BjGqSrzivArY1rYym7qexid2kYuXoU98jIvc3E=; b=D0rGE2GgPe+ggVtJk8C4MVq56fdk+YlaTEoMLOjUHJ8V1f7U6CWHlmDlAIalnya1eBDK5A z3G6DU4oeObfISItegW6O33LS3zc4STM00ms7jLbrStK533N+WGcVwWIQe9v6/iPuHWtUY blZTWizlMJTEcasJC6O4wxubON5Iiro= X-MC-Unique: aMc26E4sPAy9t4jQ84TMZQ-1 X-Mimecast-MFC-AGG-ID: aMc26E4sPAy9t4jQ84TMZQ_1770976194 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 02/15] ui/spice: Require spice-server >= 0.15.0 Date: Fri, 13 Feb 2026 10:49:21 +0100 Message-ID: <20260213094938.4074478-3-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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: 1770976237283154100 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 e8fd77aac00..4af32c3e1f2 100644 --- a/meson.build +++ b/meson.build @@ -1326,7 +1326,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:18 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=1770976232; cv=none; d=zohomail.com; s=zohoarc; b=ffIqj8iT1/L0XVzx6cEF9yG+pLRMINKNmCdxoZPoLSpAHQzFeKpixHZWFi/AQ3VCQANKQysta9fGcMHWAwKNM/UMgWJucRWNUgmNs5//EjIEX7ro5OEHX0SgQAyW8wpt8hYGaofveIuHxkneX36vKKiznx6A5VZJxWQDIUpbAGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976232; 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=y3G7pz3JVMFqRvpJ05R+kBwpJ0ObSQg4ak0FyKLiTE8=; b=j4ltf1s0vLeOFPPp+Cnz3xw626oFVjj5lJiJz+lb0QPdrFAtk1Mv/yxThDVRGy5FIHcgmTSV/oeJFW/wCDt5aLNGORreD25+U/sVdI8g7b/NHEyoEf/uCjegXT9+wBRdV3XIotVyphvst4GpuID75e3NSpQg+RZbA5ADw6Wg26E= 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 177097623237159.877831599238334; Fri, 13 Feb 2026 01:50:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpoP-0006vJ-S6; Fri, 13 Feb 2026 04:50:10 -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 1vqpoO-0006uj-OK for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:08 -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 1vqpoN-0007Fp-3c for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:08 -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-335-spO-09MoPhGoxKEqBmvdqQ-1; Fri, 13 Feb 2026 04:50:02 -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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8C43D196C420; Fri, 13 Feb 2026 09:49:52 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DCA1418004AD; Fri, 13 Feb 2026 09:49:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976206; 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=Mn9E0ZKYVzFmG3lp+NP7jEtHX8ELne3EVaqo0u/wJQVEFOKKjUUidRinku/wyAxgKB2Z/S E8D/95+mhqMuUlWK32edI1yiNrXqgt9c8lvRjJybUlX69IP4j4AcplqLLfbnWNPVmXAa41 lQ//DQH093u6KEAjc3OGLGMMcOxBrfU= X-MC-Unique: spO-09MoPhGoxKEqBmvdqQ-1 X-Mimecast-MFC-AGG-ID: spO-09MoPhGoxKEqBmvdqQ_1770976201 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 03/15] ui/spice: drop SPICE_HAS_ATTACHED_WORKER macro Date: Fri, 13 Feb 2026 10:49:22 +0100 Message-ID: <20260213094938.4074478-4-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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_H4=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: 1770976235094154100 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:18 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=1770976235; cv=none; d=zohomail.com; s=zohoarc; b=Yb2uIqWIjGF87gDVKF28aPzb925Ui8tnpscKqmV9PGuJ73wgcvp0N6EECoIb9SHUkw7rrBbfuG+z9Xq00q1JYjqVbcKDoG3JcEGDGHclz4Ik7OWC+W8AHHZ6+G/bWVCSwqjXL+4ynJAqUf7aJkgHlXWbO3NyGEFV9KkO166LxxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976235; 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=CMlxC6DedCP2dWjC6EycMgfMid6dEIA3ElY8y+ZUPJQZFjZVEY2u76VEdtrsBbhFd0OaOLVgSsyAXFDvUMOkgq1X4OimYMAKKDVYJdx7Qjv9/vYnQbkIoGvgTO06ypBzamQmmNOnGLHk2hmXdV/01pOiP2sLmW5lqKUYolaEHbw= 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 177097623505495.77617227036785; Fri, 13 Feb 2026 01:50:35 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1230420.1535922 (Exim 4.92) (envelope-from ) id 1vqpoV-0003Mz-29; Fri, 13 Feb 2026 09:50:15 +0000 Received: by outflank-mailman (output) from mailman id 1230420.1535922; Fri, 13 Feb 2026 09:50:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vqpoU-0003Lt-T5; Fri, 13 Feb 2026 09:50:14 +0000 Received: by outflank-mailman (input) for mailman id 1230420; Fri, 13 Feb 2026 09:50:13 +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 1vqpoT-0001Na-Fw for xen-devel@lists.xenproject.org; Fri, 13 Feb 2026 09:50:13 +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 633ae963-08c1-11f1-b163-2bf370ae4941; Fri, 13 Feb 2026 10:50:12 +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-136-Bh-00Ep0N_SO-0gTINRxQA-1; Fri, 13 Feb 2026 04:50:06 -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 81A0B1884EDC; Fri, 13 Feb 2026 09:49:56 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5DA40180066E; Fri, 13 Feb 2026 09:49:54 +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: 633ae963-08c1-11f1-b163-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976210; 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=bhWACr+pTKP8Xnu904RCUk6br1Nsx5OoZaAwEXSK4jI305fB5ngrIPytXbT0fiX7Yafk6s A7vViJ5NdrK1KqRc7R8JhnRw5M5W13RrbVE0yOPTppC8z5QQ+xdFSaC/1UszXULFFMRnLa GouXu2I2c7IG5c/XvAVLaRtU5laXOhg= X-MC-Unique: Bh-00Ep0N_SO-0gTINRxQA-1 X-Mimecast-MFC-AGG-ID: Bh-00Ep0N_SO-0gTINRxQA_1770976205 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 04/15] chardev: ChardevClass: consistent naming for handlers Date: Fri, 13 Feb 2026 10:49:23 +0100 Message-ID: <20260213094938.4074478-5-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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: P8uDSV4blFUsz4Q9ncgJZnfmgVT5WoPYLXkK8sQW8lI_1770976205 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: 1770976237015154100 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:18 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=1770976242; cv=none; d=zohomail.com; s=zohoarc; b=RP5QcM//0rdH1L9lNMhrtUNjKf49SJ2tLB3d02udK3mH/lVe3AJUnMeWa2c4kbIPEqtUey/41s0MJ6lEHJ/xuSw+ArtCRYEW052RBEVJeQ7DVJQEcWSA3GMgsztxv1ZPHv8Zah0sK7Hjaaqi4mTyTsbsggMljq/sYScUL/WXNUI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976242; 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=WC5EEFeUioqWwS0MDoIjwAi2kkJmmic3EumFcQvQdVKhTjwwTkRFu+Q6R1E81NDcetpdi4svKjWAjs7KeylPqXwzGCQ8I9GM57Qv0WPwW+Fy0Bi4fbhCqhdJ4t3ZiJuUnC9y6AMpJnV88/bQ4PZXIdDBPXkVJMMt9EQKrwFJmtQ= 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 1770976242465909.3004093490642; Fri, 13 Feb 2026 01:50:42 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1230426.1535932 (Exim 4.92) (envelope-from ) id 1vqpob-0003us-EE; Fri, 13 Feb 2026 09:50:21 +0000 Received: by outflank-mailman (output) from mailman id 1230426.1535932; Fri, 13 Feb 2026 09:50:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vqpob-0003ui-As; Fri, 13 Feb 2026 09:50:21 +0000 Received: by outflank-mailman (input) for mailman id 1230426; Fri, 13 Feb 2026 09:50:19 +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 1vqpoZ-0001Ng-AI for xen-devel@lists.xenproject.org; Fri, 13 Feb 2026 09:50:19 +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 65fc6758-08c1-11f1-9ccf-f158ae23cfc8; Fri, 13 Feb 2026 10:50:16 +0100 (CET) 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-440-D7FCKESLPA-4l4K5JjB0Zw-1; Fri, 13 Feb 2026 04:50:10 -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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C80991905627; Fri, 13 Feb 2026 09:49:59 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B7D9119560BE; Fri, 13 Feb 2026 09:49:58 +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: 65fc6758-08c1-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976215; 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=Diru8wy8UmGdGHkmzA3sKSWRbKcOUfcFN75EFdvR5+YthNY0LEJAjTzmgqYS56XAZouRtc eKMUo1YJ7b/psfkb+jCBkMaEjYVW/uTZUA2FyrHH8zy6D1MxjWbPy6mAKdWOSSsYfTwZ00 OnUEOztVoq6D3xv7c61+gZFmippkY2Q= X-MC-Unique: D7FCKESLPA-4l4K5JjB0Zw-1 X-Mimecast-MFC-AGG-ID: D7FCKESLPA-4l4K5JjB0Zw_1770976208 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 05/15] chardev: consistent naming for ChardevClass handlers implementations Date: Fri, 13 Feb 2026 10:49:24 +0100 Message-ID: <20260213094938.4074478-6-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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: 4M6VHeNRn85MQvw2A7rQRZIwSVUwlTyGZw7U4NPkW9I_1770976208 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: 1770976243358158500 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:18 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=1770976301; cv=none; d=zohomail.com; s=zohoarc; b=b0gh3Q/+UChSVm7LCLw/jjl497ksj/i4ju0lJt/Hsz9wS4WJXNt5QrQKek1vjIinJnB1ALu8RT1Hj+46TJ7AeJmlED/jTVe0y6EIPeZ1wynekMF/74kX/+5NAjr/WZvb9nsCW2Lob18yLUntwjUta78DtSxhDQSwURM3g20/1Zs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976301; 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=W4K144Ns2Bqn7ju24RYtWO+e8QWMYTyZmgQNGcnXxQ8hFxIinZuazJsorMCPxojzbD0WAou/nHMWqTKseP/G0pAppUcTn4Yz/vCVitoGKI89aAk8nTqeQQaTnWoA/K4ry3kTvWiGSuDTW7SPczN0Xdq9YxmB2Ia/aksLHEkg4qs= 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 1770976301772623.5523808675046; Fri, 13 Feb 2026 01:51:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpop-0007NC-Cl; Fri, 13 Feb 2026 04:50:35 -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 1vqpob-000729-6n for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:23 -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 1vqpoY-0007Hs-1B for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:20 -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-249-ccQBv4M4MaqY0leUR4BYzQ-1; Fri, 13 Feb 2026 04:50:14 -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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1922E18826AB; Fri, 13 Feb 2026 09:50:04 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 41D371800352; Fri, 13 Feb 2026 09:50:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976216; 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=iRpGfDuss945/1ylz3O+55RINszkX9K5HkS8CtbbqKQI7jjnFzEImEmnS0A3NLfwnmh2iQ PO4TqmjX4+iyABIpQmLK9/giwe/HiLQl+s4JVQc61FqUTEYq+3YfLbWcyh3AmHG1AX+ed9 4CW5Pknlr1jSUWTJ5iVMlisB8kDxdsA= X-MC-Unique: ccQBv4M4MaqY0leUR4BYzQ-1 X-Mimecast-MFC-AGG-ID: ccQBv4M4MaqY0leUR4BYzQ_1770976212 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 06/15] chardev: .chr_open(): drop be_opened parameter Date: Fri, 13 Feb 2026 10:49:25 +0100 Message-ID: <20260213094938.4074478-7-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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_H4=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: 1770976303934154100 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:18 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=1770976329; cv=none; d=zohomail.com; s=zohoarc; b=GO96lw/f3uv/wvBbJatkw2jc78lTB8OOWk/lajF0GeNtV/o8P17gBZdQhIs45Td7TKhswVZ28UeCeJC40vzfUXpQv/NndVm5s4SON8QpQrIHDgWG6iNbyPdUj/yIvFWsIx5RGOS7uwr+9DnO4RN63NR17NO+kz/cJRIwWdT4mOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976329; 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=EkOuQwE7r/+vSW05dfY0N0e0q7f2IkqD8VkbkpDWQVE=; b=Lz/y6b8ZF/GmqrcWX3CePN7zDH/dX0gI5OPeNJrTLtUYmk7cZZhweUzm4VngO86s0BmmcKD8R1dnRb5rBnphFL6FoiYSrvez9Re0eDaIQmFNO4vJRYVv+RUOhsAROXDe/3Ap/894NXUfnwZ9+76dTnio36LCsDDzacJbn0HPkg0= 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 1770976329972163.35852193349172; Fri, 13 Feb 2026 01:52:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpor-0007b0-Ug; Fri, 13 Feb 2026 04:50:37 -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 1vqpoh-000777-O1 for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:31 -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 1vqpoY-0007IS-Sl for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:25 -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-416-lSjxDuI5MUSzo8WKgT3dYw-1; Fri, 13 Feb 2026 04:50:13 -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 7593218003F5; Fri, 13 Feb 2026 09:50:07 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A2ABB30001B9; Fri, 13 Feb 2026 09:50:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976217; 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=EkOuQwE7r/+vSW05dfY0N0e0q7f2IkqD8VkbkpDWQVE=; b=XVppd7MxhpuVWlIVBTlGGdn5080P3qAy6/Adly38HdfVZMxLYw45Get7XjqJ1RuWTxx6u2 Ip07UR0J1vrGawcJdIkC7QFIrsao6QWxAR/okwlFq/o/Ss+xhT71DwNSJFMrLpv2/7mNBH E/5qT3Ii/ddYWIyra9PL3c+dx8Qtp4I= X-MC-Unique: lSjxDuI5MUSzo8WKgT3dYw-1 X-Mimecast-MFC-AGG-ID: lSjxDuI5MUSzo8WKgT3dYw_1770976211 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 07/15] chardev: .chr_open(): add boolean return value Date: Fri, 13 Feb 2026 10:49:26 +0100 Message-ID: <20260213094938.4074478-8-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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: 1770976331747158500 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 | 3 ++- 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, 113 insertions(+), 83 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..0739c9c94a3 100644 --- a/chardev/char-console.c +++ b/chardev/char-console.c @@ -26,11 +26,12 @@ #include "chardev/char-win.h" #include "qemu/module.h" =20 -static void console_chr_open(Chardev *chr, ChardevBackend *backend, +static bool 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); + 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:18 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=1770976317; cv=none; d=zohomail.com; s=zohoarc; b=YS8WaxzqX1Wn7whGq0blwi1yWg817QLGUpQtzjtv+YmJdMSmdfupxS21q5Q1KOeH5TiTcNOquoMQWAZWlVXaeP53sKhWXvOvxZpiRcWfVma5J/RR7NJNasPrGPMPYYgKWkXOZkzV6dxushXa6JzJJB8Ef1nHP11fYdtTFp+cQ+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976317; 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=GiAemd5nTCBZ09jMru6LEqmOMHzTCZrbPqvaBbMVeNY2wSnxUZ1DiLvFEVZhzXlWh3n7AUZ+87KHSFVn4mHuZtmF8dVXZJb2YZTi+2YT8b0fy2TcDBnhiWHz+g3+rY4My499Cuyp9je6zDZ0AYAOIQKDStuaSChLBdVJxywABIQ= 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 1770976317458727.0977992274725; Fri, 13 Feb 2026 01:51:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpon-0007Hf-Rb; Fri, 13 Feb 2026 04:50:33 -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 1vqpoh-000778-Oo for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:31 -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 1vqpoa-0007Jk-QU for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:24 -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-36-txG-vcI2NLC0ek1FXKCV6A-1; Fri, 13 Feb 2026 04:50:15 -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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4D33B18ADBC0; Fri, 13 Feb 2026 09:50:10 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 51E2419560B9; Fri, 13 Feb 2026 09:50:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976218; 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=aa+EvjJgK72yvHS/IfReGs5UMsxA4xfmmGi3+PH+w3iaQ64WWd+OF87QB33x0rzBLDYSE+ hMY2i2F8DzAM5Bvq4A2LveB6cXYRhq/17+XQxL3wO2EvUguMFBPblgOyfGx6wJ/b2+rU6E SPl3ftO0R04O0SNbNXW+IaRW6jJsepU= X-MC-Unique: txG-vcI2NLC0ek1FXKCV6A-1 X-Mimecast-MFC-AGG-ID: txG-vcI2NLC0ek1FXKCV6A_1770976213 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 08/15] chardev/char-pty: store pty_name into PtyChardev state Date: Fri, 13 Feb 2026 10:49:27 +0100 Message-ID: <20260213094938.4074478-9-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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.12 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: 1770976320113154100 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:18 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=1770976260; cv=none; d=zohomail.com; s=zohoarc; b=H7saY+dB6ZfW+22ZwnimVocJ+CeimIvTbpFsJ5T/x9SLFj12LYTGT46IKD83rOcPayUhrGLujX7CpwY3gCCz1d34MxYArBp2z7frMy24cnRLZho+93kPuuEEYRNBfEvLSOA+QvtCdQagYKJklWmX+++/7mZ981v8Cv71X1V12i8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976260; 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=BuNBWTxsOARPNaPVWUPXHg+QHtk+2AiioPqz+oW7kiJkP/rRkUWU88Zorjla0XBmAAvR2mNUgepkt1ZImlX4oyob8r/b84Vhi50JfuUjktsqB9Lt3r2H2vop7sZZOryQy547Pd50QD9dAB+pOJXO1DMRxD7o+89/oIKzMsPlnkY= 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 1770976260222332.88164280069896; Fri, 13 Feb 2026 01:51:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpon-0007H8-LN; Fri, 13 Feb 2026 04:50:33 -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 1vqpod-00073S-Cz for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:23 -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 1vqpoY-0007IG-SP for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:22 -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-6-E-7BdYCROJiGwt4vzl-fbA-1; Fri, 13 Feb 2026 04:50:14 -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 2FB631800464; Fri, 13 Feb 2026 09:50:13 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6388D1955D85; Fri, 13 Feb 2026 09:50:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976217; 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=cokcXWVYSa3hLdPdu0lSUyu8zQzjjofJH1wB/SwwVtyNLzFMC6T9zJJKvJn132sKiM7DeO n3FMcOHB/ihW8B+/efx/D3OUhQ5eusjP5ZlYgQ0pgK6EXbRfHa0Bdq1GF4q+dFNkeP1h0J ESoxIQMO/jLdSGn+BFjCKCcifr1hkTE= X-MC-Unique: E-7BdYCROJiGwt4vzl-fbA-1 X-Mimecast-MFC-AGG-ID: E-7BdYCROJiGwt4vzl-fbA_1770976213 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 09/15] chardev: introduce .chr_get_pty_name() handler Date: Fri, 13 Feb 2026 10:49:28 +0100 Message-ID: <20260213094938.4074478-10-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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.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: 1770976261989158500 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:18 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=1770976247; cv=none; d=zohomail.com; s=zohoarc; b=ZMPLClReOjgzBfkCUmNjdy3b86UCL/PCufgyRP/O3IQZKVeKM+XusiqjRWy6uLG9yN0GYmwBWe4l3evqJYRiBwzeC/xFEWz5b0HxjZGg0OohtjY9SS8wLvWfWbiWyfg1esIsaHsDKyL83qTTZW5ugQYLY+Va5Q5eKtEfcbAuX3c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976247; 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=N/XXlDJ60BMTxQtXSQyBsGwPcFFIqfqU/CCF1QbGLJfAVW/0XogfSApJtBjrFm7PaZOPfkfYOknyNXmPsMtK7r2yMh2gE2KVIlOboBhQmsgm3dmDsow6aKxrDlUGEGRlbe6UotmKuXYdN+0lTPfR9UFlfNlmMQicq0F24W7zAok= 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 1770976247645711.1158900783707; Fri, 13 Feb 2026 01:50:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpoq-0007TT-L6; Fri, 13 Feb 2026 04:50:36 -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 1vqpoh-00077A-Oq for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:31 -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 1vqpob-0007KM-Up for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:25 -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-433--Y17YsGYPkOtZeaIxLcQjw-1; Fri, 13 Feb 2026 04:50:17 -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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DFF8419560AA; Fri, 13 Feb 2026 09:50:15 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 435E71955D85; Fri, 13 Feb 2026 09:50:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976221; 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=hMOvy3uyQGFRNGiO0tP2eqVKtTfPFsvxr6cTbleSYm0UVAn82IdM+70MBfa8h8hbbPqKnf IAvYBqvcAk1o6ptKHBrlFa2lFDMgoPGme3q2CEDbZ+uxfPzORJrXDFVNmf00YCehdJxdd5 nGUeLO5EIfW4Uyk8qJOI14bCGS9wVBc= X-MC-Unique: -Y17YsGYPkOtZeaIxLcQjw-1 X-Mimecast-MFC-AGG-ID: -Y17YsGYPkOtZeaIxLcQjw_1770976216 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 10/15] chardev: rework filename handling Date: Fri, 13 Feb 2026 10:49:29 +0100 Message-ID: <20260213094938.4074478-11-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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_H4=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: 1770976250144158500 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:18 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=1770976259; cv=none; d=zohomail.com; s=zohoarc; b=LgnRgOGAwb4V/9tKQ2A7DudX3lvht6rFb6J+msEClUQ+RX7Tukxh11goPLP6z/PHiQDfmVubvNlGyddgQZCpEtIrTjpnJTQEp5NMpxrjFzWL8213nkO5qOWdAcIWWUk1zJJxcZtUYmFVZIf9QMcV8Pbf5WZvxDBN95f3WdWen+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976259; 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=jON2oy4Sn2t3LEzWPbQuNG+m9UkLEF/UJBmGup7PTgOjn0IkDbKE6CAqll2HB1zbdQANkgKLZuBdu4I5dKWSaxh6sC94zuFB9DxySrIzJKgi+yMDwzQ940lC+IrTw8kfnfcK2IBCT8q3I+z2F5V/UgiY//qFEG6mFf3JMW6TXyg= 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 1770976259964212.70355369262506; Fri, 13 Feb 2026 01:50:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpoq-0007SA-AG; Fri, 13 Feb 2026 04:50:36 -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 1vqpoj-00078y-D8 for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:31 -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 1vqpoh-0007Lp-Gw for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:28 -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-124-v2J-xh5zMnCpIbMpJcyfKg-1; Fri, 13 Feb 2026 04:50:21 -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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 757F1180057E; Fri, 13 Feb 2026 09:50:18 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E00863000225; Fri, 13 Feb 2026 09:50:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976224; 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=ZtYvv9lRqrfvms3O2pnTmSTd3GaLHIMimzX4B+mycX+G/DG48o95urPreWUOxEJ3SodZrz CnCYZdz1C+aKFjj1KXSFE4FdczXVaWwQ2qGSUNnJDAPGoI/w6GvJC3FVn6GxDGWAXaXL+4 UnLEVdwuLBWRVrG+dExu52ittsePetQ= X-MC-Unique: v2J-xh5zMnCpIbMpJcyfKg-1 X-Mimecast-MFC-AGG-ID: v2J-xh5zMnCpIbMpJcyfKg_1770976218 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 11/15] chardev/char: qemu_char_open(): add return value Date: Fri, 13 Feb 2026 10:49:30 +0100 Message-ID: <20260213094938.4074478-12-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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: 1770976261938158500 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:18 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=1770976246; cv=none; d=zohomail.com; s=zohoarc; b=V1yYbNMW3HPKZS4u58BoVe0GIqyiy3Nyj94rdntSxrjdxsw6Y2ZvIIVeWJBq4uzNosmrMA12osaNHokZJZEuw2PWH2fu3ahD+wl2vda5TP8aKSCa6sZw7DvwzNkKWk0dem65rq65Kn3oi17zEozulH7UToa6JgT5N+HwVDz8ND8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976246; 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=tpYjeot8p53E9hbudpSJPO+xYO8RwO13MoSHQweyb84=; b=K4AGjAao5T+f8EQUZIi2f0OACE0Q4VTGO8h8fjo4TWhPj6td826g74u++EkkWEWpeJrOpJH6izHxCXc/s0uwdGz3MGnw31cWUrjDzGYJEkDqmLrJfH/mZV3mQsCDTXHQRvRtu1LyQJGtTl0auBMPSiGMi8hwhmD5IRBMMXgSWkE= 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 1770976246643987.4677983068902; Fri, 13 Feb 2026 01:50:46 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1230437.1535946 (Exim 4.92) (envelope-from ) id 1vqpoj-0004gV-6u; Fri, 13 Feb 2026 09:50:29 +0000 Received: by outflank-mailman (output) from mailman id 1230437.1535946; Fri, 13 Feb 2026 09:50:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vqpoj-0004eq-0p; Fri, 13 Feb 2026 09:50:29 +0000 Received: by outflank-mailman (input) for mailman id 1230437; Fri, 13 Feb 2026 09:50:28 +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 1vqpoi-0001Na-EU for xen-devel@lists.xenproject.org; Fri, 13 Feb 2026 09:50:28 +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 6c54edcd-08c1-11f1-b163-2bf370ae4941; Fri, 13 Feb 2026 10:50:27 +0100 (CET) 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-524-qJo4xogmOe6TKqmwW-010Q-1; Fri, 13 Feb 2026 04:50:23 -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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 230C2196C402; Fri, 13 Feb 2026 09:50:21 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4F8FC180067C; Fri, 13 Feb 2026 09:50:20 +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: 6c54edcd-08c1-11f1-b163-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976226; 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=YsvJpCaydBJzkf+9rxNZdtmIwLukSZCSHwvi7kmGLLS5TvmtdJOAfvxDsN7+x/SHtJcefi hAwqlxiiyD3pidiGFV3EliNnKpduRvEhSa3+PEiZc64xJWf5c1/T9TsXZOlD64uRLiGSGv 0K3nSG042/Cbb6R1+kapqPQ2fuCWU+o= X-MC-Unique: qJo4xogmOe6TKqmwW-010Q-1 X-Mimecast-MFC-AGG-ID: qJo4xogmOe6TKqmwW-010Q_1770976221 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 12/15] char: qemu_chr_write_log() use qemu_write_full() Date: Fri, 13 Feb 2026 10:49:31 +0100 Message-ID: <20260213094938.4074478-13-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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: 8c7XE562pWIRUZ4y5wlRy4cWwJO6hBNaO7ItS3QihEU_1770976221 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: 1770976249003154100 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:18 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=1770976304; cv=none; d=zohomail.com; s=zohoarc; b=MddbenKEK/moGI6Rh98dJBErfTGAsdh1S/6J6or2j83UFptd0Z+QGEzEbLBelFrpvDyQMMFOHo0s8XllSocN8PZejIQtTZIbsgpyWbaLIsDqadqtZSTibnGaqsh/oINVyd0ixcPrwKKCN2h+IZenDf/s4h7tk8l3G0/s+1siv7k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976304; 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=FJsHKkgDIKSh1joSf64QfPbs9uVFu9n2jT82V3BlDHfS4qBYsw8fiSpiFG20JgO3QbBngcwo4Vh3IptFIS1p7qtph8EPM6J+mw6t3OYA7O8f/lyXoaStdvVxWmujiuAHsMHRK4Olyglm++FCDqf2/AIAErrb+f4FSrD9cMhC8nY= 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 1770976304790491.7343572893453; Fri, 13 Feb 2026 01:51:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpoo-0007Ke-LL; Fri, 13 Feb 2026 04:50:34 -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 1vqpok-0007Ad-Jh for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:31 -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 1vqpoj-0007MP-4v for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:30 -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-621-HKw9Op8PPjWopkCu_sg3xA-1; Fri, 13 Feb 2026 04:50:25 -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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 20FCD195FDE0; Fri, 13 Feb 2026 09:50:24 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 3453619560BD; Fri, 13 Feb 2026 09:50:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976227; 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=cugxCrStidKGeTeZg138DkBjKES43LeYYR/XS13AEEr5IwUF9PYGQ9P43x6iCwsUR7iBo1 7ll78ETg1eEJj6Bi9vLhlsRFoWPvKiiivGfMCz54gmygO0SlmaPguYJqlejU/YFM2Ylizp v9L2gL/CQ4Rps9u7PLrbXMy1EYFtPqM= X-MC-Unique: HKw9Op8PPjWopkCu_sg3xA-1 X-Mimecast-MFC-AGG-ID: HKw9Op8PPjWopkCu_sg3xA_1770976224 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 13/15] error-report: make real_time_iso8601() public Date: Fri, 13 Feb 2026 10:49:32 +0100 Message-ID: <20260213094938.4074478-14-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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.12 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_H4=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: 1770976316227158500 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:18 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=1770976269; cv=none; d=zohomail.com; s=zohoarc; b=T3CpDVb5bK5lW71CELRCAfbGU84vzEUTOO1FumSbRlKgI/NdpvKFF+QP1RrqLiDtPNxcWbBETaYH/KIHdXwM8fGEGlAQZnP5VyPX5opd2ddTruUyFLWBQCK9YqUe47mFQv5FFeCGy7/PZbwLze1xXnUyq7JeQrxAivvpEMBPEz8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976269; 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=kpHEJYvo6X1PuoKtpDMM/JA4fUTdbUn4U9Qs1pSAoc1rXKiqfKFaF0C7UFtMoJFF2g/QZS+wd/LIsbGpfbsGoc5w3ns2j6G2aon9cpt4RA7Ol+b0iAdK5FKeQ2dm/z9D34oM6/1VqBechztzuG+N4UwuuckcnRGppPdHl3Sm2V0= 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 1770976269288919.4978422859266; Fri, 13 Feb 2026 01:51:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpos-0007er-NI; Fri, 13 Feb 2026 04:50: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 1vqpop-0007NN-4V for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:35 -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 1vqpon-0007NV-9V for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:34 -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-653-kDbAhiIkMMOtDe9wMvjVCw-1; Fri, 13 Feb 2026 04:50:28 -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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8A2571956060; Fri, 13 Feb 2026 09:50:26 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E61FC1955D85; Fri, 13 Feb 2026 09:50:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976232; 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=Wh06V/ZWl47/9N57Dp+91HM7A/Ay9e/HIvYHTJiE1RvPy939yBeFJGHBgTrbjr0pNC60Xs EkE/E5VzVMPdqkJPjh/WSnzI0gfHcvI+VhR7OE8Q3zrLaP7vscR9gl37gmo/9bB9Ur5x8a i58hWjs79d4SEdGJmjxCTpj/7YPdwu0= X-MC-Unique: kDbAhiIkMMOtDe9wMvjVCw-1 X-Mimecast-MFC-AGG-ID: kDbAhiIkMMOtDe9wMvjVCw_1770976227 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault , Vladimir Sementsov-Ogievskiy Subject: [PULL v2 14/15] chardev: add logtimestamp option Date: Fri, 13 Feb 2026 10:49:33 +0100 Message-ID: <20260213094938.4074478-15-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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_H4=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: 1770976271367154100 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 From nobody Sun Apr 12 04:23:18 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=1770976252; cv=none; d=zohomail.com; s=zohoarc; b=LdlQFi/ZB2JCBlj7VqIcquWwRWxNPYDPKWuNcVR/bzzSBMt25YGhVgRoKWNYsECREuHcnovv8J9UG6mmQLvHpHZgESG0ZNRyXNH87do3eXBOwkWdzHOcV524y5zh7BIHDT6HW0oLBxlBVzb4eCXig9Z6S8hT3jOrzGNWKkWR4pc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770976252; 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=VbW6jTOEG9iYTux9Gled281r+tDrauM450W3fBHk0XQ=; b=fILC9DPv3IAjMLNvP1A0+AxEUTkyaAEQx+hwrArwP6jo1v262+aHSvFhVBln7PhTRsKjEyD9SIKmBxLLidCrGOoHd1A/YYZ7OKiqKnQ5pK20gszDTAHrGvLZWSPLTlcqXqhNbIKF+GGHTk3oWzV78cWvBgQoMSqS5vF3XcD5Agg= 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 1770976252159818.0967438320075; Fri, 13 Feb 2026 01:50:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqpov-0007tm-2k; Fri, 13 Feb 2026 04:50: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 1vqpor-0007Y5-Di for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:37 -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 1vqpop-0007Nm-Gq for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:37 -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-245-_JVeCy1lOY-Y9S-Du_iKbw-1; Fri, 13 Feb 2026 04:50: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 50B3318005B7; Fri, 13 Feb 2026 09:50:29 +0000 (UTC) Received: from localhost (unknown [10.44.22.41]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9A67819560B9; Fri, 13 Feb 2026 09:50:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770976234; 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=VbW6jTOEG9iYTux9Gled281r+tDrauM450W3fBHk0XQ=; b=LQUAgaWEVACgPTWW6ZrzeGB0CI0sE9XLv3E/JaHctbxq3Zu7ZpveyGVW6vx8SKLegoJsJN Y3+JaGwt1K1nYQ0FxlrStNyvSOK9T0jiJS1J64/mn0bXGcuHUcTUDohfmftHJXEu6mQ1an ASeU3K/SIQbRz2l8zI+bL5Bo07/rBZk= X-MC-Unique: _JVeCy1lOY-Y9S-Du_iKbw-1 X-Mimecast-MFC-AGG-ID: _JVeCy1lOY-Y9S-Du_iKbw_1770976229 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Edgar E. Iglesias" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Paul Durrant , Anthony PERARD , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefano Stabellini , xen-devel@lists.xenproject.org, Samuel Thibault Subject: [PULL v2 15/15] baum: Add copy/paste bindings Date: Fri, 13 Feb 2026 10:49:34 +0100 Message-ID: <20260213094938.4074478-16-marcandre.lureau@redhat.com> In-Reply-To: <20260213094938.4074478-1-marcandre.lureau@redhat.com> References: <20260213094938.4074478-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.12 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_H4=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: 1770976255158154100 From: Samuel Thibault Brltty interprets - TL1 (i.e. Display1) + routing as clip new - TL2 (i.e. Display2) + routing as clip add - TR1 (i.e. Display4) + routing as copy line - TR2 (i.e. Display5) + routing as copy rect https://github.com/brltty/brltty/blob/master/Tables/Input/bm/routing6.kti - BAUM_TL1+BAUM_TL2+BAUM_TL3+BAUM_TR1 (i.e. Display1+Display2+Display3+Display4) as paste https://github.com/brltty/brltty/blob/master/Tables/Input/bm/d6.kti Signed-off-by: Samuel Thibault [ Marc-Andr=C3=A9 - style fixes ] Signed-off-by: Marc-Andr=C3=A9 Lureau Message-ID: <20260213000551.2446777-1-samuel.thibault@ens-lyon.org> --- chardev/baum.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/chardev/baum.c b/chardev/baum.c index 1219963656b..ac1e535ba8e 100644 --- a/chardev/baum.c +++ b/chardev/baum.c @@ -1,7 +1,7 @@ /* * QEMU Baum Braille Device * - * Copyright (c) 2008, 2010-2011, 2016-2017 Samuel Thibault + * Copyright (c) 2008, 2010-2011, 2016-2017, 2026 Samuel Thibault * * Permission is hereby granted, free of charge, to any person obtaining a= copy * of this software and associated documentation files (the "Software"), t= o deal @@ -561,9 +561,38 @@ static void baum_chr_read(void *opaque) case BRLAPI_KEY_TYPE_CMD: switch (code & BRLAPI_KEY_CMD_BLK_MASK) { case BRLAPI_KEY_CMD_ROUTE: - baum_send_key(baum, BAUM_RSP_RoutingKey, (code & BRLAPI_KE= Y_CMD_ARG_MASK)+1); + baum_send_key(baum, BAUM_RSP_RoutingKey, + (code & BRLAPI_KEY_CMD_ARG_MASK) + 1); baum_send_key(baum, BAUM_RSP_RoutingKey, 0); break; + case BRLAPI_KEY_CMD_CLIP_NEW: + baum_send_key(baum, BAUM_RSP_TopKeys, BAUM_TL1); + baum_send_key(baum, BAUM_RSP_RoutingKey, + (code & BRLAPI_KEY_CMD_ARG_MASK) + 1); + baum_send_key(baum, BAUM_RSP_RoutingKey, 0); + baum_send_key(baum, BAUM_RSP_TopKeys, 0); + break; + case BRLAPI_KEY_CMD_CLIP_ADD: + baum_send_key(baum, BAUM_RSP_TopKeys, BAUM_TL2); + baum_send_key(baum, BAUM_RSP_RoutingKey, + (code & BRLAPI_KEY_CMD_ARG_MASK) + 1); + baum_send_key(baum, BAUM_RSP_RoutingKey, 0); + baum_send_key(baum, BAUM_RSP_TopKeys, 0); + break; + case BRLAPI_KEY_CMD_COPY_LINE: + baum_send_key(baum, BAUM_RSP_TopKeys, BAUM_TR1); + baum_send_key(baum, BAUM_RSP_RoutingKey, + (code & BRLAPI_KEY_CMD_ARG_MASK) + 1); + baum_send_key(baum, BAUM_RSP_RoutingKey, 0); + baum_send_key(baum, BAUM_RSP_TopKeys, 0); + break; + case BRLAPI_KEY_CMD_COPY_RECT: + baum_send_key(baum, BAUM_RSP_TopKeys, BAUM_TR2); + baum_send_key(baum, BAUM_RSP_RoutingKey, + (code & BRLAPI_KEY_CMD_ARG_MASK) + 1); + baum_send_key(baum, BAUM_RSP_RoutingKey, 0); + baum_send_key(baum, BAUM_RSP_TopKeys, 0); + break; case 0: switch (code & BRLAPI_KEY_CMD_ARG_MASK) { case BRLAPI_KEY_CMD_FWINLT: @@ -606,6 +635,11 @@ static void baum_chr_read(void *opaque) baum_send_key(baum, BAUM_RSP_TopKeys, BAUM_TL1|BAUM_TL= 3|BAUM_TR1); baum_send_key(baum, BAUM_RSP_TopKeys, 0); break; + case BRLAPI_KEY_CMD_PASTE: + baum_send_key(baum, BAUM_RSP_TopKeys, + BAUM_TL1 | BAUM_TL2 | BAUM_TL3 | BAUM_TR= 1); + baum_send_key(baum, BAUM_RSP_TopKeys, 0); + break; } } break; --=20 2.52.0