File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / libparse / README
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    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>