diff mbox

[v3.2,31/31] hmp: add info memdev

Message ID 5f64b90d8707869fa622c0c1b26106ae96895d82.1400049817.git.hutao@cn.fujitsu.com
State New
Headers show

Commit Message

Hu Tao May 14, 2014, 9:43 a.m. UTC
This is the hmp counterpart of qmp query-memdev.

Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
---
 hmp.c     | 36 ++++++++++++++++++++++++++++++++++++
 hmp.h     |  1 +
 monitor.c |  7 +++++++
 3 files changed, 44 insertions(+)

Comments

Michael S. Tsirkin June 8, 2014, 10:10 a.m. UTC | #1
On Wed, May 14, 2014 at 05:43:35PM +0800, Hu Tao wrote:
> This is the hmp counterpart of qmp query-memdev.
> 
> Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
> ---
>  hmp.c     | 36 ++++++++++++++++++++++++++++++++++++
>  hmp.h     |  1 +
>  monitor.c |  7 +++++++
>  3 files changed, 44 insertions(+)
> 
> diff --git a/hmp.c b/hmp.c
> index 5c4d612..1d5bf2d 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -22,6 +22,8 @@
>  #include "qemu/sockets.h"
>  #include "monitor/monitor.h"
>  #include "qapi/opts-visitor.h"
> +#include "qapi/string-output-visitor.h"
> +#include "qapi-visit.h"
>  #include "ui/console.h"
>  #include "block/qapi.h"
>  #include "qemu-io.h"
> @@ -1671,3 +1673,37 @@ void hmp_object_del(Monitor *mon, const QDict *qdict)
>      qmp_object_del(id, &err);
>      hmp_handle_error(mon, &err);
>  }
> +
> +void hmp_info_memdev(Monitor *mon, const QDict *qdict)
> +{
> +    Error *err = NULL;
> +    MemdevList *memdev_list = qmp_query_memdev(&err);
> +    MemdevList *m = memdev_list;
> +    StringOutputVisitor *ov;
> +    int i = 0;
> +
> +
> +    while (m) {
> +        ov = string_output_visitor_new(false);
> +        visit_type_uint16List(string_output_get_visitor(ov),
> +                              &m->value->host_nodes, NULL, NULL);
> +        monitor_printf(mon, "memory device %d\n", i);
> +        monitor_printf(mon, "  size: %ld\n", m->value->size);

Fails build on 32 bit:

hmp.c:1696:9: error: format ‘%ld’ expects argument of type ‘long int’,
but argument 3 has type ‘uint64_t’ [-Werror=format=]
         monitor_printf(mon, "  size: %ld\n", m->value->size);

this must use PRId64.

> +        monitor_printf(mon, "  merge: %s\n",
> +                       m->value->merge ? "true" : "false");
> +        monitor_printf(mon, "  dump: %s\n",
> +                       m->value->dump ? "true" : "false");
> +        monitor_printf(mon, "  prealloc: %s\n",
> +                       m->value->prealloc ? "true" : "false");
> +        monitor_printf(mon, "  policy: %s\n",
> +                       HostMemPolicy_lookup[m->value->policy]);
> +        monitor_printf(mon, "  host nodes: %s\n",
> +                       string_output_get_string(ov));
> +
> +        string_output_visitor_cleanup(ov);
> +        m = m->next;
> +        i++;
> +    }
> +
> +    monitor_printf(mon, "\n");
> +}
> diff --git a/hmp.h b/hmp.h
> index 20ef454..bc13aae 100644
> --- a/hmp.h
> +++ b/hmp.h
> @@ -97,5 +97,6 @@ void object_add_completion(ReadLineState *rs, int nb_args, const char *str);
>  void object_del_completion(ReadLineState *rs, int nb_args, const char *str);
>  void device_add_completion(ReadLineState *rs, int nb_args, const char *str);
>  void device_del_completion(ReadLineState *rs, int nb_args, const char *str);
> +void hmp_info_memdev(Monitor *mon, const QDict *qdict);
>  
>  #endif
> diff --git a/monitor.c b/monitor.c
> index 4a3d3dd..4c24696 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -2958,6 +2958,13 @@ static mon_cmd_t info_cmds[] = {
>          .mhandler.cmd = hmp_info_tpm,
>      },
>      {
> +        .name       = "memdev",
> +        .args_type  = "",
> +        .params     = "",
> +        .help       = "show the memory device",
> +        .mhandler.cmd = hmp_info_memdev,
> +    },
> +    {
>          .name       = NULL,
>      },
>  };
> -- 
> 1.8.5.2.229.g4448466
>
Hu Tao June 9, 2014, 2:28 a.m. UTC | #2
On Sun, Jun 08, 2014 at 01:10:37PM +0300, Michael S. Tsirkin wrote:
> On Wed, May 14, 2014 at 05:43:35PM +0800, Hu Tao wrote:
> > This is the hmp counterpart of qmp query-memdev.
> > 
> > Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
> > ---
> >  hmp.c     | 36 ++++++++++++++++++++++++++++++++++++
> >  hmp.h     |  1 +
> >  monitor.c |  7 +++++++
> >  3 files changed, 44 insertions(+)
> > 
> > diff --git a/hmp.c b/hmp.c
> > index 5c4d612..1d5bf2d 100644
> > --- a/hmp.c
> > +++ b/hmp.c
> > @@ -22,6 +22,8 @@
> >  #include "qemu/sockets.h"
> >  #include "monitor/monitor.h"
> >  #include "qapi/opts-visitor.h"
> > +#include "qapi/string-output-visitor.h"
> > +#include "qapi-visit.h"
> >  #include "ui/console.h"
> >  #include "block/qapi.h"
> >  #include "qemu-io.h"
> > @@ -1671,3 +1673,37 @@ void hmp_object_del(Monitor *mon, const QDict *qdict)
> >      qmp_object_del(id, &err);
> >      hmp_handle_error(mon, &err);
> >  }
> > +
> > +void hmp_info_memdev(Monitor *mon, const QDict *qdict)
> > +{
> > +    Error *err = NULL;
> > +    MemdevList *memdev_list = qmp_query_memdev(&err);
> > +    MemdevList *m = memdev_list;
> > +    StringOutputVisitor *ov;
> > +    int i = 0;
> > +
> > +
> > +    while (m) {
> > +        ov = string_output_visitor_new(false);
> > +        visit_type_uint16List(string_output_get_visitor(ov),
> > +                              &m->value->host_nodes, NULL, NULL);
> > +        monitor_printf(mon, "memory device %d\n", i);
> > +        monitor_printf(mon, "  size: %ld\n", m->value->size);
> 
> Fails build on 32 bit:
> 
> hmp.c:1696:9: error: format ‘%ld’ expects argument of type ‘long int’,
> but argument 3 has type ‘uint64_t’ [-Werror=format=]
>          monitor_printf(mon, "  size: %ld\n", m->value->size);
> 
> this must use PRId64.

Thanks.

Hu
diff mbox

Patch

diff --git a/hmp.c b/hmp.c
index 5c4d612..1d5bf2d 100644
--- a/hmp.c
+++ b/hmp.c
@@ -22,6 +22,8 @@ 
 #include "qemu/sockets.h"
 #include "monitor/monitor.h"
 #include "qapi/opts-visitor.h"
+#include "qapi/string-output-visitor.h"
+#include "qapi-visit.h"
 #include "ui/console.h"
 #include "block/qapi.h"
 #include "qemu-io.h"
@@ -1671,3 +1673,37 @@  void hmp_object_del(Monitor *mon, const QDict *qdict)
     qmp_object_del(id, &err);
     hmp_handle_error(mon, &err);
 }
+
+void hmp_info_memdev(Monitor *mon, const QDict *qdict)
+{
+    Error *err = NULL;
+    MemdevList *memdev_list = qmp_query_memdev(&err);
+    MemdevList *m = memdev_list;
+    StringOutputVisitor *ov;
+    int i = 0;
+
+
+    while (m) {
+        ov = string_output_visitor_new(false);
+        visit_type_uint16List(string_output_get_visitor(ov),
+                              &m->value->host_nodes, NULL, NULL);
+        monitor_printf(mon, "memory device %d\n", i);
+        monitor_printf(mon, "  size: %ld\n", m->value->size);
+        monitor_printf(mon, "  merge: %s\n",
+                       m->value->merge ? "true" : "false");
+        monitor_printf(mon, "  dump: %s\n",
+                       m->value->dump ? "true" : "false");
+        monitor_printf(mon, "  prealloc: %s\n",
+                       m->value->prealloc ? "true" : "false");
+        monitor_printf(mon, "  policy: %s\n",
+                       HostMemPolicy_lookup[m->value->policy]);
+        monitor_printf(mon, "  host nodes: %s\n",
+                       string_output_get_string(ov));
+
+        string_output_visitor_cleanup(ov);
+        m = m->next;
+        i++;
+    }
+
+    monitor_printf(mon, "\n");
+}
diff --git a/hmp.h b/hmp.h
index 20ef454..bc13aae 100644
--- a/hmp.h
+++ b/hmp.h
@@ -97,5 +97,6 @@  void object_add_completion(ReadLineState *rs, int nb_args, const char *str);
 void object_del_completion(ReadLineState *rs, int nb_args, const char *str);
 void device_add_completion(ReadLineState *rs, int nb_args, const char *str);
 void device_del_completion(ReadLineState *rs, int nb_args, const char *str);
+void hmp_info_memdev(Monitor *mon, const QDict *qdict);
 
 #endif
diff --git a/monitor.c b/monitor.c
index 4a3d3dd..4c24696 100644
--- a/monitor.c
+++ b/monitor.c
@@ -2958,6 +2958,13 @@  static mon_cmd_t info_cmds[] = {
         .mhandler.cmd = hmp_info_tpm,
     },
     {
+        .name       = "memdev",
+        .args_type  = "",
+        .params     = "",
+        .help       = "show the memory device",
+        .mhandler.cmd = hmp_info_memdev,
+    },
+    {
         .name       = NULL,
     },
 };