Subject: Re: A Timecounter for Xen
To: None <jdev@panix.com>
From: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
List: port-xen
Date: 06/26/2007 14:51:15
> @@ -220,28 +291,16 @@ inittodr(time_t base)
> base = CONFIG_TIME;
> }
>
> - s = splclock();
> + s = splhigh();
> get_time_values_from_xen();
> + sts = shadow_ts;
> splx(s);
>
> -#if defined(XEN3)
> - t = (shadow_tv.tv_sec + rtc_offset * 60) * UINT64_C(1000000) +
> - shadow_tv.tv_usec + processed_system_time / 1000;
> - time.tv_usec = t % UINT64_C(1000000);
> - time.tv_sec = t / UINT64_C(1000000);
> -#else /* defined(XEN3) */
> - time.tv_usec = shadow_tv.tv_usec;
> - time.tv_sec = shadow_tv.tv_sec + rtc_offset * 60;
> -#endif /* defined(XEN3) */
> -#ifdef XEN_CLOCK_DEBUG
> - printf("readclock: %ld (%ld)\n", time.tv_sec, base);
> -#endif
> - /* reset microset, so that the next call to microset() will init */
> - ci->ci_cc.cc_denom = 0;
> -
> - if (base != 0 && base < time.tv_sec - 5*SECYR)
> + tc_setclock(&sts); /* XXX what about rtc_offset? */
> +
> + if (base != 0 && base < time_second - 5*SECYR)
> printf("WARNING: file system time much less than clock time\n");
is it correct for XEN3?
see clock.c rev.1.27 and xen c/s 43564304cf94.
YAMAMOTO Takashi