aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl
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
commit8100d0b3cd4bd289c11961c2f6c93b87a23b86fb (patch)
treef3cf4e9f7c549f367f55b73bd4a797d83a8acc3d /tools/libxl
parentaef7f7836d44949020536fa252d1faa1fe7481e1 (diff)
downloadxen-8100d0b3cd4bd289c11961c2f6c93b87a23b86fb.tar.gz
xen-8100d0b3cd4bd289c11961c2f6c93b87a23b86fb.tar.bz2
xen-8100d0b3cd4bd289c11961c2f6c93b87a23b86fb.zip
libxl: introduce a descriminating default value for memkb fields.
Consitently make such fields 64 bit values as used by dominfo. It is not clear if ->video_memkb and/or shadow_memkb shouldn't be part of ->u.hvm but I have not changed that here. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl')
-rw-r--r--tools/libxl/gentest.py1
-rw-r--r--tools/libxl/libxl.h1
-rw-r--r--tools/libxl/libxl_create.c22
-rw-r--r--tools/libxl/libxl_dom.c7
-rw-r--r--tools/libxl/libxl_types.idl22
-rw-r--r--tools/libxl/xl_sxp.c9
6 files changed, 43 insertions, 19 deletions
diff --git a/tools/libxl/gentest.py b/tools/libxl/gentest.py
index ef0cecf0fe..f8dc43b88d 100644
--- a/tools/libxl/gentest.py
+++ b/tools/libxl/gentest.py
@@ -197,6 +197,7 @@ static void libxl_string_list_rand_init(libxl_string_list *p)
}
""")
for ty in builtins + types:
+ if isinstance(ty, idl.Number): continue
if ty.typename not in handcoded:
f.write("static void %s_rand_init(%s);\n" % \
(ty.typename,
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 102fb87ae2..b11ce6515c 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -246,6 +246,7 @@ typedef LIBXL_TAILQ_ENTRY(struct libxl_event) libxl_ev_link;
typedef struct libxl__ctx libxl_ctx;
#define LIBXL_TIMER_MODE_DEFAULT -1
+#define LIBXL_MEMKB_DEFAULT ~0ULL
#include "_libxl_types.h"
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index fc995fc98c..9c984b7f0f 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -70,19 +70,20 @@ void libxl_domain_build_info_init(libxl_domain_build_info *b_info,
const libxl_domain_create_info *c_info)
{
memset(b_info, '\0', sizeof(*b_info));
- b_info->max_memkb = 32 * 1024;
- b_info->target_memkb = b_info->max_memkb;
b_info->disable_migrate = 0;
b_info->cpuid = NULL;
- b_info->shadow_memkb = 0;
b_info->type = c_info->type;
+ 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;
+
b_info->device_model_stubdomain = false;
b_info->device_model = NULL;
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.bios = 0;
b_info->u.hvm.pae = 1;
@@ -133,8 +134,17 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
libxl_cpumap_set_any(&b_info->cpumap);
}
+ if (b_info->max_memkb == LIBXL_MEMKB_DEFAULT)
+ b_info->max_memkb = 32 * 1024;
+ if (b_info->target_memkb == LIBXL_MEMKB_DEFAULT)
+ b_info->target_memkb = b_info->max_memkb;
+
switch (b_info->type) {
case LIBXL_DOMAIN_TYPE_HVM:
+ if (b_info->shadow_memkb == LIBXL_MEMKB_DEFAULT)
+ b_info->shadow_memkb = 0;
+ if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
+ b_info->video_memkb = 8 * 1024;
if (b_info->u.hvm.timer_mode == LIBXL_TIMER_MODE_DEFAULT)
b_info->u.hvm.timer_mode =
LIBXL_TIMER_MODE_NO_DELAY_FOR_MISSED_TICKS;
@@ -153,6 +163,10 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
break;
case LIBXL_DOMAIN_TYPE_PV:
+ if (b_info->shadow_memkb == LIBXL_MEMKB_DEFAULT)
+ b_info->shadow_memkb = 0;
+ if (b_info->u.pv.slack_memkb == LIBXL_MEMKB_DEFAULT)
+ b_info->u.pv.slack_memkb = 0;
break;
default:
LIBXL__LOG(CTX, LIBXL__LOG_ERROR,
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index 60ed1d55ad..cca66c67cb 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -129,11 +129,12 @@ int libxl__build_post(libxl__gc *gc, uint32_t domid,
ents = libxl__calloc(gc, 12 + (info->max_vcpus * 2) + 2, sizeof(char *));
ents[0] = "memory/static-max";
- ents[1] = libxl__sprintf(gc, "%d", info->max_memkb);
+ ents[1] = libxl__sprintf(gc, "%"PRId64, info->max_memkb);
ents[2] = "memory/target";
- ents[3] = libxl__sprintf(gc, "%d", info->target_memkb - info->video_memkb);
+ ents[3] = libxl__sprintf(gc, "%"PRId64,
+ info->target_memkb - info->video_memkb);
ents[4] = "memory/videoram";
- ents[5] = libxl__sprintf(gc, "%d", info->video_memkb);
+ ents[5] = libxl__sprintf(gc, "%"PRId64, info->video_memkb);
ents[6] = "domid";
ents[7] = libxl__sprintf(gc, "%d", domid);
ents[8] = "store/port";
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index d4d052e8fb..eb987fa863 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -18,6 +18,12 @@ libxl_file_reference = Builtin("file_reference", dispose_fn="libxl_file_referenc
libxl_hwcap = Builtin("hwcap", passby=PASS_BY_REFERENCE)
#
+# Specific integer types
+#
+
+MemKB = UInt(64, init_val = "LIBXL_MEMKB_DEFAULT")
+
+#
# Constants / Enumerations
#
@@ -170,9 +176,9 @@ libxl_dominfo = Struct("dominfo",[
# Otherwise set to a value guaranteed not to clash with any valid
# LIBXL_SHUTDOWN_REASON_* constant.
("shutdown_reason", libxl_shutdown_reason),
- ("current_memkb", uint64),
- ("shared_memkb", uint64),
- ("max_memkb", uint64),
+ ("current_memkb", MemKB),
+ ("shared_memkb", MemKB),
+ ("max_memkb", MemKB),
("cpu_time", uint64),
("vcpu_max_id", uint32),
("vcpu_online", uint32),
@@ -228,10 +234,10 @@ libxl_domain_build_info = Struct("domain_build_info",[
("cur_vcpus", integer),
("cpumap", libxl_cpumap),
("tsc_mode", libxl_tsc_mode),
- ("max_memkb", uint32),
- ("target_memkb", uint32),
- ("video_memkb", uint32),
- ("shadow_memkb", uint32),
+ ("max_memkb", MemKB),
+ ("target_memkb", MemKB),
+ ("video_memkb", MemKB),
+ ("shadow_memkb", MemKB),
("disable_migrate", bool),
("cpuid", libxl_cpuid_policy_list),
("type", libxl_domain_type),
@@ -286,7 +292,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
("xen_platform_pci", bool),
])),
("pv", Struct(None, [("kernel", libxl_file_reference),
- ("slack_memkb", uint32),
+ ("slack_memkb", MemKB),
("bootloader", string),
("bootloader_args", libxl_string_list),
("cmdline", string),
diff --git a/tools/libxl/xl_sxp.c b/tools/libxl/xl_sxp.c
index 25ca0bdd11..159e6f63bb 100644
--- a/tools/libxl/xl_sxp.c
+++ b/tools/libxl/xl_sxp.c
@@ -21,6 +21,7 @@
#include "libxl_osdeps.h"
#include <stdlib.h>
+#include <inttypes.h>
#include "libxl.h"
#include "libxl_utils.h"
@@ -68,8 +69,8 @@ void printf_info_sexp(int domid, libxl_domain_config *d_config)
printf("\t(build_info)\n");
printf("\t(max_vcpus %d)\n", b_info->max_vcpus);
printf("\t(tsc_mode %s)\n", libxl_tsc_mode_to_string(b_info->tsc_mode));
- printf("\t(max_memkb %d)\n", b_info->max_memkb);
- printf("\t(target_memkb %d)\n", b_info->target_memkb);
+ printf("\t(max_memkb %"PRId64")\n", b_info->max_memkb);
+ printf("\t(target_memkb %"PRId64")\n", b_info->target_memkb);
printf("\t(nomigrate %d)\n", b_info->disable_migrate);
if (c_info->type == LIBXL_DOMAIN_TYPE_PV && b_info->u.pv.bootloader) {
@@ -88,8 +89,8 @@ void printf_info_sexp(int domid, libxl_domain_config *d_config)
case LIBXL_DOMAIN_TYPE_HVM:
printf("\t\t(hvm\n");
printf("\t\t\t(firmware %s)\n", b_info->u.hvm.firmware);
- printf("\t\t\t(video_memkb %d)\n", b_info->video_memkb);
- printf("\t\t\t(shadow_memkb %d)\n", b_info->shadow_memkb);
+ printf("\t\t\t(video_memkb %"PRId64")\n", b_info->video_memkb);
+ printf("\t\t\t(shadow_memkb %"PRId64")\n", b_info->shadow_memkb);
printf("\t\t\t(pae %d)\n", b_info->u.hvm.pae);
printf("\t\t\t(apic %d)\n", b_info->u.hvm.apic);
printf("\t\t\t(acpi %d)\n", b_info->u.hvm.acpi);