qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 10/19] Add a query-machines command to QMP


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 10/19] Add a query-machines command to QMP
Date: Mon, 07 Jun 2010 10:13:27 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100423 Lightning/1.0b1 Thunderbird/3.0.4

On 06/07/2010 09:42 AM, Daniel P. Berrange wrote:
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
+ *     },
+ *     ....
+ *  ]
+ *
+ */

My only suggestion would be to:

{ 'default-machine': 'pc',
   'machines': [{
     'name': 'pc',
     'description': 'Standard PC',
   },...]
}

I'd drop 'canonical' too. Aliasing is an implementation detail and should not be exposed via the ABI.

Regards,

Anthony Liguori



reply via email to

[Prev in Thread] Current Thread [Next in Thread]