Annotation of embedaddon/ntp/libparse/README, revision 1.1
1.1 ! misho 1: PARSE reference clock driver:
! 2:
! 3: This directory contains the files making up the parser for
! 4: the parse refclock driver. For reasonably sane clocks this refclock
! 5: drivers allows a refclock implementation by just providing a
! 6: conversion routine and the appropriate NTP parameters. Refclock
! 7: support can run as low a 3k code with the parse refclock driver.
! 8:
! 9: The modules in here are designed to live in two worlds. In userlevel
! 10: as part of the xntp daemon and in kernel land as part of a STREAMS module
! 11: or, if someone gets to it, as part of a line discipline. Currently only
! 12: SunOS4.x/SunOS5.x STREAMS are supported (volunteers for other vendors like HP?).
! 13: This structure means, that refclock_parse can work with or without kernel
! 14: support. Kernelsupport increases accuracy tremendingly. The current restriction
! 15: of the parse driver is that it only supports SYSV type ttys and that kernel
! 16: support is only available for Suns right now.
! 17:
! 18: Three kernel modules are part of this directory. These work only on
! 19: SunOS (SunOS4 and SunOS5).
! 20:
! 21: SunOS4 (aka Solaris 1.x):
! 22: parsestreams.loadable_module.o - standard parse module for SunOS 4
! 23:
! 24: Both modules can be loaded via modload <modulename>.
! 25:
! 26: SunOS5 (aka Solaris 2.x):
! 27: parse - auto loadable streams module
! 28:
! 29: To install just drop "parse" into /kernel/strmod and
! 30: start the daemon (SunOS5 will do the rest).
! 31:
! 32: The structure of the parse reference clock driver is as follows:
! 33:
! 34: ntpd - contains NTP implementation and calls a reference clock
! 35: 127.127.8.x which is implemented by
! 36: refclock_parse.c
! 37: - which contains several refclock decriptions. These are
! 38: selected by the x part of the refclock address.
! 39: The lower two bits specify the device to use. Thus the
! 40: value (x % 4) determines the device to open
! 41: (/dev/refclock-0 - /dev/refclock-3).
! 42:
! 43: The kind of clock is selected by the mode parameter. This parameter
! 44: selects the clock type which deterimines how I/O is done,
! 45: the tty parameters and the NTP parameters.
! 46:
! 47: refclock_parse operates on an abstract reference clock
! 48: that delivers time stamps and stati. Offsets and sychron-
! 49: isation information is derived from this data and passed
! 50: on to refclock_receive of xntp which uses that data for
! 51: syncronisation.
! 52:
! 53: The abstract reference clock is generated by the parse*
! 54: routines. They parse the incoming data stream from the
! 55: clock and convert it to the appropriate time stamps.
! 56: The data is also mapped int the abstract clock states
! 57: POWERUP - clock has no valid phase and time code
! 58: information
! 59:
! 60: NOSYNC - Time code is not confirmed, phase is probably
! 61: ok.
! 62: SYNC - Time code and phase are correct.
! 63:
! 64: A clock is trusted for a certain time (type parameter) when
! 65: it leaves the SYNC state. This is derived from the
! 66: observation that quite a few clocks can still generate good
! 67: time code information when losing contact to their
! 68: synchronisation source. When the clock does not reagain
! 69: synchronisation in that trust period it will be deemed
! 70: unsynchronised until it regains synchronisation. The same
! 71: will happen if xntp sees the clock unsynchronised at
! 72: startup.
! 73:
! 74: The upper bit of x specifies that all samples delivered
! 75: from the clock should be used to discipline the NTP
! 76: loopfilter. For clock with accurate once a second time
! 77: information this means big improvements for time keeping.
! 78: A prerequisite for passing on the time stamps to
! 79: the loopfilter is, that the clock is in synchronised state.
! 80:
! 81: parse.c These are the general routines to parse the incoming data
! 82: stream. Usually these routines should not require
! 83: modification.
! 84:
! 85: clk_*.c These files hole the conversion code for the time stamps
! 86: and the description how the time code can be parsed and
! 87: where the time stamps are to be taken.
! 88: If you want to add a new clock type this is the file
! 89: you need to write in addition to mention it in
! 90: parse_conf.c and setting up the NTP and TTY parameters
! 91: in refclock_parse.c.
! 92:
! 93: Further information can be found in parse/README.parse and the various source
! 94: files.
! 95:
! 96: Frank Kardel
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>