[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 10/19] Add a query-machines command to QMP
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH 10/19] Add a query-machines command to QMP |
Date: |
Mon, 7 Jun 2010 15:42:23 +0100 |
Add a new QMP monitor command 'query-machines' to discover what
machines are defined in the QEMU binary. This is an easily
parsable replacement for 'qemu -M ?'
[
{
"name": "pc-0.13",
"description": "Standard PC",
"default": 0
},
{
"name": "pc",
"description": "Standard PC",
"canonical": "pc-0.13",
"default": 1
},
{
"name": "pc-0.12",
"description": "Standard PC",
"default": 0
},
....
]
No legacy readline monitor output is provided.
In the future it would be desirable for each machine's QDict to
also include details of any qdev devices that are included by
default in the machine type.
Signed-off-by: Daniel P. Berrange <address@hidden>
---
hw/boards.h | 1 +
monitor.c | 9 +++++++
vl.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 80 insertions(+), 0 deletions(-)
diff --git a/hw/boards.h b/hw/boards.h
index 6f0f0d7..2f6003d 100644
--- a/hw/boards.h
+++ b/hw/boards.h
@@ -32,6 +32,7 @@ typedef struct QEMUMachine {
} QEMUMachine;
int qemu_register_machine(QEMUMachine *m);
+void do_info_machines(Monitor *mon, QObject **data);
extern QEMUMachine *current_machine;
diff --git a/monitor.c b/monitor.c
index f0406e8..b6aa2b4 100644
--- a/monitor.c
+++ b/monitor.c
@@ -55,6 +55,7 @@
#include "json-streamer.h"
#include "json-parser.h"
#include "osdep.h"
+#include "hw/boards.h"
//#define DEBUG
//#define DEBUG_COMPLETION
@@ -2449,6 +2450,14 @@ static const mon_cmd_t info_cmds[] = {
.mhandler.info_new = do_info_version,
},
{
+ .name = "machines",
+ .args_type = "",
+ .params = "",
+ .help = "show the machine boards",
+ .user_print = monitor_user_noop,
+ .mhandler.info_new = do_info_machines,
+ },
+ {
.name = "commands",
.args_type = "",
.params = "",
diff --git a/vl.c b/vl.c
index 0b38d62..8043fac 100644
--- a/vl.c
+++ b/vl.c
@@ -1537,6 +1537,76 @@ static QEMUMachine *find_default_machine(void)
return NULL;
}
+
+/**
+ * do_info_machines(): Show machine boards
+ *
+ * Returns a QList object listing all machine boards
+ * available with this QEMU target. Each element in
+ * the list is a QDict object containing the following
+ * keys
+ *
+ * - "name": short name for the machine board
+ * - "description": long description of the board
+ * - "alias": name of an alias
+ *
+ * Example:
+ *
+ * [
+ * {
+ * "name": "pc-0.13",
+ * "description": "Standard PC",
+ * "default": 0
+ * },
+ * {
+ * "name": "pc",
+ * "description": "Standard PC",
+ * "canonical": "pc-0.13",
+ * "default": 1
+ * },
+ * {
+ * "name": "pc-0.12",
+ * "description": "Standard PC",
+ * "default": 0
+ * },
+ * ....
+ * ]
+ *
+ */
+/* XXX probably better in a hw/boards.c file, but 'first_machine'
+ * and all accessors are defined in this file already
+ */
+void do_info_machines(Monitor *mon, QObject **data)
+{
+ QList *machines = qlist_new();
+ QEMUMachine *m;
+
+ for (m = first_machine; m != NULL; m = m->next) {
+ QObject *entry;
+
+ entry = qobject_from_jsonf("{ 'name': %s, 'description': %s, 'default':
%d}",
+ m->name, m->desc,
+ !m->alias && m->is_default ? 1 : 0);
+
+ qlist_append_obj(machines, entry);
+
+ if (m->alias) {
+ QObject *alias;
+
+ alias = qobject_from_jsonf("{ 'name': %s, 'description': %s,
'default': %d, 'canonical': %s}",
+ m->alias, m->desc,
+ m->is_default ? 1 : 0, m->name);
+
+ qlist_append_obj(machines, alias);
+ }
+
+ /* XXX list the default devices for each machine type here too ? */
+ }
+
+ *data = QOBJECT(machines);
+}
+
+
/***********************************************************/
/* main execution loop */
--
1.6.6.1
[Qemu-devel] [PATCH 13/19] Add a query-target command to QMP, Daniel P. Berrange, 2010/06/07
[Qemu-devel] [PATCH 15/19] Expand query-argv to include help string, Daniel P. Berrange, 2010/06/07
[Qemu-devel] [PATCH 18/19] Add option to turn on JSON pretty printing in monitor, Daniel P. Berrange, 2010/06/07
[Qemu-devel] [PATCH 17/19] Add a query-config command to QMP, Daniel P. Berrange, 2010/06/07