[Git][NTPsec/ntpsec][master] Formally drop support for systems without ntp_adjtime(2).

Eric S. Raymond gitlab at mg.gitlab.com
Tue Dec 5 13:54:23 UTC 2017


Eric S. Raymond pushed to branch master at NTPsec / ntpsec


Commits:
85b39ec9 by Eric S. Raymond at 2017-12-05T08:54:13-05:00
Formally drop support for systems without ntp_adjtime(2).

However, restore building omnmn Solaris, which doesn't have STA_* symbols
in timex.h. Reporting of the kernel status word will be degraded on these
systems.

- - - - -


4 changed files:

- INSTALL
- NEWS
- devel/tour.txt
- libntp/statestr.c


Changes:

=====================================
INSTALL
=====================================
--- a/INSTALL
+++ b/INSTALL
@@ -4,10 +4,10 @@
 
 This software should build on any operating system conformant to
 POSIX.1-2001 and ISO/IEC 9899:1999 (C99).  In addition, the operating
-system must have an ntp_adjtime(2) call or the older BSD adjtime(2)
-call. Also, it must support the IPv6 API defined in RFC 2493 and
-RFC 2553. Finally, it must support iterating over active UDP interfaces
-via getifaddrs(3) or some equivalent facility.
+system must have an ntp_adjtime(2) call. Also, it must support the
+IPv6 API defined in RFC 2493 and RFC 2553. Finally, it must support
+iterating over active UDP interfaces via getifaddrs(3) or some
+equivalent facility.
 
 You can browse a summary of differences from legacy NTP here:
 
@@ -123,33 +123,6 @@ Under Unix, the simplest way to compile this package is:
      configure and compile the package for a different kind of
      computer), type `./waf distclean'.
 
-=== Apple ===
-
-Under OS X you can build NTPsec using Xcode command line tools with no
-additions. There is currently no support for using Xcode's builder.
-
-Previous support for OS X 10.11 has been dropped due to multiple
-botches on Apple's part.  Your OS X needs to have POSIX compliant
-clock_gettime(2) and clock_settime(2) functions.
-
-The OS X build has been tested in this environment:
-
- OS X Version             : 10.12
- Xcode Version            : 7.1
- Xcode Command Line Tools : 7.2-beta
-
-The macOS build has been tested in this environment:
-
- macOS Version            : 16.3.0
- Xcode Version            : 8.2.1
-
-All you will require is the Xcode command line tools with no additions.
-There is currently no support for using Xcode's builder. NTPsec's standard
-waf based build system is used.
-
-To disable Apple's NTP, open the Date & Time Preferences and uncheck
-"Set date and time automatically".
-
 === Solaris ===
 
 When building the NTPsec suite using gcc under Solaris, you may see


=====================================
NEWS
=====================================
--- a/NEWS
+++ b/NEWS
@@ -16,6 +16,13 @@ It is now possible to unpeer refclocks using a type/unit specification
 rather than a magic IP address.  This was the last obligatory use of
 magic IP addresses in the configuration grammar.
 
+OpenBSD has been removed from the list of supported platforms for
+ntpd. It will be restored if and when its clock API supports drift
+adjustment via ntp_adjtime() or equivalent facility.
+
+MAc OS X support hsas been dropped pending the implementation of
+ntp_adjtime(2); this is supposed to be in Mac OS X 10.13.
+
 == 2017-10-10: 1.0.0 ==
 
 This is the 1.0 release.


=====================================
devel/tour.txt
=====================================
--- a/devel/tour.txt
+++ b/devel/tour.txt
@@ -196,11 +196,12 @@ quite a while before NTPsec removed it.
 == System call interface and the PLL ==
 
 All of ntpd's clock management is done through four system calls:
-clock_gettime(2), clock_settime(2), and either ntp_adjtime(2) or the
-older BSD adjtime(2) call.  For ntp_adjtime(), ntpd actually uses a
-thin wrapper that hides the difference between systems with
-nanosecond-precision and those with only microsecond precision;
-internally, ntpd does all its calculations with nanosecond precision.
+clock_gettime(2), clock_settime(2), and either ntp_adjtime(2) or (in
+exceptional cases) the older BSD adjtime(2) call.  For ntp_adjtime(),
+ntpd actually uses a thin wrapper that hides the difference between
+systems with nanosecond-precision and those with only microsecond
+precision; internally, ntpd does all its calculations with nanosecond
+precision.
 
 The clock_gettime(2) and clock_settime(2) calls are standardized in
 POSIX; ntp_adjtime(2) is not, exhibiting some variability in
@@ -261,10 +262,12 @@ do its work, using a control technique called a PLL/FLL (phase-locked
 loop/frequency-locked loop) to do it.
 
 The older BSD adjtime(2) can be used for slewing as well, but doesn't
-assume a kernel-level PLL is available.  Some platforms, like OpenBSD
-and Mac OS X, use only this call because they lack ntp_adjtime(2).
-Without the PLL calls, convergence to good time is observably a lot
-slower and tracking will accordingly be less reliable.
+assume a kernel-level PLL is available.  It is used only when
+ntp_adjtime() calls generate a SIGSYS because the system call has not
+been implemented.  Without the PLL calls, convergence to good time is
+observably a lot slower and tracking will accordingly be less
+reliable; support for systems that lack them (notably OpenBSD and
+older Mac OS X versions) has been dropped fom NTPsec.
 
 Deep-in-the weeds details about the kernel PLL from Hal Murray follow.
 If you can follow these you may be qualified to maintain this code...


=====================================
libntp/statestr.c
=====================================
--- a/libntp/statestr.c
+++ b/libntp/statestr.c
@@ -190,22 +190,54 @@ static const struct codestring res_access_bits[] = {
  * kernel discipline status bits
  */
 static const struct codestring k_st_bits[] = {
+# ifdef STA_PLL
 	{ STA_PLL,			"pll" },
+# endif
+# ifdef STA_PPSFREQ
 	{ STA_PPSFREQ,			"ppsfreq" },
+# endif
+# ifdef STA_PPSTIME
 	{ STA_PPSTIME,			"ppstime" },
+# endif
+# ifdef STA_FLL
 	{ STA_FLL,			"fll" },
+# endif
+# ifdef STA_INS
 	{ STA_INS,			"ins" },
+# endif
+# ifdef STA_DEL
 	{ STA_DEL,			"del" },
+# endif
+# ifdef STA_UNSYNC
 	{ STA_UNSYNC,			"unsync" },
+# endif
+# ifdef STA_FREQHOLD
 	{ STA_FREQHOLD,			"freqhold" },
+# endif
+# ifdef STA_PPSSIGNAL
 	{ STA_PPSSIGNAL,		"ppssignal" },
+# endif
+# ifdef STA_PPSJITTER
 	{ STA_PPSJITTER,		"ppsjitter" },
+# endif
+# ifdef STA_PPSWANDER
 	{ STA_PPSWANDER,		"ppswander" },
+# endif
+# ifdef STA_PPSERROR
 	{ STA_PPSERROR,			"ppserror" },
+# endif
+# ifdef STA_CLOCKERR
 	{ STA_CLOCKERR,			"clockerr" },
+# endif
+# ifdef STA_NANO
 	{ STA_NANO,			"nano" },
+# endif
+# ifdef STA_MODE
 	{ STA_MODE,			"mode=fll" },
+# endif
+# ifdef STA_CLK
 	{ STA_CLK,			"src=B" },
+# endif
 	/* not used with getcode(), no terminating entry needed */
 };
 



View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/85b39ec925b96dae602e65ac1459f5aee7047ed4

---
View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/85b39ec925b96dae602e65ac1459f5aee7047ed4
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ntpsec.org/pipermail/vc/attachments/20171205/6a03b7c9/attachment.html>


More information about the vc mailing list