qemu/qmp.c
<<
>>
Prefs
   1/*
   2 * QEMU Management Protocol
   3 *
   4 * Copyright IBM, Corp. 2011
   5 *
   6 * Authors:
   7 *  Anthony Liguori   <aliguori@us.ibm.com>
   8 *
   9 * This work is licensed under the terms of the GNU GPL, version 2.  See
  10 * the COPYING file in the top-level directory.
  11 *
  12 */
  13
  14#include "qemu-common.h"
  15#include "sysemu.h"
  16#include "qmp-commands.h"
  17#include "kvm.h"
  18#include "arch_init.h"
  19
  20NameInfo *qmp_query_name(Error **errp)
  21{
  22    NameInfo *info = g_malloc0(sizeof(*info));
  23
  24    if (qemu_name) {
  25        info->has_name = true;
  26        info->name = g_strdup(qemu_name);
  27    }
  28
  29    return info;
  30}
  31
  32VersionInfo *qmp_query_version(Error **err)
  33{
  34    VersionInfo *info = g_malloc0(sizeof(*info));
  35    const char *version = QEMU_VERSION;
  36    char *tmp;
  37
  38    info->qemu.major = strtol(version, &tmp, 10);
  39    tmp++;
  40    info->qemu.minor = strtol(tmp, &tmp, 10);
  41    tmp++;
  42    info->qemu.micro = strtol(tmp, &tmp, 10);
  43    info->package = g_strdup(QEMU_PKGVERSION);
  44
  45    return info;
  46}
  47
  48KvmInfo *qmp_query_kvm(Error **errp)
  49{
  50    KvmInfo *info = g_malloc0(sizeof(*info));
  51
  52    info->enabled = kvm_enabled();
  53    info->present = kvm_available();
  54
  55    return info;
  56}
  57
  58UuidInfo *qmp_query_uuid(Error **errp)
  59{
  60    UuidInfo *info = g_malloc0(sizeof(*info));
  61    char uuid[64];
  62
  63    snprintf(uuid, sizeof(uuid), UUID_FMT, qemu_uuid[0], qemu_uuid[1],
  64                   qemu_uuid[2], qemu_uuid[3], qemu_uuid[4], qemu_uuid[5],
  65                   qemu_uuid[6], qemu_uuid[7], qemu_uuid[8], qemu_uuid[9],
  66                   qemu_uuid[10], qemu_uuid[11], qemu_uuid[12], qemu_uuid[13],
  67                   qemu_uuid[14], qemu_uuid[15]);
  68
  69    info->UUID = g_strdup(uuid);
  70    return info;
  71}
  72
  73void qmp_quit(Error **err)
  74{
  75    no_shutdown = 0;
  76    qemu_system_shutdown_request();
  77}
  78
  79void qmp_stop(Error **errp)
  80{
  81    vm_stop(RUN_STATE_PAUSED);
  82}
  83
  84void qmp_system_reset(Error **errp)
  85{
  86    qemu_system_reset_request();
  87}
  88
  89void qmp_system_powerdown(Error **erp)
  90{
  91    qemu_system_powerdown_request();
  92}
  93
  94void qmp_cpu(int64_t index, Error **errp)
  95{
  96    /* Just do nothing */
  97}
  98
  99#ifndef CONFIG_VNC
 100/* If VNC support is enabled, the "true" query-vnc command is
 101   defined in the VNC subsystem */
 102VncInfo *qmp_query_vnc(Error **errp)
 103{
 104    error_set(errp, QERR_FEATURE_DISABLED, "vnc");
 105    return NULL;
 106};
 107#endif
 108
 109#ifndef CONFIG_SPICE
 110/* If SPICE support is enabled, the "true" query-spice command is
 111   defined in the SPICE subsystem. Also note that we use a small
 112   trick to maintain query-spice's original behavior, which is not
 113   to be available in the namespace if SPICE is not compiled in */
 114SpiceInfo *qmp_query_spice(Error **errp)
 115{
 116    error_set(errp, QERR_COMMAND_NOT_FOUND, "query-spice");
 117    return NULL;
 118};
 119#endif
 120