diff options
author | Alexander Gordeev <lasaine@lvk.cs.msu.su> | 2011-01-12 17:00:56 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-13 08:03:20 -0800 |
commit | 025b40abe715d638e60516a657d354e8560c1a85 (patch) | |
tree | 9320d3993c65c4eb56d3ab30337d590eb8c892fd /include/linux/timex.h | |
parent | 12f9b1f9c11700893a7b453705d95b260d78f268 (diff) | |
download | linux-stable-025b40abe715d638e60516a657d354e8560c1a85.tar.gz linux-stable-025b40abe715d638e60516a657d354e8560c1a85.tar.bz2 linux-stable-025b40abe715d638e60516a657d354e8560c1a85.zip |
ntp: add hardpps implementation
This commit adds hardpps() implementation based upon the original one from
the NTPv4 reference kernel code from David Mills. However, it is highly
optimized towards very fast syncronization and maximum stickness to PPS
signal. The typical error is less then a microsecond.
To make it sync faster I had to throw away exponential phase filter so
that the full phase offset is corrected immediately. Then I also had to
throw away median phase filter because it gives a bigger error itself if
used without exponential filter.
Maybe we will find an appropriate filtering scheme in the future but it's
not necessary if the signal quality is ok.
Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su>
Acked-by: John Stultz <johnstul@us.ibm.com>
Cc: Rodolfo Giometti <giometti@enneenne.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/timex.h')
-rw-r--r-- | include/linux/timex.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/timex.h b/include/linux/timex.h index 32d852f8cbe4..d23999f9499d 100644 --- a/include/linux/timex.h +++ b/include/linux/timex.h @@ -268,6 +268,7 @@ extern u64 tick_length; extern void second_overflow(void); extern void update_ntp_one_tick(void); extern int do_adjtimex(struct timex *); +extern void hardpps(const struct timespec *, const struct timespec *); int read_current_timer(unsigned long *timer_val); |