On Thu, Aug 28, 2014 at 9:44 AM, zhanghailiang < zhang.zhanghaili...@huawei.com> wrote:
> On 2014/8/27 18:00, Paolo Bonzini wrote: > >> Il 27/08/2014 11:24, zhanghailiang ha scritto: >> >>> This is the hmp counterpart of qmp query_machines >>> >>> Signed-off-by: zhanghailiang<zhang.zhanghaili...@huawei.com> >>> --- >>> hmp-commands.hx | 2 ++ >>> hmp.c | 22 ++++++++++++++++++++++ >>> hmp.h | 1 + >>> monitor.c | 7 +++++++ >>> 4 files changed, 32 insertions(+) >>> >>> diff --git a/hmp-commands.hx b/hmp-commands.hx >>> index d0943b1..1d04235 100644 >>> --- a/hmp-commands.hx >>> +++ b/hmp-commands.hx >>> @@ -1780,6 +1780,8 @@ show qdev device model list >>> show roms >>> @item info tpm >>> show the TPM device >>> +@item info machines >>> +show supported machines information >>> @end table >>> ETEXI >>> >>> diff --git a/hmp.c b/hmp.c >>> index 4d1838e..603f2f5 100644 >>> --- a/hmp.c >>> +++ b/hmp.c >>> @@ -725,6 +725,28 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict) >>> qapi_free_TPMInfoList(info_list); >>> } >>> >>> +void hmp_info_machines(Monitor *mon, const QDict *qdict) >>> +{ >>> + MachineInfoList *mach_list = NULL, *cur_item = NULL; >>> + >>> + mach_list = qmp_query_machines(NULL); >>> + for (cur_item = mach_list; cur_item; cur_item = cur_item->next) { >>> + MachineInfo *machine; >>> + char default_chr = ' '; >>> + >>> + machine = cur_item->value; >>> + if (machine->is_default) { >>> + default_chr = '*'; >>> + } >>> + monitor_printf(mon, "%c %s:\n", default_chr, machine->name); >>> + monitor_printf(mon, " max_cpus: %" PRId64 "\n", >>> machine->cpu_max); >>> + if (machine->has_alias) { >>> + monitor_printf(mon, " alias: %s\n", machine->alias); >>> + } >>> + } >>> + qapi_free_MachineInfoList(mach_list); >>> +} >>> + >>> void hmp_quit(Monitor *mon, const QDict *qdict) >>> { >>> monitor_suspend(mon); >>> diff --git a/hmp.h b/hmp.h >>> index 4fd3c4a..374e841 100644 >>> --- a/hmp.h >>> +++ b/hmp.h >>> @@ -38,6 +38,7 @@ void hmp_info_balloon(Monitor *mon, const QDict >>> *qdict); >>> void hmp_info_pci(Monitor *mon, const QDict *qdict); >>> void hmp_info_block_jobs(Monitor *mon, const QDict *qdict); >>> void hmp_info_tpm(Monitor *mon, const QDict *qdict); >>> +void hmp_info_machines(Monitor *mon, const QDict *qdict); >>> void hmp_quit(Monitor *mon, const QDict *qdict); >>> void hmp_stop(Monitor *mon, const QDict *qdict); >>> void hmp_system_reset(Monitor *mon, const QDict *qdict); >>> diff --git a/monitor.c b/monitor.c >>> index 34cee74..adc3645 100644 >>> --- a/monitor.c >>> +++ b/monitor.c >>> @@ -2921,6 +2921,13 @@ static mon_cmd_t info_cmds[] = { >>> .mhandler.cmd = hmp_info_memdev, >>> }, >>> { >>> + .name = "machines", >>> + .args_type = "", >>> + .params = "", >>> + .help = "show supported machines information", >>> + .mhandler.cmd = hmp_info_machines, >>> + }, >>> + { >>> .name = NULL, >>> }, >>> }; >>> >>> >> What is this useful for? You can use "-machine help". >> >> > Hmm, i just looked into the qmp commands and hmp commands, > And found there is qmp_query_machines but no hmp_info_machines... > > Sorry for the noise;) > > There exists some QMP commands that don't have corresponding HMP commands. QMP is the latest and recommended interface for management tools. HMP command is not always necessary, unless you have a good reason :-)