File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/timex.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: /*****************************************************************************
       2:  *                                                                           *
       3:  * Copyright (c) David L. Mills 1993                                         *
       4:  *                                                                           *
       5:  * Permission to use, copy, modify, and distribute this software and its     *
       6:  * documentation for any purpose and without fee is hereby granted, provided *
       7:  * that the above copyright notice appears in all copies and that both the   *
       8:  * copyright notice and this permission notice appear in supporting          *
       9:  * documentation, and that the name University of Delaware not be used in    *
      10:  * advertising or publicity pertaining to distribution of the software       *
      11:  * without specific, written prior permission.  The University of Delaware   *
      12:  * makes no representations about the suitability this software for any      *
      13:  * purpose.  It is provided "as is" without express or implied warranty.     *
      14:  *                                                                           *
      15:  *****************************************************************************/
      16: 
      17: /*
      18:  * Modification history timex.h
      19:  *
      20:  * 29 Dec 97    Russell King
      21:  *    Moved CLOCK_TICK_RATE, CLOCK_TICK_FACTOR and FINETUNE to asm/timex.h
      22:  *    for ARM machines
      23:  *
      24:  *  9 Jan 97    Adrian Sun
      25:  *      Shifted LATCH define to allow access to alpha machines.
      26:  *
      27:  * 26 Sep 94    David L. Mills
      28:  *    Added defines for hybrid phase/frequency-lock loop.
      29:  *
      30:  * 19 Mar 94    David L. Mills
      31:  *    Moved defines from kernel routines to header file and added new
      32:  *    defines for PPS phase-lock loop.
      33:  *
      34:  * 20 Feb 94    David L. Mills
      35:  *    Revised status codes and structures for external clock and PPS
      36:  *    signal discipline.
      37:  *
      38:  * 28 Nov 93    David L. Mills
      39:  *    Adjusted parameters to improve stability and increase poll
      40:  *    interval.
      41:  *
      42:  * 17 Sep 93    David L. Mills
      43:  *      Created file $NTP/include/sys/timex.h
      44:  * 07 Oct 93    Torsten Duwe
      45:  *      Derived linux/timex.h
      46:  * 1995-08-13    Torsten Duwe
      47:  *      kernel PLL updated to 1994-12-13 specs (rfc-1589)
      48:  * 1997-08-30    Ulrich Windl
      49:  *      Added new constant NTP_PHASE_LIMIT
      50:  * 2004-08-12    Christoph Lameter
      51:  *      Reworked time interpolation logic
      52:  */
      53: #ifndef _UAPI_LINUX_TIMEX_H
      54: #define _UAPI_LINUX_TIMEX_H
      55: 
      56: #include <linux/time.h>
      57: 
      58: #define NTP_API        4    /* NTP API version */
      59: 
      60: /*
      61:  * syscall interface - used (mainly by NTP daemon)
      62:  * to discipline kernel clock oscillator
      63:  */
      64: struct timex {
      65:     unsigned int modes;    /* mode selector */
      66:     long offset;        /* time offset (usec) */
      67:     long freq;        /* frequency offset (scaled ppm) */
      68:     long maxerror;        /* maximum error (usec) */
      69:     long esterror;        /* estimated error (usec) */
      70:     int status;        /* clock command/status */
      71:     long constant;        /* pll time constant */
      72:     long precision;        /* clock precision (usec) (read only) */
      73:     long tolerance;        /* clock frequency tolerance (ppm)
      74:                  * (read only)
      75:                  */
      76:     struct timeval time;    /* (read only, except for ADJ_SETOFFSET) */
      77:     long tick;        /* (modified) usecs between clock ticks */
      78: 
      79:     long ppsfreq;           /* pps frequency (scaled ppm) (ro) */
      80:     long jitter;            /* pps jitter (us) (ro) */
      81:     int shift;              /* interval duration (s) (shift) (ro) */
      82:     long stabil;            /* pps stability (scaled ppm) (ro) */
      83:     long jitcnt;            /* jitter limit exceeded (ro) */
      84:     long calcnt;            /* calibration intervals (ro) */
      85:     long errcnt;            /* calibration errors (ro) */
      86:     long stbcnt;            /* stability limit exceeded (ro) */
      87: 
      88:     int tai;        /* TAI offset (ro) */
      89: 
      90:     int  :32; int  :32; int  :32; int  :32;
      91:     int  :32; int  :32; int  :32; int  :32;
      92:     int  :32; int  :32; int  :32;
      93: };
      94: 
      95: /*
      96:  * Mode codes (timex.mode)
      97:  */
      98: #define ADJ_OFFSET        0x0001    /* time offset */
      99: #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: #ifndef __KERNEL__
     111: #define ADJ_OFFSET_SINGLESHOT    0x8001    /* old-fashioned adjtime */
     112: #define ADJ_OFFSET_SS_READ    0xa001    /* read-only adjtime */
     113: #endif
     114: 
     115: /* NTP userland likes the MOD_ prefix better */
     116: #define MOD_OFFSET    ADJ_OFFSET
     117: #define MOD_FREQUENCY    ADJ_FREQUENCY
     118: #define MOD_MAXERROR    ADJ_MAXERROR
     119: #define MOD_ESTERROR    ADJ_ESTERROR
     120: #define MOD_STATUS    ADJ_STATUS
     121: #define MOD_TIMECONST    ADJ_TIMECONST
     122: #define MOD_TAI    ADJ_TAI
     123: #define MOD_MICRO    ADJ_MICRO
     124: #define MOD_NANO    ADJ_NANO
     125: 
     126: 
     127: /*
     128:  * Status codes (timex.status)
     129:  */
     130: #define STA_PLL        0x0001    /* enable PLL updates (rw) */
     131: #define STA_PPSFREQ    0x0002    /* enable PPS freq discipline (rw) */
     132: #define STA_PPSTIME    0x0004    /* enable PPS time discipline (rw) */
     133: #define STA_FLL        0x0008    /* select frequency-lock mode (rw) */
     134: 
     135: #define STA_INS        0x0010    /* insert leap (rw) */
     136: #define STA_DEL        0x0020    /* delete leap (rw) */
     137: #define STA_UNSYNC    0x0040    /* clock unsynchronized (rw) */
     138: #define STA_FREQHOLD    0x0080    /* hold frequency (rw) */
     139: 
     140: #define STA_PPSSIGNAL    0x0100    /* PPS signal present (ro) */
     141: #define STA_PPSJITTER    0x0200    /* PPS signal jitter exceeded (ro) */
     142: #define STA_PPSWANDER    0x0400    /* PPS signal wander exceeded (ro) */
     143: #define STA_PPSERROR    0x0800    /* PPS signal calibration error (ro) */
     144: 
     145: #define STA_CLOCKERR    0x1000    /* clock hardware fault (ro) */
     146: #define STA_NANO    0x2000    /* resolution (0 = us, 1 = ns) (ro) */
     147: #define STA_MODE    0x4000    /* mode (0 = PLL, 1 = FLL) (ro) */
     148: #define STA_CLK        0x8000    /* clock source (0 = A, 1 = B) (ro) */
     149: 
     150: /* read-only bits */
     151: #define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
     152:     STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
     153: 
     154: /*
     155:  * Clock states (time_state)
     156:  */
     157: #define TIME_OK        0    /* clock synchronized, no leap second */
     158: #define TIME_INS    1    /* insert leap second */
     159: #define TIME_DEL    2    /* delete leap second */
     160: #define TIME_OOP    3    /* leap second in progress */
     161: #define TIME_WAIT    4    /* leap second has occurred */
     162: #define TIME_ERROR    5    /* clock not synchronized */
     163: #define TIME_BAD    TIME_ERROR /* bw compat */
     164: 
     165: 
     166: #endif /* _UAPI_LINUX_TIMEX_H */
     167: