# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1273908442 -3600
# Node ID f74229f8bfa2600cd0e8f914c6f007bdea29b146
# Parent 6348b2ab5c391114593c63b491b42fc16cce0dab
libxl: Add missing start_time entry when create and restore VMs.
Signed-off-by: Yang Hongyang<yanghy@xxxxxxxxxxxxxx>
---
tools/libxl/libxl.c | 22 ++++++++++++++++++----
1 files changed, 18 insertions(+), 4 deletions(-)
diff -r 6348b2ab5c39 -r f74229f8bfa2 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Fri May 14 20:37:02 2010 +0100
+++ b/tools/libxl/libxl.c Sat May 15 08:27:22 2010 +0100
@@ -264,30 +264,37 @@ int libxl_domain_build(struct libxl_ctx
int libxl_domain_build(struct libxl_ctx *ctx, libxl_domain_build_info *info,
uint32_t domid, libxl_domain_build_state *state)
{
char **vments = NULL, **localents = NULL;
+ struct timeval start_time;
int i, ret;
ret = build_pre(ctx, domid, info, state);
if (ret) goto out;
+
+ gettimeofday(&start_time, NULL);
if (info->hvm) {
ret = build_hvm(ctx, domid, info, state);
if (ret) goto out;
- vments = libxl_calloc(ctx, 5, sizeof(char *));
+ vments = libxl_calloc(ctx, 7, sizeof(char *));
vments[0] = "rtc/timeoffset";
vments[1] = (info->u.hvm.timeoffset) ? info->u.hvm.timeoffset : "";
vments[2] = "image/ostype";
vments[3] = "hvm";
+ vments[4] = "start_time";
+ vments[5] = libxl_sprintf(ctx, "%lu.%02d",
start_time.tv_sec,(int)start_time.tv_usec/10000);
} else {
ret = build_pv(ctx, domid, info, state);
if (ret) goto out;
- vments = libxl_calloc(ctx, 9, sizeof(char *));
+ vments = libxl_calloc(ctx, 11, sizeof(char *));
i = 0;
vments[i++] = "image/ostype";
vments[i++] = "linux";
vments[i++] = "image/kernel";
vments[i++] = (char*) info->kernel;
+ vments[i++] = "start_time";
+ vments[i++] = libxl_sprintf(ctx, "%lu.%02d",
start_time.tv_sec,(int)start_time.tv_usec/10000);
if (info->u.pv.ramdisk) {
vments[i++] = "image/ramdisk";
vments[i++] = (char*) info->u.pv.ramdisk;
@@ -307,6 +314,7 @@ int libxl_domain_restore(struct libxl_ct
libxl_device_model_info *dm_info)
{
char **vments = NULL, **localents = NULL;
+ struct timeval start_time;
int i, ret, esave, flags;
ret = build_pre(ctx, domid, info, state);
@@ -315,19 +323,25 @@ int libxl_domain_restore(struct libxl_ct
ret = restore_common(ctx, domid, info, state, fd);
if (ret) goto out;
+ gettimeofday(&start_time, NULL);
+
if (info->hvm) {
- vments = libxl_calloc(ctx, 5, sizeof(char *));
+ vments = libxl_calloc(ctx, 7, sizeof(char *));
vments[0] = "rtc/timeoffset";
vments[1] = (info->u.hvm.timeoffset) ? info->u.hvm.timeoffset : "";
vments[2] = "image/ostype";
vments[3] = "hvm";
+ vments[4] = "start_time";
+ vments[5] = libxl_sprintf(ctx, "%lu.%02d",
start_time.tv_sec,(int)start_time.tv_usec/10000);
} else {
- vments = libxl_calloc(ctx, 9, sizeof(char *));
+ vments = libxl_calloc(ctx, 11, sizeof(char *));
i = 0;
vments[i++] = "image/ostype";
vments[i++] = "linux";
vments[i++] = "image/kernel";
vments[i++] = (char*) info->kernel;
+ vments[i++] = "start_time";
+ vments[i++] = libxl_sprintf(ctx, "%lu.%02d",
start_time.tv_sec,(int)start_time.tv_usec/10000);
if (info->u.pv.ramdisk) {
vments[i++] = "image/ramdisk";
vments[i++] = (char*) info->u.pv.ramdisk;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|