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