qapi: introduce x-query-ramblock QMP command
This is a counterpart to the HMP "info ramblock" 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
8dbbca5c05
commit
ca411b7c8a
@ -772,7 +772,7 @@ ERST
|
||||
.args_type = "",
|
||||
.params = "",
|
||||
.help = "Display system ramblock information",
|
||||
.cmd = hmp_info_ramblock,
|
||||
.cmd_info_hrt = qmp_x_query_ramblock,
|
||||
},
|
||||
|
||||
SRST
|
||||
|
@ -80,6 +80,6 @@ void ram_block_notify_add(void *host, size_t size, size_t max_size);
|
||||
void ram_block_notify_remove(void *host, size_t size, size_t max_size);
|
||||
void ram_block_notify_resize(void *host, size_t old_size, size_t new_size);
|
||||
|
||||
void ram_block_dump(Monitor *mon);
|
||||
GString *ram_block_format(void);
|
||||
|
||||
#endif /* RAMLIST_H */
|
||||
|
@ -52,7 +52,6 @@
|
||||
#include "ui/console.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "exec/ramlist.h"
|
||||
#include "hw/intc/intc.h"
|
||||
#include "migration/snapshot.h"
|
||||
#include "migration/misc.h"
|
||||
@ -2176,11 +2175,6 @@ void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict)
|
||||
qapi_free_RockerOfDpaGroupList(list);
|
||||
}
|
||||
|
||||
void hmp_info_ramblock(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
ram_block_dump(mon);
|
||||
}
|
||||
|
||||
void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include "qapi/qapi-commands-ui.h"
|
||||
#include "qapi/type-helpers.h"
|
||||
#include "qapi/qmp/qerror.h"
|
||||
#include "exec/ramlist.h"
|
||||
#include "hw/mem/memory-device.h"
|
||||
#include "hw/acpi/acpi_dev_interface.h"
|
||||
#include "hw/rdma/rdma.h"
|
||||
@ -414,3 +415,10 @@ HumanReadableText *qmp_x_query_rdma(Error **errp)
|
||||
|
||||
return human_readable_text_from_str(buf);
|
||||
}
|
||||
|
||||
HumanReadableText *qmp_x_query_ramblock(Error **errp)
|
||||
{
|
||||
g_autoptr(GString) buf = ram_block_format();
|
||||
|
||||
return human_readable_text_from_str(buf);
|
||||
}
|
||||
|
@ -1436,6 +1436,18 @@
|
||||
{ 'command': 'x-query-profile',
|
||||
'returns': 'HumanReadableText' }
|
||||
|
||||
##
|
||||
# @x-query-ramblock:
|
||||
#
|
||||
# Query system ramblock information
|
||||
#
|
||||
# Returns: system ramblock information
|
||||
#
|
||||
# Since: 6.2
|
||||
##
|
||||
{ 'command': 'x-query-ramblock',
|
||||
'returns': 'HumanReadableText' }
|
||||
|
||||
##
|
||||
# @x-query-rdma:
|
||||
#
|
||||
|
@ -1296,23 +1296,26 @@ void qemu_mutex_unlock_ramlist(void)
|
||||
qemu_mutex_unlock(&ram_list.mutex);
|
||||
}
|
||||
|
||||
void ram_block_dump(Monitor *mon)
|
||||
GString *ram_block_format(void)
|
||||
{
|
||||
RAMBlock *block;
|
||||
char *psize;
|
||||
GString *buf = g_string_new("");
|
||||
|
||||
RCU_READ_LOCK_GUARD();
|
||||
monitor_printf(mon, "%24s %8s %18s %18s %18s\n",
|
||||
"Block Name", "PSize", "Offset", "Used", "Total");
|
||||
g_string_append_printf(buf, "%24s %8s %18s %18s %18s\n",
|
||||
"Block Name", "PSize", "Offset", "Used", "Total");
|
||||
RAMBLOCK_FOREACH(block) {
|
||||
psize = size_to_str(block->page_size);
|
||||
monitor_printf(mon, "%24s %8s 0x%016" PRIx64 " 0x%016" PRIx64
|
||||
" 0x%016" PRIx64 "\n", block->idstr, psize,
|
||||
(uint64_t)block->offset,
|
||||
(uint64_t)block->used_length,
|
||||
(uint64_t)block->max_length);
|
||||
g_string_append_printf(buf, "%24s %8s 0x%016" PRIx64 " 0x%016" PRIx64
|
||||
" 0x%016" PRIx64 "\n", block->idstr, psize,
|
||||
(uint64_t)block->offset,
|
||||
(uint64_t)block->used_length,
|
||||
(uint64_t)block->max_length);
|
||||
g_free(psize);
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
|
Loading…
Reference in New Issue
Block a user