diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2012-03-01 12:26:14 +0000 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2012-03-01 12:26:14 +0000 |
commit | 8100d0b3cd4bd289c11961c2f6c93b87a23b86fb (patch) | |
tree | f3cf4e9f7c549f367f55b73bd4a797d83a8acc3d | |
parent | aef7f7836d44949020536fa252d1faa1fe7481e1 (diff) | |
download | xen-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>
-rw-r--r-- | tools/libxl/gentest.py | 1 | ||||
-rw-r--r-- | tools/libxl/libxl.h | 1 | ||||
-rw-r--r-- | tools/libxl/libxl_create.c | 22 | ||||
-rw-r--r-- | tools/libxl/libxl_dom.c | 7 | ||||
-rw-r--r-- | tools/libxl/libxl_types.idl | 22 | ||||
-rw-r--r-- | tools/libxl/xl_sxp.c | 9 |
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); |