[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.1-testing] xend: Obey localtime config option for HVM guests as well as PV guests.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1201620520 0 # Node ID 6721811f87dda90515ab77ccc0cbf99892d2fea3 # Parent 726e41786aa32bbb8964b5bd72217062d54c9269 xend: Obey localtime config option for HVM guests as well as PV guests. Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> xen-unstable changeset: 16932:04e24b9dcc1649e86d3e94a81489dab9c6ec82bc xen-unstable date: Tue Jan 29 15:15:51 2008 +0000 --- tools/python/xen/lowlevel/xc/xc.c | 25 ++++++++----------------- tools/python/xen/xend/XendDomainInfo.py | 10 +++++++--- tools/python/xen/xend/image.py | 6 ++++++ 3 files changed, 21 insertions(+), 20 deletions(-) diff -r 726e41786aa3 -r 6721811f87dd tools/python/xen/lowlevel/xc/xc.c --- a/tools/python/xen/lowlevel/xc/xc.c Tue Jan 29 15:28:10 2008 +0000 +++ b/tools/python/xen/lowlevel/xc/xc.c Tue Jan 29 15:28:40 2008 +0000 @@ -1047,23 +1047,13 @@ static PyObject *pyxc_domain_set_time_of static PyObject *pyxc_domain_set_time_offset(XcObject *self, PyObject *args) { uint32_t dom; - int32_t time_offset_seconds; - time_t calendar_time; - struct tm local_time; - struct tm utc_time; - - if (!PyArg_ParseTuple(args, "i", &dom)) - return NULL; - - calendar_time = time(NULL); - localtime_r(&calendar_time, &local_time); - gmtime_r(&calendar_time, &utc_time); - /* set up to get calendar time based on utc_time, with local dst setting */ - utc_time.tm_isdst = local_time.tm_isdst; - time_offset_seconds = (int32_t)difftime(calendar_time, mktime(&utc_time)); - - if (xc_domain_set_time_offset(self->xc_handle, dom, time_offset_seconds) != 0) - return NULL; + int32_t offset; + + if (!PyArg_ParseTuple(args, "ii", &dom, &offset)) + return NULL; + + if (xc_domain_set_time_offset(self->xc_handle, dom, offset) != 0) + return pyxc_error_to_exception(); Py_INCREF(zero); return zero; @@ -1499,6 +1489,7 @@ static PyMethodDef pyxc_methods[] = { METH_VARARGS, "\n" "Set a domain's time offset to Dom0's localtime\n" " dom [int]: Domain whose time offset is being set.\n" + " offset [int]: Time offset from UTC in seconds.\n" "Returns: [int] 0 on success; -1 on error.\n" }, { "domain_send_trigger", diff -r 726e41786aa3 -r 6721811f87dd tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Tue Jan 29 15:28:10 2008 +0000 +++ b/tools/python/xen/xend/XendDomainInfo.py Tue Jan 29 15:28:40 2008 +0000 @@ -1574,10 +1574,14 @@ class XendDomainInfo: self._configureBootloader() try: + if self.info['platform'].get('localtime', 0): + t = time.time() + loc = time.localtime(t) + utc = time.gmtime(t) + timeoffset = int(time.mktime(loc) - time.mktime(utc)) + self.info['platform']['rtc_timeoffset'] = timeoffset + self.image = image.create(self, self.info) - - if self.info['platform'].get('localtime', 0): - xc.domain_set_time_offset(self.domid) xc.domain_setcpuweight(self.domid, self.info['cpu_weight']) diff -r 726e41786aa3 -r 6721811f87dd tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Tue Jan 29 15:28:10 2008 +0000 +++ b/tools/python/xen/xend/image.py Tue Jan 29 15:28:40 2008 +0000 @@ -267,6 +267,12 @@ class HVMImageHandler(ImageHandler): self.apic = int(vmConfig['platform'].get('apic', 0)) self.acpi = int(vmConfig['platform'].get('acpi', 0)) + + def configure(self, vmConfig): + ImageHandler.configure(self, vmConfig) + rtc_timeoffset = vmConfig['platform'].get('rtc_timeoffset') + if rtc_timeoffset is not None: + xc.domain_set_time_offset(self.vm.getDomid(), rtc_timeoffset) def buildDomain(self): store_evtchn = self.vm.getStorePort() _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |