[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xend: Obey localtime config option for HVM guests as well as PV guests.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1201619751 0 # Node ID 04e24b9dcc1649e86d3e94a81489dab9c6ec82bc # Parent 98c2665056ea4fe63e02c943536db686fcedc459 xend: Obey localtime config option for HVM guests as well as PV guests. Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> --- 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 98c2665056ea -r 04e24b9dcc16 tools/python/xen/lowlevel/xc/xc.c --- a/tools/python/xen/lowlevel/xc/xc.c Tue Jan 29 13:46:16 2008 +0000 +++ b/tools/python/xen/lowlevel/xc/xc.c Tue Jan 29 15:15:51 2008 +0000 @@ -1155,23 +1155,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; @@ -1620,6 +1610,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 98c2665056ea -r 04e24b9dcc16 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Tue Jan 29 13:46:16 2008 +0000 +++ b/tools/python/xen/xend/XendDomainInfo.py Tue Jan 29 15:15:51 2008 +0000 @@ -1733,10 +1733,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['vcpus_params']['weight']) diff -r 98c2665056ea -r 04e24b9dcc16 tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Tue Jan 29 13:46:16 2008 +0000 +++ b/tools/python/xen/xend/image.py Tue Jan 29 15:15:51 2008 +0000 @@ -346,6 +346,12 @@ class LinuxImageHandler(ImageHandler): flags = 0 vhpt = 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() console_evtchn = self.vm.getConsolePort() _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |