[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev |
Date: |
Mon, 9 Jun 2014 14:36:22 +0200 |
On Mon, 9 Jun 2014 18:25:33 +0800
Hu Tao <address@hidden> wrote:
> Add qmp command query-memdev to query for information
> of memory devices
>
> Signed-off-by: Hu Tao <address@hidden>
> ---
> numa.c | 72
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> qapi-schema.json | 34 ++++++++++++++++++++++++++
> qmp-commands.hx | 32 +++++++++++++++++++++++++
> 3 files changed, 138 insertions(+)
>
> diff --git a/numa.c b/numa.c
> index 1a83733..4e2fdc4 100644
> --- a/numa.c
> +++ b/numa.c
> @@ -31,9 +31,14 @@
> #include "qapi-visit.h"
> #include "qapi/opts-visitor.h"
> #include "qapi/dealloc-visitor.h"
> +#include "qapi/qmp-output-visitor.h"
> +#include "qapi/qmp-input-visitor.h"
> +#include "qapi/string-output-visitor.h"
> +#include "qapi/string-input-visitor.h"
> #include "qapi/qmp/qerror.h"
> #include "hw/boards.h"
> #include "sysemu/hostmem.h"
> +#include "qmp-commands.h"
>
> QemuOptsList qemu_numa_opts = {
> .name = "numa",
> @@ -280,3 +285,70 @@ void memory_region_allocate_system_memory(MemoryRegion
> *mr, Object *owner,
> addr += size;
> }
> }
> +
> +MemdevList *qmp_query_memdev(Error **errp)
> +{
> + MemdevList *list = NULL, *m;
> + HostMemoryBackend *backend;
> + Error *err = NULL;
> + int i;
> +
> + for (i = 0; i < nb_numa_nodes; i++) {
> + backend = numa_info[i].node_memdev;
> +
> + m = g_malloc0(sizeof(*m));
> + m->value = g_malloc0(sizeof(*m->value));
> + m->value->size = object_property_get_int(OBJECT(backend), "size",
> + &err);
> + if (err) {
> + goto error;
> + }
> +
> + m->value->merge = object_property_get_bool(OBJECT(backend), "merge",
> + &err);
> + if (err) {
> + goto error;
> + }
> +
> + m->value->dump = object_property_get_bool(OBJECT(backend), "dump",
> + &err);
> + if (err) {
> + goto error;
> + }
> +
> + m->value->prealloc = object_property_get_bool(OBJECT(backend),
> + "prealloc", &err);
> + if (err) {
> + goto error;
> + }
> +
> + m->value->policy = object_property_get_enum(OBJECT(backend),
> + "policy",
> + HostMemPolicy_lookup,
> + &err);
> + if (err) {
> + goto error;
> + }
> +
> + object_property_get_uint16List(OBJECT(backend), "host-nodes",
> + &m->value->host_nodes, &err);
> + if (err) {
> + goto error;
> + }
> +
> + m->next = list;
> + list = m;
> + }
> +
> + return list;
> +
> +error:
> + while (list) {
> + m = list;
> + list = list->next;
> + g_free(m->value);
> + g_free(m);
> + }
> + qerror_report_err(err);
> + return NULL;
> +}
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 0898c00..f23c3f1 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -4779,3 +4779,37 @@
> ##
> { 'enum': 'HostMemPolicy',
> 'data': [ 'default', 'preferred', 'bind', 'interleave' ] }
> +
> +##
> +# @Memdev:
> +#
> +# Information of memory device
> +#
> +# @size: memory device size
> +#
> +# @host-nodes: host nodes for its memory policy
> +#
> +# @policy: memory policy of memory device
> +#
> +# Since: 2.1
> +##
> +
> +{ 'type': 'Memdev',
> + 'data': {
> + 'size': 'size',
> + 'merge': 'bool',
> + 'dump': 'bool',
> + 'prealloc': 'bool',
> + 'host-nodes': ['uint16'],
> + 'policy': 'HostMemPolicy' }}
> +
> +##
> +# @query-memdev:
> +#
> +# Returns information for all memory devices.
> +#
> +# Returns: a list of @Memdev.
> +#
> +# Since: 2.1
> +##
> +{ 'command': 'query-memdev', 'returns': ['Memdev'] }
Could we make it union, that returns MemdevRam + MemdevFile
MemdevFile will have additional file-only specific properties.
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index d8aa4ed..ea8958f 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -3572,3 +3572,35 @@ Example:
> } } ] }
>
> EQMP
> +
> + {
> + .name = "query-memdev",
> + .args_type = "",
> + .mhandler.cmd_new = qmp_marshal_input_query_memdev,
> + },
> +
> +SQMP
> +query-memdev
> +------------
> +
> +Show memory devices information.
> +
> +
> +Example (1):
> +
> +-> { "execute": "query-memdev" }
> +<- { "return": [
> + {
> + "size": 536870912,
> + "host-nodes": [0, 1],
> + "policy": "bind"
> + },
> + {
> + "size": 536870912,
> + "host-nodes": [2, 3],
> + "policy": "preferred"
> + }
> + ]
> + }
> +
> +EQMP
> --
> 1.9.3
>
--
Regards,
Igor
- Re: [Qemu-devel] [PATCH v4 24/29] Introduce signed range., (continued)
- [Qemu-devel] [PATCH v4 25/29] qapi: make string input visitor parse int list, Hu Tao, 2014/06/09
- [Qemu-devel] [PATCH v4 26/29] qapi: make string output visitor parse int list, Hu Tao, 2014/06/09
- [Qemu-devel] [PATCH v4 27/29] qom: introduce object_property_get_enum and object_property_get_uint16List, Hu Tao, 2014/06/09
- Re: [Qemu-devel] [PATCH v4 00/29] NUMA series and hostmem improvements, Michael S. Tsirkin, 2014/06/09
- [Qemu-devel] [PATCH v4 29/29] hmp: add info memdev, Hu Tao, 2014/06/09
- [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev, Hu Tao, 2014/06/09
- Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev,
Igor Mammedov <=
- Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev, Paolo Bonzini, 2014/06/09
- Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev, Igor Mammedov, 2014/06/09
- Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev, Paolo Bonzini, 2014/06/09
- Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev, Igor Mammedov, 2014/06/09
- Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev, Eric Blake, 2014/06/09
Re: [Qemu-devel] [PATCH v4 28/29] qmp: add query-memdev, Eric Blake, 2014/06/09