Message ID | 5f64b90d8707869fa622c0c1b26106ae96895d82.1400049817.git.hutao@cn.fujitsu.com |
---|---|
State | New |
Headers | show |
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 >
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 --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, }, };
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(+)