[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] hvm: correct RTC time offset update error due to tm->tm_year
# HG changeset patch # User Annie Li <annie.li@xxxxxxxxxx> # Date 1330619399 0 # Node ID b198ada9689daf31193743b236f819288750296c # Parent ed898c1d80881e9e3fb07ad7d9b30b70ac407543 hvm: correct RTC time offset update error due to tm->tm_year tm->tm_year in rtc.c is year number offsetting from 1900. So it is necessary to add the offset 1900 when calling mktime funtion in Xen. Otherwise, the calculation result of mktime is incorrect. Signed-off-by: Annie Li <annie.li@xxxxxxxxxx> Committed-by: Keir Fraser <keir@xxxxxxx> --- diff -r ed898c1d8088 -r b198ada9689d xen/arch/x86/hvm/rtc.c --- a/xen/arch/x86/hvm/rtc.c Thu Mar 01 16:19:29 2012 +0000 +++ b/xen/arch/x86/hvm/rtc.c Thu Mar 01 16:29:59 2012 +0000 @@ -33,6 +33,8 @@ #define vrtc_domain(x) (container_of((x), struct domain, \ arch.hvm_domain.pl_time.vrtc)) #define vrtc_vcpu(x) (pt_global_vcpu_target(vrtc_domain(x))) +#define epoch_year 1900 +#define get_year(x) (x + epoch_year) static void rtc_periodic_cb(struct vcpu *v, void *opaque) { @@ -165,7 +167,7 @@ ASSERT(spin_is_locked(&s->lock)); - before = mktime(tm->tm_year, tm->tm_mon + 1, tm->tm_mday, + before = mktime(get_year(tm->tm_year), tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); tm->tm_sec = from_bcd(s, s->hw.cmos_data[RTC_SECONDS]); @@ -179,7 +181,7 @@ tm->tm_mon = from_bcd(s, s->hw.cmos_data[RTC_MONTH]) - 1; tm->tm_year = from_bcd(s, s->hw.cmos_data[RTC_YEAR]) + 100; - after = mktime(tm->tm_year, tm->tm_mon + 1, tm->tm_mday, + after = mktime(get_year(tm->tm_year), tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); /* We use the guest's setting of the RTC to define the local-time @@ -257,7 +259,7 @@ if ( (unsigned)tm->tm_wday >= 7 ) tm->tm_wday = 0; days_in_month = get_days_in_month(tm->tm_mon, - tm->tm_year + 1900); + get_year(tm->tm_year)); tm->tm_mday++; if ( tm->tm_mday < 1 ) { _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |