| /* | 
 |  * Human Monitor Interface | 
 |  * | 
 |  * Copyright IBM, Corp. 2011 | 
 |  * | 
 |  * Authors: | 
 |  *  Anthony Liguori   <aliguori@us.ibm.com> | 
 |  * | 
 |  * This work is licensed under the terms of the GNU GPL, version 2.  See | 
 |  * the COPYING file in the top-level directory. | 
 |  * | 
 |  */ | 
 |  | 
 | #include "hmp.h" | 
 | #include "qmp-commands.h" | 
 |  | 
 | void hmp_info_name(Monitor *mon) | 
 | { | 
 |     NameInfo *info; | 
 |  | 
 |     info = qmp_query_name(NULL); | 
 |     if (info->has_name) { | 
 |         monitor_printf(mon, "%s\n", info->name); | 
 |     } | 
 |     qapi_free_NameInfo(info); | 
 | } | 
 |  | 
 | void hmp_info_version(Monitor *mon) | 
 | { | 
 |     VersionInfo *info; | 
 |  | 
 |     info = qmp_query_version(NULL); | 
 |  | 
 |     monitor_printf(mon, "%" PRId64 ".%" PRId64 ".%" PRId64 "%s\n", | 
 |                    info->qemu.major, info->qemu.minor, info->qemu.micro, | 
 |                    info->package); | 
 |  | 
 |     qapi_free_VersionInfo(info); | 
 | } | 
 |  | 
 | void hmp_info_kvm(Monitor *mon) | 
 | { | 
 |     KvmInfo *info; | 
 |  | 
 |     info = qmp_query_kvm(NULL); | 
 |     monitor_printf(mon, "kvm support: "); | 
 |     if (info->present) { | 
 |         monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled"); | 
 |     } else { | 
 |         monitor_printf(mon, "not compiled\n"); | 
 |     } | 
 |  | 
 |     qapi_free_KvmInfo(info); | 
 | } | 
 |  | 
 | void hmp_info_status(Monitor *mon) | 
 | { | 
 |     StatusInfo *info; | 
 |  | 
 |     info = qmp_query_status(NULL); | 
 |  | 
 |     monitor_printf(mon, "VM status: %s%s", | 
 |                    info->running ? "running" : "paused", | 
 |                    info->singlestep ? " (single step mode)" : ""); | 
 |  | 
 |     if (!info->running && info->status != RUN_STATE_PAUSED) { | 
 |         monitor_printf(mon, " (%s)", RunState_lookup[info->status]); | 
 |     } | 
 |  | 
 |     monitor_printf(mon, "\n"); | 
 |  | 
 |     qapi_free_StatusInfo(info); | 
 | } | 
 |  | 
 | void hmp_info_uuid(Monitor *mon) | 
 | { | 
 |     UuidInfo *info; | 
 |  | 
 |     info = qmp_query_uuid(NULL); | 
 |     monitor_printf(mon, "%s\n", info->UUID); | 
 |     qapi_free_UuidInfo(info); | 
 | } | 
 |  | 
 | void hmp_info_chardev(Monitor *mon) | 
 | { | 
 |     ChardevInfoList *char_info, *info; | 
 |  | 
 |     char_info = qmp_query_chardev(NULL); | 
 |     for (info = char_info; info; info = info->next) { | 
 |         monitor_printf(mon, "%s: filename=%s\n", info->value->label, | 
 |                                                  info->value->filename); | 
 |     } | 
 |  | 
 |     qapi_free_ChardevInfoList(char_info); | 
 | } | 
 |  | 
 | void hmp_quit(Monitor *mon, const QDict *qdict) | 
 | { | 
 |     monitor_suspend(mon); | 
 |     qmp_quit(NULL); | 
 | } | 
 |  | 
 | void hmp_stop(Monitor *mon, const QDict *qdict) | 
 | { | 
 |     qmp_stop(NULL); | 
 | } | 
 |  | 
 | void hmp_system_reset(Monitor *mon, const QDict *qdict) | 
 | { | 
 |     qmp_system_reset(NULL); | 
 | } | 
 |  | 
 | void hmp_system_powerdown(Monitor *mon, const QDict *qdict) | 
 | { | 
 |     qmp_system_powerdown(NULL); | 
 | } |