diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2012-03-01 12:26:15 +0000 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2012-03-01 12:26:15 +0000 |
commit | 40efe5366816c6147344fd10902b4c0062980da7 (patch) | |
tree | 7d0184eb77c7bcf8a37e893c1649976e202840f5 /tools | |
parent | 88e865b7a63801aaf89ea8125fae9732c0f9abfd (diff) | |
download | xen-40efe5366816c6147344fd10902b4c0062980da7.tar.gz xen-40efe5366816c6147344fd10902b4c0062980da7.tar.bz2 xen-40efe5366816c6147344fd10902b4c0062980da7.zip |
libxl: switch device model selection over to libxl_defbool
This allows it to be set via the _init/_setdefault methods.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
[since last v -- ERROR_INVAL on stubdomains + !traditional qemu]
Diffstat (limited to 'tools')
-rw-r--r-- | tools/libxl/libxl.c | 2 | ||||
-rw-r--r-- | tools/libxl/libxl_create.c | 14 | ||||
-rw-r--r-- | tools/libxl/libxl_dm.c | 4 | ||||
-rw-r--r-- | tools/libxl/libxl_types.idl | 4 | ||||
-rw-r--r-- | tools/libxl/xl_cmdimpl.c | 4 |
5 files changed, 18 insertions, 10 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 92b07a9b88..d66191a57d 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2714,7 +2714,7 @@ int libxl_domain_need_memory(libxl_ctx *ctx, libxl_domain_build_info *b_info, switch (b_info->type) { case LIBXL_DOMAIN_TYPE_HVM: *need_memkb += b_info->shadow_memkb + LIBXL_HVM_EXTRA_MEMORY; - if (b_info->device_model_stubdomain) + if (libxl_defbool_val(b_info->device_model_stubdomain)) *need_memkb += 32 * 1024; break; case LIBXL_DOMAIN_TYPE_PV: diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 172ff976ef..9f67e9539b 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -80,9 +80,6 @@ void libxl_domain_build_info_init(libxl_domain_build_info *b_info, b_info->shadow_memkb = LIBXL_MEMKB_DEFAULT; b_info->video_memkb = LIBXL_MEMKB_DEFAULT; - b_info->device_model_stubdomain = false; - b_info->device_model = NULL; - switch (b_info->type) { case LIBXL_DOMAIN_TYPE_HVM: b_info->u.hvm.timer_mode = LIBXL_TIMER_MODE_DEFAULT; @@ -122,6 +119,17 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, default:abort(); } + libxl_defbool_setdefault(&b_info->device_model_stubdomain, false); + + if (b_info->type == LIBXL_DOMAIN_TYPE_HVM && + b_info->device_model_version != + LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL && + libxl_defbool_val(b_info->device_model_stubdomain)) { + LIBXL__LOG(CTX, XTL_ERROR, + "device model stubdomains require \"qemu-xen-traditional\""); + return ERROR_INVAL; + } + if (!b_info->max_vcpus) b_info->max_vcpus = 1; if (!b_info->cur_vcpus) diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index a4f4d440ec..3715b45d11 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -39,7 +39,7 @@ const char *libxl__domain_device_model(libxl__gc *gc, libxl_ctx *ctx = libxl__gc_owner(gc); const char *dm; - if (info->device_model_stubdomain) + if (libxl_defbool_val(info->device_model_stubdomain)) return NULL; if (info->device_model) { @@ -899,7 +899,7 @@ int libxl__create_device_model(libxl__gc *gc, char **pass_stuff; const char *dm; - if (b_info->device_model_stubdomain) { + if (libxl_defbool_val(b_info->device_model_stubdomain)) { rc = libxl__create_stubdom(gc, domid, guest_config, state, starting_r); goto out; } diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 49df300457..d93f40143c 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -240,8 +240,8 @@ libxl_domain_build_info = Struct("domain_build_info",[ ("type", libxl_domain_type), ("device_model_version", libxl_device_model_version), - ("device_model_stubdomain", bool), - # you set device_model you must set device_model_version too + ("device_model_stubdomain", libxl_defbool), + # if you set device_model you must set device_model_version too ("device_model", string), ("device_model_ssidref", uint32), diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index beb0842901..bd92f54354 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1125,8 +1125,8 @@ skip_vfb: } } else if (b_info->device_model) fprintf(stderr, "WARNING: device model override given without specific DM version\n"); - if (!xlu_cfg_get_long (config, "device_model_stubdomain_override", &l, 0)) - b_info->device_model_stubdomain = l; + xlu_cfg_get_defbool (config, "device_model_stubdomain_override", + &b_info->device_model_stubdomain, 0); if (!xlu_cfg_get_string (config, "device_model_stubdomain_seclabel", &buf, 0)) { |