aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2012-03-01 12:26:15 +0000
committerIan Campbell <ian.campbell@citrix.com>2012-03-01 12:26:15 +0000
commit33150d8091dd557303b887488a11c2febcb8883d (patch)
tree0949d9257bbd1e921db3618946bfc87120a28ea9 /tools
parent40efe5366816c6147344fd10902b4c0062980da7 (diff)
downloadxen-33150d8091dd557303b887488a11c2febcb8883d.tar.gz
xen-33150d8091dd557303b887488a11c2febcb8883d.tar.bz2
xen-33150d8091dd557303b887488a11c2febcb8883d.zip
libxl: add libxl_domain_build_info_init_type
Use instead of parameterising libxl_domain_build_info_init. This allows callers to initialise a libxl_domain_build_info but not to commit to a particular type later on (e.g. after they've parsed the domain config) Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/libxl/libxl.h5
-rw-r--r--tools/libxl/libxl_create.c14
-rw-r--r--tools/libxl/libxl_dm.c3
-rw-r--r--tools/libxl/xl_cmdimpl.c5
4 files changed, 18 insertions, 9 deletions
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 94e079b939..13352cbe2d 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -382,8 +382,9 @@ int libxl_ctx_postfork(libxl_ctx *ctx);
/* domain related functions */
void libxl_domain_create_info_init(libxl_domain_create_info *c_info);
-void libxl_domain_build_info_init(libxl_domain_build_info *b_info,
- const libxl_domain_create_info *c_info);
+void libxl_domain_build_info_init(libxl_domain_build_info *b_info);
+void libxl_domain_build_info_init_type(libxl_domain_build_info *b_info,
+ libxl_domain_type type);
typedef int (*libxl_console_ready)(libxl_ctx *ctx, uint32_t domid, void *priv);
int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config *d_config, libxl_console_ready cb, void *priv, uint32_t *domid);
int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config, libxl_console_ready cb, void *priv, uint32_t *domid, int restore_fd);
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index 9f67e9539b..18ce1a7da6 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -69,23 +69,29 @@ int libxl__domain_create_info_setdefault(libxl__gc *gc,
return 0;
}
-void libxl_domain_build_info_init(libxl_domain_build_info *b_info,
- const libxl_domain_create_info *c_info)
+void libxl_domain_build_info_init(libxl_domain_build_info *b_info)
{
memset(b_info, '\0', sizeof(*b_info));
- b_info->type = c_info->type;
+ b_info->type = -1;
b_info->max_memkb = LIBXL_MEMKB_DEFAULT;
b_info->target_memkb = LIBXL_MEMKB_DEFAULT;
b_info->shadow_memkb = LIBXL_MEMKB_DEFAULT;
b_info->video_memkb = LIBXL_MEMKB_DEFAULT;
+}
+
+void libxl_domain_build_info_init_type(libxl_domain_build_info *b_info,
+ libxl_domain_type type)
+{
+ assert(b_info->type == -1);
+ b_info->type = type;
switch (b_info->type) {
case LIBXL_DOMAIN_TYPE_HVM:
b_info->u.hvm.timer_mode = LIBXL_TIMER_MODE_DEFAULT;
break;
case LIBXL_DOMAIN_TYPE_PV:
- b_info->u.pv.slack_memkb = 0;
+ b_info->u.pv.slack_memkb = LIBXL_MEMKB_DEFAULT;
break;
default:
abort();
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index 3715b45d11..1261499477 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -701,7 +701,8 @@ static int libxl__create_stubdom(libxl__gc *gc,
libxl_uuid_generate(&dm_config.c_info.uuid);
- libxl_domain_build_info_init(&dm_config.b_info, &dm_config.c_info);
+ libxl_domain_build_info_init(&dm_config.b_info);
+ libxl_domain_build_info_init_type(&dm_config.b_info, LIBXL_DOMAIN_TYPE_PV);
dm_config.b_info.max_vcpus = 1;
dm_config.b_info.max_memkb = 32 * 1024;
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index bd92f54354..1d4eaf4af4 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -582,7 +582,8 @@ static void parse_config_data(const char *configfile_filename_report,
exit(1);
}
- libxl_domain_build_info_init(b_info, c_info);
+ libxl_domain_build_info_init(b_info);
+ libxl_domain_build_info_init_type(b_info, c_info->type);
/* the following is the actual config parsing with overriding values in the structures */
if (!xlu_cfg_get_long (config, "vcpus", &l, 0)) {
@@ -699,7 +700,7 @@ static void parse_config_data(const char *configfile_filename_report,
if (!xlu_cfg_get_long (config, "videoram", &l, 0))
b_info->video_memkb = l * 1024;
- switch(c_info->type) {
+ switch(b_info->type) {
case LIBXL_DOMAIN_TYPE_HVM:
if (!xlu_cfg_get_string (config, "kernel", &buf, 0))
fprintf(stderr, "WARNING: ignoring \"kernel\" directive for HVM guest. "