Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


timex.h
001: /*****************************************************************************
002:  *                                                                           *
003:  * Copyright (c) David L. Mills 1993                                         *
004:  *                                                                           *
005:  * Permission to use, copy, modify, and distribute this software and its     *
006:  * documentation for any purpose and without fee is hereby granted, provided *
007:  * that the above copyright notice appears in all copies and that both the   *
008:  * copyright notice and this permission notice appear in supporting          *
009:  * documentation, and that the name University of Delaware not be used in    *
010:  * advertising or publicity pertaining to distribution of the software       *
011:  * without specific, written prior permission.  The University of Delaware   *
012:  * makes no representations about the suitability this software for any      *
013:  * purpose.  It is provided "as is" without express or implied warranty.     *
014:  *                                                                           *
015:  *****************************************************************************/
016: 
017: /*
018:  * Modification history timex.h
019:  *
020:  * 29 Dec 97    Russell King
021:  *      Moved CLOCK_TICK_RATE, CLOCK_TICK_FACTOR and FINETUNE to asm/timex.h
022:  *      for ARM machines
023:  *
024:  *  9 Jan 97    Adrian Sun
025:  *      Shifted LATCH define to allow access to alpha machines.
026:  *
027:  * 26 Sep 94    David L. Mills
028:  *      Added defines for hybrid phase/frequency-lock loop.
029:  *
030:  * 19 Mar 94    David L. Mills
031:  *      Moved defines from kernel routines to header file and added new
032:  *      defines for PPS phase-lock loop.
033:  *
034:  * 20 Feb 94    David L. Mills
035:  *      Revised status codes and structures for external clock and PPS
036:  *      signal discipline.
037:  *
038:  * 28 Nov 93    David L. Mills
039:  *      Adjusted parameters to improve stability and increase poll
040:  *      interval.
041:  *
042:  * 17 Sep 93    David L. Mills
043:  *      Created file $NTP/include/sys/timex.h
044:  * 07 Oct 93    Torsten Duwe
045:  *      Derived linux/timex.h
046:  * 1995-08-13    Torsten Duwe
047:  *      kernel PLL updated to 1994-12-13 specs (rfc-1589)
048:  * 1997-08-30    Ulrich Windl
049:  *      Added new constant NTP_PHASE_LIMIT
050:  * 2004-08-12    Christoph Lameter
051:  *      Reworked time interpolation logic
052:  */
053: #ifndef _LINUX_TIMEX_H
054: #define _LINUX_TIMEX_H
055: 
056: #include <linux/time.h>
057: 
058: #define NTP_API         4       /* NTP API version */
059: 
060: /*
061:  * syscall interface - used (mainly by NTP daemon)
062:  * to discipline kernel clock oscillator
063:  */
064: struct timex {
065:         unsigned int modes;     /* mode selector */
066:         long offset;            /* time offset (usec) */
067:         long freq;              /* frequency offset (scaled ppm) */
068:         long maxerror;          /* maximum error (usec) */
069:         long esterror;          /* estimated error (usec) */
070:         int status;             /* clock command/status */
071:         long constant;          /* pll time constant */
072:         long precision;         /* clock precision (usec) (read only) */
073:         long tolerance;         /* clock frequency tolerance (ppm)
074:                                  * (read only)
075:                                  */
076:         struct timeval time;    /* (read only, except for ADJ_SETOFFSET) */
077:         long tick;              /* (modified) usecs between clock ticks */
078: 
079:         long ppsfreq;           /* pps frequency (scaled ppm) (ro) */
080:         long jitter;            /* pps jitter (us) (ro) */
081:         int shift;              /* interval duration (s) (shift) (ro) */
082:         long stabil;            /* pps stability (scaled ppm) (ro) */
083:         long jitcnt;            /* jitter limit exceeded (ro) */
084:         long calcnt;            /* calibration intervals (ro) */
085:         long errcnt;            /* calibration errors (ro) */
086:         long stbcnt;            /* stability limit exceeded (ro) */
087: 
088:         int tai;                /* TAI offset (ro) */
089: 
090:         int  :32; int  :32; int  :32; int  :32;
091:         int  :32; int  :32; int  :32; int  :32;
092:         int  :32; int  :32; int  :32;
093: };
094: 
095: /*
096:  * Mode codes (timex.mode)
097:  */
098: #define ADJ_OFFSET              0x0001  /* time offset */
099: #define ADJ_FREQUENCY           0x0002  /* frequency offset */
100: #define ADJ_MAXERROR            0x0004  /* maximum time error */
101: #define ADJ_ESTERROR            0x0008  /* estimated time error */
102: #define ADJ_STATUS              0x0010  /* clock status */
103: #define ADJ_TIMECONST           0x0020  /* pll time constant */
104: #define ADJ_TAI                 0x0080  /* set TAI offset */
105: #define ADJ_SETOFFSET           0x0100  /* add 'time' to current time */
106: #define ADJ_MICRO               0x1000  /* select microsecond resolution */
107: #define ADJ_NANO                0x2000  /* select nanosecond resolution */
108: #define ADJ_TICK                0x4000  /* tick value */
109: 
110: #define ADJ_OFFSET_SINGLESHOT   0x8001  /* old-fashioned adjtime */
111: #define ADJ_OFFSET_SS_READ      0xa001  /* read-only adjtime */
112: 
113: /* NTP userland likes the MOD_ prefix better */
114: #define MOD_OFFSET      ADJ_OFFSET
115: #define MOD_FREQUENCY   ADJ_FREQUENCY
116: #define MOD_MAXERROR    ADJ_MAXERROR
117: #define MOD_ESTERROR    ADJ_ESTERROR
118: #define MOD_STATUS      ADJ_STATUS
119: #define MOD_TIMECONST   ADJ_TIMECONST
120: #define MOD_TAI ADJ_TAI
121: #define MOD_MICRO       ADJ_MICRO
122: #define MOD_NANO        ADJ_NANO
123: 
124: 
125: /*
126:  * Status codes (timex.status)
127:  */
128: #define STA_PLL         0x0001  /* enable PLL updates (rw) */
129: #define STA_PPSFREQ     0x0002  /* enable PPS freq discipline (rw) */
130: #define STA_PPSTIME     0x0004  /* enable PPS time discipline (rw) */
131: #define STA_FLL         0x0008  /* select frequency-lock mode (rw) */
132: 
133: #define STA_INS         0x0010  /* insert leap (rw) */
134: #define STA_DEL         0x0020  /* delete leap (rw) */
135: #define STA_UNSYNC      0x0040  /* clock unsynchronized (rw) */
136: #define STA_FREQHOLD    0x0080  /* hold frequency (rw) */
137: 
138: #define STA_PPSSIGNAL   0x0100  /* PPS signal present (ro) */
139: #define STA_PPSJITTER   0x0200  /* PPS signal jitter exceeded (ro) */
140: #define STA_PPSWANDER   0x0400  /* PPS signal wander exceeded (ro) */
141: #define STA_PPSERROR    0x0800  /* PPS signal calibration error (ro) */
142: 
143: #define STA_CLOCKERR    0x1000  /* clock hardware fault (ro) */
144: #define STA_NANO        0x2000  /* resolution (0 = us, 1 = ns) (ro) */
145: #define STA_MODE        0x4000  /* mode (0 = PLL, 1 = FLL) (ro) */
146: #define STA_CLK         0x8000  /* clock source (0 = A, 1 = B) (ro) */
147: 
148: /* read-only bits */
149: #define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
150:         STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
151: 
152: /*
153:  * Clock states (time_state)
154:  */
155: #define TIME_OK         0       /* clock synchronized, no leap second */
156: #define TIME_INS        1       /* insert leap second */
157: #define TIME_DEL        2       /* delete leap second */
158: #define TIME_OOP        3       /* leap second in progress */
159: #define TIME_WAIT       4       /* leap second has occurred */
160: #define TIME_ERROR      5       /* clock not synchronized */
161: #define TIME_BAD        TIME_ERROR /* bw compat */
162: 
163: 
164: #endif /* LINUX_TIMEX_H */
165: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/