From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837167; cv=none; d=zohomail.com; s=zohoarc; b=gZ49TPx5Xa0/vdd0H7Nux7RJIYmufcs6cC2DhgKOIojM7hBVwNS8xwfZGIh1wdhb46Ohgbzr0IzWJc5cgMxMAapNCJNUD++mCzDi+78qnQnoUjwQrFBvFNaEiTMXmBiGy4R2as31f/PgyGKNH3TlEy+PtzptGDoKUcexODKWRBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837167; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aRJW94BUf8Tz2S/adz1Cib0l764nc871m2W8dw3Kss0=; b=kuTKF3Ar3jYIuQkud5+9+7IJx+Y0w0SMxPxeMnhH0/fXyG92Vxz5iZTpKA9ZHadGjeoFO2cH8qSrkD7EgAZynlX13xhkAN+klW72pnTjnmnEZ5OxtCYxKT12Ir0c91CCzwPMdjojwBbOvK+6LkqLt1O3wF/L1ZEsx4rQ1Fhbt0U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837167383450.22601365014623; Fri, 10 Apr 2026 09:06:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMJ-0003x8-0n; Fri, 10 Apr 2026 12:05:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEM8-0003px-9p for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEM6-0006M0-5Z for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:15 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-594-khvHcJw0O2uenKySzOIEOQ-1; Fri, 10 Apr 2026 12:05:09 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 055E719560BA; Fri, 10 Apr 2026 16:05:08 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 71F8319560AB; Fri, 10 Apr 2026 16:05:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837113; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aRJW94BUf8Tz2S/adz1Cib0l764nc871m2W8dw3Kss0=; b=PyTQ51Y6M4nz7xS8Jry/5J2fhx1TEFa5SVQKg+GY3z+J0K0DROq5RsnRG96I1hHf0N6i/3 LAb4KzzmI7dkk8/saAcnxq6/ZCOtzsQJaul+RUqSGDGtx8zU2ToljwzGaSoLwSmZ1JFxqY INuUti5Tqeqw8A3fKUdWzQv5m0np0Kc= X-MC-Unique: khvHcJw0O2uenKySzOIEOQ-1 X-Mimecast-MFC-AGG-ID: khvHcJw0O2uenKySzOIEOQ_1775837108 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 01/17] monitor: replace 'common' with 'parent' in MonitorHMP Date: Fri, 10 Apr 2026 17:04:42 +0100 Message-ID: <20260410160458.3778874-2-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837170087158500 The field name 'parent' is standard practice for QOM structs so align the HMP monitor. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Dr. David Alan Gilbert --- monitor/hmp-cmds.c | 2 +- monitor/hmp.c | 40 +++++++++++++++++++------------------- monitor/monitor-internal.h | 2 +- monitor/monitor.c | 6 +++--- monitor/qmp-cmds.c | 10 +++++----- ui/ui-hmp-cmds.c | 2 +- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index bc26b39d70..911d984cbe 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -236,7 +236,7 @@ void hmp_info_sync_profile(Monitor *mon, const QDict *q= dict) =20 void hmp_info_history(Monitor *mon, const QDict *qdict) { - MonitorHMP *hmp_mon =3D container_of(mon, MonitorHMP, common); + MonitorHMP *hmp_mon =3D container_of(mon, MonitorHMP, parent); int i; const char *str; =20 diff --git a/monitor/hmp.c b/monitor/hmp.c index 0e5913fabb..af346d190b 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -47,9 +47,9 @@ static void monitor_command_cb(void *opaque, const char *= cmdline, { MonitorHMP *mon =3D opaque; =20 - monitor_suspend(&mon->common); + monitor_suspend(&mon->parent); handle_hmp_command(mon, cmdline); - monitor_resume(&mon->common); + monitor_resume(&mon->parent); } =20 void monitor_read_command(MonitorHMP *mon, int show_prompt) @@ -72,7 +72,7 @@ int monitor_read_password(MonitorHMP *mon, ReadLineFunc *= readline_func, /* prompt is printed on return from the command handler */ return 0; } else { - monitor_printf(&mon->common, + monitor_printf(&mon->parent, "terminal does not support password prompting\n"); return -ENOTTY; } @@ -689,7 +689,7 @@ static const HMPCommand *monitor_parse_command(MonitorH= MP *hmp_mon, const char **cmdp, HMPCommand *table) { - Monitor *mon =3D &hmp_mon->common; + Monitor *mon =3D &hmp_mon->parent; const char *p; const HMPCommand *cmd; char cmdname[256]; @@ -1182,35 +1182,35 @@ void handle_hmp_command(MonitorHMP *mon, const char= *cmdline) =20 if (!cmd->cmd && !cmd->cmd_info_hrt) { /* FIXME: is it useful to try autoload modules here ??? */ - monitor_printf(&mon->common, "Command \"%.*s\" is not available.\n= ", + monitor_printf(&mon->parent, "Command \"%.*s\" is not available.\n= ", (int)(cmdline - cmd_start), cmd_start); return; } =20 - qdict =3D monitor_parse_arguments(&mon->common, &cmdline, cmd); + qdict =3D monitor_parse_arguments(&mon->parent, &cmdline, cmd); if (!qdict) { while (cmdline > cmd_start && qemu_isspace(cmdline[-1])) { cmdline--; } - monitor_printf(&mon->common, "Try \"help %.*s\" for more informati= on\n", + monitor_printf(&mon->parent, "Try \"help %.*s\" for more informati= on\n", (int)(cmdline - cmd_start), cmd_start); return; } =20 if (!cmd->coroutine) { /* old_mon is non-NULL when called from qmp_human_monitor_command(= ) */ - Monitor *old_mon =3D monitor_set_cur(qemu_coroutine_self(), &mon->= common); - handle_hmp_command_exec(&mon->common, cmd, qdict); + Monitor *old_mon =3D monitor_set_cur(qemu_coroutine_self(), &mon->= parent); + handle_hmp_command_exec(&mon->parent, cmd, qdict); monitor_set_cur(qemu_coroutine_self(), old_mon); } else { HandleHmpCommandCo data =3D { - .mon =3D &mon->common, + .mon =3D &mon->parent, .cmd =3D cmd, .qdict =3D qdict, .done =3D false, }; Coroutine *co =3D qemu_coroutine_create(handle_hmp_command_co, &da= ta); - monitor_set_cur(co, &mon->common); + monitor_set_cur(co, &mon->parent); aio_co_enter(qemu_get_aio_context(), co); AIO_WAIT_WHILE_UNLOCKED(NULL, !data.done); } @@ -1428,7 +1428,7 @@ cleanup: =20 static void monitor_read(void *opaque, const uint8_t *buf, int size) { - MonitorHMP *mon =3D container_of(opaque, MonitorHMP, common); + MonitorHMP *mon =3D container_of(opaque, MonitorHMP, parent); int i; =20 if (mon->rs) { @@ -1437,7 +1437,7 @@ static void monitor_read(void *opaque, const uint8_t = *buf, int size) } } else { if (size =3D=3D 0 || buf[size - 1] !=3D 0) { - monitor_printf(&mon->common, "corrupted command\n"); + monitor_printf(&mon->parent, "corrupted command\n"); } else { handle_hmp_command(mon, (char *)buf); } @@ -1506,26 +1506,26 @@ static void G_GNUC_PRINTF(2, 3) monitor_readline_pr= intf(void *opaque, MonitorHMP *mon =3D opaque; va_list ap; va_start(ap, fmt); - monitor_vprintf(&mon->common, fmt, ap); + monitor_vprintf(&mon->parent, fmt, ap); va_end(ap); } =20 static void monitor_readline_flush(void *opaque) { MonitorHMP *mon =3D opaque; - monitor_flush(&mon->common); + monitor_flush(&mon->parent); } =20 void monitor_init_hmp(Chardev *chr, bool use_readline, Error **errp) { MonitorHMP *mon =3D g_new0(MonitorHMP, 1); =20 - if (!qemu_chr_fe_init(&mon->common.chr, chr, errp)) { + if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) { g_free(mon); return; } =20 - monitor_data_init(&mon->common, false, false, false); + monitor_data_init(&mon->parent, false, false, false); =20 mon->use_readline =3D use_readline; if (mon->use_readline) { @@ -1536,9 +1536,9 @@ void monitor_init_hmp(Chardev *chr, bool use_readline= , Error **errp) monitor_read_command(mon, 0); } =20 - qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read, monitor_r= ead, - monitor_event, NULL, &mon->common, NULL, true= ); - monitor_list_append(&mon->common); + qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read, monitor_r= ead, + monitor_event, NULL, &mon->parent, NULL, true= ); + monitor_list_append(&mon->parent); } =20 /** diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index feca111ae3..ae0cf8c1da 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -119,7 +119,7 @@ struct Monitor { }; =20 struct MonitorHMP { - Monitor common; + Monitor parent; bool use_readline; /* * State used only in the thread "owning" the monitor. diff --git a/monitor/monitor.c b/monitor/monitor.c index 00b93ed612..6532796edb 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -132,7 +132,7 @@ static inline bool monitor_is_hmp_non_interactive(const= Monitor *mon) return false; } =20 - return !monitor_uses_readline(container_of(mon, MonitorHMP, common)); + return !monitor_uses_readline(container_of(mon, MonitorHMP, parent)); } =20 static gboolean monitor_unblocked(void *do_not_use, GIOCondition cond, @@ -542,7 +542,7 @@ static void monitor_accept_input(void *opaque) =20 qemu_mutex_lock(&mon->mon_lock); if (!monitor_is_qmp(mon) && mon->reset_seen) { - MonitorHMP *hmp_mon =3D container_of(mon, MonitorHMP, common); + MonitorHMP *hmp_mon =3D container_of(mon, MonitorHMP, parent); assert(hmp_mon->rs); readline_restart(hmp_mon->rs); qemu_mutex_unlock(&mon->mon_lock); @@ -627,7 +627,7 @@ void monitor_data_destroy(Monitor *mon) if (monitor_is_qmp(mon)) { monitor_data_destroy_qmp(container_of(mon, MonitorQMP, common)); } else { - readline_free(container_of(mon, MonitorHMP, common)->rs); + readline_free(container_of(mon, MonitorHMP, parent)->rs); } g_string_free(mon->outbuf, true); qemu_mutex_destroy(&mon->mon_lock); diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index 0c409c27dc..191eba1b3a 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -168,10 +168,10 @@ char *qmp_human_monitor_command(const char *command_l= ine, bool has_cpu_index, char *output =3D NULL; MonitorHMP hmp =3D {}; =20 - monitor_data_init(&hmp.common, false, true, false); + monitor_data_init(&hmp.parent, false, true, false); =20 if (has_cpu_index) { - int ret =3D monitor_set_cpu(&hmp.common, cpu_index); + int ret =3D monitor_set_cpu(&hmp.parent, cpu_index); if (ret < 0) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "cpu-index", "a CPU number"); @@ -181,12 +181,12 @@ char *qmp_human_monitor_command(const char *command_l= ine, bool has_cpu_index, =20 handle_hmp_command(&hmp, command_line); =20 - WITH_QEMU_LOCK_GUARD(&hmp.common.mon_lock) { - output =3D g_strdup(hmp.common.outbuf->str); + WITH_QEMU_LOCK_GUARD(&hmp.parent.mon_lock) { + output =3D g_strdup(hmp.parent.outbuf->str); } =20 out: - monitor_data_destroy(&hmp.common); + monitor_data_destroy(&hmp.parent); return output; } =20 diff --git a/ui/ui-hmp-cmds.c b/ui/ui-hmp-cmds.c index 6c93d452c9..fe89632474 100644 --- a/ui/ui-hmp-cmds.c +++ b/ui/ui-hmp-cmds.c @@ -341,7 +341,7 @@ void hmp_change_vnc(Monitor *mon, const char *device, c= onst char *target, return; } if (!arg) { - MonitorHMP *hmp_mon =3D container_of(mon, MonitorHMP, common); + MonitorHMP *hmp_mon =3D container_of(mon, MonitorHMP, parent); monitor_read_password(hmp_mon, hmp_change_read_arg, NULL); } else { qmp_change_vnc_password(arg, errp); --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837167; cv=none; d=zohomail.com; s=zohoarc; b=DjT0hPqEKMUGHCUhlnKgXIN0gBs1qTk+RGqL/l/9GM19SPhJz95ETvPdkV8M1X7VqXqAwmBCj1VDvjB1rwbeCUvJqsz+UeW5mxgk42G8LDZT4whm6emZ7/J0Htd4BpTPm9NDnjdUVcNmwY9rWPGxnQQBqaF0WrKIT+ngIVpXna4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837167; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wOJHS8sN6JhZ4wgsDWCE9wWo4qgdFz7hBOvo57Z6mro=; b=J0fgrWlqnDkQu630+oeJw7jVmOaTSvbxa+9nucaCVw0rPsnWgKhSPDxtbHzFaE+NqtN67OjYXaNZUfj1FTLvvDxdeA9HrJLgJuV7m8LXhI9j+DvHrUP3mS6bT+aALbqa30ebEVxbdDvNCL2EFbgGbD5rSpmQUDcGJ4zj5DtLj/4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837167304529.5226950658301; Fri, 10 Apr 2026 09:06:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMf-00043t-8p; Fri, 10 Apr 2026 12:05:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEME-0003wx-SV for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMB-0006Nl-MF for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:21 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-287-FpMymekmMfiNwckxJoR7AQ-1; Fri, 10 Apr 2026 12:05:13 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8C52D19560BB; Fri, 10 Apr 2026 16:05:11 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 580E7195608E; Fri, 10 Apr 2026 16:05:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wOJHS8sN6JhZ4wgsDWCE9wWo4qgdFz7hBOvo57Z6mro=; b=KjbTodagl+hM7Ehc2yxMkLPFP1+fpmE1rN8H+3uTJzH8POsrJBJlagWzsxgfZMksSC2+4u J2a6UX++mbdRC0X/MHC0yy/h0aZeAiyd1mlYwtzzoTDB1JqBnaO12uqEQ8rsfpQHHFwQPi o67e/DlUl3d8hYW267fLA5S8iLnKG3A= X-MC-Unique: FpMymekmMfiNwckxJoR7AQ-1 X-Mimecast-MFC-AGG-ID: FpMymekmMfiNwckxJoR7AQ_1775837111 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 02/17] monitor: replace 'common' with 'parent' in MonitorQMP Date: Fri, 10 Apr 2026 17:04:43 +0100 Message-ID: <20260410160458.3778874-3-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837169924154100 The field name 'parent' is standard practice for QOM structs so align the QMP monitor. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/monitor-internal.h | 2 +- monitor/monitor.c | 4 ++-- monitor/qmp-cmds-control.c | 4 ++-- monitor/qmp.c | 40 +++++++++++++++++++------------------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index ae0cf8c1da..0922588ad9 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -132,7 +132,7 @@ struct MonitorHMP { }; =20 typedef struct { - Monitor common; + Monitor parent; JSONMessageParser parser; bool pretty; /* diff --git a/monitor/monitor.c b/monitor/monitor.c index 6532796edb..6b183edcf5 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -308,7 +308,7 @@ static void monitor_qapi_event_emit(QAPIEvent event, QD= ict *qdict) continue; } =20 - qmp_mon =3D container_of(mon, MonitorQMP, common); + qmp_mon =3D container_of(mon, MonitorQMP, parent); { QEMU_LOCK_GUARD(&mon->mon_lock); if (qmp_mon->commands =3D=3D &qmp_cap_negotiation_commands) { @@ -625,7 +625,7 @@ void monitor_data_destroy(Monitor *mon) g_free(mon->mon_cpu_path); qemu_chr_fe_deinit(&mon->chr, false); if (monitor_is_qmp(mon)) { - monitor_data_destroy_qmp(container_of(mon, MonitorQMP, common)); + monitor_data_destroy_qmp(container_of(mon, MonitorQMP, parent)); } else { readline_free(container_of(mon, MonitorHMP, parent)->rs); } diff --git a/monitor/qmp-cmds-control.c b/monitor/qmp-cmds-control.c index 150ca9f5cb..ca471bc1c7 100644 --- a/monitor/qmp-cmds-control.c +++ b/monitor/qmp-cmds-control.c @@ -76,7 +76,7 @@ void qmp_qmp_capabilities(bool has_enable, QMPCapabilityL= ist *enable, MonitorQMP *mon; =20 assert(monitor_is_qmp(cur_mon)); - mon =3D container_of(cur_mon, MonitorQMP, common); + mon =3D container_of(cur_mon, MonitorQMP, parent); =20 if (mon->commands =3D=3D &qmp_commands) { error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND, @@ -126,7 +126,7 @@ CommandInfoList *qmp_query_commands(Error **errp) MonitorQMP *mon; =20 assert(monitor_is_qmp(cur_mon)); - mon =3D container_of(cur_mon, MonitorQMP, common); + mon =3D container_of(cur_mon, MonitorQMP, parent); =20 qmp_for_each_command(mon->commands, query_commands_cb, &list); =20 diff --git a/monitor/qmp.c b/monitor/qmp.c index 687019811f..69d9e40e32 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -80,7 +80,7 @@ static void monitor_qmp_caps_reset(MonitorQMP *mon) { memset(mon->capab_offered, 0, sizeof(mon->capab_offered)); memset(mon->capab, 0, sizeof(mon->capab)); - mon->capab_offered[QMP_CAPABILITY_OOB] =3D mon->common.use_io_thread; + mon->capab_offered[QMP_CAPABILITY_OOB] =3D mon->parent.use_io_thread; } =20 static void qmp_request_free(QMPRequest *req) @@ -124,7 +124,7 @@ static void monitor_qmp_cleanup_queue_and_resume(Monito= rQMP *mon) * when we get here while the monitor is suspended. An * unfortunately timed CHR_EVENT_CLOSED can do the trick. */ - monitor_resume(&mon->common); + monitor_resume(&mon->parent); } =20 } @@ -139,7 +139,7 @@ void qmp_send_response(MonitorQMP *mon, const QDict *rs= p) trace_monitor_qmp_respond(mon, json->str); =20 g_string_append_c(json, '\n'); - monitor_puts(&mon->common, json->str); + monitor_puts(&mon->parent, json->str); =20 g_string_free(json, true); } @@ -166,7 +166,7 @@ static void monitor_qmp_dispatch(MonitorQMP *mon, QObje= ct *req) QDict *error; =20 rsp =3D qmp_dispatch(mon->commands, req, qmp_oob_enabled(mon), - &mon->common); + &mon->parent); =20 if (mon->commands =3D=3D &qmp_cap_negotiation_commands) { error =3D qdict_get_qdict(rsp, "error"); @@ -207,7 +207,7 @@ static QMPRequest *monitor_qmp_requests_pop_any_with_lo= ck(void) continue; } =20 - qmp_mon =3D container_of(mon, MonitorQMP, common); + qmp_mon =3D container_of(mon, MonitorQMP, parent); qemu_mutex_lock(&qmp_mon->qmp_queue_lock); req_obj =3D g_queue_pop_head(qmp_mon->qmp_requests); if (req_obj) { @@ -302,7 +302,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data) oob_enabled =3D qmp_oob_enabled(mon); if (oob_enabled && mon->qmp_requests->length =3D=3D QMP_REQ_QUEUE_LEN_MAX - 1)= { - monitor_resume(&mon->common); + monitor_resume(&mon->parent); } =20 /* @@ -343,7 +343,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data) } =20 if (!oob_enabled) { - monitor_resume(&mon->common); + monitor_resume(&mon->parent); } =20 qmp_request_free(req_obj); @@ -408,7 +408,7 @@ static void handle_qmp_command(void *opaque, QObject *r= eq, Error *err) */ if (!qmp_oob_enabled(mon) || mon->qmp_requests->length =3D=3D QMP_REQ_QUEUE_LEN_MAX - 1) { - monitor_suspend(&mon->common); + monitor_suspend(&mon->parent); } =20 /* @@ -462,7 +462,7 @@ static void monitor_qmp_event(void *opaque, QEMUChrEven= t event) =20 switch (event) { case CHR_EVENT_OPENED: - WITH_QEMU_LOCK_GUARD(&mon->common.mon_lock) { + WITH_QEMU_LOCK_GUARD(&mon->parent.mon_lock) { mon->commands =3D &qmp_cap_negotiation_commands; monitor_qmp_caps_reset(mon); } @@ -504,27 +504,27 @@ static void monitor_qmp_setup_handlers_bh(void *opaqu= e) MonitorQMP *mon =3D opaque; GMainContext *context; =20 - assert(mon->common.use_io_thread); + assert(mon->parent.use_io_thread); context =3D iothread_get_g_main_context(mon_iothread); assert(context); - qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read, + qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read, monitor_qmp_read, monitor_qmp_event, - NULL, &mon->common, context, true); - monitor_list_append(&mon->common); + NULL, &mon->parent, context, true); + monitor_list_append(&mon->parent); } =20 void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp) { MonitorQMP *mon =3D g_new0(MonitorQMP, 1); =20 - if (!qemu_chr_fe_init(&mon->common.chr, chr, errp)) { + if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) { g_free(mon); return; } - qemu_chr_fe_set_echo(&mon->common.chr, true); + qemu_chr_fe_set_echo(&mon->parent.chr, true); =20 /* Note: we run QMP monitor in I/O thread when @chr supports that */ - monitor_data_init(&mon->common, true, false, + monitor_data_init(&mon->parent, true, false, qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT= )); =20 mon->pretty =3D pretty; @@ -533,7 +533,7 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error = **errp) mon->qmp_requests =3D g_queue_new(); =20 json_message_parser_init(&mon->parser, handle_qmp_command, mon, NULL); - if (mon->common.use_io_thread) { + if (mon->parent.use_io_thread) { /* * Make sure the old iowatch is gone. It's possible when * e.g. the chardev is in client mode, with wait=3Don. @@ -553,9 +553,9 @@ void monitor_init_qmp(Chardev *chr, bool pretty, Error = **errp) monitor_qmp_setup_handlers_bh, mon); /* The bottom half will add @mon to @mon_list */ } else { - qemu_chr_fe_set_handlers(&mon->common.chr, monitor_can_read, + qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read, monitor_qmp_read, monitor_qmp_event, - NULL, &mon->common, NULL, true); - monitor_list_append(&mon->common); + NULL, &mon->parent, NULL, true); + monitor_list_append(&mon->parent); } } --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837202; cv=none; d=zohomail.com; s=zohoarc; b=HbsoMNjjfNuuZU4S8B+JZ18DVeNEVw52Db8ao6f7sF+2jmH02v4wBpSr9jACLQaSByh8GpkZqyTlkOq98w5oDVtM9wAJ58KfjpcC/HNE1vGH6jMyOGB9NxdeOmKybORKACf9812j07VBZR59VtWAPysjwAI4xEqxrT4UldePOR0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837202; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aYljcxjAWI5mIsfVriofuWNiJ+RWRgV4TbNm/RQMm9g=; b=ggV6NwrGlgV8ZFKTOunVbIlGXk3RdabhPUCjbyg71uVoB1GipLbGmZDA6t7s8f53Dywn/sOezUXOFkctBm4qDuzk6sNGaUrdVef+QnMZp9DROAX9fXOgbrMxgsfpxbY0kdkswGJI9Mx4Hu+O2a7ey/2/lgacgsRLR7QviiMMWrY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837202274199.27025550813244; Fri, 10 Apr 2026 09:06:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMk-0004Aw-EX; Fri, 10 Apr 2026 12:05:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMG-0003yd-I1 for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEME-0006OV-LY for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:24 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-113-roai83NQMB-eLm_nU87jrw-1; Fri, 10 Apr 2026 12:05:16 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 3565418002CA; Fri, 10 Apr 2026 16:05:15 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E45DA195608E; Fri, 10 Apr 2026 16:05:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837122; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aYljcxjAWI5mIsfVriofuWNiJ+RWRgV4TbNm/RQMm9g=; b=hOTOt95lF6KubWEzl0PJ9i+Fmb3RVYyJtyLbSebR4IHmYSB9g5hKN8Zq2qvF0UAhRROCD+ a5+aL9rSREce37Ak74D1q95N+QehPui/zluDAH91xn0b2UKzHphN7pn5PlACRA+VUXmyOM 9MBXuBfaWjpbJeXqDSVz0Ku1mJHp4Ew= X-MC-Unique: roai83NQMB-eLm_nU87jrw-1 X-Mimecast-MFC-AGG-ID: roai83NQMB-eLm_nU87jrw_1775837115 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 03/17] monitor: rename monitor_init* to monitor_new* Date: Fri, 10 Apr 2026 17:04:44 +0100 Message-ID: <20260410160458.3778874-4-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837204023158500 The current "monitor_init" functions will clash with the methods of the same name that are required by QOM. To ease the transition to QOM, rename them out of the way. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Dr. David Alan Gilbert --- chardev/char.c | 2 +- gdbstub/system.c | 2 +- include/monitor/monitor.h | 8 ++++---- monitor/hmp.c | 2 +- monitor/monitor.c | 10 +++++----- monitor/qmp.c | 2 +- storage-daemon/qemu-storage-daemon.c | 2 +- stubs/monitor-internal.c | 2 +- system/vl.c | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 48b326d57b..b59972f325 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -786,7 +786,7 @@ static Chardev *qemu_chr_new_from_name(const char *labe= l, const char *filename, =20 if (qemu_opt_get_bool(opts, "mux", 0)) { assert(permit_mux_mon); - monitor_init_hmp(chr, true, &err); + monitor_new_hmp(chr, true, &err); if (err) { error_report_err(err); object_unparent(OBJECT(chr)); diff --git a/gdbstub/system.c b/gdbstub/system.c index e86c5870ab..20dcf7878d 100644 --- a/gdbstub/system.c +++ b/gdbstub/system.c @@ -388,7 +388,7 @@ bool gdbserver_start(const char *device, Error **errp) /* Initialize a monitor terminal for gdb */ mon_chr =3D qemu_chardev_new(NULL, TYPE_CHARDEV_GDB, NULL, NULL, &error_abort); - monitor_init_hmp(mon_chr, false, &error_abort); + monitor_new_hmp(mon_chr, false, &error_abort); } else { qemu_chr_fe_deinit(&gdbserver_system_state.chr, true); mon_chr =3D gdbserver_system_state.mon_chr; diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h index 296690e1f1..bfbb440550 100644 --- a/include/monitor/monitor.h +++ b/include/monitor/monitor.h @@ -19,10 +19,10 @@ bool monitor_cur_is_qmp(void); =20 void monitor_init_globals(void); void monitor_init_globals_core(void); -void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp); -void monitor_init_hmp(Chardev *chr, bool use_readline, Error **errp); -int monitor_init(MonitorOptions *opts, bool allow_hmp, Error **errp); -int monitor_init_opts(QemuOpts *opts, Error **errp); +void monitor_new_qmp(Chardev *chr, bool pretty, Error **errp); +void monitor_new_hmp(Chardev *chr, bool use_readline, Error **errp); +int monitor_new(MonitorOptions *opts, bool allow_hmp, Error **errp); +int monitor_new_opts(QemuOpts *opts, Error **errp); void monitor_cleanup(void); =20 int monitor_suspend(Monitor *mon); diff --git a/monitor/hmp.c b/monitor/hmp.c index af346d190b..6dfeca84b5 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -1516,7 +1516,7 @@ static void monitor_readline_flush(void *opaque) monitor_flush(&mon->parent); } =20 -void monitor_init_hmp(Chardev *chr, bool use_readline, Error **errp) +void monitor_new_hmp(Chardev *chr, bool use_readline, Error **errp) { MonitorHMP *mon =3D g_new0(MonitorHMP, 1); =20 diff --git a/monitor/monitor.c b/monitor/monitor.c index 6b183edcf5..393fb7795e 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -715,7 +715,7 @@ void monitor_init_globals(void) aio_co_schedule(iohandler_get_aio_context(), qmp_dispatcher_co); } =20 -int monitor_init(MonitorOptions *opts, bool allow_hmp, Error **errp) +int monitor_new(MonitorOptions *opts, bool allow_hmp, Error **errp) { ERRP_GUARD(); Chardev *chr; @@ -732,7 +732,7 @@ int monitor_init(MonitorOptions *opts, bool allow_hmp, = Error **errp) =20 switch (opts->mode) { case MONITOR_MODE_CONTROL: - monitor_init_qmp(chr, opts->pretty, errp); + monitor_new_qmp(chr, opts->pretty, errp); break; case MONITOR_MODE_READLINE: if (!allow_hmp) { @@ -743,7 +743,7 @@ int monitor_init(MonitorOptions *opts, bool allow_hmp, = Error **errp) error_setg(errp, "'pretty' is not compatible with HMP monitors= "); return -1; } - monitor_init_hmp(chr, true, errp); + monitor_new_hmp(chr, true, errp); break; default: g_assert_not_reached(); @@ -752,7 +752,7 @@ int monitor_init(MonitorOptions *opts, bool allow_hmp, = Error **errp) return *errp ? -1 : 0; } =20 -int monitor_init_opts(QemuOpts *opts, Error **errp) +int monitor_new_opts(QemuOpts *opts, Error **errp) { Visitor *v; MonitorOptions *options; @@ -765,7 +765,7 @@ int monitor_init_opts(QemuOpts *opts, Error **errp) return -1; } =20 - ret =3D monitor_init(options, true, errp); + ret =3D monitor_new(options, true, errp); qapi_free_MonitorOptions(options); return ret; } diff --git a/monitor/qmp.c b/monitor/qmp.c index 69d9e40e32..9caee70624 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -513,7 +513,7 @@ static void monitor_qmp_setup_handlers_bh(void *opaque) monitor_list_append(&mon->parent); } =20 -void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp) +void monitor_new_qmp(Chardev *chr, bool pretty, Error **errp) { MonitorQMP *mon =3D g_new0(MonitorQMP, 1); =20 diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-sto= rage-daemon.c index eb72561358..50dbfbd97a 100644 --- a/storage-daemon/qemu-storage-daemon.c +++ b/storage-daemon/qemu-storage-daemon.c @@ -330,7 +330,7 @@ static void process_options(int argc, char *argv[], boo= l pre_init_pass) visit_free(v); =20 /* TODO Catch duplicate monitor IDs */ - monitor_init(monitor, false, &error_fatal); + monitor_new(monitor, false, &error_fatal); qapi_free_MonitorOptions(monitor); break; } diff --git a/stubs/monitor-internal.c b/stubs/monitor-internal.c index 4fece49d53..23d58da184 100644 --- a/stubs/monitor-internal.c +++ b/stubs/monitor-internal.c @@ -8,6 +8,6 @@ int monitor_get_fd(Monitor *mon, const char *name, Error **= errp) return -1; } =20 -void monitor_init_hmp(Chardev *chr, bool use_readline, Error **errp) +void monitor_new_hmp(Chardev *chr, bool use_readline, Error **errp) { } diff --git a/system/vl.c b/system/vl.c index 246623b319..2391811a46 100644 --- a/system/vl.c +++ b/system/vl.c @@ -1244,7 +1244,7 @@ static int fsdev_init_func(void *opaque, QemuOpts *op= ts, Error **errp) =20 static int mon_init_func(void *opaque, QemuOpts *opts, Error **errp) { - return monitor_init_opts(opts, errp); + return monitor_new_opts(opts, errp); } =20 static void monitor_parse(const char *str, const char *mode, bool pretty) --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837167; cv=none; d=zohomail.com; s=zohoarc; b=DlJMKDOLNnciI5Ei5yDUEYzT60CmpT1D3buXJSh9umbWDXZNpoXpHJpXqRw7NRK7GNVrM8L4z+iJgNvgDdtdKjSpmv4Cdi6JMdcYwDK6phqSDGfT0Q9+l7dGDGWDdAiLAJFlhXW/qDcJdWMHFJYhNZhJf4aOraZ/SbkwHM8kqe8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837167; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RZ7iEy/LRT8y0xXnRA7qcfp+J9ER7E1IC6/AbgHspXo=; b=RK2P5zmkJGsL2JyaVG85AFwiCLltiQYzgMwOocULfao6GzKIENg+Hp/ANKbxOnw0xi/uGcLtim0/jIQjFFJOmvg5D0OPGLVHOvmlpBcHZUkq8NUNeb1Ob5JpOvtNRjtr84z4YEoAZI6pCfDFc0goys8OFpZVLSUBFhjf3rNyuJY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837167352161.95686577447236; Fri, 10 Apr 2026 09:06:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMm-0004BU-59; Fri, 10 Apr 2026 12:05:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMN-000405-3V for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMH-0006PA-FD for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:28 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-22-1c2dT_ruOEGSoOPurpOvEw-1; Fri, 10 Apr 2026 12:05:20 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DBD6F19560B2; Fri, 10 Apr 2026 16:05:18 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 895C5195608E; Fri, 10 Apr 2026 16:05:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RZ7iEy/LRT8y0xXnRA7qcfp+J9ER7E1IC6/AbgHspXo=; b=ZROWaylrLGLJ6WQ4iHMen4DdEG61SXGdrEd3E8noj6yHxraAQDLq/W6P86+33cIjkpwvYH GHPqxZPOcDw+BB7MpNwuuCdX/AQb5X3TPPWvzYpMWaZw9shOBsGaHHPv7fy5bxZLbqzXLv Ng+2OxStdGgSyDwtae1AzzjR/1xA8HM= X-MC-Unique: 1c2dT_ruOEGSoOPurpOvEw-1 X-Mimecast-MFC-AGG-ID: 1c2dT_ruOEGSoOPurpOvEw_1775837119 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 04/17] monitor: minimal conversion of monitors to QOM Date: Fri, 10 Apr 2026 17:04:45 +0100 Message-ID: <20260410160458.3778874-5-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837170056158500 This introduces a Monitor QOM object, with MonitorHMP and MonitorQMP subclasses. This is the bare minimum conversion of just the type declarations and replacing g_new/g_free with object_new/object_unref. Signed-off-by: Daniel P. Berrang=C3=A9 Acked-by: Dr. David Alan Gilbert --- include/monitor/monitor.h | 11 ++++++++++- monitor/hmp.c | 18 ++++++++++++++++-- monitor/monitor-internal.h | 18 ++++++++++++++++-- monitor/monitor.c | 18 ++++++++++++++++-- monitor/qmp-cmds.c | 15 ++++++++------- monitor/qmp.c | 18 ++++++++++++++++-- 6 files changed, 82 insertions(+), 16 deletions(-) diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h index bfbb440550..b349b12c34 100644 --- a/include/monitor/monitor.h +++ b/include/monitor/monitor.h @@ -5,8 +5,17 @@ #include "qapi/qapi-types-misc.h" #include "qemu/readline.h" #include "exec/hwaddr.h" +#include "qom/object.h" + +#define TYPE_MONITOR "monitor" +OBJECT_DECLARE_TYPE(Monitor, MonitorClass, MONITOR); + +#define TYPE_MONITOR_HMP "monitor-hmp" +OBJECT_DECLARE_TYPE(MonitorHMP, MonitorHMPClass, MONITOR_HMP); + +#define TYPE_MONITOR_QMP "monitor-qmp" +OBJECT_DECLARE_TYPE(MonitorQMP, MonitorQMPClass, MONITOR_QMP); =20 -typedef struct MonitorHMP MonitorHMP; typedef struct MonitorOptions MonitorOptions; =20 #define QMP_REQ_QUEUE_LEN_MAX 8 diff --git a/monitor/hmp.c b/monitor/hmp.c index 6dfeca84b5..614d9a3707 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -42,6 +42,20 @@ #include "system/block-backend.h" #include "trace.h" =20 +OBJECT_DEFINE_TYPE(MonitorHMP, monitor_hmp, MONITOR_HMP, MONITOR); + +static void monitor_hmp_finalize(Object *obj) +{ +} + +static void monitor_hmp_class_init(ObjectClass *cls, const void *data) +{ +} + +static void monitor_hmp_init(Object *obj) +{ +} + static void monitor_command_cb(void *opaque, const char *cmdline, void *readline_opaque) { @@ -1518,10 +1532,10 @@ static void monitor_readline_flush(void *opaque) =20 void monitor_new_hmp(Chardev *chr, bool use_readline, Error **errp) { - MonitorHMP *mon =3D g_new0(MonitorHMP, 1); + MonitorHMP *mon =3D MONITOR_HMP(object_new(TYPE_MONITOR_HMP)); =20 if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) { - g_free(mon); + object_unref(mon); return; } =20 diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index 0922588ad9..25320928a7 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -92,7 +92,13 @@ typedef struct HMPCommand { void (*command_completion)(ReadLineState *rs, int nb_args, const char = *str); } HMPCommand; =20 + +struct MonitorClass { + ObjectClass parent_class; +}; + struct Monitor { + Object parent; CharFrontend chr; int suspend_cnt; /* Needs to be accessed atomically */ bool is_qmp; @@ -118,6 +124,10 @@ struct Monitor { int reset_seen; }; =20 +struct MonitorHMPClass { + MonitorClass parent_class; +}; + struct MonitorHMP { Monitor parent; bool use_readline; @@ -131,7 +141,11 @@ struct MonitorHMP { ReadLineState *rs; }; =20 -typedef struct { +struct MonitorQMPClass { + MonitorClass parent_class; +}; + +struct MonitorQMP { Monitor parent; JSONMessageParser parser; bool pretty; @@ -151,7 +165,7 @@ typedef struct { QemuMutex qmp_queue_lock; /* Input queue that holds all the parsed QMP requests */ GQueue *qmp_requests; -} MonitorQMP; +}; =20 /** * Is @mon a QMP monitor? diff --git a/monitor/monitor.c b/monitor/monitor.c index 393fb7795e..7936e2ab22 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -73,6 +73,20 @@ static GHashTable *coroutine_mon; /* Maps Coroutine* to = Monitor* */ MonitorList mon_list; static bool monitor_destroyed; =20 +OBJECT_DEFINE_TYPE(Monitor, monitor, MONITOR, OBJECT); + +static void monitor_finalize(Object *obj) +{ +} + +static void monitor_class_init(ObjectClass *cls, const void *data) +{ +} + +static void monitor_init(Object *obj) +{ +} + Monitor *monitor_cur(void) { Monitor *mon; @@ -598,7 +612,7 @@ void monitor_list_append(Monitor *mon) =20 if (mon) { monitor_data_destroy(mon); - g_free(mon); + object_unref(mon); } } =20 @@ -680,7 +694,7 @@ void monitor_cleanup(void) monitor_flush(mon); monitor_data_destroy(mon); qemu_mutex_lock(&monitor_lock); - g_free(mon); + object_unref(mon); } qemu_mutex_unlock(&monitor_lock); =20 diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index 191eba1b3a..d0ed241d6a 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -166,12 +166,12 @@ char *qmp_human_monitor_command(const char *command_l= ine, bool has_cpu_index, int64_t cpu_index, Error **errp) { char *output =3D NULL; - MonitorHMP hmp =3D {}; + MonitorHMP *hmp =3D MONITOR_HMP(object_new(TYPE_MONITOR_HMP)); =20 - monitor_data_init(&hmp.parent, false, true, false); + monitor_data_init(&hmp->parent, false, true, false); =20 if (has_cpu_index) { - int ret =3D monitor_set_cpu(&hmp.parent, cpu_index); + int ret =3D monitor_set_cpu(&hmp->parent, cpu_index); if (ret < 0) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "cpu-index", "a CPU number"); @@ -179,14 +179,15 @@ char *qmp_human_monitor_command(const char *command_l= ine, bool has_cpu_index, } } =20 - handle_hmp_command(&hmp, command_line); + handle_hmp_command(hmp, command_line); =20 - WITH_QEMU_LOCK_GUARD(&hmp.parent.mon_lock) { - output =3D g_strdup(hmp.parent.outbuf->str); + WITH_QEMU_LOCK_GUARD(&hmp->parent.mon_lock) { + output =3D g_strdup(hmp->parent.outbuf->str); } =20 out: - monitor_data_destroy(&hmp.parent); + monitor_data_destroy(&hmp->parent); + object_unref(hmp); return output; } =20 diff --git a/monitor/qmp.c b/monitor/qmp.c index 9caee70624..36cb078f30 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -71,6 +71,20 @@ typedef struct QMPRequest QMPRequest; =20 QmpCommandList qmp_commands, qmp_cap_negotiation_commands; =20 +OBJECT_DEFINE_TYPE(MonitorQMP, monitor_qmp, MONITOR_QMP, MONITOR); + +static void monitor_qmp_finalize(Object *obj) +{ +} + +static void monitor_qmp_class_init(ObjectClass *cls, const void *data) +{ +} + +static void monitor_qmp_init(Object *obj) +{ +} + static bool qmp_oob_enabled(MonitorQMP *mon) { return mon->capab[QMP_CAPABILITY_OOB]; @@ -515,10 +529,10 @@ static void monitor_qmp_setup_handlers_bh(void *opaqu= e) =20 void monitor_new_qmp(Chardev *chr, bool pretty, Error **errp) { - MonitorQMP *mon =3D g_new0(MonitorQMP, 1); + MonitorQMP *mon =3D MONITOR_QMP(object_new(TYPE_MONITOR_QMP)); =20 if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) { - g_free(mon); + object_unref(mon); return; } qemu_chr_fe_set_echo(&mon->parent.chr, true); --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837167; cv=none; d=zohomail.com; s=zohoarc; b=AAYESpznrPjicAQ7gJHKn7YPKev/LHl6KAy8LLBgN07Y++JQ+NYNO9zREFQonWd+bmj1ImMTTSUlgWbsEPcVqQVe38pl6xe8uiBXGyKQdeZxp2c3bdSlRwMAXO+gELGZJBZ982JnAdCzoPdBiav6PwCpFI5P/3BHK/KyIJnBZAM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837167; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=I/ymzSVFiDdbZziVAA2OJ+MKr20f95MwjR7x1NCCHUE=; b=EdScc9ZSKGE9yJnNufaljTf7ikVv7mZrntwGJBItDka4V2EB7sNIKtCDurSovjehKyUNlFHsOJddSv2BUYSshd2AL9DfQG+Eh41wQ3YlORcXIVb9yYR2Ghjz8yWbHR8PABCoVebpfQd6G0Es7fO3e0q9iBWznATM9wral0m5sVI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837167299788.8869619479532; Fri, 10 Apr 2026 09:06:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMh-00047w-9i; Fri, 10 Apr 2026 12:05:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMN-000407-4G for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMJ-0006PM-DR for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:29 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-108-KPtk6W_MM2yZrIw5iqzi9g-1; Fri, 10 Apr 2026 12:05:24 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id AEAFB195608F; Fri, 10 Apr 2026 16:05:22 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4706B19560AB; Fri, 10 Apr 2026 16:05:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837126; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=I/ymzSVFiDdbZziVAA2OJ+MKr20f95MwjR7x1NCCHUE=; b=JHhzcTwDerGki4OsrKoKLT5aCyuWbzzyGNGz3eFYrrwkYr2gWStdhz1MTK7MEz3iK6x+Az ZiLzRJ1s7lVEN3OHFsgsFox3H+6NZgpQYNIXigTx8kvtfQHeDjMCeMQ5oONJ4Yl9nN5oBh eGNLfDzUUSXsLFLI7U8F7HIlG+nR0es= X-MC-Unique: KPtk6W_MM2yZrIw5iqzi9g-1 X-Mimecast-MFC-AGG-ID: KPtk6W_MM2yZrIw5iqzi9g_1775837122 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 05/17] monitor: remove 'skip_flush' field Date: Fri, 10 Apr 2026 17:04:46 +0100 Message-ID: <20260410160458.3778874-6-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837169912154100 The 'skip_flush' field is set on the dummy throwaway HMP monitor object created by QMP's 'human-monitor-command', as an indication not to try to write data to the chardev. Instead the QMP command impl will grab the data straight out of the in-memory buffer. The flag is redundant, however, as the monitor code could instead simply check the 'fe_is_open' field on the CharFrontend, which will be false in the same scenarios that 'skip_flush' is true. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/hmp.c | 2 +- monitor/monitor-internal.h | 4 +--- monitor/monitor.c | 11 +++++++---- monitor/qmp-cmds.c | 2 +- monitor/qmp.c | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/monitor/hmp.c b/monitor/hmp.c index 614d9a3707..72f8303662 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -1539,7 +1539,7 @@ void monitor_new_hmp(Chardev *chr, bool use_readline,= Error **errp) return; } =20 - monitor_data_init(&mon->parent, false, false, false); + monitor_data_init(&mon->parent, false, false); =20 mon->use_readline =3D use_readline; if (mon->use_readline) { diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index 25320928a7..84117805b7 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -102,7 +102,6 @@ struct Monitor { CharFrontend chr; int suspend_cnt; /* Needs to be accessed atomically */ bool is_qmp; - bool skip_flush; bool use_io_thread; =20 char *mon_cpu_path; @@ -183,8 +182,7 @@ extern QmpCommandList qmp_commands, qmp_cap_negotiation= _commands; extern QemuMutex monitor_lock; extern MonitorList mon_list; =20 -void monitor_data_init(Monitor *mon, bool is_qmp, bool skip_flush, - bool use_io_thread); +void monitor_data_init(Monitor *mon, bool is_qmp, bool use_io_thread); void monitor_data_destroy(Monitor *mon); int monitor_can_read(void *opaque); void monitor_list_append(Monitor *mon); diff --git a/monitor/monitor.c b/monitor/monitor.c index 7936e2ab22..f7e3708d2f 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -167,7 +167,12 @@ void monitor_flush_locked(Monitor *mon) size_t len; const char *buf; =20 - if (mon->skip_flush) { + /* + * When used by QMP human-monitor-command, no chardev + * will be connected, as we want to just collect the + * output in the buffer + */ + if (!mon->chr.fe_is_open) { return; } =20 @@ -621,8 +626,7 @@ static void monitor_iothread_init(void) mon_iothread =3D iothread_create("mon_iothread", &error_abort); } =20 -void monitor_data_init(Monitor *mon, bool is_qmp, bool skip_flush, - bool use_io_thread) +void monitor_data_init(Monitor *mon, bool is_qmp, bool use_io_thread) { if (use_io_thread && !mon_iothread) { monitor_iothread_init(); @@ -630,7 +634,6 @@ void monitor_data_init(Monitor *mon, bool is_qmp, bool = skip_flush, qemu_mutex_init(&mon->mon_lock); mon->is_qmp =3D is_qmp; mon->outbuf =3D g_string_new(NULL); - mon->skip_flush =3D skip_flush; mon->use_io_thread =3D use_io_thread; } =20 diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index d0ed241d6a..be2bd985b7 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -168,7 +168,7 @@ char *qmp_human_monitor_command(const char *command_lin= e, bool has_cpu_index, char *output =3D NULL; MonitorHMP *hmp =3D MONITOR_HMP(object_new(TYPE_MONITOR_HMP)); =20 - monitor_data_init(&hmp->parent, false, true, false); + monitor_data_init(&hmp->parent, false, false); =20 if (has_cpu_index) { int ret =3D monitor_set_cpu(&hmp->parent, cpu_index); diff --git a/monitor/qmp.c b/monitor/qmp.c index 36cb078f30..fe2aec9ce9 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -538,7 +538,7 @@ void monitor_new_qmp(Chardev *chr, bool pretty, Error *= *errp) qemu_chr_fe_set_echo(&mon->parent.chr, true); =20 /* Note: we run QMP monitor in I/O thread when @chr supports that */ - monitor_data_init(&mon->parent, true, false, + monitor_data_init(&mon->parent, true, qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT= )); =20 mon->pretty =3D pretty; --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837237; cv=none; d=zohomail.com; s=zohoarc; b=PZpHSB5EM6rlkxDau3Kw9AUjAlqSOIrla2LOwdf1009XgdUGjUBJejfqMmab24ETNgQ4wnGINonaS2IA1pTTlYQHsyA4SZaXxyH/3qg2zUNBa1SNWc2y9iF1N3B9UWjf8D1JLZ12LKLPFo4d5JOvTqbAvHia1hCAYFSQ/WFE0Xw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837237; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dyt0/iTo98cCfrgHgNq0Cv+2MCAtHHkp9DewmuMIsRU=; b=KjVfyQkp5JSYBqHVAHzAaZTRgOoKFecylXRKLqddblS4Om65s69nuBJkgWs4FF8ynJ1+xzyYgSoFgmjjYPEzLrdxezxWMVKBM028HJWrdLdLOJ0XuHkMBEHgH9A54z26aw17v+jbhcXl3Gzm4wwZYTOC1elsANUpnrYFxw5cP7M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837237331408.92670158711667; Fri, 10 Apr 2026 09:07:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMm-0004BV-5I; Fri, 10 Apr 2026 12:05:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMS-00041c-PG for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMN-0006QO-LJ for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:33 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-468-0yd4hVrfMiqwAiWxTSJ2Tg-1; Fri, 10 Apr 2026 12:05:29 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1DB6A1955DB2; Fri, 10 Apr 2026 16:05:27 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 148B419560AB; Fri, 10 Apr 2026 16:05:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837131; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dyt0/iTo98cCfrgHgNq0Cv+2MCAtHHkp9DewmuMIsRU=; b=UlKEwHZDzAOSuTZl4ClTKzqLETBaWieoYyZWhJXu/c4tANpLpfZCCMWY0Kj+y3ricshWyf w1pqzEoguFNQpouE9CKSuFi209UikLNAaEbVGZN+zvamxHaUu5Vo9aPY6+RZI+/4t2A4W4 Ame9qplnnl7p7p84lhu7DDJREkA3q0U= X-MC-Unique: 0yd4hVrfMiqwAiWxTSJ2Tg-1 X-Mimecast-MFC-AGG-ID: 0yd4hVrfMiqwAiWxTSJ2Tg_1775837127 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 06/17] monitor: move monitor_data_(init|destroy) into QOM init/finalize Date: Fri, 10 Apr 2026 17:04:47 +0100 Message-ID: <20260410160458.3778874-7-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837238282158501 Start to take advantage of QOM, by using object init and finalize methods to replace monitor_data_init and monitor_data_destroy. A standalone helper is provided to enable the I/O thread for QMP where appropriate for the chardev backend. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/hmp.c | 4 ++-- monitor/monitor-internal.h | 3 +-- monitor/monitor.c | 48 ++++++++++++++------------------------ monitor/qmp-cmds.c | 3 --- monitor/qmp.c | 21 +++++++++-------- 5 files changed, 32 insertions(+), 47 deletions(-) diff --git a/monitor/hmp.c b/monitor/hmp.c index 72f8303662..833de0eee8 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -46,6 +46,8 @@ OBJECT_DEFINE_TYPE(MonitorHMP, monitor_hmp, MONITOR_HMP, = MONITOR); =20 static void monitor_hmp_finalize(Object *obj) { + MonitorHMP *mon =3D MONITOR_HMP(obj); + readline_free(mon->rs); } =20 static void monitor_hmp_class_init(ObjectClass *cls, const void *data) @@ -1539,8 +1541,6 @@ void monitor_new_hmp(Chardev *chr, bool use_readline,= Error **errp) return; } =20 - monitor_data_init(&mon->parent, false, false); - mon->use_readline =3D use_readline; if (mon->use_readline) { mon->rs =3D readline_init(monitor_readline_printf, diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index 84117805b7..5bfe3b7325 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -182,8 +182,7 @@ extern QmpCommandList qmp_commands, qmp_cap_negotiation= _commands; extern QemuMutex monitor_lock; extern MonitorList mon_list; =20 -void monitor_data_init(Monitor *mon, bool is_qmp, bool use_io_thread); -void monitor_data_destroy(Monitor *mon); +void monitor_iothread_init(Monitor *mon); int monitor_can_read(void *opaque); void monitor_list_append(Monitor *mon); void monitor_fdsets_cleanup(void); diff --git a/monitor/monitor.c b/monitor/monitor.c index f7e3708d2f..f6c90145f6 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -77,6 +77,12 @@ OBJECT_DEFINE_TYPE(Monitor, monitor, MONITOR, OBJECT); =20 static void monitor_finalize(Object *obj) { + Monitor *mon =3D MONITOR(obj); + + g_free(mon->mon_cpu_path); + qemu_chr_fe_deinit(&mon->chr, false); + g_string_free(mon->outbuf, true); + qemu_mutex_destroy(&mon->mon_lock); } =20 static void monitor_class_init(ObjectClass *cls, const void *data) @@ -85,6 +91,11 @@ static void monitor_class_init(ObjectClass *cls, const v= oid *data) =20 static void monitor_init(Object *obj) { + Monitor *mon =3D MONITOR(obj); + + qemu_mutex_init(&mon->mon_lock); + mon->is_qmp =3D !!object_dynamic_cast(obj, TYPE_MONITOR_QMP); + mon->outbuf =3D g_string_new(NULL); } =20 Monitor *monitor_cur(void) @@ -616,38 +627,16 @@ void monitor_list_append(Monitor *mon) qemu_mutex_unlock(&monitor_lock); =20 if (mon) { - monitor_data_destroy(mon); object_unref(mon); } } =20 -static void monitor_iothread_init(void) -{ - mon_iothread =3D iothread_create("mon_iothread", &error_abort); -} - -void monitor_data_init(Monitor *mon, bool is_qmp, bool use_io_thread) +void monitor_iothread_init(Monitor *mon) { - if (use_io_thread && !mon_iothread) { - monitor_iothread_init(); + if (!mon_iothread) { + mon_iothread =3D iothread_create("mon_iothread", &error_abort); } - qemu_mutex_init(&mon->mon_lock); - mon->is_qmp =3D is_qmp; - mon->outbuf =3D g_string_new(NULL); - mon->use_io_thread =3D use_io_thread; -} - -void monitor_data_destroy(Monitor *mon) -{ - g_free(mon->mon_cpu_path); - qemu_chr_fe_deinit(&mon->chr, false); - if (monitor_is_qmp(mon)) { - monitor_data_destroy_qmp(container_of(mon, MonitorQMP, parent)); - } else { - readline_free(container_of(mon, MonitorHMP, parent)->rs); - } - g_string_free(mon->outbuf, true); - qemu_mutex_destroy(&mon->mon_lock); + mon->use_io_thread =3D true; } =20 void monitor_cleanup(void) @@ -665,7 +654,7 @@ void monitor_cleanup(void) * Letting the iothread continue while shutting down the dispatcher * means that new requests may still be coming in. This is okay, * we'll just leave them in the queue without sending a response - * and monitor_data_destroy() will free them. + * and object finalization will free them. */ WITH_QEMU_LOCK_GUARD(&monitor_lock) { qmp_dispatcher_co_shutdown =3D true; @@ -679,8 +668,8 @@ void monitor_cleanup(void) /* * We need to explicitly stop the I/O thread (but not destroy it), * clean up the monitor resources, then destroy the I/O thread since - * we need to unregister from chardev below in - * monitor_data_destroy(), and chardev is not thread-safe yet + * we need to unregister from chardev below in object + * finalization, and chardev is not thread-safe yet */ if (mon_iothread) { iothread_stop(mon_iothread); @@ -695,7 +684,6 @@ void monitor_cleanup(void) /* Permit QAPI event emission from character frontend release */ qemu_mutex_unlock(&monitor_lock); monitor_flush(mon); - monitor_data_destroy(mon); qemu_mutex_lock(&monitor_lock); object_unref(mon); } diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index be2bd985b7..5be93eff4d 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -168,8 +168,6 @@ char *qmp_human_monitor_command(const char *command_lin= e, bool has_cpu_index, char *output =3D NULL; MonitorHMP *hmp =3D MONITOR_HMP(object_new(TYPE_MONITOR_HMP)); =20 - monitor_data_init(&hmp->parent, false, false); - if (has_cpu_index) { int ret =3D monitor_set_cpu(&hmp->parent, cpu_index); if (ret < 0) { @@ -186,7 +184,6 @@ char *qmp_human_monitor_command(const char *command_lin= e, bool has_cpu_index, } =20 out: - monitor_data_destroy(&hmp->parent); object_unref(hmp); return output; } diff --git a/monitor/qmp.c b/monitor/qmp.c index fe2aec9ce9..0de98b33fe 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -73,8 +73,16 @@ QmpCommandList qmp_commands, qmp_cap_negotiation_command= s; =20 OBJECT_DEFINE_TYPE(MonitorQMP, monitor_qmp, MONITOR_QMP, MONITOR); =20 +static void monitor_qmp_cleanup_req_queue_locked(MonitorQMP *mon); + static void monitor_qmp_finalize(Object *obj) { + MonitorQMP *mon =3D MONITOR_QMP(obj); + + json_message_parser_destroy(&mon->parser); + qemu_mutex_destroy(&mon->qmp_queue_lock); + monitor_qmp_cleanup_req_queue_locked(mon); + g_queue_free(mon->qmp_requests); } =20 static void monitor_qmp_class_init(ObjectClass *cls, const void *data) @@ -505,14 +513,6 @@ static void monitor_qmp_event(void *opaque, QEMUChrEve= nt event) } } =20 -void monitor_data_destroy_qmp(MonitorQMP *mon) -{ - json_message_parser_destroy(&mon->parser); - qemu_mutex_destroy(&mon->qmp_queue_lock); - monitor_qmp_cleanup_req_queue_locked(mon); - g_queue_free(mon->qmp_requests); -} - static void monitor_qmp_setup_handlers_bh(void *opaque) { MonitorQMP *mon =3D opaque; @@ -538,8 +538,9 @@ void monitor_new_qmp(Chardev *chr, bool pretty, Error *= *errp) qemu_chr_fe_set_echo(&mon->parent.chr, true); =20 /* Note: we run QMP monitor in I/O thread when @chr supports that */ - monitor_data_init(&mon->parent, true, - qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT= )); + if (qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT)) { + monitor_iothread_init(&mon->parent); + } =20 mon->pretty =3D pretty; =20 --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837255; cv=none; d=zohomail.com; s=zohoarc; b=SbswBRF4dLDLEtuWV1iZKl3SJ4MdYjbhF+5RwVu9AlWD2p5QaW6taaFuIArIVyeQMvt1ShaBJAAKuNz4zvJTyk22ctctK5SqKZ8c0u5n7Mzs7aI9nZB+ly/Y11rrf0ds9WKhwq+/GyZ+OWI36b9IqEWn+W2UDhGda5f9PmwWVG4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837255; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CvSkhUVa0BQXOqBV5xKSGKJv0S+rk4U3SVFX6QIUiAQ=; b=JuHHKGDowIxiM8jC2HfVHFflWZo1tKrE2S2XIla1xqH4daphSmjwEIf2xPLzFyGjMy834NizQ5TAEydPDbQOFd2Jyb2xiai8jfwFaLa5gyGVZq2Ipw+dfJWnsazz6YJN5bJFsRjNRaXmlvsvDPOJ0dthnd6/hKODAaAhcTvueBk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837255607587.0266537602001; Fri, 10 Apr 2026 09:07:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMi-00049v-9T; Fri, 10 Apr 2026 12:05:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMW-00042L-6o for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:43 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMT-0006Qp-I6 for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:39 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-64-_APAEGAtPRirmIKqEcObPw-1; Fri, 10 Apr 2026 12:05:33 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 92F981800361; Fri, 10 Apr 2026 16:05:30 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 752FB195608E; Fri, 10 Apr 2026 16:05:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837135; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CvSkhUVa0BQXOqBV5xKSGKJv0S+rk4U3SVFX6QIUiAQ=; b=WMHXtbkYvWr55dkjfSSB7J0914j/hdd2gZrTWtZNlF5pPCHDsqQLzXhFuE3hZpY0sTaBnI Ix2VOM1xqi5foDKUXh2HfsnXm7fYmJcqRZTnb13RWCWD1MuZ7j7w0hR6U8/webcYikFhDj dSJ49yFUbjrO2T74LFBfAPSRkcLRll4= X-MC-Unique: _APAEGAtPRirmIKqEcObPw-1 X-Mimecast-MFC-AGG-ID: _APAEGAtPRirmIKqEcObPw_1775837130 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 07/17] monitor: use class methods for monitor_vprintf Date: Fri, 10 Apr 2026 17:04:48 +0100 Message-ID: <20260410160458.3778874-8-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837257021154100 This removes the need for using monitor_is_qmp() to check the subclass type, which is an anti-pattern. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/hmp.c | 12 ++++++++++++ monitor/monitor-internal.h | 3 +++ monitor/monitor.c | 11 ++++------- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/monitor/hmp.c b/monitor/hmp.c index 833de0eee8..3fe6f5715a 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -50,14 +50,26 @@ static void monitor_hmp_finalize(Object *obj) readline_free(mon->rs); } =20 +int monitor_hmp_vprintf(Monitor *mon, const char *fmt, va_list ap) + G_GNUC_PRINTF(2, 0); + static void monitor_hmp_class_init(ObjectClass *cls, const void *data) { + MonitorClass *moncls =3D MONITOR_CLASS(cls); + + moncls->vprintf =3D monitor_hmp_vprintf; } =20 static void monitor_hmp_init(Object *obj) { } =20 +int monitor_hmp_vprintf(Monitor *mon, const char *fmt, va_list ap) +{ + g_autofree char *buf =3D g_strdup_vprintf(fmt, ap); + return monitor_puts(mon, buf); +} + static void monitor_command_cb(void *opaque, const char *cmdline, void *readline_opaque) { diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index 5bfe3b7325..3f05c46e88 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -95,6 +95,9 @@ typedef struct HMPCommand { =20 struct MonitorClass { ObjectClass parent_class; + + int (*vprintf)(Monitor *mon, const char *fmt, va_list ap) + G_GNUC_PRINTF(2, 0); }; =20 struct Monitor { diff --git a/monitor/monitor.c b/monitor/monitor.c index f6c90145f6..b51046c0c9 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -243,21 +243,18 @@ int monitor_puts(Monitor *mon, const char *str) =20 int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) { - char *buf; - int n; + MonitorClass *moncls; =20 if (!mon) { return -1; } =20 - if (monitor_is_qmp(mon)) { + moncls =3D MONITOR_GET_CLASS(mon); + if (!moncls->vprintf) { return -1; } =20 - buf =3D g_strdup_vprintf(fmt, ap); - n =3D monitor_puts(mon, buf); - g_free(buf); - return n; + return moncls->vprintf(mon, fmt, ap); } =20 int monitor_printf(Monitor *mon, const char *fmt, ...) --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837205; cv=none; d=zohomail.com; s=zohoarc; b=KPUD07SMEJx/Qx3SSNQzuHBpojdM41qKd8nSnZTRY+ArLUSDgc/x34HVdpKP7nzgfVkki9WjXt4pzrQkRUEGiIBCpD/kTKnzni2JOxKDnmJVFpGb3oxDPR1as3i2XASCaxo83Qa+PmRAtAusEpOlzWYGnwiR1Sgyg+1JjDRWHI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837205; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fMbukjWxlkK6SymUOEl2+2+nh1GCzU/KKEQabDiuCTQ=; b=N5YmGmqYDuZ6wpjm9kDODfwCdktbfs82Nhy5WyRJ1Q62ZDSMvev3+in4OBRxI65dsuTP8yQsS1lF3VLJSN2Q+mV3CaC7IYPvi37w/7o0da0XkGGIy5WvwArHICFSL0ZnjW7J0mdRYJuxADH4K+wBLFVe3KfUYJJ4XTh3SW+hbBw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837205315834.7381594536212; Fri, 10 Apr 2026 09:06:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMo-0004CM-Bu; Fri, 10 Apr 2026 12:06:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMe-00043w-5d for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMX-0006Rg-Gh for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:42 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-693-1KYX9G3aOAyKs99N_dtifA-1; Fri, 10 Apr 2026 12:05:35 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5E41E195606F; Fri, 10 Apr 2026 16:05:34 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E5E1E195608E; Fri, 10 Apr 2026 16:05:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837140; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fMbukjWxlkK6SymUOEl2+2+nh1GCzU/KKEQabDiuCTQ=; b=SeLjDcSDBToFD6BGOI9fPb3NY0U2wVgR1G5FvlVrqR7/vv+v6RrqCNpiHtLM3oe00Y/D0i rf6BEasQ+lFZjIDUJJbPvmPgOAeBT7GuB1D5TxBW7YUf5mV4lWJtJNPDYLHmcbeH73KixH 629eopicnP5KeLVy2KTZOMZMdPFa5zU= X-MC-Unique: 1KYX9G3aOAyKs99N_dtifA-1 X-Mimecast-MFC-AGG-ID: 1KYX9G3aOAyKs99N_dtifA_1775837134 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 08/17] monitor: use class methods for monitor_qapi_event_emit Date: Fri, 10 Apr 2026 17:04:49 +0100 Message-ID: <20260410160458.3778874-9-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837208256154100 This removes the need for using monitor_is_qmp() to check the subclass type, which is an anti-pattern. Signed-off-by: Daniel P. Berrang=C3=A9 --- include/monitor/monitor.h | 1 + monitor/monitor-internal.h | 1 + monitor/monitor.c | 15 +++------------ monitor/qmp.c | 19 +++++++++++++++++++ 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h index b349b12c34..7b0bda42c4 100644 --- a/include/monitor/monitor.h +++ b/include/monitor/monitor.h @@ -3,6 +3,7 @@ =20 #include "block/block.h" #include "qapi/qapi-types-misc.h" +#include "qapi/qapi-emit-events.h" #include "qemu/readline.h" #include "exec/hwaddr.h" #include "qom/object.h" diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index 3f05c46e88..4b5e708f14 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -98,6 +98,7 @@ struct MonitorClass { =20 int (*vprintf)(Monitor *mon, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0); + void (*emit_event)(Monitor *mon, QAPIEvent event, QDict *qdict); }; =20 struct Monitor { diff --git a/monitor/monitor.c b/monitor/monitor.c index b51046c0c9..5f55d33476 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -327,22 +327,13 @@ static inline QEMUClockType monitor_get_event_clock(v= oid) static void monitor_qapi_event_emit(QAPIEvent event, QDict *qdict) { Monitor *mon; - MonitorQMP *qmp_mon; =20 trace_monitor_protocol_event_emit(event, qdict); QTAILQ_FOREACH(mon, &mon_list, entry) { - if (!monitor_is_qmp(mon)) { - continue; + MonitorClass *cls =3D MONITOR_GET_CLASS(mon); + if (cls->emit_event) { + cls->emit_event(mon, event, qdict); } - - qmp_mon =3D container_of(mon, MonitorQMP, parent); - { - QEMU_LOCK_GUARD(&mon->mon_lock); - if (qmp_mon->commands =3D=3D &qmp_cap_negotiation_commands) { - continue; - } - } - qmp_send_response(qmp_mon, qdict); } } =20 diff --git a/monitor/qmp.c b/monitor/qmp.c index 0de98b33fe..9c3e8e2678 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -85,14 +85,33 @@ static void monitor_qmp_finalize(Object *obj) g_queue_free(mon->qmp_requests); } =20 +static void monitor_qmp_emit_event(Monitor *mon, QAPIEvent event, QDict *q= dict); + static void monitor_qmp_class_init(ObjectClass *cls, const void *data) { + MonitorClass *moncls =3D MONITOR_CLASS(cls); + + moncls->emit_event =3D monitor_qmp_emit_event; } =20 static void monitor_qmp_init(Object *obj) { } =20 +static void monitor_qmp_emit_event(Monitor *mon, QAPIEvent event, QDict *q= dict) +{ + MonitorQMP *qmp =3D MONITOR_QMP(mon); + + WITH_QEMU_LOCK_GUARD(&mon->mon_lock) { + if (qmp->commands =3D=3D &qmp_cap_negotiation_commands) { + return; + } + } + + qmp_send_response(qmp, qdict); +} + + static bool qmp_oob_enabled(MonitorQMP *mon) { return mon->capab[QMP_CAPABILITY_OOB]; --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837227; cv=none; d=zohomail.com; s=zohoarc; b=lHky8bEtJQ0BFnk5VIDC7WJeeHbdfMtEMKtux05+cn3XCdGwMmLM+gyKunfg/vZUVBzU8EYF39aQ4kZlJn7ea3oEWSoa5JplwG66RlJ5HbkhtXljZEgsmJdie2QRFdIybLX9aSjTbbyFr+931oMT3cTgOagxwEPgbxRR6rFjSG8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837227; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7R6JEqdH4/J2K18E2ASY9Ki5eEz6FdgTPGXjd4B2lHs=; b=hK7+idZGb6QF7d8j6j5gU782BGNfL/k6vrq7rI3wGUqHfeZcJS2ciVd93ZjytjeKVfbx7z3TdxWyTmPxxdA7ytzZoHYvOfrh3wwzy23N0XqcVBNHHU88XKxbcuqVGqa53v85oBMnqIbPk5zs+9sa8X+dry7QLQNSdY/Sodobmao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837227060607.3121841700855; Fri, 10 Apr 2026 09:07:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEN4-0004Mx-7s; Fri, 10 Apr 2026 12:06:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMh-00049l-U9 for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMe-0006SK-86 for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:51 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-499-ZcLkCasePhKozwq4uqkhvQ-1; Fri, 10 Apr 2026 12:05:39 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5BBB41801310; Fri, 10 Apr 2026 16:05:38 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id BC186195608E; Fri, 10 Apr 2026 16:05:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7R6JEqdH4/J2K18E2ASY9Ki5eEz6FdgTPGXjd4B2lHs=; b=Waokd8W3zPuce2CcXTh1MTvCyv8tlVQsMll9p3XRAtDkQcSaqi6aRtZVOg3cOfbEmH20zW uhBs7GKhWHLV/jiiI960/p82wHypzR0+Wa557o5NjD/LREKoHvdCMf2viYTSd3uWecxpKN 9BWm/doc34EQtptmnwTe5ps3wMLcgf0= X-MC-Unique: ZcLkCasePhKozwq4uqkhvQ-1 X-Mimecast-MFC-AGG-ID: ZcLkCasePhKozwq4uqkhvQ_1775837138 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 09/17] monitor: use class methods for monitor_accept_input Date: Fri, 10 Apr 2026 17:04:50 +0100 Message-ID: <20260410160458.3778874-10-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837228068158500 This removes the need for using monitor_is_qmp() to check the subclass type, which is an anti-pattern. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/hmp.c | 16 ++++++++++++++++ monitor/monitor-internal.h | 1 + monitor/monitor.c | 12 +++--------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/monitor/hmp.c b/monitor/hmp.c index 3fe6f5715a..5f9373a87b 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -52,12 +52,14 @@ static void monitor_hmp_finalize(Object *obj) =20 int monitor_hmp_vprintf(Monitor *mon, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0); +static void monitor_hmp_accept_input(Monitor *mon); =20 static void monitor_hmp_class_init(ObjectClass *cls, const void *data) { MonitorClass *moncls =3D MONITOR_CLASS(cls); =20 moncls->vprintf =3D monitor_hmp_vprintf; + moncls->accept_input =3D monitor_hmp_accept_input; } =20 static void monitor_hmp_init(Object *obj) @@ -70,6 +72,20 @@ int monitor_hmp_vprintf(Monitor *mon, const char *fmt, v= a_list ap) return monitor_puts(mon, buf); } =20 +static void monitor_hmp_accept_input(Monitor *mon) +{ + qemu_mutex_lock(&mon->mon_lock); + if (mon->reset_seen) { + MonitorHMP *hmp =3D MONITOR_HMP(mon); + assert(hmp->rs); + readline_restart(hmp->rs); + qemu_mutex_unlock(&mon->mon_lock); + readline_show_prompt(hmp->rs); + } else { + qemu_mutex_unlock(&mon->mon_lock); + } +} + static void monitor_command_cb(void *opaque, const char *cmdline, void *readline_opaque) { diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index 4b5e708f14..7004f5d002 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -99,6 +99,7 @@ struct MonitorClass { int (*vprintf)(Monitor *mon, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0); void (*emit_event)(Monitor *mon, QAPIEvent event, QDict *qdict); + void (*accept_input)(Monitor *mon); }; =20 struct Monitor { diff --git a/monitor/monitor.c b/monitor/monitor.c index 5f55d33476..1326069b79 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -557,16 +557,10 @@ int monitor_suspend(Monitor *mon) static void monitor_accept_input(void *opaque) { Monitor *mon =3D opaque; + MonitorClass *cls =3D MONITOR_GET_CLASS(mon); =20 - qemu_mutex_lock(&mon->mon_lock); - if (!monitor_is_qmp(mon) && mon->reset_seen) { - MonitorHMP *hmp_mon =3D container_of(mon, MonitorHMP, parent); - assert(hmp_mon->rs); - readline_restart(hmp_mon->rs); - qemu_mutex_unlock(&mon->mon_lock); - readline_show_prompt(hmp_mon->rs); - } else { - qemu_mutex_unlock(&mon->mon_lock); + if (cls->accept_input) { + cls->accept_input(mon); } =20 qemu_chr_fe_accept_input(&mon->chr); --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837214; cv=none; d=zohomail.com; s=zohoarc; b=f/vLR2GEGb2lz9TPNOJuhIkf8ORomcCxGxKk/EiwJYfH79YB7tX5RQCLhr39frAA3MmkogLgLCswwTWsaz3CGCZOgEs5pfwtzdY/5y/YlBw6YG19fRZa6GyGYGqbEjynjuYj95hEM/chggxoH/50OplosCFFpZ2L2CwW3w2JrzM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837214; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0Gqz5obFjPmFtgskOOANXVi0E0KgBdVK1OZZS8AQKP0=; b=Dqh7ynVWiD4fqG+kwCKnD2J7KAmFDv0ue45kDqrKIa5x7OM2jPl8+ZyxX695vH/hC8anE8FHZlAW++PFe60NW3BXLIKwv6gS2F3DQbYEPzoobUBRMMeg+wy0KnDqgHkM34Mmks6IlVytiaIDqwmUudtiCWQj4T3peO2hR7OMSBA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837214192605.6856926728136; Fri, 10 Apr 2026 09:06:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEN4-0004ND-8O; Fri, 10 Apr 2026 12:06:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMh-00049o-Ua for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMe-0006TR-IL for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:51 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-184-UIJd3c5BPGK2wb5RaGSumA-1; Fri, 10 Apr 2026 12:05:44 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1E8DF180130F; Fri, 10 Apr 2026 16:05:42 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id BA858195608E; Fri, 10 Apr 2026 16:05:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837147; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0Gqz5obFjPmFtgskOOANXVi0E0KgBdVK1OZZS8AQKP0=; b=b7Lhjqc6CkaJfI4ghcD3hklJ2IDos71OrIA80AF9BNUmXfd1hEjGU2zYQx+M7GmMOPnxFo 2Se9ND7eKqgTFT2k6e9Xl4j3WLgQe6JiuRdF+zotAfUPue2+gKflQqA6JiWHfU3oqEGWBR yxkHi5CNC6YWnk+U2ay/mYlHVJdsFGo= X-MC-Unique: UIJd3c5BPGK2wb5RaGSumA-1 X-Mimecast-MFC-AGG-ID: UIJd3c5BPGK2wb5RaGSumA_1775837142 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 10/17] monitor: use dynamic cast in monitor_qmp_requests_pop_any_with_lock Date: Fri, 10 Apr 2026 17:04:51 +0100 Message-ID: <20260410160458.3778874-11-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837215970158500 This eliminates a use of monitor_is_qmp() from the QMP coroutine dispatch path. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/qmp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/monitor/qmp.c b/monitor/qmp.c index 9c3e8e2678..2ec9cca3a6 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -244,11 +244,12 @@ static QMPRequest *monitor_qmp_requests_pop_any_with_= lock(void) MonitorQMP *qmp_mon; =20 QTAILQ_FOREACH(mon, &mon_list, entry) { - if (!monitor_is_qmp(mon)) { + qmp_mon =3D MONITOR_QMP( + object_dynamic_cast(OBJECT(mon), TYPE_MONITOR_QMP)); + if (!qmp_mon) { continue; } =20 - qmp_mon =3D container_of(mon, MonitorQMP, parent); qemu_mutex_lock(&qmp_mon->qmp_queue_lock); req_obj =3D g_queue_pop_head(qmp_mon->qmp_requests); if (req_obj) { --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837189; cv=none; d=zohomail.com; s=zohoarc; b=LgmPwdUCm0h/THNTsxt40syrtu1id+caE3qRONLH+mozFdhQ4B5Uuw3ui6Ony1JlqgSEjzLNgZsEDk8m+Axxwhl0KErLb4FUIU0i3667eh1JpqC3QZ/Fgtef5crrvpXh58f+ytQQx5RJ+PKSYoMeVNbpjC2RZMcSEArcu/zvV/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837189; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=m31OUkw68TGhW4duQqenX7AmLgrvjzq/gS+Ugq4rxW0=; b=bFRHFn2M/XRD8VtNxfn7Rs8AECvc3rq6NCA60+2UfuLQA3240CoNvybCL6cOtMuB79Dz4fTiZ7mCYxxKzADIt4RzE3BpVtWnNHTANiOCRguBMesLiZ+Ty0Q+ZP3KR3j4GyA9y8+QYyfQZsjj3FZCtH5rpwB+kMAFM5ka54J9LiY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837189931761.7889481902981; Fri, 10 Apr 2026 09:06:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEMo-0004CL-C8; Fri, 10 Apr 2026 12:06:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMh-00049n-U4 for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMf-0006UZ-Ak for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:51 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-369-6C-OhPo-Ptygj6GDTCBkbw-1; Fri, 10 Apr 2026 12:05:47 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B7D771800361; Fri, 10 Apr 2026 16:05:45 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 715D9195608E; Fri, 10 Apr 2026 16:05:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837148; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=m31OUkw68TGhW4duQqenX7AmLgrvjzq/gS+Ugq4rxW0=; b=M94JBUCgFfUs+V3Yb30nJ+to7Cvs/+xNnVvgikV8DWK8C++6zM8ykU4pLfT/EXUq3HepWS yLvK6FM3fe9mvfLHoNMYuyo2W6BWQphazbcYktltGQHvaHQqSli0Nr2hZCuaHapoe2MWDJ srWyssSTofWqWL5lv2kOsB1CJMKvpmU= X-MC-Unique: 6C-OhPo-Ptygj6GDTCBkbw-1 X-Mimecast-MFC-AGG-ID: 6C-OhPo-Ptygj6GDTCBkbw_1775837145 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 11/17] util: use dynamic cast in error vreport Date: Fri, 10 Apr 2026 17:04:52 +0100 Message-ID: <20260410160458.3778874-12-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837192065158500 This eliminates a use of monitor_is_qmp() from the error reporting path. Signed-off-by: Daniel P. Berrang=C3=A9 --- util/error-report.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/util/error-report.c b/util/error-report.c index bbea49a55d..b0e062da9f 100644 --- a/util/error-report.c +++ b/util/error-report.c @@ -223,16 +223,15 @@ char *real_time_iso8601(void) G_GNUC_PRINTF(2, 0) static void vreport(report_type type, const char *fmt, va_list ap) { - Monitor *cur =3D monitor_cur(); - gchar *timestr; - /* * When current monitor is QMP, messages must go to stderr - * and have prefixes added + * and have prefixes added, so we cast to HMP, leaving 'cur' + * as NULL in QMP case */ - if (monitor_cur_is_qmp()) { - cur =3D NULL; - } + Monitor *cur =3D MONITOR( + object_dynamic_cast(OBJECT(monitor_cur()), TYPE_MONITOR_HMP)); + gchar *timestr; + if (!cur) { qemu_flockfile(stderr); } --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837297; cv=none; d=zohomail.com; s=zohoarc; b=hB/AqqItTrC3i4eBoe0tUHCnEe29D0dqJw3N86BNPMsTDE3bAufQ/a5zD4CUpYDJUETtDceXB8acyzNx+K4k/R8nMzhMjTcKDYcbr3ggP6t+Tdv+4jWKnczdrkQLnhpPQYfVWzgvdpizaPv7XJKpzvqI4ElEuaFYQpS2WkFJtVg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837297; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pyf4Cmb2krQY4PLr2vKZ6i/tF7PVhVep/EsPhM+T6+M=; b=SJQ/dk0kUQx/b1XD02m4gD6GKYeNW6CTs3lIGi7pHuShMYp35/SljwE3BJD5k4suaL+eaOw9A7o8ne5d6SZvitTAanXm2IPv4kf+XGaCcGfjgDRzCR6KM4UyGx2JiFxJ+oiZHeDmR+O8v+7Km6wyoQulWd5RhpS6voZrkgJFWUY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837297582512.8976172218526; Fri, 10 Apr 2026 09:08:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBENW-0005BU-K2; Fri, 10 Apr 2026 12:06:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMk-0004B7-BG for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:54 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMi-0006XS-U3 for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:05:54 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-199-y6RQM880OuSjuz1ReLMIng-1; Fri, 10 Apr 2026 12:05:50 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 649A81955E80; Fri, 10 Apr 2026 16:05:49 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 17BC419560AB; Fri, 10 Apr 2026 16:05:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837152; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pyf4Cmb2krQY4PLr2vKZ6i/tF7PVhVep/EsPhM+T6+M=; b=XaHLJKyj9vPEA83EGkxnFm36Vjzt6UAa/8P0e7TUkqsi//LKVdXjzqTWn/rHB1nwx1bzRH pHep0GZGOJ86csjvax08egi6lF3DB8suCFJP2bUwvUCIPhnRauw+qnYk0+ObjjBDWIG8sA vtFTZvZJYM5LpVQyrpGUd3hc0YMmkpQ= X-MC-Unique: y6RQM880OuSjuz1ReLMIng-1 X-Mimecast-MFC-AGG-ID: y6RQM880OuSjuz1ReLMIng_1775837149 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 12/17] monitor: drop unused monitor_cur_is_qmp Date: Fri, 10 Apr 2026 17:04:53 +0100 Message-ID: <20260410160458.3778874-13-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837298631158500 The previous patch dropped the only remaining use of monitor_cur_is_qmp. Signed-off-by: Daniel P. Berrang=C3=A9 --- include/monitor/monitor.h | 1 - monitor/monitor.c | 10 ---------- stubs/monitor-core.c | 5 ----- tests/unit/test-util-sockets.c | 1 - 4 files changed, 17 deletions(-) diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h index 7b0bda42c4..f66e465775 100644 --- a/include/monitor/monitor.h +++ b/include/monitor/monitor.h @@ -25,7 +25,6 @@ extern QemuOptsList qemu_mon_opts; =20 Monitor *monitor_cur(void); Monitor *monitor_set_cur(Coroutine *co, Monitor *mon); -bool monitor_cur_is_qmp(void); =20 void monitor_init_globals(void); void monitor_init_globals_core(void); diff --git a/monitor/monitor.c b/monitor/monitor.c index 1326069b79..a3e69b3cec 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -131,16 +131,6 @@ Monitor *monitor_set_cur(Coroutine *co, Monitor *mon) return old_monitor; } =20 -/** - * Is the current monitor, if any, a QMP monitor? - */ -bool monitor_cur_is_qmp(void) -{ - Monitor *cur_mon =3D monitor_cur(); - - return cur_mon && monitor_is_qmp(cur_mon); -} - /** * Is @mon is using readline? * Note: not all HMP monitors use readline, e.g., gdbserver has a diff --git a/stubs/monitor-core.c b/stubs/monitor-core.c index 078a5012e9..a7c32297c9 100644 --- a/stubs/monitor-core.c +++ b/stubs/monitor-core.c @@ -7,11 +7,6 @@ Monitor *monitor_cur(void) return NULL; } =20 -bool monitor_cur_is_qmp(void) -{ - return false; -} - Monitor *monitor_set_cur(Coroutine *co, Monitor *mon) { return NULL; diff --git a/tests/unit/test-util-sockets.c b/tests/unit/test-util-sockets.c index b9f2453e29..ee66d727c3 100644 --- a/tests/unit/test-util-sockets.c +++ b/tests/unit/test-util-sockets.c @@ -74,7 +74,6 @@ int monitor_get_fd(Monitor *mon, const char *fdname, Erro= r **errp) Monitor *monitor_cur(void) { return cur_mon; } Monitor *monitor_set_cur(Coroutine *co, Monitor *mon) { abort(); } int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) { abort(); } -bool monitor_cur_is_qmp(void) { abort(); }; =20 #ifndef _WIN32 static void test_socket_fd_pass_name_good(void) --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837232; cv=none; d=zohomail.com; s=zohoarc; b=PSGo+o65S4I02JWdvLLtnXOafsXxGQfW1q3/XWgBPJdTEGvr+z7SAAsL0a2PITbmWLXfzlfzfC8rKwBZB5hFL94ZBVbtGVEclKih4Nutf7PyeaMbmb53IdxryCcl6iwMUtCSlZwfkA2lkgXPW6XWTJftzhpimjtmk8hajwIkoss= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837232; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=B5YSyE20yiNgMLcsEyYg7aC+ZMO1FzYhYH7ZCCFrKes=; b=G07zsGli+kBe013sg058dolmMfV8fNlBHuixG+P4fFYDzyCd13erNduYrxozqqCzezih6fSbx9t6OjWddvuX+OaN/K5F5brpnzlKKNkeOPWuEwf7pIDAXrCOImj6TkBPHVGxBJ+pFG9PMGGiapLqffiuB+mixqvuFAz3Ja8QPzU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837232538745.2430461132482; Fri, 10 Apr 2026 09:07:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBENQ-0004iG-Sf; Fri, 10 Apr 2026 12:06:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEN3-0004OO-3j for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMt-0006aI-47 for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:04 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-336-09KyhX6jN2qbnVACFwkQJg-1; Fri, 10 Apr 2026 12:05:59 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E3A4218002CA; Fri, 10 Apr 2026 16:05:57 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id AAF52195608E; Fri, 10 Apr 2026 16:05:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837162; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=B5YSyE20yiNgMLcsEyYg7aC+ZMO1FzYhYH7ZCCFrKes=; b=ClsZrc8u+T5U+KvL9kvm7oXi6wJBm2fz2fml671aAgZzDStBjgihpthu2i9M74NcRE4QmX An2L7lzxoSI9zK0hz/gOr+w7CSRX6M9B4XHiBz9cQsLMBP58HYqAVF7twmDNn3vOHndvx4 5u8eypJL71EwG54WMmUoIyFFbW57GQU= X-MC-Unique: 09KyhX6jN2qbnVACFwkQJg-1 X-Mimecast-MFC-AGG-ID: 09KyhX6jN2qbnVACFwkQJg_1775837158 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 13/17] monitor: use dynamic cast in QMP commands Date: Fri, 10 Apr 2026 17:04:54 +0100 Message-ID: <20260410160458.3778874-14-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837234245158500 Rather than asserting monitor_is_qmp(), use a QOM cast via MONITOR_QMP which performs an assert already. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/qmp-cmds-control.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/monitor/qmp-cmds-control.c b/monitor/qmp-cmds-control.c index ca471bc1c7..8fe0876a3d 100644 --- a/monitor/qmp-cmds-control.c +++ b/monitor/qmp-cmds-control.c @@ -72,11 +72,7 @@ static bool qmp_caps_accept(MonitorQMP *mon, QMPCapabili= tyList *list, void qmp_qmp_capabilities(bool has_enable, QMPCapabilityList *enable, Error **errp) { - Monitor *cur_mon =3D monitor_cur(); - MonitorQMP *mon; - - assert(monitor_is_qmp(cur_mon)); - mon =3D container_of(cur_mon, MonitorQMP, parent); + MonitorQMP *mon =3D MONITOR_QMP(monitor_cur()); =20 if (mon->commands =3D=3D &qmp_commands) { error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND, @@ -122,11 +118,7 @@ static void query_commands_cb(const QmpCommand *cmd, v= oid *opaque) CommandInfoList *qmp_query_commands(Error **errp) { CommandInfoList *list =3D NULL; - Monitor *cur_mon =3D monitor_cur(); - MonitorQMP *mon; - - assert(monitor_is_qmp(cur_mon)); - mon =3D container_of(cur_mon, MonitorQMP, parent); + MonitorQMP *mon =3D MONITOR_QMP(monitor_cur()); =20 qmp_for_each_command(mon->commands, query_commands_cb, &list); =20 --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837244; cv=none; d=zohomail.com; s=zohoarc; b=R2Q9IgnRyyiOLEaaKSkExq+07ORawZsvytrCJX6GZFCYsccVLEtwWk0V9wzk3qO7IIkSIF74FMC71+KUrVxDuWxkjmsKyxE1QFyTf/IZr2q2LXSLID7D7XLwumJfqKtXoYCBjvssBU0OYsLYVAlPaHmNkKPQydsTIoQiYUlUjyA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837244; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gB6kLF6WMHc4qtRapxpCORDHudXheC/iSghjep4sOxA=; b=DIOErz54Kokl5P8G5pg//QNTWm23Fq61L7NYYai/o5PXk/KRxLtTjyGfeiFYkwEnKwl42PSglmWWMuT3CzQ8/sCIHVtFUHrz0gshX9hm1JMfYcMBn7MeBLrvYzA5/J14iDhbolS0RNRQfBj/pYJo4VwaCU+2dUA7/HDQUIiyO/g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837244463904.7343806533128; Fri, 10 Apr 2026 09:07:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBENW-0005Bb-M6; Fri, 10 Apr 2026 12:06:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEN5-0004QO-2q for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEMv-0006aN-DB for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:13 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-494-pAbGlkd7Pael2OUjfKMXvA-1; Fri, 10 Apr 2026 12:05:59 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7C049180130D; Fri, 10 Apr 2026 16:05:56 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2CA331955D88; Fri, 10 Apr 2026 16:05:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837162; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gB6kLF6WMHc4qtRapxpCORDHudXheC/iSghjep4sOxA=; b=Y5ZXt1q1zDg386WsxAHzGy3mOj/uWAretp7HbmuenNSkdiZBmG7Eas7Oo9hNmpMJlIdaBh 4I4gaAPB5JxkNg2Pvyb0kH85cWBb4xmZWGsXZaLstX0i577ypHnXu//i1S6H3RLZFRCEku BT8asY0YpRhZDUKKKNx4AVQNCaBsKjI= X-MC-Unique: pAbGlkd7Pael2OUjfKMXvA-1 X-Mimecast-MFC-AGG-ID: pAbGlkd7Pael2OUjfKMXvA_1775837156 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 14/17] monitor: use dynamic cast in monitor_is_hmp_non_interactive Date: Fri, 10 Apr 2026 17:04:55 +0100 Message-ID: <20260410160458.3778874-15-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837246862154100 Rather than checking !monitor_is_qmp(), use a dynamic cast to check for HMP. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitor/monitor.c b/monitor/monitor.c index a3e69b3cec..c08b2c2ee1 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -143,7 +143,7 @@ static inline bool monitor_uses_readline(const MonitorH= MP *mon) =20 static inline bool monitor_is_hmp_non_interactive(const Monitor *mon) { - if (monitor_is_qmp(mon)) { + if (!object_dynamic_cast(OBJECT(mon), TYPE_MONITOR_HMP)) { return false; } =20 --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837287; cv=none; d=zohomail.com; s=zohoarc; b=a/kvVM7D5NNwK6wM4pNvhU84o9cl2g0WdWIOFpIyKbIzcNnnFfJ5verl0ZlII+C+FdgznwuqLnFazdFroe5JFGIk0UkrpWC9RU0U4n/wDfKWqOcbLwqhxEtrJ4DU7wWYoMnlk7RfyQR2hde6cTvo6rRn+ZKeKJleH86YnaLV540= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837287; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2yGpbp1wrCi4QCAosuKIWuVsmzC+UFfclvaHmYjnOJ4=; b=QeVQHzXW2gGFjDzNJdu6WqYGdljexwV+lEUTYt/y52T3ToMCm688GjsIG0f/tz9Yk8KkubXKeA8tExG64wEdirQRBsd/U1Iq9SyGNdDIdyMkHOdiSA4wr7+CJnTp+Sw+JptXrtNu/KfKMmK87hdxPCUHK9Ts7uAe9BShk37eEp8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837287498452.7131743582838; Fri, 10 Apr 2026 09:08:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBEOM-0006iG-FK; Fri, 10 Apr 2026 12:07:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEN6-0004Rr-1L for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEN2-0006ag-RV for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:15 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-611-CMlD4FhoOFK9KZEBPtNB8Q-1; Fri, 10 Apr 2026 12:06:01 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1F1D019560AA; Fri, 10 Apr 2026 16:06:00 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D41E219560AB; Fri, 10 Apr 2026 16:05:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837164; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2yGpbp1wrCi4QCAosuKIWuVsmzC+UFfclvaHmYjnOJ4=; b=ChV38lgwAfMEbou5Hfv/Rx5ucFz736VZuTpxMfsamvCHhyc/DY/CPpEQTJWKqi910D9bTG UZnh43Tksmu/HYggOnFV94PVESTwvIm8gOkRexnHqo/bs3K13C1bVCvVm8esVElzDRQ3dE eRgZBwxxpnpiYT/s8tVS6BybRLzEOww= X-MC-Unique: CMlD4FhoOFK9KZEBPtNB8Q-1 X-Mimecast-MFC-AGG-ID: CMlD4FhoOFK9KZEBPtNB8Q_1775837160 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 15/17] monitor: drop unused monitor_is_qmp method Date: Fri, 10 Apr 2026 17:04:56 +0100 Message-ID: <20260410160458.3778874-16-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837288539158500 The previous patch dropped the only remaining use of monitor_is_qmp. Signed-off-by: Daniel P. Berrang=C3=A9 --- monitor/monitor-internal.h | 9 --------- monitor/monitor.c | 1 - 2 files changed, 10 deletions(-) diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index 7004f5d002..d40fdde793 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -106,7 +106,6 @@ struct Monitor { Object parent; CharFrontend chr; int suspend_cnt; /* Needs to be accessed atomically */ - bool is_qmp; bool use_io_thread; =20 char *mon_cpu_path; @@ -171,14 +170,6 @@ struct MonitorQMP { GQueue *qmp_requests; }; =20 -/** - * Is @mon a QMP monitor? - */ -static inline bool monitor_is_qmp(const Monitor *mon) -{ - return mon->is_qmp; -} - typedef QTAILQ_HEAD(MonitorList, Monitor) MonitorList; extern IOThread *mon_iothread; extern Coroutine *qmp_dispatcher_co; diff --git a/monitor/monitor.c b/monitor/monitor.c index c08b2c2ee1..f48603a7e8 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -94,7 +94,6 @@ static void monitor_init(Object *obj) Monitor *mon =3D MONITOR(obj); =20 qemu_mutex_init(&mon->mon_lock); - mon->is_qmp =3D !!object_dynamic_cast(obj, TYPE_MONITOR_QMP); mon->outbuf =3D g_string_new(NULL); } =20 --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837209; cv=none; d=zohomail.com; s=zohoarc; b=G+ctVVZ0huwG/sWbuiYefCcWN/XAy7cL043OPjx6RXMpCBdi6cmCtd4Uq4NyYAQZOSgrXAfOqOe0Hq1psg1/lBfhvicLU9Tyk/4tnJSsCRu+XOb7S5jtEZ31IWJxh9bE6JtEDUojyzeWIhGrWhNhkW6RXBPvGVVKSCqLDpUPTrk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837209; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CTXWR1q0+DOQ7/YKsNUH2tLiIcL9JM619frqTvcBYQ0=; b=kwGSYw6AOlbQkVV/uHoabRd1hBQpNGAfDOAO3momwAr9RoHboz+CWSd0HWc0huAJKcytoV0X7ZxEKeFQIDDf6TWhciZI265UBqaFhPFYtnlRcklSH81ajmLDi3Ei3wkNQ931J1H8S8ED5A6W2ljIyMUVgmNTWP5FvrAqtLWPYHU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837209146511.1587635464598; Fri, 10 Apr 2026 09:06:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBENY-0005Nt-9f; Fri, 10 Apr 2026 12:06:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEN6-0004ST-3g for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEN2-0006au-S6 for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:15 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-377-SFpPaZ2PPGmISU_B3sNI7A-1; Fri, 10 Apr 2026 12:06:05 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D8FBC1956095; Fri, 10 Apr 2026 16:06:03 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8945A1956056; Fri, 10 Apr 2026 16:06:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837168; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CTXWR1q0+DOQ7/YKsNUH2tLiIcL9JM619frqTvcBYQ0=; b=Cq5utwsJQvGPvfPNiD5s+KhlqZIrCB7ihZ0gMEUiKkjagTULxHT+blQWkaRNfzD4/3yVMy u6P63teU8RumHyjk3a1DMnTUtUAtvJI0hnDbaxFSF+4eF0+Acc75NU3EIa5klspaSBEyeO JCKjPb8Alkwe2be5qUgp/qwCM/Ks3S4= X-MC-Unique: SFpPaZ2PPGmISU_B3sNI7A-1 X-Mimecast-MFC-AGG-ID: SFpPaZ2PPGmISU_B3sNI7A_1775837164 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 16/17] monitor: eliminate monitor_is_hmp_non_interactive method Date: Fri, 10 Apr 2026 17:04:57 +0100 Message-ID: <20260410160458.3778874-17-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 7 X-Spam_score: 0.7 X-Spam_bar: / X-Spam_report: (0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837212336154100 The monitor_is_hmp_non_interactive method is used by monitor_suspend and monitor_resume, to make them a no-op if the HMP does not use readline. There are only a handful of callers of suspend/resume and they can be made to skip the call with readline is not present. Signed-off-by: Daniel P. Berrang=C3=A9 --- include/monitor/monitor.h | 2 +- migration/migration-hmp-cmds.c | 5 ++++- monitor/hmp-cmds.c | 5 ++++- monitor/hmp.c | 14 +++++++++----- monitor/monitor-internal.h | 1 - monitor/monitor.c | 30 +----------------------------- 6 files changed, 19 insertions(+), 38 deletions(-) diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h index f66e465775..52df053c6d 100644 --- a/include/monitor/monitor.h +++ b/include/monitor/monitor.h @@ -34,7 +34,7 @@ int monitor_new(MonitorOptions *opts, bool allow_hmp, Err= or **errp); int monitor_new_opts(QemuOpts *opts, Error **errp); void monitor_cleanup(void); =20 -int monitor_suspend(Monitor *mon); +void monitor_suspend(Monitor *mon); void monitor_resume(Monitor *mon); =20 int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp); diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c index 0a193b8f54..e9bb970b20 100644 --- a/migration/migration-hmp-cmds.c +++ b/migration/migration-hmp-cmds.c @@ -18,6 +18,7 @@ #include "migration/snapshot.h" #include "monitor/hmp.h" #include "monitor/monitor.h" +#include "monitor/monitor-internal.h" #include "qapi/error.h" #include "qapi/qapi-commands-migration.h" #include "qapi/qapi-visit-migration.h" @@ -836,12 +837,14 @@ void hmp_migrate(Monitor *mon, const QDict *qdict) =20 if (!detach) { HMPMigrationStatus *status; + MonitorHMP *hmp =3D MONITOR_HMP(mon); =20 - if (monitor_suspend(mon) < 0) { + if (!hmp->rs) { monitor_printf(mon, "terminal does not allow synchronous " "migration, continuing detached\n"); return; } + monitor_suspend(mon); =20 status =3D g_malloc0(sizeof(*status)); status->mon =3D mon; diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index 911d984cbe..a6314c1159 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -90,7 +90,10 @@ void hmp_info_version(Monitor *mon, const QDict *qdict) =20 void hmp_quit(Monitor *mon, const QDict *qdict) { - monitor_suspend(mon); + MonitorHMP *hmp =3D MONITOR_HMP(mon); + if (hmp->rs) { + monitor_suspend(mon); + } qmp_quit(NULL); } =20 diff --git a/monitor/hmp.c b/monitor/hmp.c index 5f9373a87b..387dab2567 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -1491,13 +1491,16 @@ static void monitor_read(void *opaque, const uint8_= t *buf, int size) static void monitor_event(void *opaque, QEMUChrEvent event) { Monitor *mon =3D opaque; + MonitorHMP *hmp =3D MONITOR_HMP(mon); =20 switch (event) { case CHR_EVENT_MUX_IN: qemu_mutex_lock(&mon->mon_lock); if (mon->mux_out) { mon->mux_out =3D 0; - monitor_resume(mon); + if (hmp->rs) { + monitor_resume(mon); + } } qemu_mutex_unlock(&mon->mon_lock); break; @@ -1510,7 +1513,9 @@ static void monitor_event(void *opaque, QEMUChrEvent = event) } else { monitor_flush_locked(mon); } - monitor_suspend(mon); + if (hmp->rs) { + monitor_suspend(mon); + } mon->mux_out =3D 1; } qemu_mutex_unlock(&mon->mon_lock); @@ -1521,7 +1526,7 @@ static void monitor_event(void *opaque, QEMUChrEvent = event) "information\n", QEMU_VERSION); qemu_mutex_lock(&mon->mon_lock); mon->reset_seen =3D 1; - if (!mon->mux_out) { + if (!mon->mux_out && hmp->rs) { /* Suspend-resume forces the prompt to be printed. */ monitor_suspend(mon); monitor_resume(mon); @@ -1569,8 +1574,7 @@ void monitor_new_hmp(Chardev *chr, bool use_readline,= Error **errp) return; } =20 - mon->use_readline =3D use_readline; - if (mon->use_readline) { + if (use_readline) { mon->rs =3D readline_init(monitor_readline_printf, monitor_readline_flush, mon, diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index d40fdde793..7557deb978 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -133,7 +133,6 @@ struct MonitorHMPClass { =20 struct MonitorHMP { Monitor parent; - bool use_readline; /* * State used only in the thread "owning" the monitor. * If @use_io_thread, this is @mon_iothread. (This does not actually h= appen diff --git a/monitor/monitor.c b/monitor/monitor.c index f48603a7e8..3860486a32 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -130,25 +130,6 @@ Monitor *monitor_set_cur(Coroutine *co, Monitor *mon) return old_monitor; } =20 -/** - * Is @mon is using readline? - * Note: not all HMP monitors use readline, e.g., gdbserver has a - * non-interactive HMP monitor, so readline is not used there. - */ -static inline bool monitor_uses_readline(const MonitorHMP *mon) -{ - return mon->use_readline; -} - -static inline bool monitor_is_hmp_non_interactive(const Monitor *mon) -{ - if (!object_dynamic_cast(OBJECT(mon), TYPE_MONITOR_HMP)) { - return false; - } - - return !monitor_uses_readline(container_of(mon, MonitorHMP, parent)); -} - static gboolean monitor_unblocked(void *do_not_use, GIOCondition cond, void *opaque) { @@ -523,12 +504,8 @@ static gboolean qapi_event_throttle_equal(const void *= a, const void *b) return TRUE; } =20 -int monitor_suspend(Monitor *mon) +void monitor_suspend(Monitor *mon) { - if (monitor_is_hmp_non_interactive(mon)) { - return -ENOTTY; - } - qatomic_inc(&mon->suspend_cnt); =20 if (mon->use_io_thread) { @@ -540,7 +517,6 @@ int monitor_suspend(Monitor *mon) } =20 trace_monitor_suspend(mon, 1); - return 0; } =20 static void monitor_accept_input(void *opaque) @@ -557,10 +533,6 @@ static void monitor_accept_input(void *opaque) =20 void monitor_resume(Monitor *mon) { - if (monitor_is_hmp_non_interactive(mon)) { - return; - } - if (qatomic_dec_fetch(&mon->suspend_cnt) =3D=3D 0) { AioContext *ctx; =20 --=20 2.53.0 From nobody Sat Apr 11 17:07:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1775837263; cv=none; d=zohomail.com; s=zohoarc; b=dYywx4i6XVKi58HRLN+LOvFLFwPQffJtlIkOYqHE9Uf8IuTB6DMgfYXoQQxQLJaZHBHU2HZZEfDm5OQDtp+nLnOT/698nWKConpaLhkPwfMwzCtfxFCNg/oG7oLe3ybHD2Fg8YP+QMwmKEvWbmh1tTCSpfybhYqwvM5HhfFm45w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775837263; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tbI06disgDORwnFIFCnFNVYHgBOJm601Ay3torDHaWw=; b=V5UqESXeLMsgnP3MnjHLjxonC+INEozH7ajSmgO/SmvS+7uZ4ql+apiz2tohCdiD37svy/+BhT+k4mNlSaiPe21WFoYU5W26UmC/PaJx4iOI2j50GwznbM+dHX/gnXLWKhOZ0QU4lmspg6271w/pLrjCARxZKCuPTfv4J1yULtU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775837263660409.00891009173506; Fri, 10 Apr 2026 09:07:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wBENX-0005J5-GE; Fri, 10 Apr 2026 12:06:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEN9-0004Tq-0C for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wBEN3-0006b4-9i for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:06:17 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-365-OAqwXe0uNwGcXk2Lcwo2Xg-1; Fri, 10 Apr 2026 12:06:08 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6C43A18002DA; Fri, 10 Apr 2026 16:06:07 +0000 (UTC) Received: from toolbx.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 404891956056; Fri, 10 Apr 2026 16:06:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775837172; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tbI06disgDORwnFIFCnFNVYHgBOJm601Ay3torDHaWw=; b=DoHsgdCJJE4CU6DRdsXStICLLuxhrKjXQl81UtlwzGCEJfiiQd3X/AvJj0t3p3ukgsoEMK jACCg8/D8Xlb7E8JYUio+9ZKfhEWtWrjmYsy1tqakEkzxEKJQr2VJecVyyFd3jv31pQjz+ YvkmwOWv0dPmUCEE8HJXzd1mfUt0GKs= X-MC-Unique: OAqwXe0uNwGcXk2Lcwo2Xg-1 X-Mimecast-MFC-AGG-ID: OAqwXe0uNwGcXk2Lcwo2Xg_1775837167 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Markus Armbruster , Christian Brauner , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Peter Xu , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Eric Blake Subject: [PATCH 17/17] FIXME: monitor: implement "user creatable" interface Date: Fri, 10 Apr 2026 17:04:58 +0100 Message-ID: <20260410160458.3778874-18-berrange@redhat.com> In-Reply-To: <20260410160458.3778874-1-berrange@redhat.com> References: <20260410160458.3778874-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1775837264657158500 Implement the user creatable QOM interface and define the monitor-qmp and monitor-hmp types in QAPI. This unlocks the ability to create them on the command line with -object or in HMP/QMP with object_add. For example: $QEMU -chardev stdio,id=3Dmonchr0 -object monitor-hmp,id=3Dmon0,chrdev=3D= monchr0 FIXME: object_del is NOT safe on monitors yet. Resolve against Christian's patches for monitor deletion & synchronization. Signed-off-by: Daniel P. Berrang=C3=A9 --- chardev/char.c | 10 +++++- gdbstub/system.c | 10 ++++-- include/monitor/monitor.h | 2 -- monitor/hmp.c | 73 ++++++++++++++++++++++++++++++-------- monitor/monitor-internal.h | 2 ++ monitor/monitor.c | 70 +++++++++++++++++++++++++++++------- monitor/qmp.c | 47 ++++++++++++++++++------ qapi/qom.json | 43 ++++++++++++++++++++++ stubs/monitor-internal.c | 4 --- system/vl.c | 8 ++++- 10 files changed, 222 insertions(+), 47 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index b59972f325..42eb799d78 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -785,8 +785,16 @@ static Chardev *qemu_chr_new_from_name(const char *lab= el, const char *filename, } =20 if (qemu_opt_get_bool(opts, "mux", 0)) { + const char *cdevid =3D qemu_opts_id(opts); + const char *monid =3D g_strdup_printf("mon%s", cdevid); assert(permit_mux_mon); - monitor_new_hmp(chr, true, &err); + object_new_with_props(TYPE_MONITOR_HMP, + object_get_objects_root(), + monid, + &err, + "chrdev", cdevid, + "readline", "yes", + NULL); if (err) { error_report_err(err); object_unparent(OBJECT(chr)); diff --git a/gdbstub/system.c b/gdbstub/system.c index 20dcf7878d..03b7bbeffc 100644 --- a/gdbstub/system.c +++ b/gdbstub/system.c @@ -386,9 +386,15 @@ bool gdbserver_start(const char *device, Error **errp) qemu_add_vm_change_state_handler(gdb_vm_state_change, NULL); =20 /* Initialize a monitor terminal for gdb */ - mon_chr =3D qemu_chardev_new(NULL, TYPE_CHARDEV_GDB, + mon_chr =3D qemu_chardev_new("gdbchrdev0", TYPE_CHARDEV_GDB, NULL, NULL, &error_abort); - monitor_new_hmp(mon_chr, false, &error_abort); + object_new_with_props(TYPE_MONITOR_HMP, + object_get_objects_root(), + "gdbmon0", + &error_abort, + "chrdev", "gdbchrdev0", + "readline", "no", + NULL); } else { qemu_chr_fe_deinit(&gdbserver_system_state.chr, true); mon_chr =3D gdbserver_system_state.mon_chr; diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h index 52df053c6d..dc7f0d0b48 100644 --- a/include/monitor/monitor.h +++ b/include/monitor/monitor.h @@ -28,8 +28,6 @@ Monitor *monitor_set_cur(Coroutine *co, Monitor *mon); =20 void monitor_init_globals(void); void monitor_init_globals_core(void); -void monitor_new_qmp(Chardev *chr, bool pretty, Error **errp); -void monitor_new_hmp(Chardev *chr, bool use_readline, Error **errp); int monitor_new(MonitorOptions *opts, bool allow_hmp, Error **errp); int monitor_new_opts(QemuOpts *opts, Error **errp); void monitor_cleanup(void); diff --git a/monitor/hmp.c b/monitor/hmp.c index 387dab2567..02d3ebf7b4 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -38,6 +38,8 @@ #include "qemu/option.h" #include "qemu/target-info.h" #include "qemu/units.h" +#include "qapi/error.h" +#include "qom/object_interfaces.h" #include "exec/gdbstub.h" #include "system/block-backend.h" #include "trace.h" @@ -54,16 +56,47 @@ int monitor_hmp_vprintf(Monitor *mon, const char *fmt, = va_list ap) G_GNUC_PRINTF(2, 0); static void monitor_hmp_accept_input(Monitor *mon); =20 +static bool monitor_hmp_get_readline(Object *obj, Error **errp) +{ + MonitorHMP *mon =3D MONITOR_HMP(obj); + + return mon->readline; +} + +static void monitor_hmp_set_readline(Object *obj, bool val, Error **errp) +{ + MonitorHMP *mon =3D MONITOR_HMP(obj); + + mon->readline =3D val; +} + +static void monitor_hmp_complete(UserCreatable *uc, Error **errp); + static void monitor_hmp_class_init(ObjectClass *cls, const void *data) { MonitorClass *moncls =3D MONITOR_CLASS(cls); + UserCreatableClass *ucc =3D USER_CREATABLE_CLASS(cls); + + object_class_property_add_bool(cls, "readline", + monitor_hmp_get_readline, + monitor_hmp_set_readline); =20 moncls->vprintf =3D monitor_hmp_vprintf; moncls->accept_input =3D monitor_hmp_accept_input; + + ucc->complete =3D monitor_hmp_complete; } =20 static void monitor_hmp_init(Object *obj) { + MonitorHMP *hmp =3D MONITOR_HMP(obj); + + /* + * Default to common case for external HMP use, + * as opposed to non-interactive internal use + * from gdbstub + */ + hmp->readline =3D true; } =20 int monitor_hmp_vprintf(Monitor *mon, const char *fmt, va_list ap) @@ -1565,26 +1598,36 @@ static void monitor_readline_flush(void *opaque) monitor_flush(&mon->parent); } =20 -void monitor_new_hmp(Chardev *chr, bool use_readline, Error **errp) +static void monitor_hmp_complete(UserCreatable *uc, Error **errp) { - MonitorHMP *mon =3D MONITOR_HMP(object_new(TYPE_MONITOR_HMP)); - - if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) { - object_unref(mon); + MonitorHMP *mon =3D MONITOR_HMP(uc); + UserCreatableClass *ucc_parent =3D + USER_CREATABLE_CLASS( + object_class_get_parent( + OBJECT_CLASS(MONITOR_HMP_GET_CLASS(mon)))); + ERRP_GUARD(); + + ucc_parent->complete(uc, errp); + if (*errp) { return; } =20 - if (use_readline) { - mon->rs =3D readline_init(monitor_readline_printf, - monitor_readline_flush, - mon, - monitor_find_completion); - monitor_read_command(mon, 0); - } + if (mon->parent.chrdev_id) { + if (mon->readline) { + mon->rs =3D readline_init(monitor_readline_printf, + monitor_readline_flush, + mon, + monitor_find_completion); + monitor_read_command(mon, 0); + } =20 - qemu_chr_fe_set_handlers(&mon->parent.chr, monitor_can_read, monitor_r= ead, - monitor_event, NULL, &mon->parent, NULL, true= ); - monitor_list_append(&mon->parent); + qemu_chr_fe_set_handlers(&mon->parent.chr, + monitor_can_read, + monitor_read, + monitor_event, NULL, + &mon->parent, NULL, true); + monitor_list_append(&mon->parent); + } } =20 /** diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index 7557deb978..200f3ac284 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -104,6 +104,7 @@ struct MonitorClass { =20 struct Monitor { Object parent; + char *chrdev_id; CharFrontend chr; int suspend_cnt; /* Needs to be accessed atomically */ bool use_io_thread; @@ -133,6 +134,7 @@ struct MonitorHMPClass { =20 struct MonitorHMP { Monitor parent; + bool readline; /* * State used only in the thread "owning" the monitor. * If @use_io_thread, this is @mon_iothread. (This does not actually h= appen diff --git a/monitor/monitor.c b/monitor/monitor.c index 3860486a32..bbc234d683 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -29,6 +29,7 @@ #include "qapi/qapi-emit-events.h" #include "qapi/qapi-visit-control.h" #include "qobject/qdict.h" +#include "qom/object_interfaces.h" #include "qemu/error-report.h" #include "qemu/option.h" #include "system/qtest.h" @@ -73,7 +74,8 @@ static GHashTable *coroutine_mon; /* Maps Coroutine* to M= onitor* */ MonitorList mon_list; static bool monitor_destroyed; =20 -OBJECT_DEFINE_TYPE(Monitor, monitor, MONITOR, OBJECT); +OBJECT_DEFINE_TYPE_EXTENDED(Monitor, monitor, MONITOR, OBJECT, true, + { TYPE_USER_CREATABLE }, {}); =20 static void monitor_finalize(Object *obj) { @@ -85,8 +87,45 @@ static void monitor_finalize(Object *obj) qemu_mutex_destroy(&mon->mon_lock); } =20 +static void monitor_complete(UserCreatable *uc, Error **errp) +{ + Monitor *mon =3D MONITOR(uc); + + if (mon->chrdev_id) { + Chardev *chr =3D qemu_chr_find(mon->chrdev_id); + if (chr =3D=3D NULL) { + error_setg(errp, "chardev \"%s\" not found", mon->chrdev_id); + return; + } + + if (!qemu_chr_fe_init(&mon->chr, chr, errp)) { + return; + } + } +} + +static char *monitor_get_chrdev_id(Object *obj, Error **errp) +{ + Monitor *mon =3D MONITOR(obj); + + return g_strdup(mon->chrdev_id); +} + +static void monitor_set_chrdev_id(Object *obj, const char *str, Error **er= rp) +{ + Monitor *mon =3D MONITOR(obj); + + mon->chrdev_id =3D g_strdup(str); +} + static void monitor_class_init(ObjectClass *cls, const void *data) { + UserCreatableClass *ucc =3D USER_CREATABLE_CLASS(cls); + + object_class_property_add_str(cls, "chrdev", + monitor_get_chrdev_id, monitor_set_chrde= v_id); + + ucc->complete =3D monitor_complete; } =20 static void monitor_init(Object *obj) @@ -570,7 +609,7 @@ void monitor_list_append(Monitor *mon) qemu_mutex_unlock(&monitor_lock); =20 if (mon) { - object_unref(mon); + object_unparent(OBJECT(mon)); } } =20 @@ -628,7 +667,7 @@ void monitor_cleanup(void) qemu_mutex_unlock(&monitor_lock); monitor_flush(mon); qemu_mutex_lock(&monitor_lock); - object_unref(mon); + object_unparent(OBJECT(mon)); } qemu_mutex_unlock(&monitor_lock); =20 @@ -666,13 +705,8 @@ void monitor_init_globals(void) int monitor_new(MonitorOptions *opts, bool allow_hmp, Error **errp) { ERRP_GUARD(); - Chardev *chr; - - chr =3D qemu_chr_find(opts->chardev); - if (chr =3D=3D NULL) { - error_setg(errp, "chardev \"%s\" not found", opts->chardev); - return -1; - } + static int counter; + g_autofree char *id =3D g_strdup_printf("mon%d", counter++); =20 if (!opts->has_mode) { opts->mode =3D allow_hmp ? MONITOR_MODE_READLINE : MONITOR_MODE_CO= NTROL; @@ -680,7 +714,13 @@ int monitor_new(MonitorOptions *opts, bool allow_hmp, = Error **errp) =20 switch (opts->mode) { case MONITOR_MODE_CONTROL: - monitor_new_qmp(chr, opts->pretty, errp); + object_new_with_props(TYPE_MONITOR_QMP, + object_get_objects_root(), + id, + errp, + "chrdev", opts->chardev, + "pretty", opts->pretty ? "yes" : "no", + NULL); break; case MONITOR_MODE_READLINE: if (!allow_hmp) { @@ -691,7 +731,13 @@ int monitor_new(MonitorOptions *opts, bool allow_hmp, = Error **errp) error_setg(errp, "'pretty' is not compatible with HMP monitors= "); return -1; } - monitor_new_hmp(chr, true, errp); + object_new_with_props(TYPE_MONITOR_HMP, + object_get_objects_root(), + id, + errp, + "chrdev", opts->chardev, + "readline", "yes", + NULL); break; default: g_assert_not_reached(); diff --git a/monitor/qmp.c b/monitor/qmp.c index 2ec9cca3a6..8fbc55757c 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -31,6 +31,7 @@ #include "qobject/qdict.h" #include "qobject/qjson.h" #include "qobject/qlist.h" +#include "qom/object_interfaces.h" #include "trace.h" =20 /* @@ -85,13 +86,35 @@ static void monitor_qmp_finalize(Object *obj) g_queue_free(mon->qmp_requests); } =20 +static bool monitor_qmp_get_pretty(Object *obj, Error **errp) +{ + MonitorQMP *mon =3D MONITOR_QMP(obj); + + return mon->pretty; +} + +static void monitor_qmp_set_pretty(Object *obj, bool val, Error **errp) +{ + MonitorQMP *mon =3D MONITOR_QMP(obj); + + mon->pretty =3D val; +} + static void monitor_qmp_emit_event(Monitor *mon, QAPIEvent event, QDict *q= dict); +static void monitor_qmp_complete(UserCreatable *uc, Error **errp); =20 static void monitor_qmp_class_init(ObjectClass *cls, const void *data) { MonitorClass *moncls =3D MONITOR_CLASS(cls); + UserCreatableClass *ucc =3D USER_CREATABLE_CLASS(cls); + + object_class_property_add_bool(cls, "pretty", + monitor_qmp_get_pretty, + monitor_qmp_set_pretty); =20 moncls->emit_event =3D monitor_qmp_emit_event; + + ucc->complete =3D monitor_qmp_complete; } =20 static void monitor_qmp_init(Object *obj) @@ -547,23 +570,27 @@ static void monitor_qmp_setup_handlers_bh(void *opaqu= e) monitor_list_append(&mon->parent); } =20 -void monitor_new_qmp(Chardev *chr, bool pretty, Error **errp) +static void monitor_qmp_complete(UserCreatable *uc, Error **errp) { - MonitorQMP *mon =3D MONITOR_QMP(object_new(TYPE_MONITOR_QMP)); - - if (!qemu_chr_fe_init(&mon->parent.chr, chr, errp)) { - object_unref(mon); + MonitorQMP *mon =3D MONITOR_QMP(uc); + UserCreatableClass *ucc_parent =3D + USER_CREATABLE_CLASS( + object_class_get_parent( + OBJECT_CLASS(MONITOR_QMP_GET_CLASS(mon)))); + ERRP_GUARD(); + + ucc_parent->complete(uc, errp); + if (*errp) { return; } + qemu_chr_fe_set_echo(&mon->parent.chr, true); =20 /* Note: we run QMP monitor in I/O thread when @chr supports that */ - if (qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT)) { + if (qemu_chr_has_feature(mon->parent.chr.chr, QEMU_CHAR_FEATURE_GCONTE= XT)) { monitor_iothread_init(&mon->parent); } =20 - mon->pretty =3D pretty; - qemu_mutex_init(&mon->qmp_queue_lock); mon->qmp_requests =3D g_queue_new(); =20 @@ -573,12 +600,12 @@ void monitor_new_qmp(Chardev *chr, bool pretty, Error= **errp) * Make sure the old iowatch is gone. It's possible when * e.g. the chardev is in client mode, with wait=3Don. */ - remove_fd_in_watch(chr); + remove_fd_in_watch(mon->parent.chr.chr); /* * Clean up listener IO sources early to prevent racy fd * handling between the main thread and the I/O thread. */ - remove_listener_fd_in_watch(chr); + remove_listener_fd_in_watch(mon->parent.chr.chr); /* * We can't call qemu_chr_fe_set_handlers() directly here * since chardev might be running in the monitor I/O diff --git a/qapi/qom.json b/qapi/qom.json index c653248f85..53264bcd7b 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -1179,6 +1179,45 @@ 'data': { '*cpu-affinity': ['uint16'], '*node-affinity': ['uint16'] } } =20 +## +# @MonitorProperties: +# +# Properties for all monitors +# +# @chrdev: ID of the character device providing the monitor transport +# +# Since: 11.1 +## +{ 'struct': 'MonitorProperties', + 'data': { 'chrdev': 'str' }} + +## +# @MonitorHMPProperties: +# +# Properties for the HMP monitor +# +# @readline: whether to enable readline for interactive command +# usage (default: enabled) +# +# Since: 11.1 +## +{ 'struct': 'MonitorHMPProperties', + 'base': 'MonitorProperties', + 'data': { '*readline': 'bool' } } + +## +# @MonitorQMPProperties: +# +# Properties for the QMP monitor +# +# @pretty: whether to pretty print JSON responses (default: disabled) +# +# Since: 11.1 +## +{ 'struct': 'MonitorQMPProperties', + 'base': 'MonitorProperties', + 'data': { '*pretty': 'bool' } } + ## # @ObjectType: # @@ -1229,6 +1268,8 @@ 'memory-backend-ram', { 'name': 'memory-backend-shm', 'if': 'CONFIG_POSIX' }, + 'monitor-hmp', + 'monitor-qmp', 'pef-guest', { 'name': 'pr-manager-helper', 'if': 'CONFIG_LINUX' }, @@ -1307,6 +1348,8 @@ 'memory-backend-ram': 'MemoryBackendProperties', 'memory-backend-shm': { 'type': 'MemoryBackendShmProperties', 'if': 'CONFIG_POSIX' }, + 'monitor-hmp': {'type': 'MonitorHMPProperties' }, + 'monitor-qmp': {'type': 'MonitorQMPProperties' }, 'pr-manager-helper': { 'type': 'PrManagerHelperProperties', 'if': 'CONFIG_LINUX' }, 'qtest': 'QtestProperties', diff --git a/stubs/monitor-internal.c b/stubs/monitor-internal.c index 23d58da184..cbec2f35e0 100644 --- a/stubs/monitor-internal.c +++ b/stubs/monitor-internal.c @@ -7,7 +7,3 @@ int monitor_get_fd(Monitor *mon, const char *name, Error **= errp) error_setg(errp, "only QEMU supports file descriptor passing"); return -1; } - -void monitor_new_hmp(Chardev *chr, bool use_readline, Error **errp) -{ -} diff --git a/system/vl.c b/system/vl.c index 2391811a46..e772e1401f 100644 --- a/system/vl.c +++ b/system/vl.c @@ -1823,6 +1823,10 @@ static void object_option_add_visitor(Visitor *v) { ObjectOption *opt =3D g_new0(ObjectOption, 1); visit_type_ObjectOptions(v, NULL, &opt->opts, &error_fatal); + if (opt->opts->qom_type =3D=3D OBJECT_TYPE_MONITOR_HMP || + opt->opts->qom_type =3D=3D OBJECT_TYPE_MONITOR_QMP) { + default_monitor =3D 0; + } QTAILQ_INSERT_TAIL(&object_opts, opt, next); } =20 @@ -1964,7 +1968,9 @@ static bool object_create_early(const char *type) =20 /* Reason: property "chardev" */ if (g_str_equal(type, "rng-egd") || - g_str_equal(type, "qtest")) { + g_str_equal(type, "qtest") || + g_str_equal(type, "monitor-hmp") || + g_str_equal(type, "monitor-qmp")) { return false; } =20 --=20 2.53.0