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

[Xen-devel] [PATCH 28 of 32 RFC] libxl: initialise NULL==default members of build info later



# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1326712734 0
# Node ID 90fe4b95bdc935b2d5328603aa77d4de37253c36
# Parent  b8426902efa002b6941aee6dff109aa33a4372c8
libxl: initialise NULL==default members of build info later.

Specifically do it at setdefaults time instead of init time.

I'm not entirely sure if video_memkb can legitimately be 0. Hopefully this
corresponds to 'nographics' instead.

I think the rest are reasonable although it's not clear that shadow_memkb
doesn't belong in u.hvm I didn't change that here.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

diff -r b8426902efa0 -r 90fe4b95bdc9 tools/libxl/libxl_create.c
--- a/tools/libxl/libxl_create.c        Fri Jan 13 17:04:57 2012 +0000
+++ b/tools/libxl/libxl_create.c        Mon Jan 16 11:18:54 2012 +0000
@@ -82,12 +82,6 @@ int libxl_init_build_info(libxl_ctx *ctx
                           const libxl_domain_create_info *c_info)
 {
     memset(b_info, '\0', sizeof(*b_info));
-    b_info->max_vcpus = 1;
-    b_info->cur_vcpus = 1;
-    b_info->max_memkb = 32 * 1024;
-    b_info->target_memkb = b_info->max_memkb;
-    b_info->cpuid = NULL;
-    b_info->shadow_memkb = 0;
     b_info->type = c_info->type;
 
     b_info->device_model_version =
@@ -97,16 +91,7 @@ int libxl_init_build_info(libxl_ctx *ctx
 
     switch (b_info->type) {
     case LIBXL_DOMAIN_TYPE_HVM:
-        b_info->video_memkb = 8 * 1024;
-        b_info->u.hvm.firmware = NULL;
         b_info->u.hvm.timer_mode = 1;
-
-        b_info->u.hvm.vnc.listen = strdup("127.0.0.1");
-        b_info->u.hvm.vnc.display = 0;
-        b_info->u.hvm.keymap = NULL;
-        b_info->u.hvm.serial = NULL;
-        b_info->u.hvm.boot = strdup("cda");
-        b_info->u.hvm.usbdevice = NULL;
         break;
     case LIBXL_DOMAIN_TYPE_PV:
         b_info->u.pv.slack_memkb = 8 * 1024;
@@ -123,9 +108,21 @@ int libxl_init_build_info(libxl_ctx *ctx
 int libxl__domain_build_info_setdefaults(libxl__gc *gc,
                                          libxl_domain_build_info *b_info)
 {
+    if (!b_info->max_vcpus)
+        b_info->max_vcpus = 1;
+    if (!b_info->cur_vcpus)
+        b_info->cur_vcpus = 1;
+    if (!b_info->max_memkb)
+        b_info->max_memkb = 32 * 1024;
+    if (!b_info->target_memkb)
+        b_info->target_memkb = b_info->max_memkb;
+
     libxl_defbool_setdefault(&b_info->disable_migrate, false);
     switch (b_info->type) {
     case LIBXL_DOMAIN_TYPE_HVM:
+        if (!b_info->video_memkb)
+            b_info->video_memkb = 8 * 1024;
+
         libxl_defbool_setdefault(&b_info->u.hvm.pae, true);
         libxl_defbool_setdefault(&b_info->u.hvm.apic, true);
         libxl_defbool_setdefault(&b_info->u.hvm.acpi, true);
@@ -139,10 +136,15 @@ int libxl__domain_build_info_setdefaults
         libxl_defbool_setdefault(&b_info->u.hvm.usb, false);
         libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci, true);
 
+        if (!b_info->u.hvm.boot)
+            b_info->u.hvm.boot = strdup("cda");
+
         libxl_defbool_setdefault(&b_info->u.hvm.stdvga, false);
         libxl_defbool_setdefault(&b_info->u.hvm.vnc.enable, true);
         if (libxl_defbool_val(b_info->u.hvm.vnc.enable)) {
             libxl_defbool_setdefault(&b_info->u.hvm.vnc.findunused, true);
+            if (!b_info->u.hvm.vnc.listen)
+                b_info->u.hvm.vnc.listen = strdup("127.0.0.1");
         }
 
         libxl_defbool_setdefault(&b_info->u.hvm.sdl.enable, false);

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.