[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 12/19] qapi: introduce x-query-ramblock QMP command
From: |
Daniel P . Berrangé |
Subject: |
[PATCH v3 12/19] qapi: introduce x-query-ramblock QMP command |
Date: |
Thu, 30 Sep 2021 14:23:42 +0100 |
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.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
include/exec/ramlist.h | 2 +-
monitor/hmp-cmds.c | 12 ++++++++++--
monitor/qmp-cmds.c | 8 ++++++++
qapi/machine.json | 12 ++++++++++++
softmmu/physmem.c | 19 +++++++++++--------
5 files changed, 42 insertions(+), 11 deletions(-)
diff --git a/include/exec/ramlist.h b/include/exec/ramlist.h
index ece6497ee2..2ad2a81acc 100644
--- a/include/exec/ramlist.h
+++ b/include/exec/ramlist.h
@@ -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 */
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index ebc093b3d9..2d09a01599 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -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"
@@ -2188,7 +2187,16 @@ void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict
*qdict)
void hmp_info_ramblock(Monitor *mon, const QDict *qdict)
{
- ram_block_dump(mon);
+ Error *err = NULL;
+ g_autoptr(HumanReadableText) info = NULL;
+
+ info = qmp_x_query_ramblock(&err);
+ if (err) {
+ error_report_err(err);
+ return;
+ }
+
+ monitor_printf(mon, "%s", info->human_readable_text);
}
void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict)
diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c
index 0a9ba7595c..a9766fa38d 100644
--- a/monitor/qmp-cmds.c
+++ b/monitor/qmp-cmds.c
@@ -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);
+}
diff --git a/qapi/machine.json b/qapi/machine.json
index fbe4100443..340ab57f60 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -1371,6 +1371,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:
#
diff --git a/softmmu/physmem.c b/softmmu/physmem.c
index 23e77cb771..bc4a8354d3 100644
--- a/softmmu/physmem.c
+++ b/softmmu/physmem.c
@@ -1298,23 +1298,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__
--
2.31.1
- [PATCH v3 02/19] docs/devel: tweak headings in monitor command docs, (continued)
- [PATCH v3 02/19] docs/devel: tweak headings in monitor command docs, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 03/19] docs/devel: document expectations for QAPI data modelling for QMP, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 04/19] docs/devel: add example of command returning unstructured text, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 05/19] docs/devel: document expectations for HMP commands in the future, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 06/19] monitor: remove 'info ioapic' HMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 07/19] qapi: introduce x-query-roms QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 08/19] qapi: introduce x-query-profile QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 09/19] qapi: introduce x-query-numa QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 10/19] qapi: introduce x-query-usb QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 11/19] qapi: introduce x-query-rdma QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 12/19] qapi: introduce x-query-ramblock QMP command,
Daniel P . Berrangé <=
- [PATCH v3 13/19] qapi: introduce x-query-skeys QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 14/19] qapi: introduce x-query-cmma QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 15/19] hmp: synchronize cpu state for lapic info, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 16/19] qapi: introduce x-query-lapic QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 17/19] qapi: introduce x-query-irq QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 18/19] qapi: introduce x-query-jit QMP command, Daniel P . Berrangé, 2021/09/30
- [PATCH v3 19/19] qapi: introduce x-query-opcount QMP command, Daniel P . Berrangé, 2021/09/30