summaryrefslogtreecommitdiffstats
path: root/lib/libc/sys
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/sys')
-rw-r--r--lib/libc/sys/Makefile.inc3
-rw-r--r--lib/libc/sys/ntp_adjtime.2340
-rw-r--r--lib/libc/sys/ntp_gettime.2116
3 files changed, 258 insertions, 201 deletions
diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc
index e84b06f..75ffcfc 100644
--- a/lib/libc/sys/Makefile.inc
+++ b/lib/libc/sys/Makefile.inc
@@ -78,7 +78,7 @@ MAN+= _exit.2 abort2.2 accept.2 access.2 acct.2 adjtime.2 \
mlockall.2 mmap.2 modfind.2 modnext.2 modstat.2 mount.2 mprotect.2 \
mq_close.2 mq_getattr.2 mq_notify.2 mq_open.2 mq_receive.2 mq_send.2 \
mq_setattr.2 \
- msync.2 munmap.2 nanosleep.2 ntp_adjtime.2 ntp_gettime.2 \
+ msync.2 munmap.2 nanosleep.2 ntp_adjtime.2 \
nfssvc.2 open.2 pathconf.2 pipe.2 poll.2 profil.2 ptrace.2 quotactl.2 \
read.2 readlink.2 reboot.2 recv.2 rename.2 revoke.2 rfork.2 rmdir.2 \
rtprio.2 select.2 semctl.2 semget.2 semop.2 send.2 sendfile.2 \
@@ -143,6 +143,7 @@ MLINKS+=modnext.2 modfnext.2
MLINKS+=mount.2 nmount.2 mount.2 unmount.2
MLINKS+=mq_send.2 mq_timedsend.2
MLINKS+=mq_receive.2 mq_timedreceive.2
+MLINKS+=ntp_adjtime.2 ntp_gettime.2
MLINKS+=pathconf.2 fpathconf.2
MLINKS+=read.2 pread.2 read.2 readv.2 read.2 preadv.2
MLINKS+=recv.2 recvfrom.2 recv.2 recvmsg.2
diff --git a/lib/libc/sys/ntp_adjtime.2 b/lib/libc/sys/ntp_adjtime.2
index a7bf4f1..5f5185f 100644
--- a/lib/libc/sys/ntp_adjtime.2
+++ b/lib/libc/sys/ntp_adjtime.2
@@ -1,7 +1,11 @@
+.\" $NetBSD: ntp_adjtime.2,v 1.6 2003/04/16 13:34:55 wiz Exp $
.\"
-.\" Copyright (c) 2003 Tom Rhodes
+.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Thomas Klausner.
+.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
@@ -10,6 +14,13 @@
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the NetBSD
+.\" Foundation, Inc. and its contributors.
+.\" 4. Neither the name of The NetBSD Foundation nor the names of its
+.\" contributors may be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -25,114 +36,263 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 1, 2003
+.Dd July 13, 2005
.Dt NTP_ADJTIME 2
.Os
.Sh NAME
-.Nm ntp_adjtime
-.Nd NTP daemon application interface
+.Nm ntp_adjtime ,
+.Nm ntp_gettime
+.Nd Network Time Protocol (NTP) daemon interface system calls
+.Sh LIBRARY
+.Lb libc
.Sh SYNOPSIS
-.In sys/types.h
.In sys/timex.h
.Ft int
-.Fn ntp_adjtime "struct timex *tp"
+.Fn ntp_adjtime "struct timex *"
+.Ft int
+.Fn ntp_gettime "struct ntptimeval *"
.Sh DESCRIPTION
-The
+The two system calls
.Fn ntp_adjtime
-system call is used as a kernel interface
-for the Network Time Protocol daemon,
+and
+.Fn ntp_gettime
+are the kernel interface to the Network Time Protocol (NTP) daemon
.Xr ntpd 8 .
-Certain fields of the
-.Vt timex
-structure are interpreted in either
-microseconds or nanoseconds, according to the state of the
-.Dv STA_NANO
-bit in the
-.Va status
-word.
.Pp
-In the
-.Fx
-kernel, the
+The
.Fn ntp_adjtime
-and
-.Xr ntp_gettime 2
-system calls can be used to determine which
-resolution is in use, and to select either one at any time.
-The resolution selected affects the scaling of certain fields in the
-.Fn ntp_gettime
-and
+function is used by the NTP daemon to adjust the system clock to an
+externally derived time.
+The time offset and related variables which are set by
.Fn ntp_adjtime
-system calls.
+are used by
+.Fn hardclock
+to adjust the phase and frequency of the phase- or frequency-lock loop
+(PLL resp. FLL) which controls the system clock.
.Pp
-Take note that this
-.Tn API
-is extremely complex and stateful.
-Users should not attempt modification without first
-reviewing the
-.Xr ntpd 8
-sources in depth.
+The
+.Fn ntp_gettime
+function provides the time, maximum error (sync distance) and
+estimated error (dispersion) to client user application programs.
+.Pp
+In the following, all variables that refer PPS are only relevant if
+the
+.Em PPS_SYNC
+option is enabled in the kernel.
+.Pp
+.Fn ntp_adjtime
+has as argument a
+.Va struct timex *
+of the following form:
.Bd -literal
-/*
- * NTP daemon interface (ntp_adjtime()) - used to discipline CPU clock
- * oscillator and determine status.
- *
- * Note: The offset, precision and jitter members are in microseconds if
- * STA_NANO is zero and nanoseconds if not.
- */
struct timex {
unsigned int modes; /* clock mode bits (wo) */
- long offset; /* time offset (ns/us) (rw) */
- long freq; /* frequency offset (scaled PPM) (rw) */
- long maxerror; /* maximum error (us) (rw) */
- long esterror; /* estimated error (us) (rw) */
- int status; /* clock status bits (rw) */
- long constant; /* poll interval (log2 s) (rw) */
- long precision; /* clock precision (ns/us) (ro) */
- long tolerance; /* clock frequency tolerance (scaled
- * PPM) (ro) */
+ long offset; /* time offset (us) (rw) */
+ long freq; /* frequency offset (scaled ppm) (rw) */
+ long maxerror; /* maximum error (us) (rw) */
+ long esterror; /* estimated error (us) (rw) */
+ int status; /* clock status bits (rw) */
+ long constant; /* pll time constant (rw) */
+ long precision; /* clock precision (us) (ro) */
+ long tolerance; /* clock frequency tolerance (scaled
+ * ppm) (ro) */
/*
* The following read-only structure members are implemented
* only if the PPS signal discipline is configured in the
- * kernel. They are included in all configurations to insure
- * portability.
+ * kernel.
*/
- long ppsfreq; /* PPS frequency (scaled PPM) (ro) */
- long jitter; /* PPS jitter (ns/us) (ro) */
- int shift; /* interval duration (s) (shift) (ro) */
- long stabil; /* PPS stability (scaled PPM) (ro) */
- long jitcnt; /* jitter limit exceeded (ro) */
- long calcnt; /* calibration intervals (ro) */
- long errcnt; /* calibration errors (ro) */
- long stbcnt; /* stability limit exceeded (ro) */
+ long ppsfreq; /* pps frequency (scaled ppm) (ro) */
+ long jitter; /* pps jitter (us) (ro) */
+ int shift; /* interval duration (s) (shift) (ro) */
+ long stabil; /* pps stability (scaled ppm) (ro) */
+ long jitcnt; /* jitter limit exceeded (ro) */
+ long calcnt; /* calibration intervals (ro) */
+ long errcnt; /* calibration errors (ro) */
+ long stbcnt; /* stability limit exceeded (ro) */
};
.Ed
.Pp
-Upon successful completion,
+The members of this struct have the following meanings when used as
+argument for
+.Fn ntp_adjtime :
+.Bl -tag -width tolerance -compact
+.It Fa modes
+Defines what settings should be changed with the current
+.Fn ntp_adjtime
+call (write-only).
+Bitwise OR of the following:
+.Bl -tag -width MOD_TIMECONST -compact -offset indent
+.It MOD_OFFSET
+set time offset
+.It MOD_FREQUENCY
+set frequency offset
+.It MOD_MAXERROR
+set maximum time error
+.It MOD_ESTERROR
+set estimated time error
+.It MOD_STATUS
+set clock status bits
+.It MOD_TIMECONST
+set PLL time constant
+.It MOD_CLKA
+set clock A
+.It MOD_CLKB
+set clock B
+.El
+.It Fa offset
+Time offset (in microseconds), used by the PLL/FLL to adjust the
+system time in small increments (read-write).
+.It Fa freq
+Frequency offset (scaled ppm) (read-write).
+.It Fa maxerror
+Maximum error (in microseconds).
+Initialized by an
.Fn ntp_adjtime
-will fill the
-.Fa tp
-argument with the current clock state.
+call, and increased by the kernel once each second to reflect the maximum
+error bound growth (read-write).
+.It Fa esterror
+Estimated error (in microseconds).
+Set and read by
+.Fn ntp_adjtime ,
+but unused by the kernel (read-write).
+.It Fa status
+System clock status bits (read-write).
+Bitwise OR of the following:
+.Bl -tag -width STA_PPSJITTER -compact -offset indent
+.It STA_PLL
+Enable PLL updates (read-write).
+.It STA_PPSFREQ
+Enable PPS freq discipline (read-write).
+.It STA_PPSTIME
+Enable PPS time discipline (read-write).
+.It STA_FLL
+Select frequency-lock mode (read-write).
+.It STA_INS
+Insert leap (read-write).
+.It STA_DEL
+Delete leap (read-write).
+.It STA_UNSYNC
+Clock unsynchronized (read-write).
+.It STA_FREQHOLD
+Hold frequency (read-write).
+.It STA_PPSSIGNAL
+PPS signal present (read-only).
+.It STA_PPSJITTER
+PPS signal jitter exceeded (read-only).
+.It STA_PPSWANDER
+PPS signal wander exceeded (read-only).
+.It STA_PPSERROR
+PPS signal calibration error (read-only).
+.It STA_CLOCKERR
+Clock hardware fault (read-only).
+.El
+.It Fa constant
+PLL time constant, determines the bandwidth, or
+.Dq stiffness ,
+of the PLL (read-write).
+.It Fa precision
+Clock precision (in microseconds).
+In most cases the same as the kernel tick variable (see
+.Xr hz 9 ) .
+If a precision clock counter or external time-keeping signal is available,
+it could be much lower (and depend on the state of the signal)
+(read-only).
+.It Fa tolerance
+Maximum frequency error, or tolerance of the CPU clock oscillator (scaled
+ppm).
+Ordinarily a property of the architecture, but could change under
+the influence of external time-keeping signals (read-only).
+.It Fa ppsfreq
+PPS frequency offset produced by the frequency median filter (scaled
+ppm) (read-only).
+.It Fa jitter
+PPS jitter measured by the time median filter in microseconds
+(read-only).
+.It Fa shift
+Logarithm to base 2 of the interval duration in seconds (PPS,
+read-only).
+.It Fa stabil
+PPS stability (scaled ppm); dispersion (wander) measured by the
+frequency median filter (read-only).
+.It Fa jitcnt
+Number of seconds that have been discarded because the jitter measured
+by the time median filter exceeded the limit
+.Em MAXTIME
+(PPS, read-only).
+.It Fa calcnt
+Count of calibration intervals (PPS, read-only).
+.It Fa errcnt
+Number of calibration intervals that have been discarded because the
+wander exceeded the limit
+.Em MAXFREQ
+or where the calibration interval jitter exceeded two ticks (PPS,
+read-only).
+.It Fa stbcnt
+Number of calibration intervals that have been discarded because the
+frequency wander exceeded the limit
+.Em MAXFREQ Ns /4
+(PPS, read-only).
+.El
+After the
+.Fn ntp_adjtime
+call, the
+.Va struct timex *
+structure contains the current values of the corresponding variables.
+.Pp
+.Fn ntp_gettime
+has as argument a
+.Va struct ntptimeval *
+with the following members:
+.Bd -literal
+struct ntptimeval {
+ struct timeval time; /* current time (ro) */
+ long maxerror; /* maximum error (us) (ro) */
+ long esterror; /* estimated error (us) (ro) */
+};
+.Ed
+.Pp
+These have the following meaning:
+.Bl -tag -width tolerance -compact
+.It Fa time
+Current time (read-only).
+.It Fa maxerror
+Maximum error in microseconds (read-only).
+.It Fa esterror
+Estimated error in microseconds (read-only).
+.El
.Sh RETURN VALUES
-Upon successful completion the clock state is returned.
-Otherwise a -1 is returned and the global variable
-.Va errno
-is set to indicate the error.
+.Fn ntp_adjtime
+and
+.Fn ntp_gettime
+return the current state of the clock on success, or any of the errors
+of
+.Xr copyin 9
+and
+.Xr copyout 9 .
+.Fn ntp_adjtime
+may additionally return
+.Er EPERM
+if the user calling
+.Fn ntp_adjtime
+does not have sufficient permissions.
.Pp
Possible states of the clock are:
-.Pp
-.Bl -tag -compact -width ".Dv TIME_ERROR"
-.It Dv TIME_OK
+.Bl -tag -width TIME_ERROR -compact -offset indent
+.It TIME_OK
Everything okay, no leap second warning.
-.It Dv TIME_INS
-insert leap second warning.
-.It Dv TIME_DEL
-delete leap second warning.
-.It Dv TIME_OOP
+.It TIME_INS
+.Dq insert leap second
+warning.
+At the end of the day, a leap second will be inserted after 23:59:59.
+.It TIME_DEL
+.Dq delete leap second
+warning.
+At the end of the day, second 23:59:59 will be skipped.
+.It TIME_OOP
Leap second in progress.
-.It Dv TIME_WAIT
-Leap second has occurred.
-.It Dv TIME_ERROR
+.It TIME_WAIT
+Leap second has occurred within the last few seconds..
+.It TIME_ERROR
Clock not synchronized.
.El
.Sh ERRORS
@@ -143,8 +303,20 @@ system call may return
if the caller
does not have sufficient permissions.
.Sh SEE ALSO
-.Xr ntp_gettime 2 ,
+.Xr options 4 ,
+.Xr ntpd 8 ,
+.Xr hardclock 9 ,
+.Xr hz 9
+.Bl -tag -width indent
+.It Pa http://www.bipm.fr/enus/5_Scientific/c_time/time_1.html
+.It Pa http://www.boulder.nist.gov/timefreq/general/faq.htm
+.It Pa ftp://time.nist.gov/pub/leap-seconds.list
+.El
+.Sh BUGS
+Take note that this
+.Tn API
+is extremely complex and stateful.
+Users should not attempt modification without first
+reviewing the
.Xr ntpd 8
-.Sh AUTHORS
-This manual page was written by
-.An Tom Rhodes Aq trhodes@FreeBSD.org .
+sources in depth.
diff --git a/lib/libc/sys/ntp_gettime.2 b/lib/libc/sys/ntp_gettime.2
deleted file mode 100644
index f556d74..0000000
--- a/lib/libc/sys/ntp_gettime.2
+++ /dev/null
@@ -1,116 +0,0 @@
-.\"
-.\" Copyright (c) 2003 Tom Rhodes
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd June 21, 2003
-.Dt NTP_GETTIME 2
-.Os
-.Sh NAME
-.Nm ntp_gettime
-.Nd NTP user application interface
-.Sh SYNOPSIS
-.In sys/timex.h
-.Ft int
-.Fn ntp_gettime "struct ntptimeval *ntv"
-.Sh DESCRIPTION
-The time returned by
-.Fn ntp_gettime
-is in a
-.Vt timespec
-structure, but may be in either microsecond
-(seconds and microseconds) or nanosecond (seconds and nanoseconds) format.
-The particular format in use is determined by the
-.Dv STA_NANO
-bit of the status
-word returned by the
-.Fn ntp_adjtime
-system call.
-.Fn ntp_gettime
-has as argument a pointer to the
-.Vt ntptimeval
-structure with the following members:
-.Bd -literal
-struct ntptimeval {
- struct timespec time; /* current time (ns) (ro) */
- long maxerror; /* maximum error (us) (ro) */
- long esterror; /* estimated error (us) (ro) */
- long tai; /* TAI-UTC offset */
- int time_state; /* time status */
-};
-.Ed
-.Pp
-These are understood as:
-.Bl -tag -width ".Va time_state"
-.It Va time
-Current time (read-only).
-.It Va maxerror
-Maximum error in microseconds (read-only).
-.It Va esterror
-Estimated error in microseconds (read-only).
-.It Va tai
-Offset in seconds between the TAI and UTC time scales.
-This offset is published twice a year and is an integral number of
-seconds between TAI (which does not have leap seconds) and UTC (which
-does).
-.Xr ntpd 8
-or some other agent maintains this value.
-A value of 0 means unknown.
-As of the date of the manual page, the offset is 32 seconds.
-.It Va time_state
-Current time status.
-.El
-.Sh RETURN VALUES
-.Rv -std ntp_gettime
-.Pp
-Possible states of the clock are:
-.Pp
-.Bl -tag -compact -width ".Dv TIME_ERROR"
-.It Dv TIME_OK
-Everything okay, no leap second warning.
-.It Dv TIME_INS
-Positive leap second warning.
-At the end of the day, an additional second will be inserted after 23:59:59.
-.It Dv TIME_DEL
-Negative leap second warning.
-At the end of the day, 23:59:59 is skipped.
-.It Dv TIME_OOP
-Leap second in progress.
-.It Dv TIME_WAIT
-Leap second has occurred.
-.It Dv TIME_ERROR
-Clock not synchronized.
-.El
-.Sh SEE ALSO
-.Xr ntp_adjtime 2 ,
-.Xr ntpd 8
-.Bl -tag -width indent
-.It Pa http://www.bipm.fr/enus/5_Scientific/c_time/time_1.html
-.It Pa http://www.boulder.nist.gov/timefreq/general/faq.htm
-.It Pa ftp://time.nist.gov/pub/leap-seconds.list
-.El
-.Sh AUTHORS
-This manual page was written by
-.An Tom Rhodes Aq trhodes@FreeBSD.org .
OpenPOWER on IntegriCloud