[ntpsec commit] Introduction of ntpfrob. Collects what used to be in the following files:

Eric S. Raymond esr at ntpsec.org
Wed Oct 14 12:02:05 UTC 2015


Module:    ntpsec
Branch:    master
Commit:    6487acb8a207fcd81cc4dbf1076636ff119e6564
Changeset: http://git.ntpsec.org/ntpsec/commit/?id=6487acb8a207fcd81cc4dbf1076636ff119e6564

Author:    Eric S. Raymond <esr at thyrsus.com>
Date:      Wed Oct 14 07:59:01 2015 -0400

Introduction of ntpfrob. Collects what used to be in the following files:

util/jitter.c
util/pps-api.c
util/precision.c
util/testrs6000.c
util/ntptickadj.c

---

 docs/asciidoc.conf                                 |   4 +-
 docs/includes/ntpfrob-body.txt                     |  73 ++++++++++++++
 docs/includes/ntptickadj-body.txt                  | 112 ---------------------
 docs/ntpfrob.txt                                   |   7 ++
 docs/ntptickadj.txt                                |   7 --
 {util => ntpfrob}/jitter.c                         |  10 +-
 ntpfrob/main.c                                     |  58 +++++++++++
 .../ntpfrob-man.txt.in                             |   6 +-
 {util => ntpfrob}/pps-api.c                        |  33 +++---
 {util => ntpfrob}/precision.c                      |  14 +--
 util/testrs6000.c => ntpfrob/stepback.c            |  11 +-
 util/ntptickadj.c => ntpfrob/tickadj.c             |  26 ++---
 ntpfrob/wscript                                    |  27 +++++
 util/README                                        |  39 +------
 util/wscript                                       |   8 +-
 wscript                                            |   3 +-
 16 files changed, 222 insertions(+), 216 deletions(-)

diff --git a/docs/asciidoc.conf b/docs/asciidoc.conf
index ea22949..9266051 100644
--- a/docs/asciidoc.conf
+++ b/docs/asciidoc.conf
@@ -19,20 +19,20 @@ ntp=ntp
 ntpd=ntpd
 ntpdig=ntpdig
 ntpdconf=ntpd.conf
+ntpfrob=ntpfrob
 ntpkeygen=ntpkeygen
 ntpkeys=ntp.keys
 ntpq=ntpq
-ntptickadj=ntptickadj
 ntptime=ntptime
 ntpwait=ntpwait
 # Annoyingly, these have to be *manually* synchronized with the headers
 # on their manual pages - asciidoc doesn't expand attributes in header lines.
 ntpdconfman=ntp.conf(5)
+ntpfrobman=ntpfrob(8)
 ntpkeygenman=ntpkeygen(8)
 ntpkeysman=ntp.keys(5)
 ntpdman=ntpd(8)
 ntpqman=ntpq(1)
-ntptickadjman=ntptickadj(8)
 ntptimeman=ntptime(8)
 ntpwaitman=ntpwait(8)
 ntpdigman=ntpdig(1)
diff --git a/docs/includes/ntpfrob-body.txt b/docs/includes/ntpfrob-body.txt
new file mode 100644
index 0000000..8daa2bd
--- /dev/null
+++ b/docs/includes/ntpfrob-body.txt
@@ -0,0 +1,73 @@
+// This is the body of the manual page for ntpfrob.
+// It's included in two places: once for the docs/ HTML
+// tree, and once to make an individual man page.
+
+== Synopsis ==
+
+`{ntpfrob} [ -A ] [ -a tick ] [ -p ppsdev ] [-c] [-e] [-s]`
+
+== Description ==
+
+The {ntpfrob} program frobs the local clock hardware.  It collects
+several small diagnostic functions into a set that will differ
+depending on your platform and underlying system calls.
+Portions of it formerly traveled as `tickadj` and `ntptime`.  
+
+== Command Line Options ==
+
+`-a` 'tick'::
+  Set the kernel variable `tick` to the value _tick_ specifies.
+`-A`::
+  Display the kernel variable `tick`.
+`-p` 'ppsdev'::
+  Look for PPS pulses on a specified device
+`-c`::
+  Compute and display clock jitter.
+`-e`::
+  Measure clock precision.
+`-s`::
+  Check for stepback bug.
+
+== Modes of operation ==
+
+Documentation for some of these functions is scanty. If you suspect
+you may need to use them, reading the source code may be wise.
+
+=== Clock tick adjustment ===
+
+The -A function reads your clock's tick rate in microseconds.  The -a
+function sets it. Both rely on the adjtimex(2) system call.
+
+Tweaking your tick rate is almost never necessary on hardware new
+enough to have a fully POSIX.1-2001-conformant Unix.
+
+=== Clock jitter measurement ===
+
+The -c option can be used to determine the timing jitter due to the
+operating system in a gettimeofday() call.  For most systems the
+dominant contribution to the jitter budget is the period of the
+hardware interrupt, usually in the range 10 us-1 ms. For those systems
+with microsecond counters the jitter is dominated only by the
+operating system.
+
+=== Pulse-per-second check ==
+
+The -p option shows whether the  PPS-API (RFC 2783 kernel
+PPS interface) finds PPS on a specified device.
+
+=== Measure clock precision ===
+
+The -e option measure the resolution of the system clock, watching how
+the current time changes as we read it repeatedly.
+
+=== Stepback bug check ===
+
+The -s option checks for a bug originally seen on IBM RS/6000 AIX
+machines. If a negative offset is given, the system gets messed up and
+never completes the adjustment.  If the problem is fixed, this program
+will print the time, sit there for 10 seconds, and exit.  If the
+problem isn't fixed, the program will print an occasional
+"result=nnnnnn" (the residual slew from adjtime()).
+
+
+// end
diff --git a/docs/includes/ntptickadj-body.txt b/docs/includes/ntptickadj-body.txt
deleted file mode 100644
index 0397d95..0000000
--- a/docs/includes/ntptickadj-body.txt
+++ /dev/null
@@ -1,112 +0,0 @@
-// This is the body of the manual page for ntptickadj.
-// It's included in two places: once for the docs/ HTML
-// tree, and once to make an individual man page.
-
-== Synopsis ==
-
-`{ntptickadj} [ -Aqs ] [ -a tickadj ] [ -t tick ]`
-
-== Description ==
-
-The `{ntptickadj}` program (formerly named just `tickadj`) reads, and
-optionally modifies, several timekeeping-related variables.  It relies
-on the adjtimex(2) system call.
-
-These tweaks are almost never necessary on hardware new enough to have
-a fully POSIX.1-2001-conformant Unix. This utility is deprecated and
-exists mainly for backward compatibility to old scripts. In the future
-it may be removed or merged into a more general tuning tool.
-
-The particular variables that can be changed with `{ntptickadj}` include
-`tick`, which is the number of microseconds added to the system time
-for a clock interrupt, and possibly `tickadj`, which sets the slew
-rate and resolution used by the `adjtime` system call.  These should
-be members of the `struct timex` that adjtimex(2) operates on.
-
-By default, with no arguments, `{ntptickadj}` reads the `struct timex`
-variable(s) of interest and displays them. At the same time, it
-determines an "optimal" value for the value of the `tickadj` variable
-if the intent is to run the Network Time Protocol (NTP) daemon,
-and prints this as well. Since the operation of `{ntptickadj}` when reading
-the kernel mimics the operation of similar parts of the `{ntpd}` program
-fairly closely, this can be useful when debugging problems with
-`{ntpd}`.
-
-Note: The support this program formerly had for directly reading and
-writing '/dev/kmem' dated from the last century; it has been removed
-as unsafe and probably bitrotted.
-
-== Theory of Operation ==
-
-(This section was adapted from some configuration notes for very old Solaris
-systems.  Some portions, notably the claim about `tickadj` being too
-large for NTP use, are probably no longer true.)
-
-The NTP Version 4 specification calls for a maximum oscillator
-frequency tolerance of +-500 parts-per-million (PPM).  
-
-In the rare case that this tolerance is violated, the performance may
-be improved by adjusting the values of certain kernel variables; in
-particular, `tick` and `tickadj`.
-
-The variable `tick` is the increment in microseconds added to the system
-time on each interval-timer interrupt, while the variable `tickadj` is
-used by the time adjustment code as a slew rate, in microseconds per
-tick. When the time is being adjusted via a call to the system routine
-`adjtime()`, the kernel increases or reduces tick by `tickadj`
-microseconds per tick until the specified adjustment has been completed.
-
-Unfortunately, in most Unix implementations the tick increment must be
-either zero or plus/minus exactly `tickadj` microseconds, meaning that
-adjustments are truncated to be an integral multiple of `tickadj` (this
-latter behaviour is a misfeature, and is the only reason the `{ntptickadj}`
-code needs to concern itself with the internal implementation of
-`tickadj` at all). In addition, the stock Unix implementation considers
-it an error to request another adjustment before a prior one has
-completed.
-
-Thus, to make very sure it avoids problems related to the roundoff, the
-`{ntptickadj}` program can be used to adjust the values of `tick` and
-`tickadj`. This ensures that all adjustments given to `adjtime()` are an
-even multiple of `tickadj` microseconds and computes the largest
-adjustment that can be completed in the adjustment interval (using both
-the value of `tick` and the value of `tickadj`) so it can avoid
-exceeding this limit. It is important to note that not all systems will
-allow inspection or modification of kernel variables other than at
-system build time. It is also important to know that, with the current
-NTP tolerances, it is rarely necessary to make these changes, but in
-many cases they will substantially improve the general accuracy of the
-time service.
-
-Unfortunately, the value of `tickadj` set by default is almost always
-too large for `{ntpd}`. NTP operates by continuously making small
-adjustments to the clock, usually at one-second intervals. If `tickadj`
-is set too large, the adjustments will disappear in the roundoff; while,
-if `tickadj` is too small, NTP will have difficulty if it needs to make
-an occasional large adjustment. While the daemon itself will read the
-kernel's values of these variables, it will not change the values, even
-if they are unsuitable. You must do this yourself before the daemon is
-started using the `{ntptickadj}` program. Note that the latter program
-will also compute an optimal value of `tickadj` for NTP use based on
-the kernel's value of `tick`.
-
-In order to maintain reasonable correctness bounds, as well as
-reasonably good accuracy with acceptable polling intervals, `{ntpd}` will
-complain if the frequency error is greater than 500 PPM. For machines
-with a value of `tick` in the 10-ms range, a change of one in the value
-of `tick` will change the frequency by about 100 PPM.
-
-== Command Line Options ==
-
-`-a` 'tickadj'::
-  Set the kernel variable `tickadj` to the value _tickadj_ specifies.
-`-A`::
-  Set the kernel variable `tickadj` to an internally computed "optimal"
-  value.
-`-t` 'tick'::
-  Set the kernel variable `tick` to the value _`tick`_ specified.
-`-q`::
-  Normally, `{ntptickadj}` is quite verbose about what it is doing. The `-q`
-  flag tells it to shut up about everything except errors.
-
-// end
diff --git a/docs/ntpfrob.txt b/docs/ntpfrob.txt
new file mode 100644
index 0000000..c191bbb
--- /dev/null
+++ b/docs/ntpfrob.txt
@@ -0,0 +1,7 @@
+= `ntpfrob` - frob the local clock hardware =
+
+include::includes/ntpfrob-body.txt
+
+'''''
+
+include::includes/footer.txt[]
diff --git a/docs/ntptickadj.txt b/docs/ntptickadj.txt
deleted file mode 100644
index 3ddc1f9..0000000
--- a/docs/ntptickadj.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-= `ntptickadj` - set time-related kernel variables =
-
-include::includes/ntptickadj-body.txt
-
-'''''
-
-include::includes/footer.txt[]
diff --git a/util/jitter.c b/ntpfrob/jitter.c
similarity index 95%
rename from util/jitter.c
rename to ntpfrob/jitter.c
index 933044e..ba1e8b4 100644
--- a/util/jitter.c
+++ b/ntpfrob/jitter.c
@@ -5,6 +5,9 @@
  * reads the system clock and, finally, writes out the time values for
  * later analysis. From this you can determine the jitter and if the
  * clock ever runs backwards.
+ *
+ * Copyright 2015 by the NTPsec project contributors
+ * SPDX-License-Identifier: BSD-2-Clause
  */
 
 #include <config.h>
@@ -55,11 +58,7 @@ get_clocktime(
 	now->l_uf = (uint32_t)dtemp;
 }
 
-int
-main(
-	int argc,
-	char *argv[]
-	)
+void jitter(void)
 {
 	l_fp tr;
 	int i, j;
@@ -109,7 +108,6 @@ main(
 	fprintf(stderr, "Last rank\n");
 	for (i = NBUF - 12; i < NBUF - 2; i++)
 		fprintf(stderr, "%2d %13.9f\n", i, gtod[i]);
-	exit(0);
 }
 
 /* end */
diff --git a/ntpfrob/main.c b/ntpfrob/main.c
new file mode 100644
index 0000000..3073b9a
--- /dev/null
+++ b/ntpfrob/main.c
@@ -0,0 +1,58 @@
+/* Copyright 2015 by the NTPsec project contributors
+   SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+
+#include "config.h"
+
+/*
+ * Our methods, one per linked module
+ */
+extern void ppscheck(char *device);
+extern void tickadj(const int tick);
+extern void jitter(void);
+extern void stepback(void);
+extern void precision(void);
+
+int
+main(int argc, char **argv)
+{
+	int ch;
+	while ((ch = getopt(argc, argv, "aA:cp:")) != EOF) {
+		switch (ch) {
+		case 'A':
+#ifdef HAVE_ADJTIMEX
+		    tickadj(0);
+#else
+		    fputs("ntpfrob: no adjtimex(2) call.\n", stderr);
+		    exit(0);
+#endif
+		    break;
+		case 'a':
+#ifdef HAVE_ADJTIMEX
+		    tickadj(atoi(optarg));
+#else
+		    fputs("ntpfrob: no adjtimex(2) call.\n", stderr);
+		    exit(0);
+#endif
+		    break;
+		case 'c':
+		    jitter();
+		    exit(0);
+		    break;
+		case 'p':
+#ifdef HAVE_SYS_TIMEPPS_H
+		    ppscheck(optarg);
+#else
+		    fputs("ntpfrob: no PPS kernel interface.\n", stderr);
+		    exit(0);
+#endif
+		    break;
+		}
+	}
+
+    exit(0);
+}
diff --git a/util/ntptickadj-man.txt.in b/ntpfrob/ntpfrob-man.txt.in
similarity index 66%
rename from util/ntptickadj-man.txt.in
rename to ntpfrob/ntpfrob-man.txt.in
index a11523f..7430c18 100644
--- a/util/ntptickadj-man.txt.in
+++ b/ntpfrob/ntpfrob-man.txt.in
@@ -1,10 +1,10 @@
-= ntptickadj(8) =
+= ntprob(8) =
 :doctype: manpage
 
 == NAME ==
-{ntptickadj} - read and set kernel ticlk and tickadj variables
+{ntpfrob} - frob the clock hardware
 
- at ../docs/includes/ntptickadj-body.txt@
+ at ../docs/includes/ntpfrob-body.txt@
 
 == EXIT STATUS ==
 
diff --git a/util/pps-api.c b/ntpfrob/pps-api.c
similarity index 81%
rename from util/pps-api.c
rename to ntpfrob/pps-api.c
index f6e2288..45b99b9 100644
--- a/util/pps-api.c
+++ b/ntpfrob/pps-api.c
@@ -1,11 +1,13 @@
 /*
-
-Try to run this program to see what the PPS-API finds. You give it the
-device as argument and you may have to modify the pp.mode = BLA assignment.
-
-Poul-Henning
-
-*/
+ *
+ * Try to run this code to see what the PPS-API finds. You give it the
+ * device as argument and you may have to modify the pp.mode = BLA assignment.
+ *
+ * Code originally by Poul-Henning Kemp.
+ *
+ * Copyright 2015 by the NTPsec project contributors
+ *  SPDX-License-Identifier: BSD-2-Clause
+ */
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -45,12 +47,11 @@ Chew(struct timespec *tsa, struct timespec *tsc, unsigned sa, unsigned sc)
 
 static int err(int out, const char *legend)
 {
-    fprintf(stderr, "pps-api: %s\n", legend);
+    fprintf(stderr, "ntpfrob: %s\n", legend);
     exit(out);
 }
 
-int
-main(int argc, char **argv)
+void ppscheck(char *device)
 {
 	int fd;
 	pps_info_t pi;
@@ -60,12 +61,12 @@ main(int argc, char **argv)
 	u_int olda, oldc;
 	struct timespec to;
 
-	if (argc < 2)
-		argv[1] = "/dev/cuaa1";
+	if (device == NULL)
+		device = "/dev/cuaa1";
 	setbuf(stdout, 0);
-	fd = open(argv[1], O_RDONLY);
+	fd = open(device, O_RDONLY);
 	if (fd < 0) 
-		err(1, argv[1]);
+		err(1, device);
 	i = time_pps_create(fd, &ph);
 	if (i < 0)
 		err(1, "time_pps_create");
@@ -99,6 +100,6 @@ main(int argc, char **argv)
 		olda = pi.assert_sequence;
 		oldc = pi.clear_sequence;
 	}
-
-	return(0);
 }
+
+/* end */
diff --git a/util/precision.c b/ntpfrob/precision.c
similarity index 97%
rename from util/precision.c
rename to ntpfrob/precision.c
index 5152ac2..470cb4e 100644
--- a/util/precision.c
+++ b/ntpfrob/precision.c
@@ -1,3 +1,8 @@
+/*
+ * Copyright 2015 by the NTPsec project contributors
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
 #include "ntp_unixtime.h"
 
 #include <stdio.h>
@@ -7,16 +12,11 @@
 int default_get_resolution();
 int default_get_precision();
 
-int
-main(
-	int argc,
-	char *argv[]
-	)
+void precision(void)
 {
 	printf("log2(resolution) = %d, log2(precision) = %d\n",
 	       default_get_resolution(),
 	       default_get_precision());
-	return 0;
 }
 
 /* Find the resolution of the system clock by watching how the current time
@@ -169,3 +169,5 @@ default_get_precision(void)
 	    diff >>= 1;
 	return (i);
 }
+
+/* end */
diff --git a/util/testrs6000.c b/ntpfrob/stepback.c
similarity index 92%
rename from util/testrs6000.c
rename to ntpfrob/stepback.c
index 7b5ae18..f743c84 100644
--- a/util/testrs6000.c
+++ b/ntpfrob/stepback.c
@@ -9,6 +9,9 @@
  * the RS6000's day.
  *
  * Run this as root!
+ *
+ * Copyright 2015 by the NTPsec project contributors
+ * SPDX-License-Identifier: BSD-2-Clause
  */
 #include <stdlib.h>
 #include <unistd.h>
@@ -31,11 +34,7 @@ timeout(int sig)
 	}
 }
 
-int
-main (
-	int argc,
-	char *argv[]
-	)
+void stepback(void)
 {
 	struct itimerval value, oldvalue;
 	int i;
@@ -57,7 +56,5 @@ main (
 	for (i=0; i<10; i++) {
 		pause();
 	}
-
-	exit(0);
 }
 
diff --git a/util/ntptickadj.c b/ntpfrob/tickadj.c
similarity index 74%
rename from util/ntptickadj.c
rename to ntpfrob/tickadj.c
index 7029ac4..11f6f57 100644
--- a/util/ntptickadj.c
+++ b/ntpfrob/tickadj.c
@@ -1,9 +1,12 @@
 /*
- * ntptickadj - read, and possibly modify, the kernel `tick' and
+ * tickadj - read, and possibly modify, the kernel `tick' and
  *	     `tickadj' variables', using adjtimex(2).  This is
  *	     included only for compatibility with old scripts.
  *	     and its former support for unsafe /dev/kmem operations
  *	     has been removed.
+ *
+ * Copyright 2015 by the NTPsec project contributors
+ * SPDX-License-Identifier: BSD-2-Clause
  */
 
 #include <config.h>
@@ -22,26 +25,18 @@
 
 static struct timex txc;
 
-int main(
-	int argc,
-	char *argv[]
-	)
+void tickadj(const int newtick)
 {
-	if (argc > 2)
-	{
-		fprintf(stderr, "Usage: %s [tick_value]\n", argv[0]);
-		exit(-1);
-	}
-	else if (argc == 2)
+	if (newtick != 0)
 	{
 #ifdef STRUCT_TIMEX_HAS_TIME_TICK
-		if ( (txc.time_tick = atoi(argv[1])) < 1 )
+		if ( (txc.time_tick = newtick) < 1 )
 #else
-		if ( (txc.tick = atoi(argv[1])) < 1 )
+		if ( (txc.tick = newtick) < 1 )
 #endif
 		{
-			fprintf(stderr, "Silly value for tick: %s\n", argv[1]);
-			exit(-1);
+			fprintf(stderr, "ntpfrob: silly value for tick: %d\n", newtick);
+			exit(1);
 		}
 #ifdef ADJ_TIMETICK
 		txc.modes = ADJ_TIMETICK;
@@ -79,6 +74,5 @@ int main(
 #endif
 	}
 
-	exit(0);
 }
 #endif
diff --git a/ntpfrob/wscript b/ntpfrob/wscript
new file mode 100644
index 0000000..26148b8
--- /dev/null
+++ b/ntpfrob/wscript
@@ -0,0 +1,27 @@
+from waflib import Utils
+
+def build(ctx):
+	srcnode = ctx.srcnode.abspath()
+	bldnode = ctx.bldnode.abspath()
+
+	frob_sources = ['main.c', 'jitter.c', 'precision.c', 'stepback.c']
+
+	# FIXME: These guards do not currebtly work
+	if ctx.get_define("HAVE_SYS_TIMEPPS_H"):
+		frob_sources += ["pps-api.c"]
+
+	if ctx.get_define("HAVE_ADJTIMEX"):
+		frob_sources += ["tickadj.c"]
+
+	ctx(
+		target		= "ntpfrob",
+		features	= "c cprogram bld_include src_include libisc_include",
+		source		= frob_sources,
+		includes	= [
+					"%s/ntpfrob/" % bldnode
+				],
+		use		= "ntp opts isc M RT PTHREAD",
+		install_path = "${PREFIX}/bin/"
+	)
+
+
diff --git a/util/README b/util/README
index eedfb5c..17969de 100644
--- a/util/README
+++ b/util/README
@@ -16,14 +16,6 @@ hist.c::
     analysis. From this you can determine the jitter and if the clock ever
     runs backwards.
 
-jitter.c::
-    Can be used to determine the timing jitter due to
-    the operating system in a gettimeofday() call.  For most systems the
-    dominant contribution to the jitter budget is the period of the hardware
-    interrupt, usually in the range 10 us-1 ms.  For those systems with
-    microsecond counters, such as recent Sun and certain HP and DEC systems,
-    the jitter is dominated only by the operating system.
-
 kern.c::
    Header comment from deep in the mists of past time says: "This
    program simulates a first-order, type-II phase-lock loop using
@@ -33,12 +25,12 @@ kern.c::
    supposed to be used for should explain it to us, please.
 
 ntptime.c::
-    Checks the kernel configuration for the NTP user
-    interface syscalls ntp_gettime() and ntp_adjtime().  If present, the
-    current timekeeping data are displayed.  If not, a dissapointment is
+    Checks the kernel configuration for the NTP user interface
+    syscalls ntp_gettime() and ntp_adjtime().  If present, the current
+    timekeeping data are displayed.  If not, a disappointment is
     displayed.  See the kernel page file in the HTML documentation in
-    distribution for further details. ntptime will be built be if configure
-    believes your system can use it.
+    distribution for further details. ntptime will be built if the
+    configuration system believes your platform can use it.
 
 propdelay.c::
    Computes high frequency propagation delays, given the
@@ -46,30 +38,9 @@ propdelay.c::
    this for WWV/H and CHU.  Don't use it for WWVB (the computation
    is easier for that).
 
-pps-api.c::
-   Try to run this program to see what the PPS-API (RFC 2783 kernel
-   PPS interface) finds. You give it the device as argument and you
-   may have to modify the pp.mode = BLA assignment.
-
-precision.c::
-   Measure the resolution of the system clock watching how the current time
-   changes as we read it repeatedly.
-
 sht.c::
     Test program for shared memory refclock.
 
-testrs6000.c::
-    The testrs6000.c program is used for testing purposes with the IBM
-    RS/6000 AIX machines. Bill Jones <jones at chpc.utexas.edu> reports:
-    "I could not get a tickadj of less than 40 us to work on a RS6000.
-    If you set it less than 40 us do so at your own risk!" The RS6000
-    is dead, but this is kept around as a way to bogon-test other kernels.
-
-ntptickadj.c::
-    Can be used to read and set various kernel parameters affecting NTP
-    operations. See the tickadj page in the HTML documentation for further
-    details.
-
 tg.c and tg2.c::
     These are tone generators.  They make audio signals that emulate WWV
     or IRIG (-B and -E).  tg runs on Solaris.  tg2 is a clone that runs on
diff --git a/util/wscript b/util/wscript
index 2794ce2..b84809e 100644
--- a/util/wscript
+++ b/util/wscript
@@ -4,14 +4,10 @@ def build(ctx):
 	srcnode = ctx.srcnode.abspath()
 	bldnode = ctx.bldnode.abspath()
 
-	util = ['hist', 'jitter', 'precision', 'propdelay',
-		'sht', 'testrs6000', 'tg2']
+	util = ['hist', 'propdelay', 'sht', 'tg2']
 
 	if ctx.env.PLATFORM_TARGET != "freebsd": # XXX: fix this using a test in configure().
-		util += ["pps-api", "ntptime"]
-
-	if ctx.env.HAVE_ADJTIMEX:
-		util += ["ntptickadj"]
+		util += ["ntptime"]
 
 	for name in util:
 		ctx(
diff --git a/wscript b/wscript
index 2b1f7b4..e60a6a0 100644
--- a/wscript
+++ b/wscript
@@ -100,6 +100,7 @@ def build(ctx):
 	ctx.recurse("libntp")
 	ctx.recurse("ntpdig")
 	ctx.recurse("ntpd")
+	ctx.recurse("ntpfrob")
 	ctx.recurse("ntpq")
 #	ctx.recurse("clockstuff") - 
 #	ctx.recurse("kernel")
@@ -131,7 +132,7 @@ def build(ctx):
 		"scripts/ntpwait/ntpwait-man.txt.in",
 		"scripts/ntptrace/ntptrace-man.txt.in",
 		"ntpdig/ntpdig-man.txt.in",
-		"util/ntptickadj-man.txt.in",
+		"ntpfrob/ntpfrob-man.txt.in",
 		"util/ntptime-man.txt.in",
 	]
 



More information about the vc mailing list