diff options
Diffstat (limited to 'Documentation/time_interpolators.txt')
-rw-r--r-- | Documentation/time_interpolators.txt | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Documentation/time_interpolators.txt b/Documentation/time_interpolators.txt new file mode 100644 index 00000000000..e3b60854fbc --- /dev/null +++ b/Documentation/time_interpolators.txt @@ -0,0 +1,41 @@ +Time Interpolators +------------------ + +Time interpolators are a base of time calculation between timer ticks and +allow an accurate determination of time down to the accuracy of the time +source in nanoseconds. + +The architecture specific code typically provides gettimeofday and +settimeofday under Linux. The time interpolator provides both if an arch +defines CONFIG_TIME_INTERPOLATION. The arch still must set up timer tick +operations and call the necessary functions to advance the clock. + +With the time interpolator a standardized interface exists for time +interpolation between ticks. The provided logic is highly scalable +and has been tested in SMP situations of up to 512 CPUs. + +If CONFIG_TIME_INTERPOLATION is defined then the architecture specific code +(or the device drivers - like HPET) may register time interpolators. +These are typically defined in the following way: + +static struct time_interpolator my_interpolator { + .frequency = MY_FREQUENCY, + .source = TIME_SOURCE_MMIO32, + .shift = 8, /* scaling for higher accuracy */ + .drift = -1, /* Unknown drift */ + .jitter = 0 /* time source is stable */ +}; + +void time_init(void) +{ + .... + /* Initialization of the timer *. + my_interpolator.address = &my_timer; + register_time_interpolator(&my_interpolator); + .... +} + +For more details see include/linux/timex.h and kernel/timer.c. + +Christoph Lameter <christoph@lameter.com>, October 31, 2004 + |