The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/Documentation/time_interpolators.txt

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 Time Interpolators
    2 ------------------
    3 
    4 Time interpolators are a base of time calculation between timer ticks and
    5 allow an accurate determination of time down to the accuracy of the time
    6 source in nanoseconds.
    7 
    8 The architecture specific code typically provides gettimeofday and
    9 settimeofday under Linux. The time interpolator provides both if an arch
   10 defines CONFIG_TIME_INTERPOLATION. The arch still must set up timer tick
   11 operations and call the necessary functions to advance the clock.
   12 
   13 With the time interpolator a standardized interface exists for time
   14 interpolation between ticks. The provided logic is highly scalable
   15 and has been tested in SMP situations of up to 512 CPUs.
   16 
   17 If CONFIG_TIME_INTERPOLATION is defined then the architecture specific code
   18 (or the device drivers - like HPET) may register time interpolators.
   19 These are typically defined in the following way:
   20 
   21 static struct time_interpolator my_interpolator {
   22         .frequency = MY_FREQUENCY,
   23         .source = TIME_SOURCE_MMIO32,
   24         .shift = 8,             /* scaling for higher accuracy */
   25         .drift = -1,            /* Unknown drift */
   26         .jitter = 0             /* time source is stable */
   27 };
   28 
   29 void time_init(void)
   30 {
   31         ....
   32         /* Initialization of the timer *.
   33         my_interpolator.address = &my_timer;
   34         register_time_interpolator(&my_interpolator);
   35         ....
   36 }
   37 
   38 For more details see include/linux/timex.h and kernel/timer.c.
   39 
   40 Christoph Lameter <christoph@lameter.com>, October 31, 2004
   41 

Cache object: 48a42a5935c1bda2a2be2fe1de5d575b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.