/***************************************************************************** * * * Copyright (c) David L. Mills 1993 * * * * Permission to use, copy, modify, and distribute this software and its * * documentation for any purpose and without fee is hereby granted, provided * * that the above copyright notice appears in all copies and that both the * * copyright notice and this permission notice appear in supporting * * documentation, and that the name University of Delaware not be used in * * advertising or publicity pertaining to distribution of the software * * without specific, written prior permission. The University of Delaware * * makes no representations about the suitability this software for any * * purpose. It is provided "as is" without express or implied warranty. * * * *****************************************************************************/ /* * Modification history timex.h * * 29 Dec 97 Russell King * Moved CLOCK_TICK_RATE, CLOCK_TICK_FACTOR and FINETUNE to asm/timex.h * for ARM machines * * 9 Jan 97 Adrian Sun * Shifted LATCH define to allow access to alpha machines. * * 26 Sep 94 David L. Mills * Added defines for hybrid phase/frequency-lock loop. * * 19 Mar 94 David L. Mills * Moved defines from kernel routines to header file and added new * defines for PPS phase-lock loop. * * 20 Feb 94 David L. Mills * Revised status codes and structures for external clock and PPS * signal discipline. * * 28 Nov 93 David L. Mills * Adjusted parameters to improve stability and increase poll * interval. * * 17 Sep 93 David L. Mills * Created file $NTP/include/sys/timex.h * 07 Oct 93 Torsten Duwe * Derived linux/timex.h * 1995-08-13 Torsten Duwe * kernel PLL updated to 1994-12-13 specs (rfc-1589) * 1997-08-30 Ulrich Windl * Added new constant NTP_PHASE_LIMIT * 2004-08-12 Christoph Lameter * Reworked time interpolation logic */ #ifndef _UAPI_LINUX_TIMEX_H #define _UAPI_LINUX_TIMEX_H #include <linux/time.h> #define NTP_API … #ifndef __KERNEL__ /* * syscall interface - used (mainly by NTP daemon) * to discipline kernel clock oscillator */ struct timex { unsigned int modes; /* mode selector */ __kernel_long_t offset; /* time offset (usec) */ __kernel_long_t freq; /* frequency offset (scaled ppm) */ __kernel_long_t maxerror;/* maximum error (usec) */ __kernel_long_t esterror;/* estimated error (usec) */ int status; /* clock command/status */ __kernel_long_t constant;/* pll time constant */ __kernel_long_t precision;/* clock precision (usec) (read only) */ __kernel_long_t tolerance;/* clock frequency tolerance (ppm) * (read only) */ struct timeval time; /* (read only, except for ADJ_SETOFFSET) */ __kernel_long_t tick; /* (modified) usecs between clock ticks */ __kernel_long_t ppsfreq;/* pps frequency (scaled ppm) (ro) */ __kernel_long_t jitter; /* pps jitter (us) (ro) */ int shift; /* interval duration (s) (shift) (ro) */ __kernel_long_t stabil; /* pps stability (scaled ppm) (ro) */ __kernel_long_t jitcnt; /* jitter limit exceeded (ro) */ __kernel_long_t calcnt; /* calibration intervals (ro) */ __kernel_long_t errcnt; /* calibration errors (ro) */ __kernel_long_t stbcnt; /* stability limit exceeded (ro) */ int tai; /* TAI offset (ro) */ int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; }; #endif struct __kernel_timex_timeval { … }; struct __kernel_timex { … }; /* * Mode codes (timex.mode) */ #define ADJ_OFFSET … #define ADJ_FREQUENCY … #define ADJ_MAXERROR … #define ADJ_ESTERROR … #define ADJ_STATUS … #define ADJ_TIMECONST … #define ADJ_TAI … #define ADJ_SETOFFSET … #define ADJ_MICRO … #define ADJ_NANO … #define ADJ_TICK … #ifndef __KERNEL__ #define ADJ_OFFSET_SINGLESHOT … #define ADJ_OFFSET_SS_READ … #endif /* NTP userland likes the MOD_ prefix better */ #define MOD_OFFSET … #define MOD_FREQUENCY … #define MOD_MAXERROR … #define MOD_ESTERROR … #define MOD_STATUS … #define MOD_TIMECONST … #define MOD_TAI … #define MOD_MICRO … #define MOD_NANO … /* * Status codes (timex.status) */ #define STA_PLL … #define STA_PPSFREQ … #define STA_PPSTIME … #define STA_FLL … #define STA_INS … #define STA_DEL … #define STA_UNSYNC … #define STA_FREQHOLD … #define STA_PPSSIGNAL … #define STA_PPSJITTER … #define STA_PPSWANDER … #define STA_PPSERROR … #define STA_CLOCKERR … #define STA_NANO … #define STA_MODE … #define STA_CLK … /* read-only bits */ #define STA_RONLY … /* * Clock states (time_state) */ #define TIME_OK … #define TIME_INS … #define TIME_DEL … #define TIME_OOP … #define TIME_WAIT … #define TIME_ERROR … #define TIME_BAD … #endif /* _UAPI_LINUX_TIMEX_H */