From nobody Sun Dec 14 05:53:38 2025 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=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1764423953; cv=none; d=zohomail.com; s=zohoarc; b=At84lpF9C19O+N49PBDJnPj10CeLZjG9nXxoJRk6vFXi2QWfG1DhJhGebqPeAwkPazd43oSSp7C5xEyB0zkczUiipIeW9t3kPKaykO3CQqaKBbcJstxqjmKTchdrBiC0zFNxoGAioXtWBkigE0DeNNPBwP8xigOOxLUJm30yCto= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764423953; h=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=PkljeRecBE8UmefL+okxsFVCEKdyAXFWhMSX/rcMjfw=; b=I700CupWPyO0hsFRmT/+nnkFbihWNLVn3Mit12jyu7hgVp40h/wc/zSN9K4TMEoOLUBzc9n9IIKlzYyjSl+oZia/A/G2HuNdmiDHNnpkYH56AkOB/eZzjBRVJV09pMYDoDMsBPB4N6iiETT6XmlMyYLEJs613gGJqL3BL+UwNlQ= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1764423953609538.5190853504567; Sat, 29 Nov 2025 05:45:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vPLFk-0005Q0-Sl; Sat, 29 Nov 2025 08:44:44 -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 1vPLFU-0005Mi-Vx for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:29 -0500 Received: from forwardcorp1d.mail.yandex.net ([178.154.239.200]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vPLFQ-0002XZ-R9 for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:28 -0500 Received: from mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:65a0:0:640:e1de:0]) by forwardcorp1d.mail.yandex.net (Yandex) with ESMTPS id A83818087F; Sat, 29 Nov 2025 16:44:21 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:891::1:b]) by mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Iigm2k0FK8c0-7XgFjcnm; Sat, 29 Nov 2025 16:44:21 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1764423861; bh=PkljeRecBE8UmefL+okxsFVCEKdyAXFWhMSX/rcMjfw=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=pnSj37r55gzUPumpKpd0WS32kBCPgH9d36CnjiX2UGKu8yZn8zw89hcAasiRFEjax fWG7kHoUoupKCFPL/93Yj8TYCS+ghS39shKwbmydh1UGTN10CLp+GOacDmVuEJrTgK jSyv7CGg1Yg6kxsy+dww1yw27jjzFt2VyI/vTxn4= Authentication-Results: mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: marcandre.lureau@redhat.com Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, vsementsov@yandex-team.ru, d-tatianin@yandex-team.ru, Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost Subject: [PATCH 1/8] chardev: ChardevClass: consistent naming for handlers Date: Sat, 29 Nov 2025 16:43:41 +0300 Message-ID: <20251129134350.487839-2-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251129134350.487839-1-vsementsov@yandex-team.ru> References: <20251129134350.487839-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.200; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1d.mail.yandex.net 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @yandex-team.ru) X-ZM-MESSAGEID: 1764423954393019200 Content-Type: text/plain; charset="utf-8" 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 --- 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 +- include/chardev/char.h | 8 ++++---- scripts/codeconverter/codeconverter/test_regexps.py | 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 ++-- 29 files changed, 62 insertions(+), 62 deletions(-) diff --git a/chardev/baum.c b/chardev/baum.c index ad68321504..6b81c97d10 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 7e1bf642eb..9a2e012d53 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 34b83fc1c4..a44f267373 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 1f7adf592f..1e293e7054 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 d0967c2233..082baa84ab 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 db9e89f441..c82c2da56d 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 89cb85da79..674603b380 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 62a44b2f96..a0839b784b 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 e9f3bb8290..a2cd322efe 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 652b0bd9e7..1a15082b02 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 98aadb6acf..6d5ba667bb 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 4c6ca713eb..97ed7adf73 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 26d2f11202..12916af7ff 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -1576,14 +1576,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 2568164a10..b7e9af1388 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 572fab0ad1..a6f496ac7b 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -223,8 +223,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 fb802a00b1..26e67aef1c 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 3e432195a5..df37d1df16 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 1a55755d39..8405016489 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 db53b49da2..d55b3693b6 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -370,8 +370,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 @@ -386,8 +386,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 0dc6ef08f5..8285a56e7b 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 e2220c1ae4..fe2afeb107 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/include/chardev/char.h b/include/chardev/char.h index b65e9981c1..2baf2a8a1a 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/scripts/codeconverter/codeconverter/test_regexps.py b/scripts/= codeconverter/codeconverter/test_regexps.py index b00e9ef15b..d3a5cc3ad3 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 { diff --git a/ui/console-vc.c b/ui/console-vc.c index 830842064d..931068d43a 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 d05dddaf81..f6c426e220 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 d2dff33258..31f6eb1189 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 48571bedbf..7aa97907ed 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 24f78f305c..ea0b62a22b 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 660686c9c0..9972a9c476 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; --=20 2.48.1 From nobody Sun Dec 14 05:53:38 2025 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=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1764423987; cv=none; d=zohomail.com; s=zohoarc; b=iDbcmtsF+OPrbYqoVvnOoyTxDrvhhuUfGkt4CcVEcisDkl8m5qHC8BBvajknFlhD07nENy1YHb6A43DFSdYicCAh60QyVpaxNFU+hrrAYf21kYNg4rrwf1E2Qngka/HeDEYUTswD7KAZcIjMkyONJ32SclzdliQ7tCOfqUOtqOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764423987; h=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=FneXU861gdJw6G/uL/cJ4dNI/ZD8hKJNsdwjSawNx/0=; b=ZL12UbPyjqXoq4OjohydEwTKrCDdYgHqX0EfsVIs0kS6tmQT/z0GE7T7cimB8gMkeL9KuyJq5atTw57n/zpAjNp6SUSJCJV5ZB12Lj7N0Fc4vYLhNEb377MhZycfRVE3izTVPBTA/KAIjfp1XWD6DW0JLSrTYLQtvnwgGojl/tU= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1764423987328410.1717831687914; Sat, 29 Nov 2025 05:46:27 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vPLFm-0005RF-Mp; Sat, 29 Nov 2025 08:44:46 -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 1vPLFX-0005NB-01 for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:33 -0500 Received: from forwardcorp1d.mail.yandex.net ([2a02:6b8:c41:1300:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vPLFR-0002Xq-6D for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:30 -0500 Received: from mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:65a0:0:640:e1de:0]) by forwardcorp1d.mail.yandex.net (Yandex) with ESMTPS id 256B580883; Sat, 29 Nov 2025 16:44:23 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:891::1:b]) by mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Iigm2k0FK8c0-oMZ6YC11; Sat, 29 Nov 2025 16:44:22 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1764423862; bh=FneXU861gdJw6G/uL/cJ4dNI/ZD8hKJNsdwjSawNx/0=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=Ol+VrycAc+JJXB3YjGRlY5S3EieHKcmLe72psk/Ajhj9Y75BEiYbpYCCa+RigEfad Wo217wKD7pEdtW/fvids11oKgF+tkO2v7eN6ZTAIJmQnlt+I0I0QFxDee3KIvQ/CjB kkFuU+CLlEfq9Fw9l6+1dXO/mACLBBHgE1cJhGk0= Authentication-Results: mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: marcandre.lureau@redhat.com Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, vsementsov@yandex-team.ru, d-tatianin@yandex-team.ru, =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Eduardo Habkost Subject: [PATCH 2/8] chardev: consistent naming for ChardevClass handlers implementations Date: Sat, 29 Nov 2025 16:43:42 +0300 Message-ID: <20251129134350.487839-3-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251129134350.487839-1-vsementsov@yandex-team.ru> References: <20251129134350.487839-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c41:1300:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1d.mail.yandex.net 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @yandex-team.ru) X-ZM-MESSAGEID: 1764423988618019200 Content-Type: text/plain; charset="utf-8" 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 --- 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 ++-- .../codeconverter/test_regexps.py | 2 +- ui/gtk.c | 4 +- 18 files changed, 153 insertions(+), 158 deletions(-) diff --git a/chardev/char-console.c b/chardev/char-console.c index 9a2e012d53..f3ef1a7748 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 1e293e7054..568600bb7c 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 082baa84ab..11556dfa72 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 c82c2da56d..f38d66b21f 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 a0839b784b..1be1ef4629 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 a2cd322efe..e84492d42b 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 1a15082b02..909ab01f5f 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 6d5ba667bb..19652fe2b3 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 97ed7adf73..54c2b3935c 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 12916af7ff..329cd9f0a8 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"); @@ -1576,14 +1575,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 b7e9af1388..f0920a23fa 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 a6f496ac7b..099f76b8c2 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); @@ -223,8 +222,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 26e67aef1c..866f3a2039 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 8405016489..d07cd998cb 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 d55b3693b6..800784da26 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; @@ -287,10 +287,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; @@ -315,8 +315,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; @@ -331,8 +331,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; @@ -370,9 +370,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 { @@ -386,9 +386,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 fe2afeb107..61b2b4b8da 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/scripts/codeconverter/codeconverter/test_regexps.py b/scripts/= codeconverter/codeconverter/test_regexps.py index d3a5cc3ad3..2b9f5b8011 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 { diff --git a/ui/gtk.c b/ui/gtk.c index 7aa97907ed..b5498a7ce3 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; --=20 2.48.1 From nobody Sun Dec 14 05:53:38 2025 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=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1764423978; cv=none; d=zohomail.com; s=zohoarc; b=gTl3kxfqQLjIQSGsD1RYcEd1Q+TgEcxkN0XyeBFaamQZzrCXdL6F6FC4fjFn+JZA+girwQqbmwQp16LBCU3DylrUjGcD2CmUEuj0N2HiuTwdR3chIsKj4L7uUQxP3mmYgFYAdb6FtZCw6PuwM8mF3RbZkjaeUXcNwaAc3WhfFs8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764423978; h=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=ufOUVebbtXJdeX4ctqszGc+K8Ac9ZUq2Xm8ONEop/tM=; b=OShtSPvq9ZaEqjbvshJ6nbqpOAThZGZXfdjIW3TLOgYfg0R2SaTd5mi4bg7O/vZOXJkleUqJ5lCsvJ3ucalyY2wnmduR+sWFRIJtrO7NYOzM+14CBKju7SCJtBAL7Z+f1eiXcxhgjIeYEqTcAKkrS3jpYez97/SRvEbwh0FhGxI= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1764423978760554.1386539541429; Sat, 29 Nov 2025 05:46:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vPLFm-0005Qz-Ij; Sat, 29 Nov 2025 08:44:46 -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 1vPLFW-0005NA-U9 for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:31 -0500 Received: from forwardcorp1d.mail.yandex.net ([178.154.239.200]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vPLFS-0002Xw-IO for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:30 -0500 Received: from mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:65a0:0:640:e1de:0]) by forwardcorp1d.mail.yandex.net (Yandex) with ESMTPS id 4A59B8086A; Sat, 29 Nov 2025 16:44:24 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:891::1:b]) by mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Iigm2k0FK8c0-eR8gCsdA; Sat, 29 Nov 2025 16:44:23 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1764423863; bh=ufOUVebbtXJdeX4ctqszGc+K8Ac9ZUq2Xm8ONEop/tM=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=DPsAg3tEomuPpn5MCQHPGp5BEB+2Yu9TgBSCsDG47+R19akPRizSEXtVMDlyXMrgl HFFVHVnoIJYts1VQ0cm3siwDq0+cVJaubXWJbn6Mi2j9Txic2JlryPDiR/UxK24KlE ijONyTUaL55w43nYAguJFuB3jZOxOolyLXLGDge0= Authentication-Results: mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: marcandre.lureau@redhat.com Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, vsementsov@yandex-team.ru, d-tatianin@yandex-team.ru, Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 3/8] chardev: .chr_open(): drop be_opened parameter Date: Sat, 29 Nov 2025 16:43:43 +0300 Message-ID: <20251129134350.487839-4-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251129134350.487839-1-vsementsov@yandex-team.ru> References: <20251129134350.487839-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.200; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1d.mail.yandex.net 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @yandex-team.ru) X-ZM-MESSAGEID: 1764423980503019200 Content-Type: text/plain; charset="utf-8" The logic around the parameter is rather tricky. Let's instead explicitly send CHR_EVENT_OPENED in all bakends where needed. Signed-off-by: Vladimir Sementsov-Ogievskiy --- 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 | 13 ++++--------- chardev/wctablet.c | 5 ++--- gdbstub/system.c | 5 ++--- include/chardev/char.h | 3 +-- 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, 81 insertions(+), 132 deletions(-) diff --git a/chardev/baum.c b/chardev/baum.c index 6b81c97d10..58b74dc98d 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 f3ef1a7748..423f0f4cc4 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 568600bb7c..34ef386abc 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 11556dfa72..aa6058c2f6 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 f38d66b21f..7210df431f 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 674603b380..900b5febb6 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 1be1ef4629..359efa3c9c 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 e84492d42b..2f26372dfc 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 909ab01f5f..d4d69a29a9 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 19652fe2b3..30b17a96d3 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 54c2b3935c..9995f18425 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 329cd9f0a8..3f57ef4016 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 f0920a23fa..534f6ed565 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 099f76b8c2..b835a967e1 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); @@ -215,7 +212,6 @@ static void upd_chr_open(Chardev *chr, =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/chardev/char-win-stdio.c b/chardev/char-win-stdio.c index 866f3a2039..0535960ff1 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 df37d1df16..44bfed3627 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 d07cd998cb..9dc04e3b3e 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 800784da26..612f358885 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,19 +275,17 @@ static void spice_vmc_chr_open(Chardev *chr, return; } =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; + chr_open(chr, type); + qemu_chr_be_event(chr, CHR_EVENT_OPENED); } #endif 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; @@ -308,7 +304,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 8285a56e7b..65b2ceb58c 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 61b2b4b8da..49da1f73cc 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/include/chardev/char.h b/include/chardev/char.h index 2baf2a8a1a..47c75c3582 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/ui/console-vc.c b/ui/console-vc.c index 931068d43a..4c8ea4c148 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 f6c426e220..3e471f84cd 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 b5498a7ce3..3eeb5baa11 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 ea0b62a22b..7ac9ae4e78 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 9972a9c476..3becc6c076 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.48.1 From nobody Sun Dec 14 05:53:38 2025 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=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1764423932; cv=none; d=zohomail.com; s=zohoarc; b=faKpX6rVfGnScfL8YEdk8fbVNU9UUpz2d6GCCxT/MjXJJyri06uaEbmx86VZQSmKe6JavGA+VHNYqriVodtWnvTOobxVgJ/9djm4NbZ6uVWQpaGJ/Jn6y702zTQ7+c+nC9BG6G9QSXAJVxevpIELknKy9xey9uEHdH+2hzjnNyU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764423932; h=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=JIxYDuyoGw7oj0mgkQ6UoKxQLSafoXjs/OVv6Wb0oE0=; b=MAiHi2DUSmdpkwWBD5opoO0JNQnfF4w1928jTQwEfgijH5AABlMt2yEbBOz6JHMCViuBQ3+NfYQrh7a4W3rM6FFO2MjAwFTUQq4nHyt01r2t15oYTkPwDoWUNxERj48IjhN7XNyqk8dmT0mm5JMEeo54UddHfWfXQ0F7vxNU2m8= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1764423932250837.8061717644575; Sat, 29 Nov 2025 05:45:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vPLFi-0005Po-QJ; Sat, 29 Nov 2025 08:44:42 -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 1vPLFX-0005ND-H2 for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:32 -0500 Received: from forwardcorp1d.mail.yandex.net ([2a02:6b8:c41:1300:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vPLFS-0002Y4-NY for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:31 -0500 Received: from mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:65a0:0:640:e1de:0]) by forwardcorp1d.mail.yandex.net (Yandex) with ESMTPS id 73E8D80885; Sat, 29 Nov 2025 16:44:25 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:891::1:b]) by mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Iigm2k0FK8c0-QWhirveV; Sat, 29 Nov 2025 16:44:24 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1764423864; bh=JIxYDuyoGw7oj0mgkQ6UoKxQLSafoXjs/OVv6Wb0oE0=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=g0oGw9jiTQnLU5JQdV3FbdgpIgquFqHm990K/X6xswncaU4K8IX9SFJUp80zpUc5U W+08w+yMMGX7N2tHVIW3J1Pw+Adl0dfs/kfQM+2awX5DqDZUi1XvHahy6y6qAEaZRh OXsu3qIxf7RaTi+eYWi+Owgm+nNL5hArGjaJ7qRI= Authentication-Results: mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: marcandre.lureau@redhat.com Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, vsementsov@yandex-team.ru, d-tatianin@yandex-team.ru, Samuel Thibault , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 4/8] chardev: .chr_open(): add boolean return value Date: Sat, 29 Nov 2025 16:43:44 +0300 Message-ID: <20251129134350.487839-5-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251129134350.487839-1-vsementsov@yandex-team.ru> References: <20251129134350.487839-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c41:1300:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1d.mail.yandex.net 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @yandex-team.ru) X-ZM-MESSAGEID: 1764423937219019200 Content-Type: text/plain; charset="utf-8" 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 --- chardev/baum.c | 5 +++-- chardev/char-console.c | 1 + chardev/char-file.c | 13 +++++++------ chardev/char-hub.c | 11 ++++++----- chardev/char-mux.c | 8 +++++--- chardev/char-null.c | 4 ++-- chardev/char-parallel.c | 14 ++++++++------ chardev/char-pipe.c | 12 +++++++----- chardev/char-pty.c | 9 ++++++--- chardev/char-ringbuf.c | 5 +++-- chardev/char-serial.c | 15 +++++++++------ chardev/char-socket.c | 17 +++++++++-------- chardev/char-stdio.c | 11 ++++++----- chardev/char-udp.c | 5 +++-- chardev/char-win-stdio.c | 7 ++++--- chardev/msmouse.c | 3 ++- chardev/spice.c | 13 ++++++++----- chardev/wctablet.c | 3 ++- gdbstub/system.c | 3 ++- include/chardev/char.h | 2 +- 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(+), 82 deletions(-) diff --git a/chardev/baum.c b/chardev/baum.c index 58b74dc98d..0b0247dde0 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 423f0f4cc4..c911cc62e3 100644 --- a/chardev/char-console.c +++ b/chardev/char-console.c @@ -31,6 +31,7 @@ static void console_chr_open(Chardev *chr, ChardevBackend= *backend, { win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true); qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } =20 static void char_console_class_init(ObjectClass *oc, const void *data) diff --git a/chardev/char-file.c b/chardev/char-file.c index 34ef386abc..b0dd9d5f87 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 aa6058c2f6..05cf722b5b 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 7210df431f..881443d869 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 900b5febb6..d5a101178b 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 359efa3c9c..cbf87e660d 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 2f26372dfc..472b3e0801 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 d4d69a29a9..9e26e97baf 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 30b17a96d3..8f998d26a4 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 9995f18425..0c73bafc54 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 3f57ef4016..31c9acd164 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 534f6ed565..fe1cbb2d88 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 b835a967e1..3d3bc1f659 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); /* be isn't opened until we get a connection */ + 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 0535960ff1..bb9c195a8b 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 9dc04e3b3e..365f04546e 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 612f358885..d110ed96f4 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,7 +272,7 @@ static void spice_vmc_chr_open(Chardev *chr, ChardevBac= kend *backend, subtypes); =20 g_free(subtypes); - return; + return false; } =20 #if SPICE_SERVER_VERSION < 0x000e02 @@ -280,12 +280,14 @@ static void spice_vmc_chr_open(Chardev *chr, ChardevB= ackend *backend, if (strcmp(type, "smartcard") =3D=3D 0) { chr_open(chr, type); qemu_chr_be_event(chr, CHR_EVENT_OPENED); + return true; } #endif 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; @@ -294,12 +296,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"); @@ -308,6 +310,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 65b2ceb58c..214d5ca2e2 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 49da1f73cc..ec24d812b3 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/include/chardev/char.h b/include/chardev/char.h index 47c75c3582..23a227dca9 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/ui/console-vc.c b/ui/console-vc.c index 4c8ea4c148..f22806fed7 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 3e471f84cd..9442b47551 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 3eeb5baa11..e2c0135646 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1967,7 +1967,7 @@ static void gd_vc_chr_open(Chardev *chr, ChardevBacke= nd *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,13 +1976,14 @@ static void gd_vc_chr_open(Chardev *chr, ChardevBac= kend *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) { ChardevClass *cc =3D CHARDEV_CLASS(oc); =20 - cc->chr_open =3D gd_vc_chr_open; + cc->chr_open =3D char_gtk_init; 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 7ac9ae4e78..9e55f27371 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 3becc6c076..d5c6e3340b 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.48.1 From nobody Sun Dec 14 05:53:38 2025 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=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1764423932; cv=none; d=zohomail.com; s=zohoarc; b=TAnNOmbKoqkT8H3HUCQaMocpY+A7+A8chMcAr+nATFJknJ3I38dxxl5wDYfAKvDOtiWSd/C859h1CQi9JPHbpdllTeG6mRlnsdjdGNpMvO3/LDqbf7fUZGqd66ICbxPCp46izOT2vTmWXQcTRiikchOYxpWNbKz4pLFkbmfIWXc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764423932; h=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=QEF7AKFuJmnyk85mUPCxeEPGdXymBb7vQLej3LTUu5A=; b=a/+HQwquQTftD9IZkNLVlRbxjm9s7wfVFqV8k6EnJ2hnPX+7q4Wiuzz84wvUYN8Fb9rVZ933srJ07Ra0gadgiEJwcfHwVH/usHN7NqsteD+y2V1bISYjh+AGP5t/s4gibOsUbkR+r+Op1IjUz+sRRHm2SUrZKGdDCJ1VO7rvgWU= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17644239327951020.5357481546237; Sat, 29 Nov 2025 05:45:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vPLFd-0005P0-FD; Sat, 29 Nov 2025 08:44: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 1vPLFV-0005Mj-Fn for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:29 -0500 Received: from forwardcorp1d.mail.yandex.net ([178.154.239.200]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vPLFT-0002Y8-B3 for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:29 -0500 Received: from mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:65a0:0:640:e1de:0]) by forwardcorp1d.mail.yandex.net (Yandex) with ESMTPS id 02EC78088C; Sat, 29 Nov 2025 16:44:26 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:891::1:b]) by mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Iigm2k0FK8c0-k1ik4Xup; Sat, 29 Nov 2025 16:44:25 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1764423865; bh=QEF7AKFuJmnyk85mUPCxeEPGdXymBb7vQLej3LTUu5A=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=lhwGhj1U+VAI7ydKAdZIuAecfP36h2UuAbfoB+GRxsRYQAQjG8ux5du7vtCnuHGrd KOlCceJQNp3+eGAbyv4AJ2tSFBitUR+X7ArLWkRrZVuBl3Z38ONtXAGPddRAnXbpXH BibNhLfGSWg2WrlbXdjT/8wbSaD5BLiJbMsJvAFA= Authentication-Results: mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: marcandre.lureau@redhat.com Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, vsementsov@yandex-team.ru, d-tatianin@yandex-team.ru Subject: [PATCH 5/8] chardev/char-pty: store pty_name into PtyChardev state Date: Sat, 29 Nov 2025 16:43:45 +0300 Message-ID: <20251129134350.487839-6-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251129134350.487839-1-vsementsov@yandex-team.ru> References: <20251129134350.487839-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.200; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1d.mail.yandex.net 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @yandex-team.ru) X-ZM-MESSAGEID: 1764423937239019201 Content-Type: text/plain; charset="utf-8" We'll use it in following commit. Note the bonus: stop use blind strcpy(). Signed-off-by: Vladimir Sementsov-Ogievskiy --- 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 9e26e97baf..a582aa7bc7 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.48.1 From nobody Sun Dec 14 05:53:38 2025 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=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1764423916; cv=none; d=zohomail.com; s=zohoarc; b=PAKllAWhz84CqNhfEWWS4rFctA1aWCO6zdDbHf+kOv0avdnIns71x4urhnfahnhTKE4WuwY6JKwKdUBjKHUKmkBWpuiys1nrHe6q2ArzKFsDVrdImk8OuhfhbqNd8+OMxsdh3cpN21pVO4QApNRd96xgQlF8tbNOwx0AbW8zfS8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764423916; h=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=LUCSxr52Pv2huLa0fLn9hz38EO3fAzK11cfvmV1Zx1o=; b=JXOhfMSYC+S0MbkXVMQINNCBo6VDtJPDmjmMSTT0ab1TjHS8uTKgwLX48xls5lIiiruw8JE2F2v3oa2/dsDfyJ10qNSQNZMU/Kpjkm6IR1WV10X3pXEZv9taaMoSqXdd4ZCq/ZZ3Hwf9duGnsxtxIDOvIASzZU/Vjl5mdOF7Kw8= 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=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1764423916582616.0057466453131; Sat, 29 Nov 2025 05:45:16 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1175230.1500077 (Exim 4.92) (envelope-from ) id 1vPLFb-0003mA-28; Sat, 29 Nov 2025 13:44:35 +0000 Received: by outflank-mailman (output) from mailman id 1175230.1500077; Sat, 29 Nov 2025 13:44:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vPLFa-0003m2-Sn; Sat, 29 Nov 2025 13:44:34 +0000 Received: by outflank-mailman (input) for mailman id 1175230; Sat, 29 Nov 2025 13:44:33 +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 1vPLFY-0003lw-In for xen-devel@lists.xenproject.org; Sat, 29 Nov 2025 13:44:33 +0000 Received: from forwardcorp1d.mail.yandex.net (forwardcorp1d.mail.yandex.net [178.154.239.200]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 879beefc-cd29-11f0-9d18-b5c5bf9af7f9; Sat, 29 Nov 2025 14:44:30 +0100 (CET) Received: from mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:65a0:0:640:e1de:0]) by forwardcorp1d.mail.yandex.net (Yandex) with ESMTPS id 7BD36807C8; Sat, 29 Nov 2025 16:44:28 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:891::1:b]) by mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Iigm2k0FK8c0-ulXpjbz3; Sat, 29 Nov 2025 16:44:27 +0300 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: 879beefc-cd29-11f0-9d18-b5c5bf9af7f9 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1764423867; bh=LUCSxr52Pv2huLa0fLn9hz38EO3fAzK11cfvmV1Zx1o=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=fnN1kUpbAUIbmVpr8z4hs3eb95QPfQMSIrmtOiUfZcBCqWBA53ree1f+qm7BDIGff GMBZkItq/iHyjYMaL7UtmTwwYoW8yuJUp3W2DRqd8uy9x/L4gaQqJ6+Zf7xVuAm7rA gBJeWp/iea8yhHtgJbTB0ze8yFT+wdli48WJX+qo= Authentication-Results: mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: marcandre.lureau@redhat.com Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, vsementsov@yandex-team.ru, d-tatianin@yandex-team.ru, Stefano Stabellini , Anthony PERARD , Paul Durrant , "Edgar E. Iglesias" , xen-devel@lists.xenproject.org (open list:X86 Xen CPUs) Subject: [PATCH 6/8] chardev: introduce .chr_get_pty_name() handler Date: Sat, 29 Nov 2025 16:43:46 +0300 Message-ID: <20251129134350.487839-7-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251129134350.487839-1-vsementsov@yandex-team.ru> References: <20251129134350.487839-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1764423919370019200 Content-Type: text/plain; charset="utf-8" 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 --- chardev/char-pty.c | 7 +++++++ chardev/char.c | 19 +++++++++++++------ hw/char/xen_console.c | 7 ++++--- include/chardev/char.h | 7 +++++-- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/chardev/char-pty.c b/chardev/char-pty.c index a582aa7bc7..047aade09e 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 44bfed3627..0dc792b88f 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 a639fb0b11..7502de46e4 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 */ diff --git a/include/chardev/char.h b/include/chardev/char.h index 23a227dca9..d36e50b99e 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; @@ -306,6 +304,9 @@ struct ChardevClass { =20 /* handle various events */ void (*chr_be_event)(Chardev *s, QEMUChrEvent event); + + /* return PTY name if available */ + char *(*chr_get_pty_name)(Chardev *s); }; =20 Chardev *qemu_chardev_new(const char *id, const char *typename, @@ -320,4 +321,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 --=20 2.48.1 From nobody Sun Dec 14 05:53:38 2025 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=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1764423939; cv=none; d=zohomail.com; s=zohoarc; b=Gq+yJKiUKdwRk3+eCWAGewYvyhbqg2hteC13lhD3qjKjc0u7rAUSLw/nvrGqlaHzFdNWTqn6XLGZ9REp9VRnTIb1r53yc/Kf5fmsHvZLMraL4aCNw1FFBM3ClhKrQhNt+dfbAxedawfdRryBLXlb4cHxYgRGddmjXxbq8ta3VWU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764423939; h=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=CL6qFPwQoeSNpg/HvJgiM8hNjV5gKvEi8vUGkDkQQc4=; b=bD/HqSDJGH15N/4D+ZUehLszJUrf+paGBx9xhYqSlAgWKhPc+XIg0m9ONTYiEF71+19b7JP5vgM7JVX7aepDe2tix21+4dRHyE0EJI1SpS4P5wiYspm4gmf6bJr5A74/0UE8CuF5B6UD7/bAv14hlfdnjVaweQ7/o4uQBoldGvs= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1764423939342764.4306782322151; Sat, 29 Nov 2025 05:45:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vPLFl-0005QS-H0; Sat, 29 Nov 2025 08:44:45 -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 1vPLFZ-0005OL-Iw for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:34 -0500 Received: from forwardcorp1d.mail.yandex.net ([178.154.239.200]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vPLFW-0002Yb-DH for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:32 -0500 Received: from mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:65a0:0:640:e1de:0]) by forwardcorp1d.mail.yandex.net (Yandex) with ESMTPS id 23EE08084E; Sat, 29 Nov 2025 16:44:29 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:891::1:b]) by mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Iigm2k0FK8c0-THaXbO3L; Sat, 29 Nov 2025 16:44:28 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1764423868; bh=CL6qFPwQoeSNpg/HvJgiM8hNjV5gKvEi8vUGkDkQQc4=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=Ksah5/JNgU6NuaZe0f++8NSGcV+mrjt6EmWrSq0kmPcIlMdkcgcXuNUjnXki2mgRW ti6NG0xh3O687q87cTrBUBNT3aYaNYM+mKWqzqeqTIWmeNAneVYeADjdXl6nx5YHQk AHgVehZl7x4EkRC2qv/t1iRTHxX9xWgW3+JWOkCc= Authentication-Results: mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: marcandre.lureau@redhat.com Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, vsementsov@yandex-team.ru, d-tatianin@yandex-team.ru Subject: [PATCH 7/8] chardev: rework filename handling Date: Sat, 29 Nov 2025 16:43:47 +0300 Message-ID: <20251129134350.487839-8-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251129134350.487839-1-vsementsov@yandex-team.ru> References: <20251129134350.487839-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.200; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1d.mail.yandex.net 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @yandex-team.ru) X-ZM-MESSAGEID: 1764423940313019200 Content-Type: text/plain; charset="utf-8" We have the following flaws with it: 1. Layring violation by modifying generic state directly in backends 2. Tricky generic logic: we should check, did backend set the generic state field, and fill it when not. Let's fix them all by making filename a private field with getter and setter. And move the "default logic" into getter. Signed-off-by: Vladimir Sementsov-Ogievskiy --- chardev/char-pty.c | 4 +++- chardev/char-socket.c | 17 ++++++++--------- chardev/char.c | 8 ++------ hw/misc/ivshmem-pci.c | 4 ++-- include/chardev/char.h | 21 ++++++++++++++++++++- 5 files changed, 35 insertions(+), 19 deletions(-) diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 047aade09e..f4294679be 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -336,6 +336,7 @@ static bool pty_chr_open(Chardev *chr, ChardevBackend *= backend, Error **errp) int master_fd, slave_fd; char *name; char *path =3D backend->u.pty.data->path; + g_autofree char *filename =3D NULL; =20 s =3D PTY_CHARDEV(chr); =20 @@ -351,7 +352,8 @@ 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); + filename =3D g_strdup_printf("pty:%s", s->pty_name); + qemu_chr_set_filename(chr, filename); qemu_printf("char device redirected to %s (label %s)\n", s->pty_name, chr->label); =20 diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 31c9acd164..9387760009 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -384,8 +384,7 @@ 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; + qemu_chr_set_filename(chr, NULL); tcp_chr_change_state(s, TCP_CHARDEV_STATE_DISCONNECTED); } =20 @@ -443,11 +442,11 @@ static void update_disconnected_filename(SocketCharde= v *s) { Chardev *chr =3D CHARDEV(s); =20 - g_free(chr->filename); if (s->addr) { - chr->filename =3D qemu_chr_socket_address(s, "disconnected:"); + g_autofree char *filename =3D qemu_chr_socket_address(s, "disconne= cted:"); + qemu_chr_set_filename(chr, filename); } else { - chr->filename =3D g_strdup("disconnected:socket"); + qemu_chr_set_filename(chr, "disconnected:socket"); } } =20 @@ -638,9 +637,9 @@ static void tcp_chr_connect(void *opaque) { Chardev *chr =3D CHARDEV(opaque); SocketChardev *s =3D SOCKET_CHARDEV(opaque); + g_autofree char *filename =3D qemu_chr_compute_filename(s); =20 - g_free(chr->filename); - chr->filename =3D qemu_chr_compute_filename(s); + qemu_chr_set_filename(chr, filename); =20 tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTED); update_ioc_handlers(s); @@ -1000,8 +999,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); diff --git a/chardev/char.c b/chardev/char.c index 0dc792b88f..bdd907f015 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -309,7 +309,7 @@ static void char_finalize(Object *obj) if (chr->fe) { chr->fe->chr =3D NULL; } - g_free(chr->filename); + qemu_chr_set_filename(chr, NULL); g_free(chr->label); if (chr->logfd !=3D -1) { close(chr->logfd); @@ -796,7 +796,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 +1025,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 diff --git a/hw/misc/ivshmem-pci.c b/hw/misc/ivshmem-pci.c index 636d0b83de..2c7b987241 100644 --- a/hw/misc/ivshmem-pci.c +++ b/hw/misc/ivshmem-pci.c @@ -873,10 +873,10 @@ 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); + char *filename =3D qemu_chr_get_filename(chr); assert(chr); =20 - IVSHMEM_DPRINTF("using shared memory server (socket =3D %s)\n", - chr->filename); + 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); diff --git a/include/chardev/char.h b/include/chardev/char.h index d36e50b99e..ffeb4a4e3b 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -62,7 +62,7 @@ struct Chardev { QemuMutex chr_write_lock; CharFrontend *fe; char *label; - char *filename; + char *_filename; int logfd; int be_open; /* used to coordinate the chardev-change special-case: */ @@ -72,6 +72,25 @@ struct Chardev { DECLARE_BITMAP(features, QEMU_CHAR_FEATURE_LAST); }; =20 +static inline char *qemu_chr_get_filename(Chardev *chr) +{ + const char *typename; + + if (chr->_filename) { + return g_strdup(chr->_filename); + } + + typename =3D object_get_typename(OBJECT(chr)); + assert(g_str_has_prefix(typename, "chardev-")); + return g_strdup(typename + 8); +} + +static inline void qemu_chr_set_filename(Chardev *chr, const char *filenam= e) +{ + g_free(chr->_filename); + chr->_filename =3D g_strdup(filename); +} + /** * qemu_chr_new_from_opts: * @opts: see qemu-config.c for a list of valid options --=20 2.48.1 From nobody Sun Dec 14 05:53:38 2025 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=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1764423944; cv=none; d=zohomail.com; s=zohoarc; b=nTU99jR78t1t/Miv5XTq+3Wh9ZiyrmaEhBbXHcFdMDvYIlpgNHe47Qmn5tKpPJkwIH3JmZmAg12yr+viya629fTLCiNfIM19qyhcrWa0O1aYT69AgzEiWZlIeD6qxxZK9pi/kVrQxc7iW9Es1+BsAdPnmH+2s9ba5QNBFZNIiPg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764423944; h=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=LDJBwEe0WyOZ3uhZLQNadmppxccnqU6Wlab8d4muJ8U=; b=Ww2lkE9k++2VeT7XCPOFd9ux/+FxU5LIM8+xTTzjz4eodyLXFQ2W3l0cFvpTKbUyQI2LRVdpMxXdBPGw54fwqmxWCF5ShzwqFmNyya4+6UooYxviG7g0TM7Ylgzkk16mAlw1X2WsVCoTM2qZaEHH6NZzHc4yIPmyUKWF9fxKT9w= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1764423944531722.0385860712069; Sat, 29 Nov 2025 05:45:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vPLFh-0005Pk-E6; Sat, 29 Nov 2025 08:44: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 1vPLFZ-0005OH-Ix for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:34 -0500 Received: from forwardcorp1d.mail.yandex.net ([178.154.239.200]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vPLFW-0002Yj-UN for qemu-devel@nongnu.org; Sat, 29 Nov 2025 08:44:32 -0500 Received: from mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:65a0:0:640:e1de:0]) by forwardcorp1d.mail.yandex.net (Yandex) with ESMTPS id 9FD9E80880; Sat, 29 Nov 2025 16:44:29 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:891::1:b]) by mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Iigm2k0FK8c0-aURnXYtc; Sat, 29 Nov 2025 16:44:29 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1764423869; bh=LDJBwEe0WyOZ3uhZLQNadmppxccnqU6Wlab8d4muJ8U=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=v51XC/VbvtYaVKcvZY26DUPp2aj2LPJGt7xWliPFkqUF6FmLFDp4VCNA3lA7K6jTx d3zEz/s6h+wjKJNpGjIt6oHyJcLAmyGaVpiTU0ZZTjG1yME8dkN+/6k80qIK/glfyY Hl3uRT3NK/gZcKRZNKfyaNLIuVOCK+BpJrrWamMs= Authentication-Results: mail-nwsmtp-smtp-corp-main-56.klg.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: marcandre.lureau@redhat.com Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, vsementsov@yandex-team.ru, d-tatianin@yandex-team.ru Subject: [PATCH 8/8] chardev/char: qemu_char_open(): add return value Date: Sat, 29 Nov 2025 16:43:48 +0300 Message-ID: <20251129134350.487839-9-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251129134350.487839-1-vsementsov@yandex-team.ru> References: <20251129134350.487839-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.200; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1d.mail.yandex.net 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @yandex-team.ru) X-ZM-MESSAGEID: 1764423946060019200 Content-Type: text/plain; charset="utf-8" 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 --- chardev/char.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index bdd907f015..fadbda5907 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 && !cc->chr_open(chr, backend, errp)) { + return false; } + + return true; } =20 static void char_init(Object *obj) @@ -1007,7 +1009,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); @@ -1018,9 +1019,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.48.1