head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC5:1.1.1.3 netbsd-11-0-RC4:1.1.1.3 netbsd-11-0-RC3:1.1.1.3 netbsd-11-0-RC2:1.1.1.3 netbsd-11-0-RC1:1.1.1.3 perseant-exfatfs-base-20250801:1.1.1.3 netbsd-11:1.1.1.3.0.36 netbsd-11-base:1.1.1.3 netbsd-10-1-RELEASE:1.1.1.3 ntp-4-2-8p18:1.1.1.3 perseant-exfatfs-base-20240630:1.1.1.3 perseant-exfatfs:1.1.1.3.0.34 perseant-exfatfs-base:1.1.1.3 netbsd-8-3-RELEASE:1.1.1.3 netbsd-9-4-RELEASE:1.1.1.3 netbsd-10-0-RELEASE:1.1.1.3 netbsd-10-0-RC6:1.1.1.3 netbsd-10-0-RC5:1.1.1.3 netbsd-10-0-RC4:1.1.1.3 netbsd-10-0-RC3:1.1.1.3 netbsd-10-0-RC2:1.1.1.3 netbsd-10-0-RC1:1.1.1.3 netbsd-10:1.1.1.3.0.32 netbsd-10-base:1.1.1.3 ntp-4-2-8p15:1.1.1.3 netbsd-9-3-RELEASE:1.1.1.3 cjep_sun2x-base1:1.1.1.3 cjep_sun2x:1.1.1.3.0.30 cjep_sun2x-base:1.1.1.3 cjep_staticlib_x-base1:1.1.1.3 netbsd-9-2-RELEASE:1.1.1.3 cjep_staticlib_x:1.1.1.3.0.28 cjep_staticlib_x-base:1.1.1.3 netbsd-9-1-RELEASE:1.1.1.3 ntp-4-2-8p14:1.1.1.3 phil-wifi-20200421:1.1.1.3 phil-wifi-20200411:1.1.1.3 is-mlppp:1.1.1.3.0.26 is-mlppp-base:1.1.1.3 phil-wifi-20200406:1.1.1.3 netbsd-8-2-RELEASE:1.1.1.3 netbsd-9-0-RELEASE:1.1.1.3 netbsd-9-0-RC2:1.1.1.3 netbsd-9-0-RC1:1.1.1.3 phil-wifi-20191119:1.1.1.3 netbsd-9:1.1.1.3.0.24 netbsd-9-base:1.1.1.3 phil-wifi-20190609:1.1.1.3 netbsd-8-1-RELEASE:1.1.1.3 netbsd-8-1-RC1:1.1.1.3 pgoyette-compat-merge-20190127:1.1.1.3 pgoyette-compat-20190127:1.1.1.3 pgoyette-compat-20190118:1.1.1.3 pgoyette-compat-1226:1.1.1.3 pgoyette-compat-1126:1.1.1.3 pgoyette-compat-1020:1.1.1.3 pgoyette-compat-0930:1.1.1.3 ntp-4-2-8p12:1.1.1.3 pgoyette-compat-0906:1.1.1.3 netbsd-7-2-RELEASE:1.1.1.2.4.1 pgoyette-compat-0728:1.1.1.3 netbsd-8-0-RELEASE:1.1.1.3 phil-wifi:1.1.1.3.0.22 phil-wifi-base:1.1.1.3 pgoyette-compat-0625:1.1.1.3 netbsd-8-0-RC2:1.1.1.3 pgoyette-compat-0521:1.1.1.3 pgoyette-compat-0502:1.1.1.3 pgoyette-compat-0422:1.1.1.3 netbsd-8-0-RC1:1.1.1.3 pgoyette-compat-0415:1.1.1.3 pgoyette-compat-0407:1.1.1.3 ntp-4-2-8p11:1.1.1.3 pgoyette-compat-0330:1.1.1.3 pgoyette-compat-0322:1.1.1.3 pgoyette-compat-0315:1.1.1.3 netbsd-7-1-2-RELEASE:1.1.1.2.4.1 pgoyette-compat:1.1.1.3.0.20 pgoyette-compat-base:1.1.1.3 netbsd-7-1-1-RELEASE:1.1.1.2.4.1 matt-nb8-mediatek:1.1.1.3.0.18 matt-nb8-mediatek-base:1.1.1.3 perseant-stdc-iso10646:1.1.1.3.0.16 perseant-stdc-iso10646-base:1.1.1.3 netbsd-8:1.1.1.3.0.14 netbsd-8-base:1.1.1.3 prg-localcount2-base3:1.1.1.3 prg-localcount2-base2:1.1.1.3 prg-localcount2-base1:1.1.1.3 prg-localcount2:1.1.1.3.0.12 prg-localcount2-base:1.1.1.3 pgoyette-localcount-20170426:1.1.1.3 bouyer-socketcan-base1:1.1.1.3 ntp-4-2-8p10:1.1.1.3 pgoyette-localcount-20170320:1.1.1.3 netbsd-7-1:1.1.1.2.4.1.0.6 netbsd-7-1-RELEASE:1.1.1.2.4.1 netbsd-7-1-RC2:1.1.1.2.4.1 netbsd-7-nhusb-base-20170116:1.1.1.2.4.1 bouyer-socketcan:1.1.1.3.0.10 bouyer-socketcan-base:1.1.1.3 pgoyette-localcount-20170107:1.1.1.3 netbsd-7-1-RC1:1.1.1.2.4.1 ntp-4-2-8p9:1.1.1.3 pgoyette-localcount-20161104:1.1.1.3 netbsd-7-0-2-RELEASE:1.1.1.2.4.1 localcount-20160914:1.1.1.3 netbsd-7-nhusb:1.1.1.2.4.1.0.4 netbsd-7-nhusb-base:1.1.1.2.4.1 pgoyette-localcount-20160806:1.1.1.3 pgoyette-localcount-20160726:1.1.1.3 pgoyette-localcount:1.1.1.3.0.8 pgoyette-localcount-base:1.1.1.3 ntp-4-2-8p8:1.1.1.3 netbsd-7-0-1-RELEASE:1.1.1.2.4.1 ntp-4-2-8p7:1.1.1.3 ntp-4-2-8p5:1.1.1.3 ntp-4-2-8p4:1.1.1.3 netbsd-7-0:1.1.1.2.4.1.0.2 netbsd-7-0-RELEASE:1.1.1.2.4.1 netbsd-7-0-RC3:1.1.1.2.4.1 netbsd-7-0-RC2:1.1.1.2.4.1 ntp-4-2-8p3:1.1.1.3 netbsd-7-0-RC1:1.1.1.2.4.1 ntp-4-2-8p2:1.1.1.3 netbsd-5-1:1.1.1.3.0.6 netbsd-5-2:1.1.1.3.0.4 netbsd-5:1.1.1.3.0.2 ntp-4-2-8:1.1.1.3 netbsd-6-0-6-RELEASE:1.1.1.1 netbsd-6-1-5-RELEASE:1.1.1.1 netbsd-7:1.1.1.2.0.4 netbsd-7-base:1.1.1.2 yamt-pagecache-base9:1.1.1.2 yamt-pagecache-tag8:1.1.1.1 netbsd-6-1-4-RELEASE:1.1.1.1 netbsd-6-0-5-RELEASE:1.1.1.1 tls-earlyentropy:1.1.1.2.0.2 tls-earlyentropy-base:1.1.1.2 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.2 riastradh-drm2-base3:1.1.1.2 netbsd-6-1-3-RELEASE:1.1.1.1 netbsd-6-0-4-RELEASE:1.1.1.1 ntp-2-4-7p404:1.1.1.2 netbsd-6-1-2-RELEASE:1.1.1.1 netbsd-6-0-3-RELEASE:1.1.1.1 netbsd-6-1-1-RELEASE:1.1.1.1 riastradh-drm2-base2:1.1.1.1 riastradh-drm2-base1:1.1.1.1 riastradh-drm2:1.1.1.1.0.16 riastradh-drm2-base:1.1.1.1 netbsd-6-1:1.1.1.1.0.22 netbsd-6-0-2-RELEASE:1.1.1.1 netbsd-6-1-RELEASE:1.1.1.1 khorben-n900:1.1.1.1.0.20 netbsd-6-1-RC4:1.1.1.1 netbsd-6-1-RC3:1.1.1.1 agc-symver:1.1.1.1.0.18 agc-symver-base:1.1.1.1 netbsd-6-1-RC2:1.1.1.1 netbsd-6-1-RC1:1.1.1.1 yamt-pagecache-base8:1.1.1.1 netbsd-6-0-1-RELEASE:1.1.1.1 yamt-pagecache-base7:1.1.1.1 matt-nb6-plus-nbase:1.1.1.1 yamt-pagecache-base6:1.1.1.1 netbsd-6-0:1.1.1.1.0.14 netbsd-6-0-RELEASE:1.1.1.1 netbsd-6-0-RC2:1.1.1.1 tls-maxphys:1.1.1.1.0.12 tls-maxphys-base:1.1.1.2 matt-nb6-plus:1.1.1.1.0.10 matt-nb6-plus-base:1.1.1.1 netbsd-6-0-RC1:1.1.1.1 yamt-pagecache-base5:1.1.1.1 yamt-pagecache-base4:1.1.1.1 netbsd-6:1.1.1.1.0.8 netbsd-6-base:1.1.1.1 ntp-4-2-6p5:1.1.1.1 yamt-pagecache-base3:1.1.1.1 yamt-pagecache-base2:1.1.1.1 yamt-pagecache:1.1.1.1.0.6 yamt-pagecache-base:1.1.1.1 cherry-xenmp:1.1.1.1.0.4 cherry-xenmp-base:1.1.1.1 bouyer-quota2-nbase:1.1.1.1 bouyer-quota2:1.1.1.1.0.2 bouyer-quota2-base:1.1.1.1 matt-mips64-premerge-20101231:1.1.1.1 matt-premerge-20091211:1.1.1.1 ntp-4-2-6:1.1.1.1 UDEL:1.1.1; locks; strict; comment @# @; 1.1 date 2009.12.13.16.53.59; author kardel; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2009.12.13.16.53.59; author kardel; state Exp; branches 1.1.1.1.6.1 1.1.1.1.8.1 1.1.1.1.12.1 1.1.1.1.14.1 1.1.1.1.22.1; next 1.1.1.2; 1.1.1.2 date 2013.12.27.23.30.35; author christos; state Exp; branches 1.1.1.2.4.1; next 1.1.1.3; commitid lUOr4MoxyTWJnPix; 1.1.1.3 date 2014.12.19.20.37.36; author christos; state Exp; branches 1.1.1.3.2.1 1.1.1.3.4.1 1.1.1.3.6.1; next ; commitid ZhiTe4k7DUh9XG2y; 1.1.1.1.6.1 date 2014.05.22.15.50.04; author yamt; state Exp; branches; next ; commitid qRWX0Nj0VOtU8yBx; 1.1.1.1.8.1 date 2014.12.25.02.34.31; author snj; state Exp; branches; next ; commitid JG3hF57oHA79Lm3y; 1.1.1.1.12.1 date 2014.08.19.23.51.37; author tls; state Exp; branches; next ; commitid jTnpym9Qu0o4R1Nx; 1.1.1.1.14.1 date 2014.12.25.02.28.03; author snj; state Exp; branches; next ; commitid 5AhJfEA9N5i2Jm3y; 1.1.1.1.22.1 date 2014.12.25.02.13.00; author snj; state Exp; branches; next ; commitid YfAuzsC3wt5BDm3y; 1.1.1.2.4.1 date 2014.12.24.00.05.15; author riz; state Exp; branches; next ; commitid KfwYQsQPJT87Yd3y; 1.1.1.3.2.1 date 2014.12.19.20.37.36; author msaitoh; state dead; branches; next 1.1.1.3.2.2; commitid ysuzPTeSQAKO335y; 1.1.1.3.2.2 date 2015.01.07.04.45.23; author msaitoh; state Exp; branches; next ; commitid ysuzPTeSQAKO335y; 1.1.1.3.4.1 date 2014.12.19.20.37.36; author msaitoh; state dead; branches; next 1.1.1.3.4.2; commitid d5X8VW3e9U6mR45y; 1.1.1.3.4.2 date 2015.01.07.10.10.05; author msaitoh; state Exp; branches; next ; commitid d5X8VW3e9U6mR45y; 1.1.1.3.6.1 date 2014.12.19.20.37.36; author msaitoh; state dead; branches; next 1.1.1.3.6.2; commitid cHl8i0Vq4fzxx55y; 1.1.1.3.6.2 date 2015.01.07.12.13.14; author msaitoh; state Exp; branches; next ; commitid cHl8i0Vq4fzxx55y; desc @@ 1.1 log @Initial revision @ text @
Alice finds the kernel a house of cards.
Last update:
The technical report [2], which is a revision and update of an earlier report [3], describes an engineering model for a precision clock discipline function for a generic operating system. The model is the same hybrid phase/frequecy-lock feedback loop used by ntpd, but implemented in the kernel. The code described in [2] is included in Solaris and Digital/Compaq/HP Tru64. It provides two system calls ntp_gettime() and ntp_adjtime() and can discipline the system clock with microsecond resolution. However, newer hardware and kernels with the same system calls can discipline the clock with nanosecond resolution. The new code described in [1] is in FreeBSD and is an option for Linux, SunOS and Tru64; however, of the options, only the Linux implementation, which does not include licensed code, is readily available. The software and documentation, including a simulator used to verify correct behavior, but not involving licensed code, is available from nanokernel.tar.gz.
The kernel model also provides support for an external precision timing source, such as described in the Pulse-per-second (PPS) Signal Interfacing page. The new system calls are used by the PPSAPI interface and in turn by the PPS Clock Discipline driver (type 22) to provide synchronization limited in principle only by the accuracy and stability of the external timing source.
Alice finds the kernel a house of cards.
Last update: 10-Mar-2014 05:10 UTC
The technical report [2], which is a revision and update of an earlier report [3], describes an engineering model for a precision clock discipline function for a generic operating system. The model is the same hybrid phase/frequecy-lock feedback loop used by ntpd, but implemented in the kernel. The code described in [2] is included in Solaris and Digital/Compaq/HP Tru64. It provides two system calls ntp_gettime() and ntp_adjtime() and can discipline the system clock with microsecond resolution. However, newer hardware and kernels with the same system calls can discipline the clock with nanosecond resolution. The new code described in [1] is in FreeBSD, Linux and Tru64. The software and documentation, including a simulator used to verify correct behavior, but not involving licensed code, is available in the nanokernel.tar.gz distribution
Ordinarily, the kernel clock discipline function is used with the NTP daemon, but could be used for other purposes. The ntptime utility program can be used to control it manually.
The kernel model also provides support for an external precision timing source, such as described in the Pulse-per-second (PPS) Signal Interfacing page. The new system calls are used by the PPSAPI interface and in turn by the PPS Clock Discipline driver (type 22) to provide synchronization limited in principle only by the accuracy and stability of the external timing source. Typical results with the PPS signal from a GPS receiver and a modern computer are in the 3 μs range.