aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2012-03-01 12:26:14 +0000
committerIan Campbell <ian.campbell@citrix.com>2012-03-01 12:26:14 +0000
commit9c5defc464a6bf5bd990ee381a91a7a4a91eb01b (patch)
tree5a00e05aa8e47340efdb3f6dc18c4d0096b633ea /tools
parent50cbda0d0b1bffa4a7af91b5ff8a65d88191fdbb (diff)
downloadxen-9c5defc464a6bf5bd990ee381a91a7a4a91eb01b.tar.gz
xen-9c5defc464a6bf5bd990ee381a91a7a4a91eb01b.tar.bz2
xen-9c5defc464a6bf5bd990ee381a91a7a4a91eb01b.zip
libxl: make boolean members of libxl_domain_create_info into libxl_defbool
This allows them 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>
Diffstat (limited to 'tools')
-rw-r--r--tools/libxl/gentest.py3
-rw-r--r--tools/libxl/libxl_create.c14
-rw-r--r--tools/libxl/libxl_types.idl4
-rw-r--r--tools/libxl/xl_cmdimpl.c6
-rw-r--r--tools/libxl/xl_sxp.c4
5 files changed, 17 insertions, 14 deletions
diff --git a/tools/libxl/gentest.py b/tools/libxl/gentest.py
index 903070393a..5de7a070c7 100644
--- a/tools/libxl/gentest.py
+++ b/tools/libxl/gentest.py
@@ -20,8 +20,7 @@ def randomize_case(s):
def randomize_enum(e):
return random.choice([v.name for v in e.values])
-handcoded = ["libxl_defbool", # Temp until a user appears in the next patch
- "libxl_cpumap", "libxl_key_value_list",
+handcoded = ["libxl_cpumap", "libxl_key_value_list",
"libxl_cpuid_policy_list", "libxl_file_reference",
"libxl_string_list"]
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index c30a0247fb..0002fc87c7 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -53,8 +53,6 @@ void libxl_domain_config_dispose(libxl_domain_config *d_config)
void libxl_domain_create_info_init(libxl_domain_create_info *c_info)
{
memset(c_info, '\0', sizeof(*c_info));
- c_info->hap = 1;
- c_info->oos = 1;
}
int libxl__domain_create_info_setdefault(libxl__gc *gc,
@@ -63,6 +61,11 @@ int libxl__domain_create_info_setdefault(libxl__gc *gc,
if (!c_info->type)
return ERROR_INVAL;
+ if (c_info->type == LIBXL_DOMAIN_TYPE_HVM) {
+ libxl_defbool_setdefault(&c_info->hap, true);
+ libxl_defbool_setdefault(&c_info->oos, true);
+ }
+
return 0;
}
@@ -366,8 +369,8 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_create_info *info,
flags = 0;
if (info->type == LIBXL_DOMAIN_TYPE_HVM) {
flags |= XEN_DOMCTL_CDF_hvm_guest;
- flags |= info->hap ? XEN_DOMCTL_CDF_hap : 0;
- flags |= info->oos ? 0 : XEN_DOMCTL_CDF_oos_off;
+ flags |= libxl_defbool_val(info->hap) ? XEN_DOMCTL_CDF_hap : 0;
+ flags |= libxl_defbool_val(info->oos) ? 0 : XEN_DOMCTL_CDF_oos_off;
}
*domid = -1;
@@ -519,6 +522,9 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config,
ret = libxl__domain_create_info_setdefault(gc, &d_config->c_info);
if (ret) goto error_out;
+ ret = libxl__domain_create_info_setdefault(gc, &d_config->c_info);
+ if (ret) goto error_out;
+
ret = libxl__domain_make(gc, &d_config->c_info, &domid);
if (ret) {
LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "cannot make domain: %d", ret);
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 95c7d52dda..e2fe5b63b3 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -211,8 +211,8 @@ libxl_version_info = Struct("version_info", [
libxl_domain_create_info = Struct("domain_create_info",[
("type", libxl_domain_type),
- ("hap", bool),
- ("oos", bool),
+ ("hap", libxl_defbool),
+ ("oos", libxl_defbool),
("ssidref", uint32),
("name", string),
("uuid", libxl_uuid),
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 1c261235db..eb7c2917c5 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -555,8 +555,7 @@ static void parse_config_data(const char *configfile_filename_report,
!strncmp(buf, "hvm", strlen(buf)))
c_info->type = LIBXL_DOMAIN_TYPE_HVM;
- if (!xlu_cfg_get_long (config, "hap", &l, 0))
- c_info->hap = l;
+ xlu_cfg_get_defbool(config, "hap", &c_info->hap, 0);
if (xlu_cfg_replace_string (config, "name", &c_info->name, 0)) {
fprintf(stderr, "Domain name must be specified.\n");
@@ -572,8 +571,7 @@ static void parse_config_data(const char *configfile_filename_report,
libxl_uuid_generate(&c_info->uuid);
}
- if (!xlu_cfg_get_long(config, "oos", &l, 0))
- c_info->oos = l;
+ xlu_cfg_get_defbool(config, "oos", &c_info->oos, 0);
if (!xlu_cfg_get_string (config, "pool", &buf, 0)) {
c_info->poolid = -1;
diff --git a/tools/libxl/xl_sxp.c b/tools/libxl/xl_sxp.c
index 159e6f63bb..bd7543ce28 100644
--- a/tools/libxl/xl_sxp.c
+++ b/tools/libxl/xl_sxp.c
@@ -41,8 +41,8 @@ void printf_info_sexp(int domid, libxl_domain_config *d_config)
printf("(domain\n\t(domid %d)\n", domid);
printf("\t(create_info)\n");
printf("\t(hvm %d)\n", c_info->type == LIBXL_DOMAIN_TYPE_HVM);
- printf("\t(hap %d)\n", c_info->hap);
- printf("\t(oos %d)\n", c_info->oos);
+ printf("\t(hap %s)\n", libxl_defbool_to_string(c_info->hap));
+ printf("\t(oos %s)\n", libxl_defbool_to_string(c_info->oos));
printf("\t(ssidref %d)\n", c_info->ssidref);
printf("\t(name %s)\n", c_info->name);