summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2026-08-28 16:04:34 +0400
committerMarc-André Lureau <marcandre.lureau@redhat.com>2026-08-29 12:07:45 +0400
commitf3900cfb0cddd2fcc3b9db20f52f3755e6ed962f (patch)
tree6cf4fe4278f1e3237b8fb05725a3875e4ff3a5dc /ui
parentbcf97f76064885730f491b63d4543b60c87c09fd (diff)
downloadqemu-f3900cfb0cddd2fcc3b9db20f52f3755e6ed962f.tar.gz
qemu-f3900cfb0cddd2fcc3b9db20f52f3755e6ed962f.zip
monitor: tighten monitor_printf*()
Rename monitor_printf->monitor_hmp_printf, monitor_vprintf-> monitor_hmp_vprintf, and monitor_printc->monitor_hmp_printc, changing the first parameter from Monitor * to MonitorHMP * to enforce type safety. The implementation is also simplified: monitor_hmp_vprintf now directly calls g_strdup_vprintf + monitor_puts, removing the virtual dispatch via moncls->vprintf. The dev_print() callbacks are temporarily using the MONITOR_HMP(mon) cast, they are fixed in the following commits. Early return in qemu_vprintf() if "hmp" is NULL, relying on monitor_hmp_vprintf() handling NULL case is a bit uncommon. Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-ID: <20260828-qemu-no-hmp-v5-37-9227de146347@redhat.com>
Diffstat (limited to 'ui')
-rw-r--r--ui/ui-hmp-cmds.c115
1 files changed, 55 insertions, 60 deletions
diff --git a/ui/ui-hmp-cmds.c b/ui/ui-hmp-cmds.c
index 186209fd02..f611dd7ee4 100644
--- a/ui/ui-hmp-cmds.c
+++ b/ui/ui-hmp-cmds.c
@@ -81,20 +81,19 @@ void hmp_mouse_set(MonitorHMP *hmp, const QDict *qdict)
void hmp_info_mice(MonitorHMP *hmp, const QDict *qdict)
{
- Monitor *mon = MONITOR(hmp);
MouseInfoList *mice_list, *mouse;
mice_list = qmp_query_mice(NULL);
if (!mice_list) {
- monitor_printf(mon, "No mouse devices connected\n");
+ monitor_hmp_printf(hmp, "No mouse devices connected\n");
return;
}
for (mouse = mice_list; mouse; mouse = mouse->next) {
- monitor_printf(mon, "%c Mouse #%" PRId64 ": %s%s\n",
- mouse->value->current ? '*' : ' ',
- mouse->value->index, mouse->value->name,
- mouse->value->absolute ? " (absolute)" : "");
+ monitor_hmp_printf(hmp, "%c Mouse #%" PRId64 ": %s%s\n",
+ mouse->value->current ? '*' : ' ',
+ mouse->value->index, mouse->value->name,
+ mouse->value->absolute ? " (absolute)" : "");
}
qapi_free_MouseInfoList(mice_list);
@@ -102,48 +101,48 @@ void hmp_info_mice(MonitorHMP *hmp, const QDict *qdict)
#ifdef CONFIG_VNC
/* Helper for hmp_info_vnc_clients, _servers */
-static void hmp_info_VncBasicInfo(Monitor *mon, VncBasicInfo *info,
+static void hmp_info_VncBasicInfo(MonitorHMP *hmp, VncBasicInfo *info,
const char *name)
{
- monitor_printf(mon, " %s: %s:%s (%s%s)\n",
- name,
- info->host,
- info->service,
- NetworkAddressFamily_str(info->family),
- info->websocket ? " (Websocket)" : "");
+ monitor_hmp_printf(hmp, " %s: %s:%s (%s%s)\n",
+ name,
+ info->host,
+ info->service,
+ NetworkAddressFamily_str(info->family),
+ info->websocket ? " (Websocket)" : "");
}
/* Helper displaying and auth and crypt info */
-static void hmp_info_vnc_authcrypt(Monitor *mon, const char *indent,
+static void hmp_info_vnc_authcrypt(MonitorHMP *hmp, const char *indent,
VncPrimaryAuth auth,
VncVencryptSubAuth *vencrypt)
{
- monitor_printf(mon, "%sAuth: %s (Sub: %s)\n", indent,
- VncPrimaryAuth_str(auth),
- vencrypt ? VncVencryptSubAuth_str(*vencrypt) : "none");
+ monitor_hmp_printf(hmp, "%sAuth: %s (Sub: %s)\n", indent,
+ VncPrimaryAuth_str(auth),
+ vencrypt ? VncVencryptSubAuth_str(*vencrypt) : "none");
}
-static void hmp_info_vnc_clients(Monitor *mon, VncClientInfoList *client)
+static void hmp_info_vnc_clients(MonitorHMP *hmp, VncClientInfoList *client)
{
while (client) {
VncClientInfo *cinfo = client->value;
- hmp_info_VncBasicInfo(mon, qapi_VncClientInfo_base(cinfo), "Client");
- monitor_printf(mon, " x509_dname: %s\n",
- cinfo->x509_dname ?: "none");
- monitor_printf(mon, " sasl_username: %s\n",
- cinfo->sasl_username ?: "none");
+ hmp_info_VncBasicInfo(hmp, qapi_VncClientInfo_base(cinfo), "Client");
+ monitor_hmp_printf(hmp, " x509_dname: %s\n",
+ cinfo->x509_dname ?: "none");
+ monitor_hmp_printf(hmp, " sasl_username: %s\n",
+ cinfo->sasl_username ?: "none");
client = client->next;
}
}
-static void hmp_info_vnc_servers(Monitor *mon, VncServerInfo2List *server)
+static void hmp_info_vnc_servers(MonitorHMP *hmp, VncServerInfo2List *server)
{
while (server) {
VncServerInfo2 *sinfo = server->value;
- hmp_info_VncBasicInfo(mon, qapi_VncServerInfo2_base(sinfo), "Server");
- hmp_info_vnc_authcrypt(mon, " ", sinfo->auth,
+ hmp_info_VncBasicInfo(hmp, qapi_VncServerInfo2_base(sinfo), "Server");
+ hmp_info_vnc_authcrypt(hmp, " ", sinfo->auth,
sinfo->has_vencrypt ? &sinfo->vencrypt : NULL);
server = server->next;
}
@@ -151,7 +150,6 @@ static void hmp_info_vnc_servers(Monitor *mon, VncServerInfo2List *server)
void hmp_info_vnc(MonitorHMP *hmp, const QDict *qdict)
{
- Monitor *mon = MONITOR(hmp);
VncInfo2List *info2l, *info2l_head;
Error *err = NULL;
@@ -161,26 +159,26 @@ void hmp_info_vnc(MonitorHMP *hmp, const QDict *qdict)
return;
}
if (!info2l) {
- monitor_printf(mon, "None\n");
+ monitor_hmp_printf(hmp, "None\n");
return;
}
while (info2l) {
VncInfo2 *info = info2l->value;
- monitor_printf(mon, "%s:\n", info->id);
- hmp_info_vnc_servers(mon, info->server);
- hmp_info_vnc_clients(mon, info->clients);
+ monitor_hmp_printf(hmp, "%s:\n", info->id);
+ hmp_info_vnc_servers(hmp, info->server);
+ hmp_info_vnc_clients(hmp, info->clients);
if (!info->server) {
/*
* The server entry displays its auth, we only need to
* display in the case of 'reverse' connections where
* there's no server.
*/
- hmp_info_vnc_authcrypt(mon, " ", info->auth,
+ hmp_info_vnc_authcrypt(hmp, " ", info->auth,
info->has_vencrypt ? &info->vencrypt : NULL);
}
if (info->display) {
- monitor_printf(mon, " Display: %s\n", info->display);
+ monitor_hmp_printf(hmp, " Display: %s\n", info->display);
}
info2l = info2l->next;
}
@@ -193,7 +191,6 @@ void hmp_info_vnc(MonitorHMP *hmp, const QDict *qdict)
#ifdef CONFIG_SPICE
void hmp_info_spice(MonitorHMP *hmp, const QDict *qdict)
{
- Monitor *mon = MONITOR(hmp);
SpiceChannelList *chan;
SpiceInfo *info;
const char *channel_name;
@@ -214,38 +211,38 @@ void hmp_info_spice(MonitorHMP *hmp, const QDict *qdict)
info = qmp_query_spice(NULL);
if (!info->enabled) {
- monitor_printf(mon, "Server: disabled\n");
+ monitor_hmp_printf(hmp, "Server: disabled\n");
goto out;
}
- monitor_printf(mon, "Server:\n");
+ monitor_hmp_printf(hmp, "Server:\n");
if (info->has_port) {
- monitor_printf(mon, " address: %s:%" PRId64 "\n",
- info->host, info->port);
+ monitor_hmp_printf(hmp, " address: %s:%" PRId64 "\n",
+ info->host, info->port);
}
if (info->has_tls_port) {
- monitor_printf(mon, " address: %s:%" PRId64 " [tls]\n",
- info->host, info->tls_port);
+ monitor_hmp_printf(hmp, " address: %s:%" PRId64 " [tls]\n",
+ info->host, info->tls_port);
}
- monitor_printf(mon, " migrated: %s\n",
- info->migrated ? "true" : "false");
- monitor_printf(mon, " auth: %s\n", info->auth);
- monitor_printf(mon, " compiled: %s\n", info->compiled_version);
- monitor_printf(mon, " mouse-mode: %s\n",
- SpiceQueryMouseMode_str(info->mouse_mode));
+ monitor_hmp_printf(hmp, " migrated: %s\n",
+ info->migrated ? "true" : "false");
+ monitor_hmp_printf(hmp, " auth: %s\n", info->auth);
+ monitor_hmp_printf(hmp, " compiled: %s\n", info->compiled_version);
+ monitor_hmp_printf(hmp, " mouse-mode: %s\n",
+ SpiceQueryMouseMode_str(info->mouse_mode));
if (!info->has_channels || info->channels == NULL) {
- monitor_printf(mon, "Channels: none\n");
+ monitor_hmp_printf(hmp, "Channels: none\n");
} else {
for (chan = info->channels; chan; chan = chan->next) {
- monitor_printf(mon, "Channel:\n");
- monitor_printf(mon, " address: %s:%s%s\n",
- chan->value->host, chan->value->port,
- chan->value->tls ? " [tls]" : "");
- monitor_printf(mon, " session: %" PRId64 "\n",
- chan->value->connection_id);
- monitor_printf(mon, " channel: %" PRId64 ":%" PRId64 "\n",
- chan->value->channel_type, chan->value->channel_id);
+ monitor_hmp_printf(hmp, "Channel:\n");
+ monitor_hmp_printf(hmp, " address: %s:%s%s\n",
+ chan->value->host, chan->value->port,
+ chan->value->tls ? " [tls]" : "");
+ monitor_hmp_printf(hmp, " session: %" PRId64 "\n",
+ chan->value->connection_id);
+ monitor_hmp_printf(hmp, " channel: %" PRId64 ":%" PRId64 "\n",
+ chan->value->channel_type, chan->value->channel_id);
channel_name = "unknown";
if (chan->value->channel_type > 0 &&
@@ -254,7 +251,7 @@ void hmp_info_spice(MonitorHMP *hmp, const QDict *qdict)
channel_name = channel_names[chan->value->channel_type];
}
- monitor_printf(mon, " channel name: %s\n", channel_name);
+ monitor_hmp_printf(hmp, " channel name: %s\n", channel_name);
}
}
@@ -333,7 +330,7 @@ static void hmp_change_read_arg(void *opaque, const char *password,
monitor_hmp_read_command(opaque, 1);
}
-void hmp_change_vnc(Monitor *mon, const char *device, const char *target,
+void hmp_change_vnc(MonitorHMP *hmp, const char *device, const char *target,
const char *arg, const char *read_only, bool force,
Error **errp)
{
@@ -346,7 +343,6 @@ void hmp_change_vnc(Monitor *mon, const char *device, const char *target,
return;
}
if (!arg) {
- MonitorHMP *hmp = MONITOR_HMP(mon);
monitor_hmp_read_password(hmp, hmp_change_read_arg, NULL);
} else {
qmp_change_vnc_password(arg, errp);
@@ -371,7 +367,6 @@ static int index_from_key(const char *key, size_t key_length)
void hmp_sendkey(MonitorHMP *hmp, const QDict *qdict)
{
- Monitor *mon = MONITOR(hmp);
const char *keys = qdict_get_str(qdict, "keys");
KeyValue *v = NULL;
KeyValueList *head = NULL, **tail = &head;
@@ -432,7 +427,7 @@ out:
return;
err_out:
- monitor_printf(mon, "invalid parameter: %.*s\n", keyname_len, keys);
+ monitor_hmp_printf(hmp, "invalid parameter: %.*s\n", keyname_len, keys);
goto out;
}