summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/html/vxworks.htm
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/html/vxworks.htm')
-rw-r--r--contrib/ntp/html/vxworks.htm153
1 files changed, 153 insertions, 0 deletions
diff --git a/contrib/ntp/html/vxworks.htm b/contrib/ntp/html/vxworks.htm
new file mode 100644
index 0000000..b6fae80
--- /dev/null
+++ b/contrib/ntp/html/vxworks.htm
@@ -0,0 +1,153 @@
+<HTML>
+<HEAD>
+ <TITLE>vxWorks Port of NTP</TITLE>
+</HEAD>
+<BODY LINK="#00008B" VLINK="#8B0000">
+
+<H1>VxWorks port of NTP </H1>
+
+<P>Creating a port for vxWorks posed some problems. This port may help
+as a starting point for similar ports to real-time OS's and other embeddable
+kernels, particularly where main() is not allowed, and where the configure
+scripts need to be altered. </P>
+
+<H1><B>Configuration issues</B></H1>
+
+<P>I decided to do as little invasive surgery as possible on the NTP code,
+so I brought the vxWorks header tree in line with the standard unix tree.
+The following changes were needed, as a side effect these changes will
+allow for easy porting of other autoconfigure enabled code. </P>
+
+<P>Where I have 386 you will need to put in your target type. The vxWorks
+tree entry point is /usr/wind. If these are the same for your system, you
+should be able to cut and paste the changes. </P>
+
+<P><BLINK>WARNING: Check you are not overwriting files, before entering
+the following: there should be no conflict, but check first... </BLINK></P>
+
+<P>export CC=&quot;cc386 -nostdlib -m486 -DCPU=I80486 -I/usr/wind/target/h&quot;
+<BR>
+export RANLIB=ranlib386 <BR>
+export AR=ar386 <BR>
+export VX_KERNEL=/usr/wind/target/config/ims_std_bsp/vxWorks <BR>
+cd /usr/wind/target/sys <BR>
+ln -s ../signal.h <BR>
+ln -s ../time.h <BR>
+ln -s socket.h sockio.h <BR>
+ln -s ../selectLib.h select.h <BR>
+ln -s ../timers.h <BR>
+touch file.h param.h resource.h utsname.h var.h ../netdb.h ../a.out.h ../termios.h
+<BR>
+echo &quot; ******ADD #include \&quot;sys/times.h\&quot; to sys/time.h
+&quot; </P>
+
+<P>The configure script must be changed in the following way to get the
+linking tests to work, once in the correct directory issue the following
+commands: <BR>
+sed -e 's%main.*()%vxmain()%' configure &gt; configure.vxnew <BR>
+mv configure.vxnew configure <BR>
+chmod 755 configure </P>
+<P>The new version 4 of NTP requires some maths functions so it links in the
+maths library (-lm) in the ntpd <a href="../ntpd/Makefile.am">Makefile.am</a>
+change the line "ntpd_LDADD = $(LDADD) -lm" by removing the "-lm".<BR>
+You are now ready to compile</P>
+
+
+<P><BR>
+The <A HREF="../configure.in">configure.in </A>file needed to be altered
+to allow for a host-target configuration to take place. </P>
+
+<UL>
+<LI>The define SYS_VXWORKS was added to the compilation flags. </LI>
+
+<LI>Little endianess is set if the target is of type iX86. </LI>
+
+<LI>The size of char, integer, long values are all set. If Wind River ever
+changes these values they will need to be updated. </LI>
+
+<LI>clock_settime() is defined to be used for setting the clock. </LI>
+
+<LI>The Linking flags have -r added to allow for relinking into the vxWorks
+kernel </LI>
+</UL>
+
+<P>Unfortunately I have had to make use of the <A HREF="../include/ntp_machine.h">ntp_machine.h
+</A>file to add in the checks that would have been checked at linking stage
+by autoconf, a better method should be devised. </P>
+
+<UL>
+<LI>There is now a NO_MAIN_ALLOWED define that simulates command line args,
+this allows the use of the normal startup sysntax. </LI>
+
+<LI>POSIX timers have been added. </LI>
+
+<LI>Structures normally found in netdb.h have been added with, the corresponding
+code is in <A HREF="../libntp/machines.c">machines.c </A>. Where possible
+the defines for these have been kept non-vxWorks specific.</LI>
+</UL>
+
+<P>Unfortunately there are still quite a few SYS_VXWORKS type defines in
+the source, but I have eliminated as many as possible. You have the choice
+of using the usrtime.a library avaliable from the vxworks archives or forgoing
+adjtime() and using the clock_[get|set]time().The <A HREF="../include/ntp_machine.h">ntp_machine.h
+</A>file clearly marks how to do this. </P>
+
+<H1><B>Compilation issues</B> </H1>
+
+<P>You will need autoconf and automake ... available free from the gnu
+archives worldwide. </P>
+
+<P>The variable arch is the target architecture (e.g. i486) </P>
+
+<P>mkdir A.vxworks (or whatever....) <BR>
+cd A.vxworks <BR>
+../configure --target=arch-wrs-vxworks [any other options] <BR>
+make </P>
+
+<P>Options I normally use are the --disable-all-clocks --enable-LOCAL-CLOCK flags.
+The program should proceed to compile without problem. The daemon ntpd,
+ntpdate, ntptrace, ntpdc, ntpq programs and of course the libraries are
+all fully ported. The other utilities are not, but they should be easy
+to port. </P>
+
+<H1>Running the software </H1>
+
+<P>Load in the various files, call them in the normal vxWorks function
+type manner. Here are some examples. Refer to the man pages for further
+information. </P>
+
+<P>ld &lt; ntpdate/ntpdate <BR>
+ld &lt; ntpd/ntpd <BR>
+ld &lt; ntptrace/ntptrace <BR>
+ld &lt; ntpq/ntpq <BR>
+ld &lt; ntpdc/ntpdc <BR>
+ntpdate (&quot;-b&quot;, &quot;192.168.0.245&quot;) <BR>
+sp(ntpd, &quot;-c&quot;, &quot;/export/home/casey/ntp/ntp.conf&quot;)
+<BR>
+ntpdc(&quot;-c&quot;, &quot;monlist&quot;, &quot;192.168.0.244&quot;)
+<BR>
+ntpq(&quot;-c&quot;, &quot;peers&quot;, &quot;192.168.0.244&quot;) <BR>
+ntptrace(&quot;192.168.0.244&quot;) <BR>
+</P>
+
+<H1>Bugs and such </H1>
+
+<P>Should you happen across any bugs, please let me know, or better yet
+fix them and submit a patch. Remember to make you patch general for Vxworks,
+not just for your particular architecture.
+<A HREF="http://www.ccii.co.za">CCII Systems
+(Pty) Ltd</A>, my ex employers, sponsored the time to this port.
+Please let me know how it goes, I would be most interested in offsets
+and configurations. </P>
+
+<P><BR>
+</P>
+
+<P>Casey Crellin</A> <BR>
+<A HREF="mailto:casey@csc.co.za">casey@csc.co.za</A> </P>
+
+<P><BR>
+</P>
+
+</BODY>
+</HTML>
OpenPOWER on IntegriCloud