diff options
author | Thomas Nordin <nordin@cvs.openbsd.org> | 2002-07-06 19:14:21 +0000 |
---|---|---|
committer | Thomas Nordin <nordin@cvs.openbsd.org> | 2002-07-06 19:14:21 +0000 |
commit | adb28585e4802d642142e770be7ef276683bb58f (patch) | |
tree | 6016909e7ec82b58a471cd40838fb68a0d275d3d | |
parent | 4f23015d08ae2c991a6560c6d70151190bec00b8 (diff) |
Remove kernel support for NTP. ok deraadt@ and tholo@
-rw-r--r-- | bin/systrace/openbsd-syscalls.c | 4 | ||||
-rw-r--r-- | distrib/sets/lists/comp/mi | 1 | ||||
-rw-r--r-- | lib/libc/gen/sysctl.3 | 7 | ||||
-rw-r--r-- | lib/libc/sys/Makefile.inc | 3 | ||||
-rw-r--r-- | lib/libc/sys/makelintstub.sh | 3 | ||||
-rw-r--r-- | sbin/sysctl/sysctl.8 | 3 | ||||
-rw-r--r-- | sbin/sysctl/sysctl.c | 9 | ||||
-rw-r--r-- | sys/arch/amiga/dev/ser.c | 18 | ||||
-rw-r--r-- | sys/arch/i386/conf/DISKLESS | 3 | ||||
-rw-r--r-- | sys/arch/i386/i386/microtime.s | 32 | ||||
-rw-r--r-- | sys/arch/i386/isa/clock.c | 8 | ||||
-rw-r--r-- | sys/compat/freebsd/freebsd_misc.c | 18 | ||||
-rw-r--r-- | sys/compat/freebsd/freebsd_timex.h | 304 | ||||
-rw-r--r-- | sys/compat/freebsd/syscalls.master | 4 | ||||
-rw-r--r-- | sys/compat/netbsd/syscalls.master | 7 | ||||
-rw-r--r-- | sys/compat/svr4/syscalls.master | 7 | ||||
-rw-r--r-- | sys/conf/GENERIC | 4 | ||||
-rw-r--r-- | sys/conf/files | 3 | ||||
-rw-r--r-- | sys/dev/ic/com.c | 19 | ||||
-rw-r--r-- | sys/kern/kern_clock.c | 801 | ||||
-rw-r--r-- | sys/kern/kern_ntptime.c | 374 | ||||
-rw-r--r-- | sys/kern/kern_sysctl.c | 4 | ||||
-rw-r--r-- | sys/kern/syscalls.master | 7 | ||||
-rw-r--r-- | sys/sys/sysctl.h | 77 | ||||
-rw-r--r-- | sys/sys/systm.h | 8 | ||||
-rw-r--r-- | sys/sys/timex.h | 303 | ||||
-rw-r--r-- | usr.bin/kdump/kdump.c | 6 |
27 files changed, 64 insertions, 1973 deletions
diff --git a/bin/systrace/openbsd-syscalls.c b/bin/systrace/openbsd-syscalls.c index 840d4d03e8c..f7c00c01c01 100644 --- a/bin/systrace/openbsd-syscalls.c +++ b/bin/systrace/openbsd-syscalls.c @@ -1,4 +1,4 @@ -/* $OpenBSD: openbsd-syscalls.c,v 1.6 2002/06/21 15:26:06 provos Exp $ */ +/* $OpenBSD: openbsd-syscalls.c,v 1.7 2002/07/06 19:14:19 nordin Exp $ */ /* * Copyright 2002 Niels Provos <provos@citi.umich.edu> * All rights reserved. @@ -51,7 +51,6 @@ #define SYSVMSG #define SYSVSHM #define LFS -#define NTP #include "../../sys/kern/syscalls.c" #include "../../sys/compat/bsdos/bsdos_syscalls.c" @@ -71,7 +70,6 @@ #undef SYSVMSG #undef SYSVSHM #undef LFS -#undef NTP #include <sys/ioctl.h> #include <sys/tree.h> diff --git a/distrib/sets/lists/comp/mi b/distrib/sets/lists/comp/mi index 54017e81e89..6b5424f3732 100644 --- a/distrib/sets/lists/comp/mi +++ b/distrib/sets/lists/comp/mi @@ -1445,7 +1445,6 @@ ./usr/include/sys/timeb.h ./usr/include/sys/timeout.h ./usr/include/sys/times.h -./usr/include/sys/timex.h ./usr/include/sys/tprintf.h ./usr/include/sys/tree.h ./usr/include/sys/tty.h diff --git a/lib/libc/gen/sysctl.3 b/lib/libc/gen/sysctl.3 index 7a71aeb2a25..3b07f724840 100644 --- a/lib/libc/gen/sysctl.3 +++ b/lib/libc/gen/sysctl.3 @@ -1,4 +1,4 @@ -.\" $OpenBSD: sysctl.3,v 1.93 2002/06/11 08:54:36 angelos Exp $ +.\" $OpenBSD: sysctl.3,v 1.94 2002/07/06 19:14:19 nordin Exp $ .\" .\" Copyright (c) 1993 .\" The Regents of the University of California. All rights reserved. @@ -293,7 +293,6 @@ information. .It Dv KERN_NOSUIDCOREDUMP No " integer yes" .It Dv KERN_NPROCS No " integer no" .It Dv KERN_NSELCOLL No " integer no" -.It Dv KERN_NTPTIME No " struct ntptimeval no" .It Dv KERN_NUMVNODES No " integer no" .It Dv KERN_OSRELEASE No " string no" .It Dv KERN_OSREV No " integer no" @@ -417,10 +416,6 @@ Programs with their set-user-ID bit set will not dump core when this is set. Number of .Xr select 2 collisions. -.It Dv KERN_NTPTIME -Returns a -.Li strct ntptimeval , -containing kernel precision timekeeping information. .It Dv KERN_NUMVNODES Number of vnodes in use. .It Dv KERN_OSRELEASE diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc index 95d3d6546b7..1c8bce11d8a 100644 --- a/lib/libc/sys/Makefile.inc +++ b/lib/libc/sys/Makefile.inc @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile.inc,v 1.53 2002/06/10 17:46:41 fgsch Exp $ +# $OpenBSD: Makefile.inc,v 1.54 2002/07/06 19:14:20 nordin Exp $ # $NetBSD: Makefile.inc,v 1.35 1995/10/16 23:49:07 jtc Exp $ # @(#)Makefile.inc 8.1 (Berkeley) 6/17/93 @@ -49,7 +49,6 @@ ASM= accept.o access.o acct.o adjtime.o bind.o chdir.o chflags.o chmod.o \ mkfifo.o mknod.o mlock.o mlockall.o \ mount.o mprotect.o msgctl.o msgget.o msgrcv.o msgsnd.o msync.o \ munlock.o munlockall.o munmap.o nanosleep.o nfssvc.o \ - ntp_gettime.o ntp_adjtime.o \ open.o pathconf.o pipe.o poll.o profil.o quotactl.o \ read.o readlink.o readv.o reboot.o recvfrom.o recvmsg.o rename.o \ revoke.o rmdir.o select.o semget.o semop.o sendmsg.o sendto.o \ diff --git a/lib/libc/sys/makelintstub.sh b/lib/libc/sys/makelintstub.sh index b5deb3fe59f..2d8ad2e661a 100644 --- a/lib/libc/sys/makelintstub.sh +++ b/lib/libc/sys/makelintstub.sh @@ -1,5 +1,5 @@ #!/bin/sh - -# $OpenBSD: makelintstub.sh,v 1.1 1998/02/08 22:45:15 tholo Exp $ +# $OpenBSD: makelintstub.sh,v 1.2 2002/07/06 19:14:20 nordin Exp $ # $NetBSD: makelintstub,v 1.2 1997/11/05 05:46:18 thorpej Exp $ # # Copyright (c) 1996, 1997 Christopher G. Demetriou. All rights reserved. @@ -59,7 +59,6 @@ header() #include <sys/msg.h> #include <sys/sem.h> #include <sys/shm.h> - #include <sys/timex.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <sys/ktrace.h> diff --git a/sbin/sysctl/sysctl.8 b/sbin/sysctl/sysctl.8 index 84a6358fcf9..e82c2f5af71 100644 --- a/sbin/sysctl/sysctl.8 +++ b/sbin/sysctl/sysctl.8 @@ -1,4 +1,4 @@ -.\" $OpenBSD: sysctl.8,v 1.88 2002/06/11 08:55:20 angelos Exp $ +.\" $OpenBSD: sysctl.8,v 1.89 2002/07/06 19:14:20 nordin Exp $ .\" $NetBSD: sysctl.8,v 1.4 1995/09/30 07:12:49 thorpej Exp $ .\" .\" Copyright (c) 1993 @@ -121,7 +121,6 @@ privilege can change the value. .It kern.job_control integer no .It kern.saved_ids integer no .It kern.boottime struct no -.It kern.ntptime struct no .It kern.cp_time struct no .It kern.nchstats struct no .It kern.forkstat struct no diff --git a/sbin/sysctl/sysctl.c b/sbin/sysctl/sysctl.c index e1f1cc79827..89d1c4d2e40 100644 --- a/sbin/sysctl/sysctl.c +++ b/sbin/sysctl/sysctl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sysctl.c,v 1.83 2002/07/03 22:32:34 deraadt Exp $ */ +/* $OpenBSD: sysctl.c,v 1.84 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: sysctl.c,v 1.9 1995/09/30 07:12:50 thorpej Exp $ */ /* @@ -44,7 +44,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)sysctl.c 8.5 (Berkeley) 5/9/95"; #else -static char *rcsid = "$OpenBSD: sysctl.c,v 1.83 2002/07/03 22:32:34 deraadt Exp $"; +static char *rcsid = "$OpenBSD: sysctl.c,v 1.84 2002/07/06 19:14:20 nordin Exp $"; #endif #endif /* not lint */ @@ -386,11 +386,6 @@ parse(char *string, int flags) return; warnx("use ps to view %s information", string); return; - case KERN_NTPTIME: - if (flags == 0) - return; - warnx("use xntpdc to view %s information", string); - return; case KERN_CLOCKRATE: special |= CLOCK; break; diff --git a/sys/arch/amiga/dev/ser.c b/sys/arch/amiga/dev/ser.c index 2d03e60def5..4c3dfe7bfd5 100644 --- a/sys/arch/amiga/dev/ser.c +++ b/sys/arch/amiga/dev/ser.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ser.c,v 1.13 2002/06/11 03:25:43 miod Exp $ */ +/* $OpenBSD: ser.c,v 1.14 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: ser.c,v 1.43 1998/01/12 10:40:11 thorpej Exp $ */ /* @@ -607,10 +607,6 @@ sermint(unit) struct ser_softc *sc = (struct ser_softc *)ser_cd.cd_devs[unit]; struct tty *tp = sc->ser_tty; u_char stat, last, istat; -#ifdef PPS_SYNC - struct timeval tv; - long usec; -#endif /* PPS_SYNC */ if (!tp) return; @@ -634,18 +630,6 @@ sermint(unit) istat = stat ^ last; if (ISSET(istat, CIAB_PRA_CD)) { -#ifdef PPS_SYNC - if (ISSET(sc->ser_swflags, TIOCFLAG_PPS)) { - if (ISDCD(stat)) { - usec = time.tv_usec; - microtime(&tv); - usec = tv.tv_usec - usec; - if (usec < 0) - usec += 1000000; - hardpps(&tv, usec); - } - } -#endif /* PPS_SYNC */ if (!ISSET(sc->ser_swflags, TIOCFLAG_SOFTCAR) && (*linesw[tp->t_line].l_modem)(tp, ISDCD(stat)) == 0) { diff --git a/sys/arch/i386/conf/DISKLESS b/sys/arch/i386/conf/DISKLESS index 56e49ee07a4..38e1415e2e9 100644 --- a/sys/arch/i386/conf/DISKLESS +++ b/sys/arch/i386/conf/DISKLESS @@ -1,4 +1,4 @@ -# $OpenBSD: DISKLESS,v 1.44 2002/06/18 01:00:04 nate Exp $ +# $OpenBSD: DISKLESS,v 1.45 2002/07/06 19:14:20 nordin Exp $ # $NetBSD: DISKLESS,v 1.26 1996/05/20 18:17:16 mrg Exp $ # # DISKLESS -- Generic machine setup for diskless boot. @@ -36,7 +36,6 @@ option CRYPTO # Cryptographic framework maxusers 32 # estimated number of users option TIMEZONE=0 # time zone to adjust RTC time by option DST=0 # daylight saving time used by RTC -option NTP # hooks supporting the Network Time Protocol option DDB # in-kernel debugger #option DDB_SAFE_CONSOLE # allow break into ddb during boot diff --git a/sys/arch/i386/i386/microtime.s b/sys/arch/i386/i386/microtime.s index eb0667d9d6b..22ad3b82224 100644 --- a/sys/arch/i386/i386/microtime.s +++ b/sys/arch/i386/i386/microtime.s @@ -1,4 +1,4 @@ -/* $OpenBSD: microtime.s,v 1.14 2001/09/20 17:02:30 mpech Exp $ */ +/* $OpenBSD: microtime.s,v 1.15 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: microtime.s,v 1.16 1995/04/17 12:06:47 cgd Exp $ */ /*- @@ -48,13 +48,7 @@ #ifndef HZ ENTRY(microtime) -#if (defined(I586_CPU) || defined(I686_CPU)) && defined(NTP) - movl _pentium_mhz, %ecx - testl %ecx, %ecx - jne pentium_microtime -#else xorl %ecx,%ecx -#endif movb $(TIMER_SEL0|TIMER_LATCH),%al pushfl @@ -140,32 +134,12 @@ common_microtime: ret #if defined(I586_CPU) || defined(I686_CPU) + # XXX: Move to machdep.c? + .data .globl _pentium_base_tsc .comm _pentium_base_tsc,8 .text - -#if defined (NTP) - .align 2, 0x90 -pentium_microtime: - pushfl - cli - .byte 0x0f, 0x31 # RDTSC - subl _pentium_base_tsc,%eax - sbbl _pentium_base_tsc+4,%edx - /* - * correct the high word first so we won't - * receive a result overflow aka div/0 fault - */ - pushl %eax - movl %edx, %eax - shll $16, %edx - divw %cx - movzwl %dx, %edx - popl %eax - divl %ecx - jmp common_microtime -#endif #endif #endif diff --git a/sys/arch/i386/isa/clock.c b/sys/arch/i386/isa/clock.c index 13606cbb005..7fdb55e9435 100644 --- a/sys/arch/i386/isa/clock.c +++ b/sys/arch/i386/isa/clock.c @@ -1,4 +1,4 @@ -/* $OpenBSD: clock.c,v 1.27 2002/05/17 18:55:41 mickey Exp $ */ +/* $OpenBSD: clock.c,v 1.28 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: clock.c,v 1.39 1996/05/12 23:11:54 mycroft Exp $ */ /*- @@ -450,17 +450,11 @@ void calibrate_cyclecounter() { unsigned long long count, last_count; -#ifdef NTP - extern long time_precision; -#endif __asm __volatile(".byte 0xf, 0x31" : "=A" (last_count)); delay(1000000); __asm __volatile(".byte 0xf, 0x31" : "=A" (count)); pentium_mhz = ((count - last_count) + 500000) / 1000000; -#ifdef NTP - time_precision = 1; /* XXX */ -#endif } #endif diff --git a/sys/compat/freebsd/freebsd_misc.c b/sys/compat/freebsd/freebsd_misc.c index 937e1cb1481..07af316e21a 100644 --- a/sys/compat/freebsd/freebsd_misc.c +++ b/sys/compat/freebsd/freebsd_misc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: freebsd_misc.c,v 1.7 2001/02/03 02:45:31 mickey Exp $ */ +/* $OpenBSD: freebsd_misc.c,v 1.8 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: freebsd_misc.c,v 1.2 1996/05/03 17:03:10 christos Exp $ */ /* @@ -47,7 +47,6 @@ #include <compat/freebsd/freebsd_syscallargs.h> #include <compat/freebsd/freebsd_util.h> #include <compat/freebsd/freebsd_rtprio.h> -#include <compat/freebsd/freebsd_timex.h> /* just a place holder */ @@ -68,21 +67,6 @@ freebsd_sys_rtprio(p, v, retval) return ENOSYS; /* XXX */ } -int -freebsd_ntp_adjtime(p, v, retval) - struct proc *p; - void *v; - register_t *retval; -{ -#ifdef notyet - struct freebsd_ntp_adjtime_args /* { - syscallarg(struct freebsd_timex *) tp; - } */ *uap = v; -#endif - - return ENOSYS; /* XXX */ -} - /* * Argh. * The syscalls.master mechanism cannot handle a system call that is in diff --git a/sys/compat/freebsd/freebsd_timex.h b/sys/compat/freebsd/freebsd_timex.h deleted file mode 100644 index 54c59ee5cc7..00000000000 --- a/sys/compat/freebsd/freebsd_timex.h +++ /dev/null @@ -1,304 +0,0 @@ -/* $OpenBSD: freebsd_timex.h,v 1.4 2002/03/14 01:26:49 millert Exp $ */ - -/****************************************************************************** - * * - * Copyright (c) David L. Mills 1993, 1994 * - * * - * 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 - * - * 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 - */ -/* - * This header file defines the Network Time Protocol (NTP) interfaces - * for user and daemon application programs. These are implemented using - * private syscalls and data structures and require specific kernel - * support. - * - * NAME - * ntp_gettime - NTP user application interface - * - * SYNOPSIS - * #include <sys/timex.h> - * - * int syscall(SYS_ntp_gettime, tptr) - * - * int SYS_ntp_gettime defined in syscall.h header file - * struct ntptimeval *tptr pointer to ntptimeval structure - * - * NAME - * ntp_adjtime - NTP daemon application interface - * - * SYNOPSIS - * #include <sys/timex.h> - * - * int syscall(SYS_ntp_adjtime, mode, tptr) - * - * int SYS_ntp_adjtime defined in syscall.h header file - * struct timex *tptr pointer to timex structure - * - */ -#ifndef _FREEBSD_TIMEX_H -#define _FREEBSD_TIMEX_H 1 - -#ifndef MSDOS /* Microsoft specific */ -#include <sys/syscall.h> -#endif /* MSDOS */ - -/* - * The following defines establish the engineering parameters of the - * phase-lock loop (PLL) model used in the kernel implementation. These - * parameters have been carefully chosen by analysis for good stability - * and wide dynamic range. - * - * The hz variable is defined in the kernel build environment. It - * establishes the timer interrupt frequency, 100 Hz for the SunOS - * kernel, 256 Hz for the Ultrix kernel and 1024 Hz for the OSF/1 - * kernel. SHIFT_HZ expresses the same value as the nearest power of two - * in order to avoid hardware multiply operations. - * - * SHIFT_KG and SHIFT_KF establish the damping of the PLL and are chosen - * for a slightly underdamped convergence characteristic. - * - * MAXTC establishes the maximum time constant of the PLL. With the - * SHIFT_KG and SHIFT_KF values given and a time constant range from - * zero to MAXTC, the PLL will converge in 15 minutes to 16 hours, - * respectively. - */ -#define SHIFT_HZ 7 /* log2(hz) */ -#define SHIFT_KG 6 /* phase factor (shift) */ -#define SHIFT_KF 16 /* frequency factor (shift) */ -#define MAXTC 6 /* maximum time constant (shift) */ - -/* - * The following defines establish the scaling of the various variables - * used by the PLL. They are chosen to allow the greatest precision - * possible without overflow of a 32-bit word. - * - * SHIFT_SCALE defines the scaling (shift) of the time_phase variable, - * which serves as a an extension to the low-order bits of the system - * clock variable time.tv_usec. - * - * SHIFT_UPDATE defines the scaling (shift) of the time_offset variable, - * which represents the current time offset with respect to standard - * time. - * - * SHIFT_USEC defines the scaling (shift) of the time_freq and - * time_tolerance variables, which represent the current frequency - * offset and maximum frequency tolerance. - * - * FINEUSEC is 1 us in SHIFT_UPDATE units of the time_phase variable. - */ -#define SHIFT_SCALE 23 /* phase scale (shift) */ -#define SHIFT_UPDATE (SHIFT_KG + MAXTC) /* time offset scale (shift) */ -#define SHIFT_USEC 16 /* frequency offset scale (shift) */ -#define FINEUSEC (1L << SHIFT_SCALE) /* 1 us in phase units */ - -/* - * The following defines establish the performance envelope of the PLL. - * They insure it operates within predefined limits, in order to satisfy - * correctness assertions. An excursion which exceeds these bounds is - * clamped to the bound and operation proceeds accordingly. In practice, - * this can occur only if something has failed or is operating out of - * tolerance, but otherwise the PLL continues to operate in a stable - * mode. - * - * MAXPHASE must be set greater than or equal to CLOCK.MAX (128 ms), as - * defined in the NTP specification. CLOCK.MAX establishes the maximum - * time offset allowed before the system time is reset, rather than - * incrementally adjusted. Here, the maximum offset is clamped to - * MAXPHASE only in order to prevent overflow errors due to defective - * protocol implementations. - * - * MAXFREQ is the maximum frequency tolerance of the CPU clock - * oscillator plus the maximum slew rate allowed by the protocol. It - * should be set to at least the frequency tolerance of the oscillator - * plus 100 ppm for vernier frequency adjustments. If the kernel - * PPS discipline code is configured (PPS_SYNC), the oscillator time and - * frequency are disciplined to an external source, presumably with - * negligible time and frequency error relative to UTC, and MAXFREQ can - * be reduced. - * - * MAXTIME is the maximum jitter tolerance of the PPS signal if the - * kernel PPS discipline code is configured (PPS_SYNC). - * - * MINSEC and MAXSEC define the lower and upper bounds on the interval - * between protocol updates. - */ -#define MAXPHASE 128000L /* max phase error (us) */ -#ifdef PPS_SYNC -#define MAXFREQ (100L << SHIFT_USEC) /* max freq error (100 ppm) */ -#define MAXTIME (200L << PPS_AVG) /* max PPS error (jitter) (200 us) */ -#else -#define MAXFREQ (200L << SHIFT_USEC) /* max freq error (200 ppm) */ -#endif /* PPS_SYNC */ -#define MINSEC 16L /* min interval between updates (s) */ -#define MAXSEC 1200L /* max interval between updates (s) */ - -#ifdef PPS_SYNC -/* - * The following defines are used only if a pulse-per-second (PPS) - * signal is available and connected via a modem control lead, such as - * produced by the optional ppsclock feature incorporated in the Sun - * asynch driver. They establish the design parameters of the frequency- - * lock loop used to discipline the CPU clock oscillator to the PPS - * signal. - * - * PPS_AVG is the averaging factor for the frequency loop, as well as - * the time and frequency dispersion. - * - * PPS_SHIFT and PPS_SHIFTMAX specify the minimum and maximum - * calibration intervals, respectively, in seconds as a power of two. - * - * PPS_VALID is the maximum interval before the PPS signal is considered - * invalid and protocol updates used directly instead. - * - * MAXGLITCH is the maximum interval before a time offset of more than - * MAXTIME is believed. - */ -#define PPS_AVG 2 /* pps averaging constant (shift) */ -#define PPS_SHIFT 2 /* min interval duration (s) (shift) */ -#define PPS_SHIFTMAX 8 /* max interval duration (s) (shift) */ -#define PPS_VALID 120 /* pps signal watchdog max (s) */ -#define MAXGLITCH 30 /* pps signal glitch max (s) */ -#endif /* PPS_SYNC */ - -/* - * The following defines and structures define the user interface for - * the ntp_gettime() and ntp_adjtime() system calls. - * - * Control mode codes (timex.modes) - */ -#define MOD_OFFSET 0x0001 /* set time offset */ -#define MOD_FREQUENCY 0x0002 /* set frequency offset */ -#define MOD_MAXERROR 0x0004 /* set maximum time error */ -#define MOD_ESTERROR 0x0008 /* set estimated time error */ -#define MOD_STATUS 0x0010 /* set clock status bits */ -#define MOD_TIMECONST 0x0020 /* set pll time constant */ -#define MOD_CLKB 0x4000 /* set clock B */ -#define MOD_CLKA 0x8000 /* set clock A */ - -/* - * Status codes (timex.status) - */ -#define STA_PLL 0x0001 /* enable PLL updates (rw) */ -#define STA_PPSFREQ 0x0002 /* enable PPS freq discipline (rw) */ -#define STA_PPSTIME 0x0004 /* enable PPS time discipline (rw) */ - -#define STA_INS 0x0010 /* insert leap (rw) */ -#define STA_DEL 0x0020 /* delete leap (rw) */ -#define STA_UNSYNC 0x0040 /* clock unsynchronized (rw) */ - -#define STA_PPSSIGNAL 0x0100 /* PPS signal present (ro) */ -#define STA_PPSJITTER 0x0200 /* PPS signal jitter exceeded (ro) */ -#define STA_PPSWANDER 0x0400 /* PPS signal wander exceeded (ro) */ -#define STA_PPSERROR 0x0800 /* PPS signal calibration error (ro) */ - -#define STA_CLOCKERR 0x1000 /* clock hardware fault (ro) */ - -#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \ - STA_PPSERROR | STA_CLOCKERR) /* read-only bits */ - -/* - * Clock states (time_state) - */ -#define TIME_OK 0 /* no leap second warning */ -#define TIME_INS 1 /* insert leap second warning */ -#define TIME_DEL 2 /* delete leap second warning */ -#define TIME_OOP 3 /* leap second in progress */ -#define TIME_WAIT 4 /* leap second has occurred */ -#define TIME_ERROR 5 /* clock not synchronized */ - -/* - * NTP user interface (ntp_gettime()) - used to read kernel clock values - * - * Note: maximum error = NTP synch distance = dispersion + delay / 2; - * estimated error = NTP dispersion. - */ -struct freebsd_ntptimeval { - struct timeval time; /* current time (ro) */ - long maxerror; /* maximum error (us) (ro) */ - long esterror; /* estimated error (us) (ro) */ - int time_state; /* what ntp_gettime returns */ -}; - -/* - * NTP daemon interface - (ntp_adjtime()) used to discipline CPU clock - * oscillator - */ -struct freebsd_timex { - unsigned int modes; /* clock mode bits (wo) */ - 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. - */ - 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) */ - -}; -#ifdef __FreeBSD__ - -/* - * sysctl identifiers underneath kern.ntp_pll - */ -#define NTP_PLL_GETTIME 1 /* used by ntp_gettime() */ -#define NTP_PLL_MAXID 2 /* number of valid ids */ - -#define NTP_PLL_NAMES { \ - { 0, 0 }, \ - { "gettime", CTLTYPE_STRUCT }, \ - } - -#ifndef _KERNEL -#include <sys/cdefs.h> - -__BEGIN_DECLS -extern int ntp_gettime(struct ntptimeval *); -extern int ntp_adjtime(struct timex *); -__END_DECLS - -#endif /* not _KERNEL */ - -#endif /* __FreeBSD__ */ -#endif /* _FREEBSD_TIMEX_H */ diff --git a/sys/compat/freebsd/syscalls.master b/sys/compat/freebsd/syscalls.master index 141cb998d52..496bb58f76b 100644 --- a/sys/compat/freebsd/syscalls.master +++ b/sys/compat/freebsd/syscalls.master @@ -1,4 +1,4 @@ - $OpenBSD: syscalls.master,v 1.17 2002/03/14 00:42:25 miod Exp $ + $OpenBSD: syscalls.master,v 1.18 2002/07/06 19:14:20 nordin Exp $ ; $NetBSD: syscalls.master,v 1.3 1995/10/10 18:28:40 mycroft Exp $ ; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94 @@ -337,7 +337,7 @@ 173 UNIMPL pread 174 UNIMPL pwrite 175 UNIMPL -176 STD { int freebsd_ntp_adjtime(struct freebsd_timex *tp); } +176 UNIMPL ntp_adjtime 177 UNIMPL sfork 178 UNIMPL getdescriptor 179 UNIMPL setdescriptor diff --git a/sys/compat/netbsd/syscalls.master b/sys/compat/netbsd/syscalls.master index 23e58808cb2..32dbfe9a7ae 100644 --- a/sys/compat/netbsd/syscalls.master +++ b/sys/compat/netbsd/syscalls.master @@ -1,4 +1,4 @@ -; $OpenBSD: syscalls.master,v 1.16 2002/03/14 00:42:25 miod Exp $ +; $OpenBSD: syscalls.master,v 1.17 2002/07/06 19:14:20 nordin Exp $ ; @(#)syscalls.master 8.2 (Berkeley) 1/13/94 @@ -372,13 +372,8 @@ size_t nbyte, int pad, off_t offset); } 174 NOARGS { ssize_t sys_pwrite(int fd, const void *buf, \ size_t nbyte, int pad, off_t offset); } -#ifdef NTP -175 NOARGS { int sys_ntp_gettime(struct ntptimeval *ntvp); } -176 NOARGS { int sys_ntp_adjtime(struct timex *tp); } -#else 175 UNIMPL ntp_gettime 176 UNIMPL ntp_adjtime -#endif 177 UNIMPL 178 UNIMPL 179 UNIMPL diff --git a/sys/compat/svr4/syscalls.master b/sys/compat/svr4/syscalls.master index f2eaa6f6fc3..8e22a4048de 100644 --- a/sys/compat/svr4/syscalls.master +++ b/sys/compat/svr4/syscalls.master @@ -1,4 +1,4 @@ - $OpenBSD: syscalls.master,v 1.31 2002/03/14 03:16:03 millert Exp $ + $OpenBSD: syscalls.master,v 1.32 2002/07/06 19:14:20 nordin Exp $ ; $NetBSD: syscalls.master,v 1.17 1996/02/10 17:12:51 christos Exp $ ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 @@ -385,10 +385,5 @@ 246 NOARGS { int sys_setsockopt(int s, int level, int name, \ const void *val, int valsize); } 247 UNIMPL sockconfig -#ifdef NTP -248 NOARGS { int sys_ntp_gettime(struct ntptimeval *ntvp); } -249 NOARGS { int sys_ntp_adjtime(struct timex *tp); } -#else 248 UNIMPL ntp_gettime 249 UNIMPL ntp_adjtime -#endif diff --git a/sys/conf/GENERIC b/sys/conf/GENERIC index dc7b344ee44..bb00665f2d0 100644 --- a/sys/conf/GENERIC +++ b/sys/conf/GENERIC @@ -1,12 +1,10 @@ -# $OpenBSD: GENERIC,v 1.88 2002/05/16 21:28:16 provos Exp $ +# $OpenBSD: GENERIC,v 1.89 2002/07/06 19:14:20 nordin Exp $ # # Machine-independent option; used by all architectures for their # GENERIC kernel #option INSECURE # default to secure -option NTP # hooks supporting the Network Time Protocol - option DDB # in-kernel debugger #option DDB_SAFE_CONSOLE # allow break into ddb during boot #makeoptions DEBUG="-g" # compile full symbol table diff --git a/sys/conf/files b/sys/conf/files index 7d078a4d8f7..28696050584 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1,4 +1,4 @@ -# $OpenBSD: files,v 1.255 2002/06/28 00:34:54 smurph Exp $ +# $OpenBSD: files,v 1.256 2002/07/06 19:14:20 nordin Exp $ # $NetBSD: files,v 1.87 1996/05/19 17:17:50 jonathan Exp $ # @(#)files.newconf 7.5 (Berkeley) 5/10/93 @@ -506,7 +506,6 @@ file kern/kern_kthread.c file kern/kern_ktrace.c ktrace file kern/kern_lock.c file kern/kern_lkm.c lkm -file kern/kern_ntptime.c file kern/kern_malloc.c file kern/kern_malloc_debug.c malloc_debug file kern/kern_physio.c diff --git a/sys/dev/ic/com.c b/sys/dev/ic/com.c index 3df62ebc7d9..a8854be0a99 100644 --- a/sys/dev/ic/com.c +++ b/sys/dev/ic/com.c @@ -1,4 +1,4 @@ -/* $OpenBSD: com.c,v 1.85 2002/06/11 04:54:10 miod Exp $ */ +/* $OpenBSD: com.c,v 1.86 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: com.c,v 1.82.4.1 1996/06/02 09:08:00 mrg Exp $ */ /* @@ -1294,10 +1294,6 @@ comintr(arg) bus_space_handle_t ioh = sc->sc_ioh; struct tty *tp; u_char lsr, data, msr, delta; -#ifdef PPS_SYNC - struct timeval tv; - long usec; -#endif /* PPS_SYNC */ if (!sc->sc_tty) return (0); /* can't do squat. */ @@ -1358,19 +1354,6 @@ comintr(arg) delta = msr ^ sc->sc_msr; sc->sc_msr = msr; if (ISSET(delta, MSR_DCD)) { -#ifdef PPS_SYNC - if (ISSET(sc->sc_swflags, COM_SW_PPS)) { - if (ISSET(msr, MSR_DCD)) { - usec = time.tv_usec; - microtime(&tv); - usec = tv.tv_usec - usec; - if (usec < 0) - usec += 1000000; - hardpps(&tv, usec); - } - } - else -#endif /* PPS_SYNC */ if (!ISSET(sc->sc_swflags, COM_SW_SOFTCAR) && (*linesw[tp->t_line].l_modem)(tp, ISSET(msr, MSR_DCD)) == 0) { CLR(sc->sc_mcr, sc->sc_dtr); diff --git a/sys/kern/kern_clock.c b/sys/kern/kern_clock.c index b4db87d8e4b..9683ffeea48 100644 --- a/sys/kern/kern_clock.c +++ b/sys/kern/kern_clock.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_clock.c,v 1.38 2002/07/03 21:19:08 miod Exp $ */ +/* $OpenBSD: kern_clock.c,v 1.39 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: kern_clock.c,v 1.34 1996/06/09 04:51:03 briggs Exp $ */ /*- @@ -52,7 +52,6 @@ #include <sys/signalvar.h> #include <uvm/uvm_extern.h> #include <sys/sysctl.h> -#include <sys/timex.h> #include <sys/sched.h> #include <machine/cpu.h> @@ -85,179 +84,6 @@ * profhz/stathz for statistics. (For profiling, every tick counts.) */ -#ifdef NTP /* NTP phase-locked loop in kernel */ -/* - * Phase/frequency-lock loop (PLL/FLL) definitions - * - * The following variables are read and set by the ntp_adjtime() system - * call. - * - * time_state shows the state of the system clock, with values defined - * in the timex.h header file. - * - * time_status shows the status of the system clock, with bits defined - * in the timex.h header file. - * - * time_offset is used by the PLL/FLL to adjust the system time in small - * increments. - * - * time_constant determines the bandwidth or "stiffness" of the PLL. - * - * time_tolerance determines maximum frequency error or tolerance of the - * CPU clock oscillator and is a property of the architecture; however, - * in principle it could change as result of the presence of external - * discipline signals, for instance. - * - * time_precision is usually equal to the kernel tick variable; however, - * in cases where a precision clock counter or external clock is - * available, the resolution can be much less than this and depend on - * whether the external clock is working or not. - * - * time_maxerror is initialized by a ntp_adjtime() call and increased by - * the kernel once each second to reflect the maximum error bound - * growth. - * - * time_esterror is set and read by the ntp_adjtime() call, but - * otherwise not used by the kernel. - */ -int time_state = TIME_OK; /* clock state */ -int time_status = STA_UNSYNC; /* clock status bits */ -long time_offset = 0; /* time offset (us) */ -long time_constant = 0; /* pll time constant */ -long time_tolerance = MAXFREQ; /* frequency tolerance (scaled ppm) */ -long time_precision; /* clock precision (us) */ -long time_maxerror = MAXPHASE; /* maximum error (us) */ -long time_esterror = MAXPHASE; /* estimated error (us) */ - -/* - * The following variables establish the state of the PLL/FLL and the - * residual time and frequency offset of the local clock. The scale - * factors are defined in the timex.h header file. - * - * time_phase and time_freq are the phase increment and the frequency - * increment, respectively, of the kernel time variable. - * - * time_freq is set via ntp_adjtime() from a value stored in a file when - * the synchronization daemon is first started. Its value is retrieved - * via ntp_adjtime() and written to the file about once per hour by the - * daemon. - * - * time_adj is the adjustment added to the value of tick at each timer - * interrupt and is recomputed from time_phase and time_freq at each - * seconds rollover. - * - * time_reftime is the second's portion of the system time at the last - * call to ntp_adjtime(). It is used to adjust the time_freq variable - * and to increase the time_maxerror as the time since last update - * increases. - */ -long time_phase = 0; /* phase offset (scaled us) */ -long time_freq = 0; /* frequency offset (scaled ppm) */ -long time_adj = 0; /* tick adjust (scaled 1 / hz) */ -long time_reftime = 0; /* time at last adjustment (s) */ - -#ifdef PPS_SYNC -/* - * The following variables are used only if the kernel PPS discipline - * code is configured (PPS_SYNC). The scale factors are defined in the - * timex.h header file. - * - * pps_time contains the time at each calibration interval, as read by - * microtime(). pps_count counts the seconds of the calibration - * interval, the duration of which is nominally pps_shift in powers of - * two. - * - * pps_offset is the time offset produced by the time median filter - * pps_tf[], while pps_jitter is the dispersion (jitter) measured by - * this filter. - * - * pps_freq is the frequency offset produced by the frequency median - * filter pps_ff[], while pps_stabil is the dispersion (wander) measured - * by this filter. - * - * pps_usec is latched from a high resolution counter or external clock - * at pps_time. Here we want the hardware counter contents only, not the - * contents plus the time_tv.usec as usual. - * - * pps_valid counts the number of seconds since the last PPS update. It - * is used as a watchdog timer to disable the PPS discipline should the - * PPS signal be lost. - * - * pps_glitch counts the number of seconds since the beginning of an - * offset burst more than tick/2 from current nominal offset. It is used - * mainly to suppress error bursts due to priority conflicts between the - * PPS interrupt and timer interrupt. - * - * pps_intcnt counts the calibration intervals for use in the interval- - * adaptation algorithm. It's just too complicated for words. - */ -struct timeval pps_time; /* kernel time at last interval */ -long pps_tf[] = {0, 0, 0}; /* pps time offset median filter (us) */ -long pps_offset = 0; /* pps time offset (us) */ -long pps_jitter = MAXTIME; /* time dispersion (jitter) (us) */ -long pps_ff[] = {0, 0, 0}; /* pps frequency offset median filter */ -long pps_freq = 0; /* frequency offset (scaled ppm) */ -long pps_stabil = MAXFREQ; /* frequency dispersion (scaled ppm) */ -long pps_usec = 0; /* microsec counter at last interval */ -long pps_valid = PPS_VALID; /* pps signal watchdog counter */ -int pps_glitch = 0; /* pps signal glitch counter */ -int pps_count = 0; /* calibration interval counter (s) */ -int pps_shift = PPS_SHIFT; /* interval duration (s) (shift) */ -int pps_intcnt = 0; /* intervals at current duration */ - -/* - * PPS signal quality monitors - * - * pps_jitcnt counts the seconds that have been discarded because the - * jitter measured by the time median filter exceeds the limit MAXTIME - * (100 us). - * - * pps_calcnt counts the frequency calibration intervals, which are - * variable from 4 s to 256 s. - * - * pps_errcnt counts the calibration intervals which have been discarded - * because the wander exceeds the limit MAXFREQ (100 ppm) or where the - * calibration interval jitter exceeds two ticks. - * - * pps_stbcnt counts the calibration intervals that have been discarded - * because the frequency wander exceeds the limit MAXFREQ / 4 (25 us). - */ -long pps_jitcnt = 0; /* jitter limit exceeded */ -long pps_calcnt = 0; /* calibration intervals */ -long pps_errcnt = 0; /* calibration errors */ -long pps_stbcnt = 0; /* stability limit exceeded */ -#endif /* PPS_SYNC */ - -#ifdef EXT_CLOCK -/* - * External clock definitions - * - * The following definitions and declarations are used only if an - * external clock is configured on the system. - */ -#define CLOCK_INTERVAL 30 /* CPU clock update interval (s) */ - -/* - * The clock_count variable is set to CLOCK_INTERVAL at each PPS - * interrupt and decremented once each second. - */ -int clock_count = 0; /* CPU clock counter */ - -#ifdef HIGHBALL -/* - * The clock_offset and clock_cpu variables are used by the HIGHBALL - * interface. The clock_offset variable defines the offset between - * system time and the HIGBALL counters. The clock_cpu variable contains - * the offset between the system clock and the HIGHBALL clock for use in - * disciplining the kernel time variable. - */ -extern struct timeval clock_offset; /* Highball clock offset */ -long clock_cpu = 0; /* CPU clock adjust */ -#endif /* HIGHBALL */ -#endif /* EXT_CLOCK */ -#endif /* NTP */ - - /* * Bump a timeval by a small number of usec's. */ @@ -280,12 +106,7 @@ int ticks; static int psdiv, pscnt; /* prof => stat divider */ int psratio; /* ratio: prof / stat */ int tickfix, tickfixinterval; /* used if tick not really integral */ -#ifndef NTP static int tickfixcnt; /* accumulated fractional error */ -#else -int fixtick; /* used by NTP for same */ -int shifthz; -#endif long cp_time[CPUSTATES]; @@ -335,34 +156,6 @@ initclocks() if (profhz == 0) profhz = i; psratio = profhz / i; - -#ifdef NTP - if (time_precision == 0) - time_precision = tick; - - switch (hz) { - case 60: - case 64: - shifthz = SHIFT_SCALE - 6; - break; - case 96: - case 100: - case 128: - shifthz = SHIFT_SCALE - 7; - break; - case 256: - shifthz = SHIFT_SCALE - 8; - break; - case 1024: - shifthz = SHIFT_SCALE - 10; - break; - case 1200: - shifthz = SHIFT_SCALE - 11; - break; - default: - panic("weird hz"); - } -#endif } /* @@ -376,11 +169,6 @@ hardclock(frame) register int delta; extern int tickdelta; extern long timedelta; -#ifdef NTP - register int time_update; - struct timeval newtime; - register int ltemp; -#endif p = curproc; if (p) { @@ -416,7 +204,6 @@ hardclock(frame) ticks++; delta = tick; -#ifndef NTP if (tickfix) { tickfixcnt += tickfix; if (tickfixcnt >= tickfixinterval) { @@ -424,9 +211,6 @@ hardclock(frame) tickfixcnt -= tickfixinterval; } } -#else - newtime = time; -#endif /* !NTP */ /* Imprecise 4bsd adjtime() handling */ if (timedelta != 0) { delta += tickdelta; @@ -437,256 +221,9 @@ hardclock(frame) microset(); #endif -#ifndef NTP - BUMPTIME(&time, delta); /* XXX Now done using NTP code below */ -#endif + BUMPTIME(&time, delta); BUMPTIME(&mono_time, delta); -#ifdef NTP - time_update = delta; - - /* - * Compute the phase adjustment. If the low-order bits - * (time_phase) of the update overflow, bump the high-order bits - * (time_update). - */ - time_phase += time_adj; - if (time_phase <= -FINEUSEC) { - ltemp = -time_phase >> SHIFT_SCALE; - time_phase += ltemp << SHIFT_SCALE; - time_update -= ltemp; - } else if (time_phase >= FINEUSEC) { - ltemp = time_phase >> SHIFT_SCALE; - time_phase -= ltemp << SHIFT_SCALE; - time_update += ltemp; - } - -#ifdef HIGHBALL - /* - * If the HIGHBALL board is installed, we need to adjust the - * external clock offset in order to close the hardware feedback - * loop. This will adjust the external clock phase and frequency - * in small amounts. The additional phase noise and frequency - * wander this causes should be minimal. We also need to - * discipline the kernel time variable, since the PLL is used to - * discipline the external clock. If the Highball board is not - * present, we discipline kernel time with the PLL as usual. We - * assume that the external clock phase adjustment (time_update) - * and kernel phase adjustment (clock_cpu) are less than the - * value of tick. - */ - clock_offset.tv_usec += time_update; - if (clock_offset.tv_usec >= 1000000) { - clock_offset.tv_sec++; - clock_offset.tv_usec -= 1000000; - } - if (clock_offset.tv_usec < 0) { - clock_offset.tv_sec--; - clock_offset.tv_usec += 1000000; - } - newtime.tv_usec += clock_cpu; - clock_cpu = 0; -#else - newtime.tv_usec += time_update; -#endif /* HIGHBALL */ - - /* - * On rollover of the second the phase adjustment to be used for - * the next second is calculated. Also, the maximum error is - * increased by the tolerance. If the PPS frequency discipline - * code is present, the phase is increased to compensate for the - * CPU clock oscillator frequency error. - * - * On a 32-bit machine and given parameters in the timex.h - * header file, the maximum phase adjustment is +-512 ms and - * maximum frequency offset is a tad less than) +-512 ppm. On a - * 64-bit machine, you shouldn't need to ask. - */ - if (newtime.tv_usec >= 1000000) { - newtime.tv_usec -= 1000000; - newtime.tv_sec++; - time_maxerror += time_tolerance >> SHIFT_USEC; - - /* - * Leap second processing. If in leap-insert state at - * the end of the day, the system clock is set back one - * second; if in leap-delete state, the system clock is - * set ahead one second. The microtime() routine or - * external clock driver will insure that reported time - * is always monotonic. The ugly divides should be - * replaced. - */ - switch (time_state) { - case TIME_OK: - if (time_status & STA_INS) - time_state = TIME_INS; - else if (time_status & STA_DEL) - time_state = TIME_DEL; - break; - - case TIME_INS: - if (newtime.tv_sec % 86400 == 0) { - newtime.tv_sec--; - time_state = TIME_OOP; - } - break; - - case TIME_DEL: - if ((newtime.tv_sec + 1) % 86400 == 0) { - newtime.tv_sec++; - time_state = TIME_WAIT; - } - break; - - case TIME_OOP: - time_state = TIME_WAIT; - break; - - case TIME_WAIT: - if (!(time_status & (STA_INS | STA_DEL))) - time_state = TIME_OK; - break; - } - - /* - * Compute the phase adjustment for the next second. In - * PLL mode, the offset is reduced by a fixed factor - * times the time constant. In FLL mode the offset is - * used directly. In either mode, the maximum phase - * adjustment for each second is clamped so as to spread - * the adjustment over not more than the number of - * seconds between updates. - */ - if (time_offset < 0) { - ltemp = -time_offset; - if (!(time_status & STA_FLL)) - ltemp >>= SHIFT_KG + time_constant; - if (ltemp > (MAXPHASE / MINSEC) << SHIFT_UPDATE) - ltemp = (MAXPHASE / MINSEC) << - SHIFT_UPDATE; - time_offset += ltemp; - time_adj = -ltemp << (shifthz - SHIFT_UPDATE); - } else if (time_offset > 0) { - ltemp = time_offset; - if (!(time_status & STA_FLL)) - ltemp >>= SHIFT_KG + time_constant; - if (ltemp > (MAXPHASE / MINSEC) << SHIFT_UPDATE) - ltemp = (MAXPHASE / MINSEC) << - SHIFT_UPDATE; - time_offset -= ltemp; - time_adj = ltemp << (shifthz - SHIFT_UPDATE); - } else - time_adj = 0; - - /* - * Compute the frequency estimate and additional phase - * adjustment due to frequency error for the next - * second. When the PPS signal is engaged, gnaw on the - * watchdog counter and update the frequency computed by - * the pll and the PPS signal. - */ -#ifdef PPS_SYNC - pps_valid++; - if (pps_valid >= PPS_VALID) { - pps_valid = PPS_VALID; /* Avoid possible overflow */ - pps_jitter = MAXTIME; - pps_stabil = MAXFREQ; - time_status &= ~(STA_PPSSIGNAL | STA_PPSJITTER | - STA_PPSWANDER | STA_PPSERROR); - } - ltemp = time_freq + pps_freq; -#else - ltemp = time_freq; -#endif /* PPS_SYNC */ - - if (ltemp < 0) - time_adj -= -ltemp >> (SHIFT_USEC - shifthz); - else - time_adj += ltemp >> (SHIFT_USEC - shifthz); - time_adj += (long)fixtick << shifthz; - - /* - * When the CPU clock oscillator frequency is not a - * power of 2 in Hz, shifthz is only an approximate - * scale factor. - */ - switch (hz) { - case 96: - case 100: - /* - * In the following code the overall gain is increased - * by a factor of 1.25, which results in a residual - * error less than 3 percent. - */ - if (time_adj < 0) - time_adj -= -time_adj >> 2; - else - time_adj += time_adj >> 2; - break; - case 60: - /* - * 60 Hz m68k and vaxes have a PLL gain factor of of - * 60/64 (15/16) of what it should be. In the following code - * the overall gain is increased by a factor of 1.0625, - * (17/16) which results in a residual error of just less - * than 0.4 percent. - */ - if (time_adj < 0) - time_adj -= -time_adj >> 4; - else - time_adj += time_adj >> 4; - break; - } - -#ifdef EXT_CLOCK - /* - * If an external clock is present, it is necessary to - * discipline the kernel time variable anyway, since not - * all system components use the microtime() interface. - * Here, the time offset between the external clock and - * kernel time variable is computed every so often. - */ - clock_count++; - if (clock_count > CLOCK_INTERVAL) { - clock_count = 0; - microtime(&clock_ext); - delta.tv_sec = clock_ext.tv_sec - newtime.tv_sec; - delta.tv_usec = clock_ext.tv_usec - newtime.tv_usec; - if (delta.tv_usec < 0) - delta.tv_sec--; - if (delta.tv_usec >= 500000) { - delta.tv_usec -= 1000000; - delta.tv_sec++; - } - if (delta.tv_usec < -500000) { - delta.tv_usec += 1000000; - delta.tv_sec--; - } - if (delta.tv_sec > 0 || (delta.tv_sec == 0 && - delta.tv_usec > MAXPHASE) || - delta.tv_sec < -1 || (delta.tv_sec == -1 && - delta.tv_usec < -MAXPHASE)) { - newtime = clock_ext; - delta.tv_sec = 0; - delta.tv_usec = 0; - } -#ifdef HIGHBALL - clock_cpu = delta.tv_usec; -#else /* HIGHBALL */ - hardupdate(delta.tv_usec); -#endif /* HIGHBALL */ - } -#endif /* EXT_CLOCK */ - } - -#ifdef CPU_CLOCKUPDATE - CPU_CLOCKUPDATE(&time, &newtime); -#else - time = newtime; -#endif - -#endif /* NTP */ - /* * Update real-time timeout queue. * Process callouts at a very low cpu priority, so we don't keep the @@ -928,340 +465,6 @@ statclock(frame) } } - -#ifdef NTP /* NTP phase-locked loop in kernel */ - -/* - * hardupdate() - local clock update - * - * This routine is called by ntp_adjtime() to update the local clock - * phase and frequency. The implementation is of an adaptive-parameter, - * hybrid phase/frequency-lock loop (PLL/FLL). The routine computes new - * time and frequency offset estimates for each call. If the kernel PPS - * discipline code is configured (PPS_SYNC), the PPS signal itself - * determines the new time offset, instead of the calling argument. - * Presumably, calls to ntp_adjtime() occur only when the caller - * believes the local clock is valid within some bound (+-128 ms with - * NTP). If the caller's time is far different than the PPS time, an - * argument will ensue, and it's not clear who will lose. - * - * For uncompensated quartz crystal oscillatores and nominal update - * intervals less than 1024 s, operation should be in phase-lock mode - * (STA_FLL = 0), where the loop is disciplined to phase. For update - * intervals greater than this, operation should be in frequency-lock - * mode (STA_FLL = 1), where the loop is disciplined to frequency. - * - * Note: splclock() is in effect. - */ -void -hardupdate(offset) - long offset; -{ - long ltemp, mtemp; - - if (!(time_status & STA_PLL) && !(time_status & STA_PPSTIME)) - return; - ltemp = offset; -#ifdef PPS_SYNC - if ((time_status & STA_PPSTIME) && (time_status & STA_PPSSIGNAL)) - ltemp = pps_offset; -#endif /* PPS_SYNC */ - - /* - * Scale the phase adjustment and clamp to the operating range. - */ - if (ltemp > MAXPHASE) - time_offset = MAXPHASE << SHIFT_UPDATE; - else if (ltemp < -MAXPHASE) - time_offset = -(MAXPHASE << SHIFT_UPDATE); - else - time_offset = ltemp << SHIFT_UPDATE; - - /* - * Select whether the frequency is to be controlled and in which - * mode (PLL or FLL). Clamp to the operating range. Ugly - * multiply/divide should be replaced someday. - */ - if (time_status & STA_FREQHOLD || time_reftime == 0) - time_reftime = time.tv_sec; - mtemp = time.tv_sec - time_reftime; - time_reftime = time.tv_sec; - if (time_status & STA_FLL) { - if (mtemp >= MINSEC) { - ltemp = ((time_offset / mtemp) << (SHIFT_USEC - - SHIFT_UPDATE)); - if (ltemp < 0) - time_freq -= -ltemp >> SHIFT_KH; - else - time_freq += ltemp >> SHIFT_KH; - } - } else { - if (mtemp < MAXSEC) { - ltemp *= mtemp; - if (ltemp < 0) - time_freq -= -ltemp >> (time_constant + - time_constant + SHIFT_KF - - SHIFT_USEC); - else - time_freq += ltemp >> (time_constant + - time_constant + SHIFT_KF - - SHIFT_USEC); - } - } - if (time_freq > time_tolerance) - time_freq = time_tolerance; - else if (time_freq < -time_tolerance) - time_freq = -time_tolerance; -} - -#ifdef PPS_SYNC -/* - * hardpps() - discipline CPU clock oscillator to external PPS signal - * - * This routine is called at each PPS interrupt in order to discipline - * the CPU clock oscillator to the PPS signal. It measures the PPS phase - * and leaves it in a handy spot for the hardclock() routine. It - * integrates successive PPS phase differences and calculates the - * frequency offset. This is used in hardclock() to discipline the CPU - * clock oscillator so that intrinsic frequency error is cancelled out. - * The code requires the caller to capture the time and hardware counter - * value at the on-time PPS signal transition. - * - * Note that, on some Unix systems, this routine runs at an interrupt - * priority level higher than the timer interrupt routine hardclock(). - * Therefore, the variables used are distinct from the hardclock() - * variables, except for certain exceptions: The PPS frequency pps_freq - * and phase pps_offset variables are determined by this routine and - * updated atomically. The time_tolerance variable can be considered a - * constant, since it is infrequently changed, and then only when the - * PPS signal is disabled. The watchdog counter pps_valid is updated - * once per second by hardclock() and is atomically cleared in this - * routine. - */ -void -hardpps(tvp, usec) - struct timeval *tvp; /* time at PPS */ - long usec; /* hardware counter at PPS */ -{ - long u_usec, v_usec, bigtick; - long cal_sec, cal_usec; - - /* - * An occasional glitch can be produced when the PPS interrupt - * occurs in the hardclock() routine before the time variable is - * updated. Here the offset is discarded when the difference - * between it and the last one is greater than tick/2, but not - * if the interval since the first discard exceeds 30 s. - */ - time_status |= STA_PPSSIGNAL; - time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR); - pps_valid = 0; - u_usec = -tvp->tv_usec; - if (u_usec < -500000) - u_usec += 1000000; - v_usec = pps_offset - u_usec; - if (v_usec < 0) - v_usec = -v_usec; - if (v_usec > (tick >> 1)) { - if (pps_glitch > MAXGLITCH) { - pps_glitch = 0; - pps_tf[2] = u_usec; - pps_tf[1] = u_usec; - } else { - pps_glitch++; - u_usec = pps_offset; - } - } else - pps_glitch = 0; - - /* - * A three-stage median filter is used to help deglitch the pps - * time. The median sample becomes the time offset estimate; the - * difference between the other two samples becomes the time - * dispersion (jitter) estimate. - */ - pps_tf[2] = pps_tf[1]; - pps_tf[1] = pps_tf[0]; - pps_tf[0] = u_usec; - if (pps_tf[0] > pps_tf[1]) { - if (pps_tf[1] > pps_tf[2]) { - pps_offset = pps_tf[1]; /* 0 1 2 */ - v_usec = pps_tf[0] - pps_tf[2]; - } else if (pps_tf[2] > pps_tf[0]) { - pps_offset = pps_tf[0]; /* 2 0 1 */ - v_usec = pps_tf[2] - pps_tf[1]; - } else { - pps_offset = pps_tf[2]; /* 0 2 1 */ - v_usec = pps_tf[0] - pps_tf[1]; - } - } else { - if (pps_tf[1] < pps_tf[2]) { - pps_offset = pps_tf[1]; /* 2 1 0 */ - v_usec = pps_tf[2] - pps_tf[0]; - } else if (pps_tf[2] < pps_tf[0]) { - pps_offset = pps_tf[0]; /* 1 0 2 */ - v_usec = pps_tf[1] - pps_tf[2]; - } else { - pps_offset = pps_tf[2]; /* 1 2 0 */ - v_usec = pps_tf[1] - pps_tf[0]; - } - } - if (v_usec > MAXTIME) - pps_jitcnt++; - v_usec = (v_usec << PPS_AVG) - pps_jitter; - if (v_usec < 0) - pps_jitter -= -v_usec >> PPS_AVG; - else - pps_jitter += v_usec >> PPS_AVG; - if (pps_jitter > (MAXTIME >> 1)) - time_status |= STA_PPSJITTER; - - /* - * During the calibration interval adjust the starting time when - * the tick overflows. At the end of the interval compute the - * duration of the interval and the difference of the hardware - * counters at the beginning and end of the interval. This code - * is deliciously complicated by the fact valid differences may - * exceed the value of tick when using long calibration - * intervals and small ticks. Note that the counter can be - * greater than tick if caught at just the wrong instant, but - * the values returned and used here are correct. - */ - bigtick = (long)tick << SHIFT_USEC; - pps_usec -= pps_freq; - if (pps_usec >= bigtick) - pps_usec -= bigtick; - if (pps_usec < 0) - pps_usec += bigtick; - pps_time.tv_sec++; - pps_count++; - if (pps_count < (1 << pps_shift)) - return; - pps_count = 0; - pps_calcnt++; - u_usec = usec << SHIFT_USEC; - v_usec = pps_usec - u_usec; - if (v_usec >= bigtick >> 1) - v_usec -= bigtick; - if (v_usec < -(bigtick >> 1)) - v_usec += bigtick; - if (v_usec < 0) - v_usec = -(-v_usec >> pps_shift); - else - v_usec = v_usec >> pps_shift; - pps_usec = u_usec; - cal_sec = tvp->tv_sec; - cal_usec = tvp->tv_usec; - cal_sec -= pps_time.tv_sec; - cal_usec -= pps_time.tv_usec; - if (cal_usec < 0) { - cal_usec += 1000000; - cal_sec--; - } - pps_time = *tvp; - - /* - * Check for lost interrupts, noise, excessive jitter and - * excessive frequency error. The number of timer ticks during - * the interval may vary +-1 tick. Add to this a margin of one - * tick for the PPS signal jitter and maximum frequency - * deviation. If the limits are exceeded, the calibration - * interval is reset to the minimum and we start over. - */ - u_usec = (long)tick << 1; - if (!((cal_sec == -1 && cal_usec > (1000000 - u_usec)) - || (cal_sec == 0 && cal_usec < u_usec)) - || v_usec > time_tolerance || v_usec < -time_tolerance) { - pps_errcnt++; - pps_shift = PPS_SHIFT; - pps_intcnt = 0; - time_status |= STA_PPSERROR; - return; - } - - /* - * A three-stage median filter is used to help deglitch the pps - * frequency. The median sample becomes the frequency offset - * estimate; the difference between the other two samples - * becomes the frequency dispersion (stability) estimate. - */ - pps_ff[2] = pps_ff[1]; - pps_ff[1] = pps_ff[0]; - pps_ff[0] = v_usec; - if (pps_ff[0] > pps_ff[1]) { - if (pps_ff[1] > pps_ff[2]) { - u_usec = pps_ff[1]; /* 0 1 2 */ - v_usec = pps_ff[0] - pps_ff[2]; - } else if (pps_ff[2] > pps_ff[0]) { - u_usec = pps_ff[0]; /* 2 0 1 */ - v_usec = pps_ff[2] - pps_ff[1]; - } else { - u_usec = pps_ff[2]; /* 0 2 1 */ - v_usec = pps_ff[0] - pps_ff[1]; - } - } else { - if (pps_ff[1] < pps_ff[2]) { - u_usec = pps_ff[1]; /* 2 1 0 */ - v_usec = pps_ff[2] - pps_ff[0]; - } else if (pps_ff[2] < pps_ff[0]) { - u_usec = pps_ff[0]; /* 1 0 2 */ - v_usec = pps_ff[1] - pps_ff[2]; - } else { - u_usec = pps_ff[2]; /* 1 2 0 */ - v_usec = pps_ff[1] - pps_ff[0]; - } - } - - /* - * Here the frequency dispersion (stability) is updated. If it - * is less than one-fourth the maximum (MAXFREQ), the frequency - * offset is updated as well, but clamped to the tolerance. It - * will be processed later by the hardclock() routine. - */ - v_usec = (v_usec >> 1) - pps_stabil; - if (v_usec < 0) - pps_stabil -= -v_usec >> PPS_AVG; - else - pps_stabil += v_usec >> PPS_AVG; - if (pps_stabil > MAXFREQ >> 2) { - pps_stbcnt++; - time_status |= STA_PPSWANDER; - return; - } - if (time_status & STA_PPSFREQ) { - if (u_usec < 0) { - pps_freq -= -u_usec >> PPS_AVG; - if (pps_freq < -time_tolerance) - pps_freq = -time_tolerance; - u_usec = -u_usec; - } else { - pps_freq += u_usec >> PPS_AVG; - if (pps_freq > time_tolerance) - pps_freq = time_tolerance; - } - } - - /* - * Here the calibration interval is adjusted. If the maximum - * time difference is greater than tick / 4, reduce the interval - * by half. If this is not the case for four consecutive - * intervals, double the interval. - */ - if (u_usec << pps_shift > bigtick >> 2) { - pps_intcnt = 0; - if (pps_shift > PPS_SHIFT) - pps_shift--; - } else if (pps_intcnt >= 4) { - pps_intcnt = 0; - if (pps_shift < PPS_SHIFTMAX) - pps_shift++; - } else - pps_intcnt++; -} -#endif /* PPS_SYNC */ -#endif /* NTP */ - - /* * Return information about system clocks. */ diff --git a/sys/kern/kern_ntptime.c b/sys/kern/kern_ntptime.c deleted file mode 100644 index bf8ba50fb94..00000000000 --- a/sys/kern/kern_ntptime.c +++ /dev/null @@ -1,374 +0,0 @@ -/* $OpenBSD: kern_ntptime.c,v 1.11 2001/11/06 19:53:20 miod Exp $ */ -/* $NetBSD: kern_ntptime.c,v 1.2 1996/03/07 14:31:20 christos Exp $ */ - -/****************************************************************************** - * * - * Copyright (c) David L. Mills 1993, 1994 * - * * - * 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 kern_ntptime.c - * - * 24 Sep 94 David L. Mills - * Tightened code at exits. - * - * 24 Mar 94 David L. Mills - * Revised syscall interface to include new variables for PPS - * time discipline. - * - * 14 Feb 94 David L. Mills - * Added code for external clock - * - * 28 Nov 93 David L. Mills - * Revised frequency scaling to conform with adjusted parameters - * - * 17 Sep 93 David L. Mills - * Created file - */ -/* - * ntp_gettime(), ntp_adjtime() - precision time interface for SunOS - * V4.1.1 and V4.1.3 - * - * These routines consitute the Network Time Protocol (NTP) interfaces - * for user and daemon application programs. The ntp_gettime() routine - * provides the time, maximum error (synch distance) and estimated error - * (dispersion) to client user application programs. The ntp_adjtime() - * routine is used by the NTP daemon to adjust the system clock to an - * externally derived time. The time offset and related variables set by - * this routine are used by hardclock() to adjust the phase and - * frequency of the phase-lock loop which controls the system clock. - */ -#include <sys/param.h> -#include <sys/resourcevar.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/proc.h> -#include <sys/timex.h> -#include <sys/vnode.h> - -#include <sys/mount.h> -#include <sys/syscallargs.h> - -#include <machine/cpu.h> - -#include <uvm/uvm_extern.h> -#include <sys/sysctl.h> - -#ifdef NTP - -/* - * The following variables are used by the hardclock() routine in the - * kern_clock.c module and are described in that module. - */ -extern volatile struct timeval time; /* kernel time variable */ -extern int time_state; /* clock state */ -extern int time_status; /* clock status bits */ -extern long time_offset; /* time adjustment (us) */ -extern long time_freq; /* frequency offset (scaled ppm) */ -extern long time_maxerror; /* maximum error (us) */ -extern long time_esterror; /* estimated error (us) */ -extern long time_constant; /* pll time constant */ -extern long time_precision; /* clock precision (us) */ -extern long time_tolerance; /* frequency tolerance (scaled ppm) */ - -#ifdef PPS_SYNC -/* - * The following variables are used only if the PPS signal discipline - * is configured in the kernel. - */ -extern int pps_shift; /* interval duration (s) (shift) */ -extern long pps_freq; /* pps frequency offset (scaled ppm) */ -extern long pps_jitter; /* pps jitter (us) */ -extern long pps_stabil; /* pps stability (scaled ppm) */ -extern long pps_jitcnt; /* jitter limit exceeded */ -extern long pps_calcnt; /* calibration intervals */ -extern long pps_errcnt; /* calibration errors */ -extern long pps_stbcnt; /* stability limit exceeded */ -#endif /* PPS_SYNC */ - - - -/*ARGSUSED*/ -/* - * ntp_gettime() - NTP user application interface - */ -int -sys_ntp_gettime(p, v, retval) - struct proc *p; - void *v; - register_t *retval; - -{ - struct sys_ntp_gettime_args /* { - syscallarg(struct timex *) ntvp; - } */ *uap = v; - struct timeval atv; - struct ntptimeval ntv; - int error = 0; - int s; - - if (SCARG(uap, ntvp)) { - s = splclock(); -#ifdef EXT_CLOCK - /* - * The microtime() external clock routine returns a - * status code. If less than zero, we declare an error - * in the clock status word and return the kernel - * (software) time variable. While there are other - * places that call microtime(), this is the only place - * that matters from an application point of view. - */ - if (microtime(&atv) < 0) { - time_status |= STA_CLOCKERR; - ntv.time = time; - } else - time_status &= ~STA_CLOCKERR; -#else /* EXT_CLOCK */ - microtime(&atv); -#endif /* EXT_CLOCK */ - ntv.time = atv; - ntv.maxerror = time_maxerror; - ntv.esterror = time_esterror; - splx(s); - - error = copyout((caddr_t)&ntv, (caddr_t)SCARG(uap, ntvp), - sizeof (ntv)); - } - if (!error) { - - /* - * Status word error decode. If any of these conditions - * occur, an error is returned, instead of the status - * word. Most applications will care only about the fact - * the system clock may not be trusted, not about the - * details. - * - * Hardware or software error - */ - if ((time_status & (STA_UNSYNC | STA_CLOCKERR)) || - - /* - * PPS signal lost when either time or frequency - * synchronization requested - */ - (time_status & (STA_PPSFREQ | STA_PPSTIME) && - !(time_status & STA_PPSSIGNAL)) || - - /* - * PPS jitter exceeded when time synchronization - * requested - */ - (time_status & STA_PPSTIME && - time_status & STA_PPSJITTER) || - - /* - * PPS wander exceeded or calibration error when - * frequency synchronization requested - */ - (time_status & STA_PPSFREQ && - time_status & (STA_PPSWANDER | STA_PPSERROR))) - *retval = TIME_ERROR; - else - *retval = (register_t)time_state; - } - return(error); -} - - -/* ARGSUSED */ -/* - * ntp_adjtime() - NTP daemon application interface - */ -int -sys_ntp_adjtime(p, v, retval) - struct proc *p; - void *v; - register_t *retval; -{ - struct sys_ntp_adjtime_args /* { - syscallarg(struct timex *) tp; - } */ *uap = v; - struct timex ntv; - int error = 0; - int modes; - int s; - - if ((error = copyin((caddr_t)SCARG(uap, tp), (caddr_t)&ntv, - sizeof(ntv)))) - return (error); - - /* - * Update selected clock variables - only the superuser can - * change anything. Note that there is no error checking here on - * the assumption the superuser should know what it is doing. - */ - modes = ntv.modes; - if (modes != 0 && (error = suser(p->p_ucred, &p->p_acflag))) - return (error); - - s = splclock(); - if (modes & MOD_FREQUENCY) -#ifdef PPS_SYNC - time_freq = ntv.freq - pps_freq; -#else /* PPS_SYNC */ - time_freq = ntv.freq; -#endif /* PPS_SYNC */ - if (modes & MOD_MAXERROR) - time_maxerror = ntv.maxerror; - if (modes & MOD_ESTERROR) - time_esterror = ntv.esterror; - if (modes & MOD_STATUS) { - time_status &= STA_RONLY; - time_status |= ntv.status & ~STA_RONLY; - } - if (modes & MOD_TIMECONST) - time_constant = ntv.constant; - if (modes & MOD_OFFSET) - hardupdate(ntv.offset); - - /* - * Retrieve all clock variables - */ - if (time_offset < 0) - ntv.offset = -(-time_offset >> SHIFT_UPDATE); - else - ntv.offset = time_offset >> SHIFT_UPDATE; -#ifdef PPS_SYNC - ntv.freq = time_freq + pps_freq; -#else /* PPS_SYNC */ - ntv.freq = time_freq; -#endif /* PPS_SYNC */ - ntv.maxerror = time_maxerror; - ntv.esterror = time_esterror; - ntv.status = time_status; - ntv.constant = time_constant; - ntv.precision = time_precision; - ntv.tolerance = time_tolerance; -#ifdef PPS_SYNC - ntv.shift = pps_shift; - ntv.ppsfreq = pps_freq; - ntv.jitter = pps_jitter >> PPS_AVG; - ntv.stabil = pps_stabil; - ntv.calcnt = pps_calcnt; - ntv.errcnt = pps_errcnt; - ntv.jitcnt = pps_jitcnt; - ntv.stbcnt = pps_stbcnt; -#endif /* PPS_SYNC */ - splx(s); - - error = copyout((caddr_t)&ntv, (caddr_t)SCARG(uap, tp), sizeof(ntv)); - if (!error) { - - /* - * Status word error decode. See comments in - * ntp_gettime() routine. - */ - if ((time_status & (STA_UNSYNC | STA_CLOCKERR)) || - (time_status & (STA_PPSFREQ | STA_PPSTIME) && - !(time_status & STA_PPSSIGNAL)) || - (time_status & STA_PPSTIME && - time_status & STA_PPSJITTER) || - (time_status & STA_PPSFREQ && - time_status & (STA_PPSWANDER | STA_PPSERROR))) - *retval = TIME_ERROR; - else - *retval = (register_t)time_state; - } - return error; -} -#endif /* NTP */ - -/* - * return information about kernel precision timekeeping - */ -int -sysctl_ntptime(where, sizep) - register char *where; - size_t *sizep; -{ -#ifndef NTP - return (ENOSYS); -#else /* !NTP */ - struct timeval atv; - struct ntptimeval ntv; - int s; - - /* - * Construct ntp_timeval. - */ - - s = splclock(); -#ifdef EXT_CLOCK - /* - * The microtime() external clock routine returns a - * status code. If less than zero, we declare an error - * in the clock status word and return the kernel - * (software) time variable. While there are other - * places that call microtime(), this is the only place - * that matters from an application point of view. - */ - if (microtime(&atv) < 0) { - time_status |= STA_CLOCKERR; - ntv.time = time; - } else { - time_status &= ~STA_CLOCKERR; - } -#else /* EXT_CLOCK */ - microtime(&atv); -#endif /* EXT_CLOCK */ - ntv.time = atv; - ntv.maxerror = time_maxerror; - ntv.esterror = time_esterror; - splx(s); - -#ifdef notyet - /* - * Status word error decode. If any of these conditions - * occur, an error is returned, instead of the status - * word. Most applications will care only about the fact - * the system clock may not be trusted, not about the - * details. - * - * Hardware or software error - */ - if ((time_status & (STA_UNSYNC | STA_CLOCKERR)) || - ntv.time_state = TIME_ERROR; - - /* - * PPS signal lost when either time or frequency - * synchronization requested - */ - (time_status & (STA_PPSFREQ | STA_PPSTIME) && - !(time_status & STA_PPSSIGNAL)) || - - /* - * PPS jitter exceeded when time synchronization - * requested - */ - (time_status & STA_PPSTIME && - time_status & STA_PPSJITTER) || - - /* - * PPS wander exceeded or calibration error when - * frequency synchronization requested - */ - (time_status & STA_PPSFREQ && - time_status & (STA_PPSWANDER | STA_PPSERROR))) - ntv.time_state = TIME_ERROR; - else - ntv.time_state = time_state; -#endif /* notyet */ - return (sysctl_rdstruct(where, sizep, NULL, &ntv, sizeof(ntv))); -#endif /* NTP */ -} diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index 3a49f1cac1b..8d8e8f4942c 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_sysctl.c,v 1.72 2002/06/24 11:09:01 art Exp $ */ +/* $OpenBSD: kern_sysctl.c,v 1.73 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: kern_sysctl.c,v 1.17 1996/05/20 17:49:05 mrg Exp $ */ /*- @@ -355,8 +355,6 @@ kern_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) return (sysctl_rdint(oldp, oldlenp, newp, MAXPARTITIONS)); case KERN_RAWPARTITION: return (sysctl_rdint(oldp, oldlenp, newp, RAW_PART)); - case KERN_NTPTIME: - return (sysctl_ntptime(oldp, oldlenp)); case KERN_SOMAXCONN: return (sysctl_int(oldp, oldlenp, newp, newlen, &somaxconn)); case KERN_SOMINCONN: diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index b03342790bd..8cc3c18b4df 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -1,4 +1,4 @@ -; $OpenBSD: syscalls.master,v 1.49 2002/03/14 00:42:25 miod Exp $ +; $OpenBSD: syscalls.master,v 1.50 2002/07/06 19:14:20 nordin Exp $ ; $NetBSD: syscalls.master,v 1.32 1996/04/23 10:24:21 mycroft Exp $ ; @(#)syscalls.master 8.2 (Berkeley) 1/13/94 @@ -332,13 +332,8 @@ size_t nbyte, int pad, off_t offset); } 174 STD { ssize_t sys_pwrite(int fd, const void *buf, \ size_t nbyte, int pad, off_t offset); } -#ifdef NTP -175 STD { int sys_ntp_gettime(struct ntptimeval *ntvp); } -176 STD { int sys_ntp_adjtime(struct timex *tp); } -#else 175 UNIMPL ntp_gettime 176 UNIMPL ntp_adjtime -#endif 177 UNIMPL 178 UNIMPL 179 UNIMPL diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h index a473f01454c..4f2d30bcf21 100644 --- a/sys/sys/sysctl.h +++ b/sys/sys/sysctl.h @@ -1,4 +1,4 @@ -/* $OpenBSD: sysctl.h,v 1.56 2002/06/11 11:14:29 beck Exp $ */ +/* $OpenBSD: sysctl.h,v 1.57 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: sysctl.h,v 1.16 1996/04/09 20:55:36 cgd Exp $ */ /* @@ -141,43 +141,41 @@ struct ctlname { #define KERN_DOMAINNAME 22 /* string: (YP) domainname */ #define KERN_MAXPARTITIONS 23 /* int: number of partitions/disk */ #define KERN_RAWPARTITION 24 /* int: raw partition number */ -#define KERN_NTPTIME 25 /* struct: extended-precision time */ -#define KERN_TIMEX 26 /* struct: ntp timekeeping state */ -#define KERN_OSVERSION 27 /* string: kernel build version */ -#define KERN_SOMAXCONN 28 /* int: listen queue maximum */ -#define KERN_SOMINCONN 29 /* int: half-open controllable param */ -#define KERN_USERMOUNT 30 /* int: users may mount filesystems */ -#define KERN_RND 31 /* struct: rnd(4) statistics */ -#define KERN_NOSUIDCOREDUMP 32 /* int: no setuid coredumps ever */ -#define KERN_FSYNC 33 /* int: file synchronization support */ -#define KERN_SYSVMSG 34 /* int: SysV message queue suppoprt */ -#define KERN_SYSVSEM 35 /* int: SysV semaphore support */ -#define KERN_SYSVSHM 36 /* int: SysV shared memory support */ -#define KERN_ARND 37 /* int: random integer from arc4rnd */ -#define KERN_MSGBUFSIZE 38 /* int: size of message buffer */ -#define KERN_MALLOCSTATS 39 /* node: malloc statistics */ -#define KERN_CPTIME 40 /* array: cp_time */ -#define KERN_NCHSTATS 41 /* struct: vfs cache statistics */ -#define KERN_FORKSTAT 42 /* struct: fork statistics */ -#define KERN_NSELCOLL 43 /* int: select(2) collisions */ -#define KERN_TTY 44 /* node: tty information */ -#define KERN_CCPU 45 /* int: ccpu */ -#define KERN_FSCALE 46 /* int: fscale */ -#define KERN_NPROCS 47 /* int: number of processes */ -#define KERN_MSGBUF 48 /* message buffer, KERN_MSGBUFSIZE */ -#define KERN_POOL 49 /* struct: pool information */ -#define KERN_STACKGAPRANDOM 50 /* int: stackgap_random */ -#define KERN_SYSVIPC_INFO 51 /* struct: SysV sem/shm/msg info */ -#define KERN_USERCRYPTO 52 /* int: usercrypto */ -#define KERN_CRYPTODEVALLOWSOFT 53 /* int: cryptodevallowsoft */ -#define KERN_SPLASSERT 54 /* int: splassert */ -#define KERN_PROC_ARGS 55 /* node: proc args and env */ -#define KERN_NFILES 56 /* int: number of open files */ -#define KERN_TTYCOUNT 57 /* int: number of tty devices */ -#define KERN_NUMVNODES 58 /* int: number of vnodes in use */ -#define KERN_MBSTAT 59 /* struct: mbuf statistics */ -#define KERN_USERASYMCRYPTO 60 /* int: usercrypto */ -#define KERN_MAXID 61 /* number of valid kern ids */ +#define KERN_OSVERSION 25 /* string: kernel build version */ +#define KERN_SOMAXCONN 26 /* int: listen queue maximum */ +#define KERN_SOMINCONN 27 /* int: half-open controllable param */ +#define KERN_USERMOUNT 28 /* int: users may mount filesystems */ +#define KERN_RND 29 /* struct: rnd(4) statistics */ +#define KERN_NOSUIDCOREDUMP 30 /* int: no setuid coredumps ever */ +#define KERN_FSYNC 31 /* int: file synchronization support */ +#define KERN_SYSVMSG 32 /* int: SysV message queue suppoprt */ +#define KERN_SYSVSEM 33 /* int: SysV semaphore support */ +#define KERN_SYSVSHM 34 /* int: SysV shared memory support */ +#define KERN_ARND 35 /* int: random integer from arc4rnd */ +#define KERN_MSGBUFSIZE 36 /* int: size of message buffer */ +#define KERN_MALLOCSTATS 37 /* node: malloc statistics */ +#define KERN_CPTIME 38 /* array: cp_time */ +#define KERN_NCHSTATS 39 /* struct: vfs cache statistics */ +#define KERN_FORKSTAT 40 /* struct: fork statistics */ +#define KERN_NSELCOLL 41 /* int: select(2) collisions */ +#define KERN_TTY 42 /* node: tty information */ +#define KERN_CCPU 43 /* int: ccpu */ +#define KERN_FSCALE 44 /* int: fscale */ +#define KERN_NPROCS 45 /* int: number of processes */ +#define KERN_MSGBUF 46 /* message buffer, KERN_MSGBUFSIZE */ +#define KERN_POOL 47 /* struct: pool information */ +#define KERN_STACKGAPRANDOM 48 /* int: stackgap_random */ +#define KERN_SYSVIPC_INFO 49 /* struct: SysV sem/shm/msg info */ +#define KERN_USERCRYPTO 50 /* int: usercrypto */ +#define KERN_CRYPTODEVALLOWSOFT 51 /* int: cryptodevallowsoft */ +#define KERN_SPLASSERT 52 /* int: splassert */ +#define KERN_PROC_ARGS 53 /* node: proc args and env */ +#define KERN_NFILES 54 /* int: number of open files */ +#define KERN_TTYCOUNT 55 /* int: number of tty devices */ +#define KERN_NUMVNODES 56 /* int: number of vnodes in use */ +#define KERN_MBSTAT 57 /* struct: mbuf statistics */ +#define KERN_USERASYMCRYPTO 58 /* int: usercrypto */ +#define KERN_MAXID 59 /* number of valid kern ids */ #define CTL_KERN_NAMES { \ { 0, 0 }, \ @@ -205,8 +203,6 @@ struct ctlname { { "domainname", CTLTYPE_STRING }, \ { "maxpartitions", CTLTYPE_INT }, \ { "rawpartition", CTLTYPE_INT }, \ - { "ntptime", CTLTYPE_STRUCT }, \ - { "timex", CTLTYPE_STRUCT }, \ { "osversion", CTLTYPE_STRING }, \ { "somaxconn", CTLTYPE_INT }, \ { "sominconn", CTLTYPE_INT }, \ @@ -469,7 +465,6 @@ int sysctl_iflist(int, struct walkarg *); int sysctl_rtable(int *, u_int, void *, size_t *, void *, size_t); int sysctl_clockrate(char *, size_t *); int sysctl_vnode(char *, size_t *, struct proc *); -int sysctl_ntptime(char *, size_t *); #ifdef GPROF int sysctl_doprof(int *, u_int, void *, size_t *, void *, size_t); #endif diff --git a/sys/sys/systm.h b/sys/sys/systm.h index e46f17a0a99..08ace60243a 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -1,4 +1,4 @@ -/* $OpenBSD: systm.h,v 1.50 2002/05/15 23:17:53 art Exp $ */ +/* $OpenBSD: systm.h,v 1.51 2002/07/06 19:14:20 nordin Exp $ */ /* $NetBSD: systm.h,v 1.50 1996/06/09 04:55:09 briggs Exp $ */ /*- @@ -225,12 +225,6 @@ struct clockframe; void hardclock(struct clockframe *); void softclock(void); void statclock(struct clockframe *); -#ifdef NTP -void hardupdate(long offset); -#ifdef PPS_SYNC -void hardpps(struct timeval *, long); -#endif -#endif void initclocks(void); void inittodr(time_t); diff --git a/sys/sys/timex.h b/sys/sys/timex.h deleted file mode 100644 index 80ed98804c2..00000000000 --- a/sys/sys/timex.h +++ /dev/null @@ -1,303 +0,0 @@ -/* $OpenBSD: timex.h,v 1.8 2002/07/03 21:19:08 miod Exp $ */ -/* $NetBSD: timex.h,v 1.2 1996/02/27 04:20:34 jonathan Exp $ */ - -/****************************************************************************** - * * - * Copyright (c) David L. Mills 1993, 1994 * - * * - * 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 - * - * 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 - */ -/* - * This header file defines the Network Time Protocol (NTP) interfaces - * for user and daemon application programs. These are implemented using - * private syscalls and data structures and require specific kernel - * support. - * - * NAME - * ntp_gettime - NTP user application interface - * - * SYNOPSIS - * #include <sys/timex.h> - * - * int syscall(SYS_ntp_gettime, tptr) - * - * int SYS_ntp_gettime defined in syscall.h header file - * struct ntptimeval *tptr pointer to ntptimeval structure - * - * NAME - * ntp_adjtime - NTP daemon application interface - * - * SYNOPSIS - * #include <sys/timex.h> - * - * int syscall(SYS_ntp_adjtime, mode, tptr) - * - * int SYS_ntp_adjtime defined in syscall.h header file - * struct timex *tptr pointer to timex structure - * - */ -#ifndef _SYS_TIMEX_H_ -#define _SYS_TIMEX_H_ - -#ifndef MSDOS /* Microsoft specific */ -#include <sys/syscall.h> -#endif /* MSDOS */ - -/* - * The following defines establish the engineering parameters of the - * phase-lock loop (PLL) model used in the kernel implementation. These - * parameters have been carefully chosen by analysis for good stability - * and wide dynamic range. - * - * The hz variable is defined in the kernel build environment. It - * establishes the timer interrupt frequency, 100 Hz for the SunOS - * kernel, 256 Hz for the Ultrix kernel and 1024 Hz for the OSF/1 - * kernel. SHIFT_HZ expresses the same value as the nearest power of two - * in order to avoid hardware multiply operations. - * - * SHIFT_KG and SHIFT_KF establish the damping of the PLL and are chosen - * for a slightly underdamped convergence characteristic. SHIFT_KH - * establishes the damping of the FLL and is chosen by wisdom and black - * art. - * - * MAXTC establishes the maximum time constant of the PLL. With the - * SHIFT_KG and SHIFT_KF values given and a time constant range from - * zero to MAXTC, the PLL will converge in 15 minutes to 16 hours, - * respectively. - */ - - -#define SHIFT_KG 6 /* phase factor (shift) */ -#define SHIFT_KF 16 /* PLL frequency factor (shift) */ -#define SHIFT_KH 2 /* FLL frequency factor (shift) */ -#define MAXTC 6 /* maximum time constant (shift) */ - -/* - * The following defines establish the scaling of the various variables - * used by the PLL. They are chosen to allow the greatest precision - * possible without overflow of a 32-bit word. - * - * SHIFT_SCALE defines the scaling (shift) of the time_phase variable, - * which serves as a an extension to the low-order bits of the system - * clock variable time.tv_usec. - * - * SHIFT_UPDATE defines the scaling (shift) of the time_offset variable, - * which represents the current time offset with respect to standard - * time. - * - * SHIFT_USEC defines the scaling (shift) of the time_freq and - * time_tolerance variables, which represent the current frequency - * offset and maximum frequency tolerance. - * - * FINEUSEC is 1 us in SHIFT_UPDATE units of the time_phase variable. - */ -#define SHIFT_SCALE 22 /* phase scale (shift) */ -#define SHIFT_UPDATE (SHIFT_KG + MAXTC) /* time offset scale (shift) */ -#define SHIFT_USEC 16 /* frequency offset scale (shift) */ -#define FINEUSEC (1L << SHIFT_SCALE) /* 1 us in phase units */ - -/* - * The following defines establish the performance envelope of the PLL. - * They insure it operates within predefined limits, in order to satisfy - * correctness assertions. An excursion which exceeds these bounds is - * clamped to the bound and operation proceeds accordingly. In practice, - * this can occur only if something has failed or is operating out of - * tolerance, but otherwise the PLL continues to operate in a stable - * mode. - * - * MAXPHASE must be set greater than or equal to CLOCK.MAX (128 ms), as - * defined in the NTP specification. CLOCK.MAX establishes the maximum - * time offset allowed before the system time is reset, rather than - * incrementally adjusted. Here, the maximum offset is clamped to - * MAXPHASE only in order to prevent overflow errors due to defective - * protocol implementations. - * - * MAXFREQ is the maximum frequency tolerance of the CPU clock - * oscillator plus the maximum slew rate allowed by the protocol. It - * should be set to at least the frequency tolerance of the oscillator - * plus 100 ppm for vernier frequency adjustments. If the kernel - * PPS discipline code is configured (PPS_SYNC), the oscillator time and - * frequency are disciplined to an external source, presumably with - * negligible time and frequency error relative to UTC, and MAXFREQ can - * be reduced. - * - * MAXTIME is the maximum jitter tolerance of the PPS signal if the - * kernel PPS discipline code is configured (PPS_SYNC). - * - * MINSEC and MAXSEC define the lower and upper bounds on the interval - * between protocol updates. - */ -#define MAXPHASE 512000L /* max phase error (us) */ -#ifdef PPS_SYNC -#define MAXFREQ (512L << SHIFT_USEC) /* max freq error (100 ppm) */ -#define MAXTIME (200L << PPS_AVG) /* max PPS error (jitter) (200 us) */ -#else -#define MAXFREQ (512L << SHIFT_USEC) /* max freq error (200 ppm) */ -#endif /* PPS_SYNC */ -#define MINSEC 16L /* min interval between updates (s) */ -#define MAXSEC 1200L /* max interval between updates (s) */ - -#ifdef PPS_SYNC -/* - * The following defines are used only if a pulse-per-second (PPS) - * signal is available and connected via a modem control lead, such as - * produced by the optional ppsclock feature incorporated in the Sun - * asynch driver. They establish the design parameters of the frequency- - * lock loop used to discipline the CPU clock oscillator to the PPS - * signal. - * - * PPS_AVG is the averaging factor for the frequency loop, as well as - * the time and frequency dispersion. - * - * PPS_SHIFT and PPS_SHIFTMAX specify the minimum and maximum - * calibration intervals, respectively, in seconds as a power of two. - * - * PPS_VALID is the maximum interval before the PPS signal is considered - * invalid and protocol updates used directly instead. - * - * MAXGLITCH is the maximum interval before a time offset of more than - * MAXTIME is believed. - */ -#define PPS_AVG 2 /* pps averaging constant (shift) */ -#define PPS_SHIFT 2 /* min interval duration (s) (shift) */ -#define PPS_SHIFTMAX 8 /* max interval duration (s) (shift) */ -#define PPS_VALID 120 /* pps signal watchdog max (s) */ -#define MAXGLITCH 30 /* pps signal glitch max (s) */ -#endif /* PPS_SYNC */ - -/* - * The following defines and structures define the user interface for - * the ntp_gettime() and ntp_adjtime() system calls. - * - * Control mode codes (timex.modes) - */ -#define MOD_OFFSET 0x0001 /* set time offset */ -#define MOD_FREQUENCY 0x0002 /* set frequency offset */ -#define MOD_MAXERROR 0x0004 /* set maximum time error */ -#define MOD_ESTERROR 0x0008 /* set estimated time error */ -#define MOD_STATUS 0x0010 /* set clock status bits */ -#define MOD_TIMECONST 0x0020 /* set pll time constant */ -#define MOD_CLKB 0x4000 /* set clock B */ -#define MOD_CLKA 0x8000 /* set clock A */ - -/* - * Status codes (timex.status) - */ -#define STA_PLL 0x0001 /* enable PLL updates (rw) */ -#define STA_PPSFREQ 0x0002 /* enable PPS freq discipline (rw) */ -#define STA_PPSTIME 0x0004 /* enable PPS time discipline (rw) */ -#define STA_FLL 0x0008 /* select frequency-lock mode (rw) */ - -#define STA_INS 0x0010 /* insert leap (rw) */ -#define STA_DEL 0x0020 /* delete leap (rw) */ -#define STA_UNSYNC 0x0040 /* clock unsynchronized (rw) */ -#define STA_FREQHOLD 0x0080 /* hold frequency (rw) */ - -#define STA_PPSSIGNAL 0x0100 /* PPS signal present (ro) */ -#define STA_PPSJITTER 0x0200 /* PPS signal jitter exceeded (ro) */ -#define STA_PPSWANDER 0x0400 /* PPS signal wander exceeded (ro) */ -#define STA_PPSERROR 0x0800 /* PPS signal calibration error (ro) */ - -#define STA_CLOCKERR 0x1000 /* clock hardware fault (ro) */ - -#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \ - STA_PPSERROR | STA_CLOCKERR) /* read-only bits */ - -/* - * Clock states (time_state) - */ -#define TIME_OK 0 /* no leap second warning */ -#define TIME_INS 1 /* insert leap second warning */ -#define TIME_DEL 2 /* delete leap second warning */ -#define TIME_OOP 3 /* leap second in progress */ -#define TIME_WAIT 4 /* leap second has occurred */ -#define TIME_ERROR 5 /* clock not synchronized */ - -/* - * NTP user interface (ntp_gettime()) - used to read kernel clock values - * - * Note: maximum error = NTP synch distance = dispersion + delay / 2; - * estimated error = NTP dispersion. - */ -struct ntptimeval { - struct timeval time; /* current time (ro) */ - long maxerror; /* maximum error (us) (ro) */ - long esterror; /* estimated error (us) (ro) */ -}; - -/* - * NTP daemon interface - (ntp_adjtime()) used to discipline CPU clock - * oscillator - */ -struct timex { - unsigned int modes; /* clock mode bits (wo) */ - 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. - */ - 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) */ - -}; - -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) - -#ifndef _KERNEL -#include <sys/cdefs.h> - -__BEGIN_DECLS -extern int ntp_gettime(struct ntptimeval *); -extern int ntp_adjtime(struct timex *); -__END_DECLS - -#endif /* not _KERNEL */ - -#endif /* __FreeBSD__ || __NetBSD__ */ -#endif /* _SYS_TIMEX_H_ */ diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c index ad9ad66f4fa..c9672ce9192 100644 --- a/usr.bin/kdump/kdump.c +++ b/usr.bin/kdump/kdump.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kdump.c,v 1.17 2002/06/23 20:01:25 deraadt Exp $ */ +/* $OpenBSD: kdump.c,v 1.18 2002/07/06 19:14:20 nordin Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -43,7 +43,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)kdump.c 8.4 (Berkeley) 4/28/95"; #endif -static char *rcsid = "$OpenBSD: kdump.c,v 1.17 2002/06/23 20:01:25 deraadt Exp $"; +static char *rcsid = "$OpenBSD: kdump.c,v 1.18 2002/07/06 19:14:20 nordin Exp $"; #endif /* not lint */ #include <sys/param.h> @@ -94,7 +94,6 @@ pid_t pid = -1; #define SYSVMSG #define SYSVSHM #define LFS -#define NTP #include "../../sys/kern/syscalls.c" #include "../../sys/compat/bsdos/bsdos_syscalls.c" @@ -114,7 +113,6 @@ pid_t pid = -1; #undef SYSVMSG #undef SYSVSHM #undef LFS -#undef NTP struct emulation { char *name; /* Emulation name */ |