Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2009 18:18:59 +0100
From:      Mister Olli <mister.olli@googlemail.com>
To:        Freminlins <freminlins@gmail.com>
Cc:        freebsd-xen@freebsd.org, freebsd-questions@freebsd.org
Subject:   Re: sysctl machdep.independent_wallclock
Message-ID:  <1232039939.18652.16.camel@phoenix.blechhirn.net>
In-Reply-To: <eeef1a4c0901141233l327ad964jc6fdd3a937942696@mail.gmail.com>
References:  <1231950392.18652.0.camel@phoenix.blechhirn.net> <eeef1a4c0901141233l327ad964jc6fdd3a937942696@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
hi...


>         what is the exact function of this sysctl setting?
> 
> I'm guessing it's something to do with Xen, having seen a few
> references in Linux for xen.machdep.independent_wallclock. 
> 
> Have a look here:
> http://docs.xensource.com/XenServer/4.0.1/guest/ch04s06.html

yeah, I know that sysctl from linux, but I wasn't quite sure if it is
the same in FreeBSD, since it's known as 'xen.independent_wallclock' in
linux and 'machdep.independent_wallclock' in FreeBSD.

I started reading the C-code of FreeBSD, and from my understanding the
function 'should' be the same, as it's really linked to the clock
handling with XEN in FreeBSD.

but from my understanding it's not completly implemented in 8-CURRENT
(as of 15 jan 2009; see the last lines):
================================
/*
 * Write system time back to RTC.  
 */
static void
domu_resettodr(void)
{
        unsigned long tm;
        int s;
        dom0_op_t op;
        struct shadow_time_info *shadow;

        shadow = &per_cpu(shadow_time, smp_processor_id());
        if (xen_disable_rtc_set)
                return;
        
        s = splclock();
        tm = time_second;
        splx(s);
        
        tm -= tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0);
        
        if ((xen_start_info->flags & SIF_INITDOMAIN) &&
            !independent_wallclock)
        {
                op.cmd = DOM0_SETTIME;
                op.u.settime.secs        = tm;
                op.u.settime.nsecs       = 0;
                op.u.settime.system_time = shadow->system_timestamp;
                HYPERVISOR_dom0_op(&op);
                update_wallclock();
        } else if (independent_wallclock) {
                /* notyet */
                ;
        }               
}
================================
is that correct???

greetz
olli
>         




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1232039939.18652.16.camel>