diff options
| author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2026-08-28 16:04:34 +0400 |
|---|---|---|
| committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2026-08-29 12:07:45 +0400 |
| commit | f3900cfb0cddd2fcc3b9db20f52f3755e6ed962f (patch) | |
| tree | 6cf4fe4278f1e3237b8fb05725a3875e4ff3a5dc /ui | |
| parent | bcf97f76064885730f491b63d4543b60c87c09fd (diff) | |
| download | qemu-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.c | 115 |
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; } |
