1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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
|