[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [rtl] do_gettimeofday().




Getting the time of day in init_module() and synchronizing this forever
after is somewhat idealistic. do_gettimeofday() is necessary if you
want to maintain a standard time-base between both Linux apps and
RT tasks. Among other things, the time reported by do_gettimeofday()
follows NTP ... so unless the RT tasks start doing the same or that
any function provided by the RT layer does the same, we may have to
stick with an rt-proofed do_gettimeofday() as I've previously explained.

Karim

Oliver.J.Enders@aero.org wrote:
> 
> Unless I am missing something, do_gettimeofday() sounds like a big, bloated
> Linux system call to me.  Shouldn't be in real time to start with.  Why not
> just get the time of day once in the init_module() (which is not real time
> mode) and synchronize with a counter that you update constantly in a
> periodic thread that you create at whatever rate you like.  When the
> interrupt comes in, the ISR just looks at the value of the counter and
> knows what time it is by differencing with the original time.  The rest is
> just reformatting for printout.  I apologize if I answered the wrong
> question.
> 
> Oliver
> 
> Karim Yaghmour <karym@opersys.com>@fsmlabs.com on 05/03/2001 11:04:09 AM
> 
> Please respond to rtl@fsmlabs.com
> 
> Sent by:  owner-rtl@fsmlabs.com
> 
> To:   rtl@fsmlabs.com
> cc:   yodaiken@fsmlabs.com, tfolkers@hamms.as.arizona.edu
> Subject:  Re: [rtl] do_gettimeofday().
> 
> Hello Thomas,
> 
> This is a known problem. If you want more information about it take a
> look at this posting I did a while ago:
> http://www.rtlinux.org/mailing_list/rtl.w5archive/0008/msg00239.html
> 
> One can't use use do_gettimeoday from real-time kernel modules because
> it uses normal Linux locks to ensure exclusive access to xtime_lock.
> 
> Changing the Linux locks to real-time locks fixes the problem. This is
> done in the LTT patch for RTAI and works great. It provides accurate
> timing and enables hard-real-time tasks to access do_gettimeofday without
> problems.
> 
> Cheers,
> 
> Karim
> 
> Thomas Folkers wrote:
> >
> > Victor,
> >   How come I can't get the time of day from the kernel? If I use
> > do_gettimeofday(), eventually the system will hang. It may not happen
> > right away, but it will hang. I'm trying to time external events and
> > record the exact time an interrupt comes in and the only way to compare
> > that time to other events and to other systems is to have the exact
> > system time. The clock_gettime() routine returns something close to
> > the real system clock time, but then proceeds to gain time at the rate of
> > 35,000 nsecs/sec. That's probably due to a miss calibration in the cpu HZ
> > value. I have looked over the rtl_time.c file and can see where you
> 'sync'
> > the CLOCK_REALTIME to the results of a do_gettimeofday() call, but then
> > there doesn't seem to be any other 'tweeks' to the time to keep it in
> > sync. So, while the clock_gettime() produces a nice monotonic clock, it
> > bear little resemblance to actual time.
> >   So, how do I get the time of day from the kernel?
> >
> > Thanks for you help,
> > Tom
> >
> > --
> >
> >
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> >     _/_/_/_/   _/_/    _/_/  _/_/_/_/_/  _/_/_/_/  Thomas W. Folkers
> >    _/         _/ _/ _/  _/      _/      _/    _/  Telescope Operations
> Mgr.
> >   _/_/_/_/   _/   _/   _/      _/      _/    _/  Sub-Millimeter Telescope
> >         _/  _/        _/      _/      _/    _/  Kitt Peak 12M Radio
> Telescope
> >        _/  _/        _/      _/      _/    _/  933 N. Cherry Ave. Rm. 486
> > _/_/_/_/  _/        _/      _/      _/_/_/_/  Tucson, Arizona 85721
> > -------------------------------------------  email:
> tfolkers@as.arizona.edu
> > ------------------------------------------  Voice: (520) 626-7837
> > -- http://maisel.as.arizona.edu:8080/ ---  Fax:  621-5554  Pager:
> 446-0760
> > -- http://kp12m.as.arizona.edu/      ---  Mobil: 909-1113  Home:
> 742-9279
> >
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> > -- [rtl] ---
> > To unsubscribe:
> > echo "unsubscribe rtl" | mail majordomo@rtlinux.org OR
> > echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.org
> > --
> > For more information on Real-Time Linux see:
> > http://www.rtlinux.org/rtlinux/
> 
> --
> ===================================================
>                  Karim Yaghmour
>                karym@opersys.com
>       Embedded and Real-Time Linux Expert
> ===================================================
> 
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail majordomo@rtlinux.org OR
> echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.org
> --
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/rtlinux/
> 
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail majordomo@rtlinux.org OR
> echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.org
> --
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/rtlinux/

-- 
===================================================
                 Karim Yaghmour
               karym@opersys.com
      Embedded and Real-Time Linux Expert
===================================================