diff options
Diffstat (limited to 'usr.sbin/xntpd/kernel/README')
-rw-r--r-- | usr.sbin/xntpd/kernel/README | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/usr.sbin/xntpd/kernel/README b/usr.sbin/xntpd/kernel/README new file mode 100644 index 0000000..cf69b13 --- /dev/null +++ b/usr.sbin/xntpd/kernel/README @@ -0,0 +1,90 @@ +This directory contains code for two line disciplines which may +work with BSD-style terminal drivers. While I'll try to cover +installation details for the more useful one here as best I can, +you really should know what you are doing before attempting to +put one of these in your kernel since the details seem to vary +from BSD variant to BSD variant. + +Tty_clk.c contains a generic clock support line discipline. +The terminal driver is actually run in raw mode, giving you an +eight bit data path. Instead of delivering the data +character-by-character, however, the line discipline collects +characters until one of two magic characters (your current erase +and kill characters. Don't throw up) is received. A timestamp +is then taken (by calling microtime()), inserted in the input +buffer after the magic character, and the whole mess made available +for input by the application. Both select() and SIGIO are supported +by the discipline. + +Tty_chu.c is a special purpose line discipline for receiving +the CHU time code. It understands enough about the format of the +code CHU transmits to filter out errors, and delivers an entire +ten character code group to the application all at once, including +a timestamp for each character. The structure the code group is +delivered in is defined in chudefs.h. Note that this line discipline +is old and could use some rewriting for better portability. Please +drop me a line if you are interested in using this. + +To install the clock line discipline, do something like the following: + +(1) Copy tty_clk.c into /sys/sys + +(2) Edit /sys/sys/tty_conf.c. You will want to include some facsimile + of the following lines: + +#include "clk.h" +#if NCLK > 0 +int clkopen(), clkclose(), clkwrite(), clkinput(), clkioctl(); +#endif + +#if NCLK > 0 + { clkopen, clkclose, ttread, clkwrite, clkioctl, + clkinput, nodev, nulldev, ttstart, nullmodem, /* 10- CLKLDISC */ + ttselect }, +#else + { nodev, nodev, nodev, nodev, nodev, + nodev, nodev, nodev, nodev, nodev, + nodev }, +#endif + + In Ultrix 4.2a and 4.3 the file to edit is /sys/data/tty_conf_data.c. + The lines should be + +#if NCLK > 0 + clkopen, clkclose, ttread, clkwrite, clkioctl, /* 10 */ + clkinput, nodev, nulldev, ttstart, nulldev, +#else + nodev, nodev, nodev, nodev, nodev, + nodev, nodev, nodev, nodev, nodev, +#endif + + Note that if your kernel doesn't include the ??select() entry in + the structure (i.e. there are only 10 entry points in the structure) + just leave it out. Also note that the number you give the line + discipline (10 in my kernel) will be specific to your kernel and + will depend on what is in there already. The entries sould be in + order with no missing space; that is, if there are only seven + disciplines already defined and you want to use 10 for good reason, + you should define a dummy 9th entry like this + + nodev, nodev, nodev, nodev, nodev, /* 9 */ + nodev, nodev, nodev, nodev, nodev, + +(3) Edit /sys/h/ioctl.h and include a line (somewhere near where other + line disciplines are defined) like: + +#define CLKLDISC 10 /* clock line discipline */ + + The `10' should match what you used in /sys/sys/tty_conf.c. + +(4) Edit /sys/conf/files and add a line which looks like: + +sys/tty_clk.c optional clk + +(5) Edit the configuration file for the machine you want to use + the clock line discipline on to include the following: + +pseudo-device clk 4 + +(6) Run config, then make clean, then make depend, then make vmunix. + Then reboot the new kernel. |