]> Git Repo - qemu.git/blob - qmp.c
qemu-nbd: fix socket creation race
[qemu.git] / qmp.c
1 /*
2  * QEMU Management Protocol
3  *
4  * Copyright IBM, Corp. 2011
5  *
6  * Authors:
7  *  Anthony Liguori   <[email protected]>
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
20 NameInfo *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
32 VersionInfo *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
48 KvmInfo *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
58 UuidInfo *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
73 void qmp_quit(Error **err)
74 {
75     no_shutdown = 0;
76     qemu_system_shutdown_request();
77 }
78
79 void qmp_stop(Error **errp)
80 {
81     vm_stop(RUN_STATE_PAUSED);
82 }
83
84 void qmp_system_reset(Error **errp)
85 {
86     qemu_system_reset_request();
87 }
88
89 void qmp_system_powerdown(Error **erp)
90 {
91     qemu_system_powerdown_request();
92 }
93
94 void 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 */
102 VncInfo *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 */
114 SpiceInfo *qmp_query_spice(Error **errp)
115 {
116     error_set(errp, QERR_COMMAND_NOT_FOUND, "query-spice");
117     return NULL;
118 };
119 #endif
This page took 0.029481 seconds and 4 git commands to generate.