qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 3/4] machine: add default_devices field to QEMUMachi


From: Anthony Liguori
Subject: [Qemu-devel] [PATCH 3/4] machine: add default_devices field to QEMUMachine
Date: Fri, 26 Oct 2012 12:21:27 -0500

This allows a machine to describe default devices that are only available
when -nodefaults is not present.

Signed-off-by: Anthony Liguori <address@hidden>
---
 hw/boards.h |  6 ++++++
 vl.c        | 13 +++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/hw/boards.h b/hw/boards.h
index 813d0e5..85b2887 100644
--- a/hw/boards.h
+++ b/hw/boards.h
@@ -18,6 +18,11 @@ typedef void QEMUMachineInitFunc(QEMUMachineInitArgs *args);
 
 typedef void QEMUMachineResetFunc(void);
 
+typedef struct DeviceDescription {
+    const char *description;
+} DeviceDescription;
+
+
 typedef struct QEMUMachine {
     const char *name;
     const char *alias;
@@ -37,6 +42,7 @@ typedef struct QEMUMachine {
     GlobalProperty *compat_props;
     struct QEMUMachine *next;
     const char *hw_version;
+    DeviceDescription *default_devices;
 } QEMUMachine;
 
 int qemu_register_machine(QEMUMachine *m);
diff --git a/vl.c b/vl.c
index ffadbb6..f1285b8 100644
--- a/vl.c
+++ b/vl.c
@@ -276,6 +276,7 @@ static int default_floppy = 1;
 static int default_cdrom = 1;
 static int default_sdcard = 1;
 static int default_vga = 1;
+static int nodefaults = 0;
 
 static struct {
     const char *driver;
@@ -3275,6 +3276,7 @@ int main(int argc, char **argv, char **envp)
                 default_cdrom = 0;
                 default_sdcard = 0;
                 default_vga = 0;
+                nodefaults = 1;
                 break;
             case QEMU_OPTION_xen_domid:
                 if (!(xen_available())) {
@@ -3692,6 +3694,17 @@ int main(int argc, char **argv, char **envp)
     }
     qemu_add_globals();
 
+    if (!nodefaults && machine->default_devices) {
+        int i;
+
+        for (i = 0; machine->default_devices[i].description; i++) {
+            if (!qemu_opts_parse(qemu_find_opts("device"),
+                                 machine->default_devices[i].description, 1)) {
+                exit(1);
+            }
+        }
+    }
+
     qdev_machine_init();
 
     QEMUMachineInitArgs args = { .ram_size = ram_size,
-- 
1.8.0




reply via email to

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