aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl
diff options
context:
space:
mode:
authorLin Ming <mlin@ss.pku.edu.cn>2012-04-02 17:32:39 +0100
committerLin Ming <mlin@ss.pku.edu.cn>2012-04-02 17:32:39 +0100
commit6db51261126cfaf84c0c1b771ea5f8d116e8389e (patch)
tree63da64047d55815167f31259828d77c48ba6aa93 /tools/libxl
parentac84df4793663965b12462d06e38eee03ec36891 (diff)
downloadxen-6db51261126cfaf84c0c1b771ea5f8d116e8389e.tar.gz
xen-6db51261126cfaf84c0c1b771ea5f8d116e8389e.tar.bz2
xen-6db51261126cfaf84c0c1b771ea5f8d116e8389e.zip
libxl: support for "rtc_timeoffset" and "localtime"
Implement "rtc_timeoffset" and "localtime" options compatible as xm. rtc_timeoffset is the offset between host time and guest time. localtime means to specify whether the emulted RTC appears as UTC or is offset by the host. Acked-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Lin Ming <mlin@ss.pku.edu.cn> Committed-by: Ian Jackson <ian.jackson.citrix.com> --- docs/man/xl.cfg.pod.5 | 8 ++++++++ tools/libxl/libxl_create.c | 11 +++++++++++ tools/libxl/libxl_dom.c | 3 +++ tools/libxl/libxl_types.idl | 2 ++ tools/libxl/xl_cmdimpl.c | 5 +++++ 5 files changed, 29 insertions(+), 0 deletions(-)
Diffstat (limited to 'tools/libxl')
-rw-r--r--tools/libxl/libxl_create.c11
-rw-r--r--tools/libxl/libxl_dom.c3
-rw-r--r--tools/libxl/libxl_types.idl2
-rw-r--r--tools/libxl/xl_cmdimpl.c5
4 files changed, 21 insertions, 0 deletions
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index 8417661108..d39ecbe687 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -124,6 +124,17 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
if (b_info->target_memkb == LIBXL_MEMKB_DEFAULT)
b_info->target_memkb = b_info->max_memkb;
+ libxl_defbool_setdefault(&b_info->localtime, false);
+ if (libxl_defbool_val(b_info->localtime)) {
+ time_t t;
+ struct tm *tm;
+
+ t = time(NULL);
+ tm = localtime(&t);
+
+ b_info->rtc_timeoffset += tm->tm_gmtoff;
+ }
+
libxl_defbool_setdefault(&b_info->disable_migrate, false);
switch (b_info->type) {
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index 9b33267353..0bdd654745 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -91,6 +91,9 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid,
if (libxl_defbool_val(info->disable_migrate))
xc_domain_disable_migrate(ctx->xch, domid);
+ if (info->rtc_timeoffset)
+ xc_domain_set_time_offset(ctx->xch, domid, info->rtc_timeoffset);
+
if (info->type == LIBXL_DOMAIN_TYPE_HVM) {
unsigned long shadow;
shadow = (info->shadow_memkb + 1023) / 1024;
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 413a1a6efc..09089b219f 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -238,6 +238,8 @@ libxl_domain_build_info = Struct("domain_build_info",[
("target_memkb", MemKB),
("video_memkb", MemKB),
("shadow_memkb", MemKB),
+ ("rtc_timeoffset", uint32),
+ ("localtime", libxl_defbool),
("disable_migrate", libxl_defbool),
("cpuid", libxl_cpuid_policy_list),
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 4c1aa41ce3..7868ce798c 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -697,6 +697,11 @@ static void parse_config_data(const char *configfile_filename_report,
}
}
+ if (!xlu_cfg_get_long(config, "rtc_timeoffset", &l, 0))
+ b_info->rtc_timeoffset = l;
+
+ xlu_cfg_get_defbool(config, "localtime", &b_info->localtime, 0);
+
if (!xlu_cfg_get_long (config, "videoram", &l, 0))
b_info->video_memkb = l * 1024;