qapi: introduce x-query-roms QMP command
This is a counterpart to the HMP "info roms" command. It is being added with an "x-" prefix because this QMP command is intended as an adhoc debugging tool and will thus not be modelled in QAPI as fully structured data, nor will it have long term guaranteed stability. The existing HMP command is rewritten to call the QMP command. Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
3d312f417d
commit
dd98234c05
@ -594,7 +594,7 @@ ERST
|
|||||||
.args_type = "",
|
.args_type = "",
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show roms",
|
.help = "show roms",
|
||||||
.cmd = hmp_info_roms,
|
.cmd_info_hrt = qmp_x_query_roms,
|
||||||
},
|
},
|
||||||
|
|
||||||
SRST
|
SRST
|
||||||
|
@ -46,6 +46,8 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu/datadir.h"
|
#include "qemu/datadir.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
|
#include "qapi/qapi-commands-machine.h"
|
||||||
|
#include "qapi/type-helpers.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include "hw/hw.h"
|
#include "hw/hw.h"
|
||||||
#include "disas/disas.h"
|
#include "disas/disas.h"
|
||||||
@ -1474,32 +1476,35 @@ void *rom_ptr_for_as(AddressSpace *as, hwaddr addr, size_t size)
|
|||||||
return cbdata.rom;
|
return cbdata.rom;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hmp_info_roms(Monitor *mon, const QDict *qdict)
|
HumanReadableText *qmp_x_query_roms(Error **errp)
|
||||||
{
|
{
|
||||||
Rom *rom;
|
Rom *rom;
|
||||||
|
g_autoptr(GString) buf = g_string_new("");
|
||||||
|
|
||||||
QTAILQ_FOREACH(rom, &roms, next) {
|
QTAILQ_FOREACH(rom, &roms, next) {
|
||||||
if (rom->mr) {
|
if (rom->mr) {
|
||||||
monitor_printf(mon, "%s"
|
g_string_append_printf(buf, "%s"
|
||||||
" size=0x%06zx name=\"%s\"\n",
|
" size=0x%06zx name=\"%s\"\n",
|
||||||
memory_region_name(rom->mr),
|
memory_region_name(rom->mr),
|
||||||
rom->romsize,
|
rom->romsize,
|
||||||
rom->name);
|
rom->name);
|
||||||
} else if (!rom->fw_file) {
|
} else if (!rom->fw_file) {
|
||||||
monitor_printf(mon, "addr=" TARGET_FMT_plx
|
g_string_append_printf(buf, "addr=" TARGET_FMT_plx
|
||||||
" size=0x%06zx mem=%s name=\"%s\"\n",
|
" size=0x%06zx mem=%s name=\"%s\"\n",
|
||||||
rom->addr, rom->romsize,
|
rom->addr, rom->romsize,
|
||||||
rom->isrom ? "rom" : "ram",
|
rom->isrom ? "rom" : "ram",
|
||||||
rom->name);
|
rom->name);
|
||||||
} else {
|
} else {
|
||||||
monitor_printf(mon, "fw=%s/%s"
|
g_string_append_printf(buf, "fw=%s/%s"
|
||||||
" size=0x%06zx name=\"%s\"\n",
|
" size=0x%06zx name=\"%s\"\n",
|
||||||
rom->fw_dir,
|
rom->fw_dir,
|
||||||
rom->fw_file,
|
rom->fw_file,
|
||||||
rom->romsize,
|
rom->romsize,
|
||||||
rom->name);
|
rom->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return human_readable_text_from_str(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef enum HexRecord HexRecord;
|
typedef enum HexRecord HexRecord;
|
||||||
|
@ -71,6 +71,7 @@
|
|||||||
#include "qapi/qapi-commands-misc.h"
|
#include "qapi/qapi-commands-misc.h"
|
||||||
#include "qapi/qapi-commands-qom.h"
|
#include "qapi/qapi-commands-qom.h"
|
||||||
#include "qapi/qapi-commands-trace.h"
|
#include "qapi/qapi-commands-trace.h"
|
||||||
|
#include "qapi/qapi-commands-machine.h"
|
||||||
#include "qapi/qapi-init-commands.h"
|
#include "qapi/qapi-init-commands.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qapi/qmp-event.h"
|
#include "qapi/qmp-event.h"
|
||||||
|
@ -1411,3 +1411,15 @@
|
|||||||
'*cores': 'int',
|
'*cores': 'int',
|
||||||
'*threads': 'int',
|
'*threads': 'int',
|
||||||
'*maxcpus': 'int' } }
|
'*maxcpus': 'int' } }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @x-query-roms:
|
||||||
|
#
|
||||||
|
# Query information on the registered ROMS
|
||||||
|
#
|
||||||
|
# Returns: registered ROMs
|
||||||
|
#
|
||||||
|
# Since: 6.2
|
||||||
|
##
|
||||||
|
{ 'command': 'x-query-roms',
|
||||||
|
'returns': 'HumanReadableText' }
|
||||||
|
Loading…
Reference in New Issue
Block a user