summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorcvs2git <rtems-devel@rtems.org>1998-10-28 17:38:23 +0000
committercvs2git <rtems-devel@rtems.org>1998-10-28 17:38:23 +0000
commita6b6f0c130b613d7d807a772b8f85994d1c0d31e (patch)
tree6c40f2e9b0dd7672a271877203b92c0c211837bd /doc
parentchanged version to 4.0.0 (diff)
downloadrtems-a6b6f0c130b613d7d807a772b8f85994d1c0d31e.tar.bz2
This commit was manufactured by cvs2svn to create tag 'rtems-4-0-0'.4.0.0
Sprout from master 1998-10-28 17:38:22 UTC Joel Sherrill <joel.sherrill@OARcorp.com> 'changed version to 4.0.0' Delete: c/build-tools/README c/build-tools/cklength.c c/build-tools/eolstrip.c c/build-tools/install-if-change.in c/build-tools/lock-directory.in c/build-tools/packhex.c c/build-tools/rcs-clean.in c/build-tools/search-id.sh c/build-tools/unhex.c c/build-tools/unlock-directory.in c/src/ada-tests/mptests/mp01/config.h c/src/ada-tests/mptests/mp01/mp01.adb c/src/ada-tests/mptests/mp01/mptest.adb c/src/ada-tests/mptests/mp01/mptest.ads c/src/ada-tests/mptests/mp01/node1/mp01.scn c/src/ada-tests/mptests/mp01/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp01/node2/mp01.scn c/src/ada-tests/mptests/mp01/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp02/mptest.adb c/src/ada-tests/mptests/mp02/mptest.ads c/src/ada-tests/mptests/mp02/node1/mp02.scn c/src/ada-tests/mptests/mp02/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp02/node2/mp02.scn c/src/ada-tests/mptests/mp02/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp03/mptest.adb c/src/ada-tests/mptests/mp03/mptest.ads c/src/ada-tests/mptests/mp03/node1/mp03.scn c/src/ada-tests/mptests/mp03/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp03/node2/mp03.scn c/src/ada-tests/mptests/mp03/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp04/mptest.adb c/src/ada-tests/mptests/mp04/mptest.ads c/src/ada-tests/mptests/mp04/node1/mp04.scn c/src/ada-tests/mptests/mp04/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp04/node2/mp04.scn c/src/ada-tests/mptests/mp04/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp05/mptest.adb c/src/ada-tests/mptests/mp05/mptest.ads c/src/ada-tests/mptests/mp05/node1/mp05.scn c/src/ada-tests/mptests/mp05/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp05/node2/mp05.scn c/src/ada-tests/mptests/mp05/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp06/mptest.adb c/src/ada-tests/mptests/mp06/mptest.ads c/src/ada-tests/mptests/mp06/node1/mp06.scn c/src/ada-tests/mptests/mp06/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp06/node2/mp06.scn c/src/ada-tests/mptests/mp06/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp07/mptest.adb c/src/ada-tests/mptests/mp07/mptest.ads c/src/ada-tests/mptests/mp07/node1/mp07.scn c/src/ada-tests/mptests/mp07/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp07/node2/mp07.scn c/src/ada-tests/mptests/mp07/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp08/mptest.adb c/src/ada-tests/mptests/mp08/mptest.ads c/src/ada-tests/mptests/mp08/node1/mp08.scn c/src/ada-tests/mptests/mp08/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp08/node2/mp08.scn c/src/ada-tests/mptests/mp08/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp09/mptest.adb c/src/ada-tests/mptests/mp09/mptest.ads c/src/ada-tests/mptests/mp09/node1/mp09.scn c/src/ada-tests/mptests/mp09/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp09/node2/mp09.scn c/src/ada-tests/mptests/mp09/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp10/mptest.adb c/src/ada-tests/mptests/mp10/mptest.ads c/src/ada-tests/mptests/mp10/node1/mp10.scn c/src/ada-tests/mptests/mp10/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp10/node2/mp10.scn c/src/ada-tests/mptests/mp10/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp11/mptest.adb c/src/ada-tests/mptests/mp11/mptest.ads c/src/ada-tests/mptests/mp11/node1/mp11.scn c/src/ada-tests/mptests/mp11/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp11/node2/mp11.scn c/src/ada-tests/mptests/mp11/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp12/mptest.adb c/src/ada-tests/mptests/mp12/mptest.ads c/src/ada-tests/mptests/mp12/node1/mp12.scn c/src/ada-tests/mptests/mp12/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp12/node2/mp12.scn c/src/ada-tests/mptests/mp12/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp13/mptest.adb c/src/ada-tests/mptests/mp13/mptest.ads c/src/ada-tests/mptests/mp13/node1/mp13.scn c/src/ada-tests/mptests/mp13/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp13/node2/mp13.scn c/src/ada-tests/mptests/mp13/node2/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp14/mptest.adb c/src/ada-tests/mptests/mp14/mptest.ads c/src/ada-tests/mptests/mp14/node1/mp14.scn c/src/ada-tests/mptests/mp14/node1/mptest-per_node_configuration.adb c/src/ada-tests/mptests/mp14/node2/mp14.scn c/src/ada-tests/mptests/mp14/node2/mptest-per_node_configuration.adb c/src/ada-tests/samples/base_mp/mptest.adb c/src/ada-tests/samples/base_mp/mptest.ads c/src/ada-tests/samples/base_mp/node1/base_mp.scn c/src/ada-tests/samples/base_mp/node1/mptest-per_node_configuration.adb c/src/ada-tests/samples/base_mp/node2/base_mp.scn c/src/ada-tests/samples/base_mp/node2/mptest-per_node_configuration.adb c/src/ada-tests/samples/base_sp/base_sp.adb c/src/ada-tests/samples/base_sp/base_sp.scn c/src/ada-tests/samples/base_sp/config.h c/src/ada-tests/samples/base_sp/sptest.adb c/src/ada-tests/samples/base_sp/sptest.ads c/src/ada-tests/samples/hello/config.h c/src/ada-tests/samples/hello/hello.adb c/src/ada-tests/samples/hello/hello.scn c/src/ada-tests/samples/hello/sptest.adb c/src/ada-tests/samples/hello/sptest.ads c/src/ada-tests/samples/ticker/config.h c/src/ada-tests/samples/ticker/sptest.adb c/src/ada-tests/samples/ticker/sptest.ads c/src/ada-tests/samples/ticker/ticker.adb c/src/ada-tests/samples/ticker/ticker.scn c/src/ada-tests/sptests/sp01/config.h c/src/ada-tests/sptests/sp01/sp01.adb c/src/ada-tests/sptests/sp01/sp01.scn c/src/ada-tests/sptests/sp01/sptest.adb c/src/ada-tests/sptests/sp01/sptest.ads c/src/ada-tests/sptests/sp02/config.h c/src/ada-tests/sptests/sp02/sp02.adb c/src/ada-tests/sptests/sp02/sp02.scn c/src/ada-tests/sptests/sp02/sptest.adb c/src/ada-tests/sptests/sp02/sptest.ads c/src/ada-tests/sptests/sp03/config.h c/src/ada-tests/sptests/sp03/sp03.adb c/src/ada-tests/sptests/sp03/sp03.scn c/src/ada-tests/sptests/sp03/sptest.adb c/src/ada-tests/sptests/sp03/sptest.ads c/src/ada-tests/sptests/sp04/README c/src/ada-tests/sptests/sp04/config.h c/src/ada-tests/sptests/sp04/sp04.adb c/src/ada-tests/sptests/sp04/sp04.scn c/src/ada-tests/sptests/sp04/sptest.adb c/src/ada-tests/sptests/sp04/sptest.ads c/src/ada-tests/sptests/sp05/config.h c/src/ada-tests/sptests/sp05/sp05.adb c/src/ada-tests/sptests/sp05/sp05.scn c/src/ada-tests/sptests/sp05/sptest.adb c/src/ada-tests/sptests/sp05/sptest.ads c/src/ada-tests/sptests/sp06/config.h c/src/ada-tests/sptests/sp06/sp06.adb c/src/ada-tests/sptests/sp06/sp06.scn c/src/ada-tests/sptests/sp06/sptest.adb c/src/ada-tests/sptests/sp06/sptest.ads c/src/ada-tests/sptests/sp07/config.h c/src/ada-tests/sptests/sp07/sp07.adb c/src/ada-tests/sptests/sp07/sp07.scn c/src/ada-tests/sptests/sp07/sptest.adb c/src/ada-tests/sptests/sp07/sptest.ads c/src/ada-tests/sptests/sp08/config.h c/src/ada-tests/sptests/sp08/sp08.adb c/src/ada-tests/sptests/sp08/sp08.scn c/src/ada-tests/sptests/sp08/sptest.adb c/src/ada-tests/sptests/sp08/sptest.ads c/src/ada-tests/sptests/sp09/config.h c/src/ada-tests/sptests/sp09/sp09.adb c/src/ada-tests/sptests/sp09/sp09.scn c/src/ada-tests/sptests/sp09/sptest.adb c/src/ada-tests/sptests/sp09/sptest.ads c/src/ada-tests/sptests/sp11/config.h c/src/ada-tests/sptests/sp11/sp11.adb c/src/ada-tests/sptests/sp11/sp11.scn c/src/ada-tests/sptests/sp11/sptest.adb c/src/ada-tests/sptests/sp11/sptest.ads c/src/ada-tests/sptests/sp12/config.h c/src/ada-tests/sptests/sp12/sp12.adb c/src/ada-tests/sptests/sp12/sp12.scn c/src/ada-tests/sptests/sp12/sptest.adb c/src/ada-tests/sptests/sp12/sptest.ads c/src/ada-tests/sptests/sp13/config.h c/src/ada-tests/sptests/sp13/sp13.adb c/src/ada-tests/sptests/sp13/sp13.scn c/src/ada-tests/sptests/sp13/sptest.adb c/src/ada-tests/sptests/sp13/sptest.ads c/src/ada-tests/sptests/sp14/config.h c/src/ada-tests/sptests/sp14/sp14.adb c/src/ada-tests/sptests/sp14/sp14.scn c/src/ada-tests/sptests/sp14/sptest.adb c/src/ada-tests/sptests/sp14/sptest.ads c/src/ada-tests/sptests/sp15/config.h c/src/ada-tests/sptests/sp15/sp15.adb c/src/ada-tests/sptests/sp15/sp15.scn c/src/ada-tests/sptests/sp15/sptest.adb c/src/ada-tests/sptests/sp15/sptest.ads c/src/ada-tests/sptests/sp16/config.h c/src/ada-tests/sptests/sp16/sp16.adb c/src/ada-tests/sptests/sp16/sp16.scn c/src/ada-tests/sptests/sp16/sptest.adb c/src/ada-tests/sptests/sp16/sptest.ads c/src/ada-tests/sptests/sp17/config.h c/src/ada-tests/sptests/sp17/sp17.adb c/src/ada-tests/sptests/sp17/sp17.scn c/src/ada-tests/sptests/sp17/sptest.adb c/src/ada-tests/sptests/sp17/sptest.ads c/src/ada-tests/sptests/sp19/README c/src/ada-tests/sptests/sp19/config.h c/src/ada-tests/sptests/sp19/sp19.adb c/src/ada-tests/sptests/sp19/sp19.scn c/src/ada-tests/sptests/sp19/sptest.ads c/src/ada-tests/sptests/sp20/config.h c/src/ada-tests/sptests/sp20/sp20.adb c/src/ada-tests/sptests/sp20/sp20.scn c/src/ada-tests/sptests/sp20/sptest.adb c/src/ada-tests/sptests/sp20/sptest.ads c/src/ada-tests/sptests/sp21/config.h c/src/ada-tests/sptests/sp21/sp21.adb c/src/ada-tests/sptests/sp21/sp21.scn c/src/ada-tests/sptests/sp21/sptest.adb c/src/ada-tests/sptests/sp21/sptest.ads c/src/ada-tests/sptests/sp22/config.h c/src/ada-tests/sptests/sp22/sp22.adb c/src/ada-tests/sptests/sp22/sp22.scn c/src/ada-tests/sptests/sp22/sptest.adb c/src/ada-tests/sptests/sp22/sptest.ads c/src/ada-tests/sptests/sp23/config.h c/src/ada-tests/sptests/sp23/sp23.adb c/src/ada-tests/sptests/sp23/sp23.scn c/src/ada-tests/sptests/sp23/sptest.adb c/src/ada-tests/sptests/sp23/sptest.ads c/src/ada-tests/sptests/sp24/config.h c/src/ada-tests/sptests/sp24/sp24.adb c/src/ada-tests/sptests/sp24/sp24.scn c/src/ada-tests/sptests/sp24/sptest.adb c/src/ada-tests/sptests/sp24/sptest.ads c/src/ada-tests/sptests/sp25/config.h c/src/ada-tests/sptests/sp25/sp25.adb c/src/ada-tests/sptests/sp25/sp25.scn c/src/ada-tests/sptests/sp25/sptest.adb c/src/ada-tests/sptests/sp25/sptest.ads c/src/ada-tests/sptests/spsize/spsize.adb c/src/ada-tests/sptests/spsize/sptest.adb c/src/ada-tests/sptests/spsize/sptest.ads c/src/ada-tests/support/address_io.adb c/src/ada-tests/support/address_io.ads c/src/ada-tests/support/float_io.ads c/src/ada-tests/support/fp.inc c/src/ada-tests/support/init.c c/src/ada-tests/support/integer.inc c/src/ada-tests/support/rtems_calling_overhead.ads c/src/ada-tests/support/status_io.ads c/src/ada-tests/support/test_support.adb c/src/ada-tests/support/test_support.ads c/src/ada-tests/support/time_test_support.adb c/src/ada-tests/support/time_test_support.ads c/src/ada-tests/support/timer_driver.adb c/src/ada-tests/support/timer_driver.ads c/src/ada-tests/support/unsigned32_io.ads c/src/ada-tests/tmtests/tm01/config.h c/src/ada-tests/tmtests/tm01/tm01.adb c/src/ada-tests/tmtests/tm01/tmtest.adb c/src/ada-tests/tmtests/tm01/tmtest.ads c/src/ada-tests/tmtests/tm02/config.h c/src/ada-tests/tmtests/tm02/tm02.adb c/src/ada-tests/tmtests/tm02/tmtest.adb c/src/ada-tests/tmtests/tm02/tmtest.ads c/src/ada-tests/tmtests/tm03/config.h c/src/ada-tests/tmtests/tm03/tm03.adb c/src/ada-tests/tmtests/tm03/tmtest.adb c/src/ada-tests/tmtests/tm03/tmtest.ads c/src/ada-tests/tmtests/tm04/config.h c/src/ada-tests/tmtests/tm04/tm04.adb c/src/ada-tests/tmtests/tm04/tmtest.adb c/src/ada-tests/tmtests/tm04/tmtest.ads c/src/ada-tests/tmtests/tm05/config.h c/src/ada-tests/tmtests/tm05/tm05.adb c/src/ada-tests/tmtests/tm05/tmtest.adb c/src/ada-tests/tmtests/tm05/tmtest.ads c/src/ada-tests/tmtests/tm06/config.h c/src/ada-tests/tmtests/tm06/tm06.adb c/src/ada-tests/tmtests/tm06/tmtest.adb c/src/ada-tests/tmtests/tm06/tmtest.ads c/src/ada-tests/tmtests/tm07/config.h c/src/ada-tests/tmtests/tm07/tm07.adb c/src/ada-tests/tmtests/tm07/tmtest.adb c/src/ada-tests/tmtests/tm07/tmtest.ads c/src/ada-tests/tmtests/tm08/config.h c/src/ada-tests/tmtests/tm08/tm08.adb c/src/ada-tests/tmtests/tm08/tmtest.adb c/src/ada-tests/tmtests/tm08/tmtest.ads c/src/ada-tests/tmtests/tm09/config.h c/src/ada-tests/tmtests/tm09/tm09.adb c/src/ada-tests/tmtests/tm09/tmtest.adb c/src/ada-tests/tmtests/tm09/tmtest.ads c/src/ada-tests/tmtests/tm10/config.h c/src/ada-tests/tmtests/tm10/tm10.adb c/src/ada-tests/tmtests/tm10/tmtest.adb c/src/ada-tests/tmtests/tm10/tmtest.ads c/src/ada-tests/tmtests/tm11/config.h c/src/ada-tests/tmtests/tm11/tm11.adb c/src/ada-tests/tmtests/tm11/tmtest.adb c/src/ada-tests/tmtests/tm11/tmtest.ads c/src/ada-tests/tmtests/tm12/config.h c/src/ada-tests/tmtests/tm12/tm12.adb c/src/ada-tests/tmtests/tm12/tmtest.adb c/src/ada-tests/tmtests/tm12/tmtest.ads c/src/ada-tests/tmtests/tm13/config.h c/src/ada-tests/tmtests/tm13/tm13.adb c/src/ada-tests/tmtests/tm13/tmtest.adb c/src/ada-tests/tmtests/tm13/tmtest.ads c/src/ada-tests/tmtests/tm14/config.h c/src/ada-tests/tmtests/tm14/tm14.adb c/src/ada-tests/tmtests/tm14/tmtest.adb c/src/ada-tests/tmtests/tm14/tmtest.ads c/src/ada-tests/tmtests/tm15/config.h c/src/ada-tests/tmtests/tm15/tm15.adb c/src/ada-tests/tmtests/tm15/tmtest.adb c/src/ada-tests/tmtests/tm15/tmtest.ads c/src/ada-tests/tmtests/tm16/config.h c/src/ada-tests/tmtests/tm16/tm16.adb c/src/ada-tests/tmtests/tm16/tmtest.adb c/src/ada-tests/tmtests/tm16/tmtest.ads c/src/ada-tests/tmtests/tm17/config.h c/src/ada-tests/tmtests/tm17/tm17.adb c/src/ada-tests/tmtests/tm17/tmtest.adb c/src/ada-tests/tmtests/tm17/tmtest.ads c/src/ada-tests/tmtests/tm18/config.h c/src/ada-tests/tmtests/tm18/tm18.adb c/src/ada-tests/tmtests/tm18/tmtest.adb c/src/ada-tests/tmtests/tm18/tmtest.ads c/src/ada-tests/tmtests/tm19/config.h c/src/ada-tests/tmtests/tm19/tm19.adb c/src/ada-tests/tmtests/tm19/tmtest.adb c/src/ada-tests/tmtests/tm19/tmtest.ads c/src/ada-tests/tmtests/tm20/config.h c/src/ada-tests/tmtests/tm20/tm20.adb c/src/ada-tests/tmtests/tm20/tmtest.adb c/src/ada-tests/tmtests/tm20/tmtest.ads c/src/ada-tests/tmtests/tm21/config.h c/src/ada-tests/tmtests/tm21/tm21.adb c/src/ada-tests/tmtests/tm21/tmtest.adb c/src/ada-tests/tmtests/tm21/tmtest.ads c/src/ada-tests/tmtests/tm22/config.h c/src/ada-tests/tmtests/tm22/tm22.adb c/src/ada-tests/tmtests/tm22/tmtest.adb c/src/ada-tests/tmtests/tm22/tmtest.ads c/src/ada-tests/tmtests/tm23/config.h c/src/ada-tests/tmtests/tm23/tm23.adb c/src/ada-tests/tmtests/tm23/tmtest.adb c/src/ada-tests/tmtests/tm23/tmtest.ads c/src/ada-tests/tmtests/tm24/config.h c/src/ada-tests/tmtests/tm24/tm24.adb c/src/ada-tests/tmtests/tm24/tmtest.adb c/src/ada-tests/tmtests/tm24/tmtest.ads c/src/ada-tests/tmtests/tm25/config.h c/src/ada-tests/tmtests/tm25/tm25.adb c/src/ada-tests/tmtests/tm25/tmtest.adb c/src/ada-tests/tmtests/tm25/tmtest.ads c/src/ada-tests/tmtests/tm26/README c/src/ada-tests/tmtests/tm26/config.h c/src/ada-tests/tmtests/tm26/tm26.adb c/src/ada-tests/tmtests/tm26/tmtest.adp c/src/ada-tests/tmtests/tm26/tmtest.ads c/src/ada-tests/tmtests/tm27/README c/src/ada-tests/tmtests/tm27/config.h c/src/ada-tests/tmtests/tm27/tm27.adb c/src/ada-tests/tmtests/tm27/tmtest.adb c/src/ada-tests/tmtests/tm27/tmtest.ads c/src/ada-tests/tmtests/tm28/config.h c/src/ada-tests/tmtests/tm28/tm28.adb c/src/ada-tests/tmtests/tm28/tmtest.adb c/src/ada-tests/tmtests/tm28/tmtest.ads c/src/ada-tests/tmtests/tm29/config.h c/src/ada-tests/tmtests/tm29/tm29.adb c/src/ada-tests/tmtests/tm29/tmtest.adb c/src/ada-tests/tmtests/tm29/tmtest.ads c/src/ada-tests/tmtests/tmck/config.h c/src/ada-tests/tmtests/tmck/tmck.adb c/src/ada-tests/tmtests/tmck/tmtest.adb c/src/ada-tests/tmtests/tmck/tmtest.ads c/src/ada-tests/tmtests/tmoverhd/README c/src/ada-tests/tmtests/tmoverhd/config.h c/src/ada-tests/tmtests/tmoverhd/dummy_rtems.adb c/src/ada-tests/tmtests/tmoverhd/dummy_rtems.ads c/src/ada-tests/tmtests/tmoverhd/tmoverhd.adb c/src/ada-tests/tmtests/tmoverhd/tmtest.adb c/src/ada-tests/tmtests/tmoverhd/tmtest.ads c/src/ada/rtems.adb c/src/ada/rtems.ads c/src/exec/libcsupport/include/chain.h c/src/exec/libcsupport/include/clockdrv.h c/src/exec/libcsupport/include/console.h c/src/exec/libcsupport/include/iosupp.h c/src/exec/libcsupport/include/motorola/mc68230.h c/src/exec/libcsupport/include/motorola/mc68681.h c/src/exec/libcsupport/include/ringbuf.h c/src/exec/libcsupport/include/rtems/assoc.h c/src/exec/libcsupport/include/rtems/error.h c/src/exec/libcsupport/include/rtems/libcsupport.h c/src/exec/libcsupport/include/rtems/libio.h c/src/exec/libcsupport/include/spurious.h c/src/exec/libcsupport/include/sys/filio.h c/src/exec/libcsupport/include/sys/ioctl.h c/src/exec/libcsupport/include/sys/sockio.h c/src/exec/libcsupport/include/sys/termios.h c/src/exec/libcsupport/include/sys/utsname.h c/src/exec/libcsupport/include/timerdrv.h c/src/exec/libcsupport/include/vmeintr.h c/src/exec/libcsupport/include/zilog/z8036.h c/src/exec/libcsupport/include/zilog/z8530.h c/src/exec/libcsupport/include/zilog/z8536.h c/src/exec/libcsupport/src/README c/src/exec/libcsupport/src/__brk.c c/src/exec/libcsupport/src/__gettod.c c/src/exec/libcsupport/src/__times.c c/src/exec/libcsupport/src/assoc.c c/src/exec/libcsupport/src/closedir.c c/src/exec/libcsupport/src/error.c c/src/exec/libcsupport/src/getdents.c c/src/exec/libcsupport/src/hosterr.c c/src/exec/libcsupport/src/libio.c c/src/exec/libcsupport/src/malloc.c c/src/exec/libcsupport/src/newlibc.c c/src/exec/libcsupport/src/no_libc.c c/src/exec/libcsupport/src/opendir.c c/src/exec/libcsupport/src/readdir.c c/src/exec/libcsupport/src/rewinddir.c c/src/exec/libcsupport/src/scandir.c c/src/exec/libcsupport/src/seekdir.c c/src/exec/libcsupport/src/tcdrain.c c/src/exec/libcsupport/src/telldir.c c/src/exec/libcsupport/src/termios.c c/src/exec/libcsupport/src/unixlibc.c c/src/exec/libcsupport/src/utsname.c c/src/exec/libnetworking/README c/src/exec/libnetworking/arpa/ftp.h c/src/exec/libnetworking/arpa/inet.h c/src/exec/libnetworking/arpa/nameser.h c/src/exec/libnetworking/arpa/nameser_compat.h c/src/exec/libnetworking/arpa/telnet.h c/src/exec/libnetworking/bpfilter.h c/src/exec/libnetworking/kern/kern_subr.c c/src/exec/libnetworking/kern/uipc_domain.c c/src/exec/libnetworking/kern/uipc_mbuf.c c/src/exec/libnetworking/kern/uipc_socket.c c/src/exec/libnetworking/kern/uipc_socket2.c c/src/exec/libnetworking/lib/README c/src/exec/libnetworking/lib/getprotoby.c c/src/exec/libnetworking/lib/syslog.c c/src/exec/libnetworking/lib/tftpDriver.c c/src/exec/libnetworking/libc/addr2ascii.3 c/src/exec/libnetworking/libc/addr2ascii.c c/src/exec/libnetworking/libc/ascii2addr.c c/src/exec/libnetworking/libc/base64.c c/src/exec/libnetworking/libc/byteorder.3 c/src/exec/libnetworking/libc/ether_addr.c c/src/exec/libnetworking/libc/ethers.3 c/src/exec/libnetworking/libc/gethostbydns.c c/src/exec/libnetworking/libc/gethostbyht.c c/src/exec/libnetworking/libc/gethostbyname.3 c/src/exec/libnetworking/libc/gethostbynis.c c/src/exec/libnetworking/libc/gethostnamadr.c c/src/exec/libnetworking/libc/gethostname.c c/src/exec/libnetworking/libc/getnetbydns.c c/src/exec/libnetworking/libc/getnetbyht.c c/src/exec/libnetworking/libc/getnetbynis.c c/src/exec/libnetworking/libc/getnetent.3 c/src/exec/libnetworking/libc/getnetnamadr.c c/src/exec/libnetworking/libc/getproto.c c/src/exec/libnetworking/libc/getprotoent.3 c/src/exec/libnetworking/libc/getprotoent.c c/src/exec/libnetworking/libc/getprotoname.c c/src/exec/libnetworking/libc/getservbyname.c c/src/exec/libnetworking/libc/getservbyport.c c/src/exec/libnetworking/libc/getservent.3 c/src/exec/libnetworking/libc/getservent.c c/src/exec/libnetworking/libc/herror.c c/src/exec/libnetworking/libc/inet.3 c/src/exec/libnetworking/libc/inet_addr.c c/src/exec/libnetworking/libc/inet_lnaof.c c/src/exec/libnetworking/libc/inet_makeaddr.c c/src/exec/libnetworking/libc/inet_net_ntop.c c/src/exec/libnetworking/libc/inet_net_pton.c c/src/exec/libnetworking/libc/inet_neta.c c/src/exec/libnetworking/libc/inet_netof.c c/src/exec/libnetworking/libc/inet_network.c c/src/exec/libnetworking/libc/inet_ntoa.c c/src/exec/libnetworking/libc/inet_ntop.c c/src/exec/libnetworking/libc/inet_pton.c c/src/exec/libnetworking/libc/iso_addr.3 c/src/exec/libnetworking/libc/iso_addr.c c/src/exec/libnetworking/libc/linkaddr.3 c/src/exec/libnetworking/libc/linkaddr.c c/src/exec/libnetworking/libc/map_v4v6.c c/src/exec/libnetworking/libc/ns.3 c/src/exec/libnetworking/libc/ns_addr.c c/src/exec/libnetworking/libc/ns_name.c c/src/exec/libnetworking/libc/ns_netint.c c/src/exec/libnetworking/libc/ns_ntoa.c c/src/exec/libnetworking/libc/ns_parse.c c/src/exec/libnetworking/libc/ns_print.c c/src/exec/libnetworking/libc/ns_ttl.c c/src/exec/libnetworking/libc/nsap_addr.c c/src/exec/libnetworking/libc/rcmd.3 c/src/exec/libnetworking/libc/rcmd.c c/src/exec/libnetworking/libc/recv.c c/src/exec/libnetworking/libc/res_comp.c c/src/exec/libnetworking/libc/res_config.h c/src/exec/libnetworking/libc/res_data.c c/src/exec/libnetworking/libc/res_debug.c c/src/exec/libnetworking/libc/res_init.c c/src/exec/libnetworking/libc/res_mkquery.c c/src/exec/libnetworking/libc/res_mkupdate.c c/src/exec/libnetworking/libc/res_query.c c/src/exec/libnetworking/libc/res_send.c c/src/exec/libnetworking/libc/res_stubs.c c/src/exec/libnetworking/libc/res_update.c c/src/exec/libnetworking/libc/resolver.3 c/src/exec/libnetworking/libc/send.c c/src/exec/libnetworking/libc/strsep.c c/src/exec/libnetworking/loop.h c/src/exec/libnetworking/machine/conf.h c/src/exec/libnetworking/machine/cpu.h c/src/exec/libnetworking/machine/cpufunc.h c/src/exec/libnetworking/machine/endian.h c/src/exec/libnetworking/machine/in_cksum.h c/src/exec/libnetworking/machine/limits.h c/src/exec/libnetworking/machine/param.h c/src/exec/libnetworking/machine/types.h c/src/exec/libnetworking/machine/vmparam.h c/src/exec/libnetworking/net/bpf.h c/src/exec/libnetworking/net/ethernet.h c/src/exec/libnetworking/net/if.c c/src/exec/libnetworking/net/if.h c/src/exec/libnetworking/net/if_arp.h c/src/exec/libnetworking/net/if_dl.h c/src/exec/libnetworking/net/if_ethersubr.c c/src/exec/libnetworking/net/if_llc.h c/src/exec/libnetworking/net/if_loop.c c/src/exec/libnetworking/net/if_types.h c/src/exec/libnetworking/net/netisr.h c/src/exec/libnetworking/net/radix.c c/src/exec/libnetworking/net/radix.h c/src/exec/libnetworking/net/raw_cb.c c/src/exec/libnetworking/net/raw_cb.h c/src/exec/libnetworking/net/raw_usrreq.c c/src/exec/libnetworking/net/route.c c/src/exec/libnetworking/net/route.h c/src/exec/libnetworking/net/rtsock.c c/src/exec/libnetworking/netdb.h c/src/exec/libnetworking/netinet/icmp_var.h c/src/exec/libnetworking/netinet/if_ether.c c/src/exec/libnetworking/netinet/if_ether.h c/src/exec/libnetworking/netinet/igmp.c c/src/exec/libnetworking/netinet/igmp.h c/src/exec/libnetworking/netinet/igmp_var.h c/src/exec/libnetworking/netinet/in.c c/src/exec/libnetworking/netinet/in.h c/src/exec/libnetworking/netinet/in_cksum.c c/src/exec/libnetworking/netinet/in_cksum_i386.c c/src/exec/libnetworking/netinet/in_cksum_m68k.c c/src/exec/libnetworking/netinet/in_pcb.c c/src/exec/libnetworking/netinet/in_pcb.h c/src/exec/libnetworking/netinet/in_proto.c c/src/exec/libnetworking/netinet/in_rmx.c c/src/exec/libnetworking/netinet/in_systm.h c/src/exec/libnetworking/netinet/in_var.h c/src/exec/libnetworking/netinet/ip.h c/src/exec/libnetworking/netinet/ip_divert.c c/src/exec/libnetworking/netinet/ip_fw.c c/src/exec/libnetworking/netinet/ip_fw.h c/src/exec/libnetworking/netinet/ip_icmp.c c/src/exec/libnetworking/netinet/ip_icmp.h c/src/exec/libnetworking/netinet/ip_input.c c/src/exec/libnetworking/netinet/ip_mroute.c c/src/exec/libnetworking/netinet/ip_mroute.h c/src/exec/libnetworking/netinet/ip_output.c c/src/exec/libnetworking/netinet/ip_var.h c/src/exec/libnetworking/netinet/raw_ip.c c/src/exec/libnetworking/netinet/tcp.h c/src/exec/libnetworking/netinet/tcp_debug.c c/src/exec/libnetworking/netinet/tcp_debug.h c/src/exec/libnetworking/netinet/tcp_fsm.h c/src/exec/libnetworking/netinet/tcp_input.c c/src/exec/libnetworking/netinet/tcp_output.c c/src/exec/libnetworking/netinet/tcp_seq.h c/src/exec/libnetworking/netinet/tcp_subr.c c/src/exec/libnetworking/netinet/tcp_timer.c c/src/exec/libnetworking/netinet/tcp_timer.h c/src/exec/libnetworking/netinet/tcp_usrreq.c c/src/exec/libnetworking/netinet/tcp_var.h c/src/exec/libnetworking/netinet/tcpip.h c/src/exec/libnetworking/netinet/udp.h c/src/exec/libnetworking/netinet/udp_usrreq.c c/src/exec/libnetworking/netinet/udp_var.h c/src/exec/libnetworking/nfs/bootp_subr.c c/src/exec/libnetworking/nfs/krpc.h c/src/exec/libnetworking/nfs/nfs.h c/src/exec/libnetworking/nfs/nfsdiskless.h c/src/exec/libnetworking/nfs/nfsproto.h c/src/exec/libnetworking/nfs/rpcv2.h c/src/exec/libnetworking/nfs/xdr_subs.h c/src/exec/libnetworking/opt_ipfw.h c/src/exec/libnetworking/opt_mrouting.h c/src/exec/libnetworking/opt_tcpdebug.h c/src/exec/libnetworking/poll.h c/src/exec/libnetworking/resolv.h c/src/exec/libnetworking/rtems/issetugid.c c/src/exec/libnetworking/rtems/rtems_bootp.c c/src/exec/libnetworking/rtems/rtems_bsdnet.h c/src/exec/libnetworking/rtems/rtems_bsdnet_internal.h c/src/exec/libnetworking/rtems/rtems_glue.c c/src/exec/libnetworking/rtems/rtems_showicmpstat.c c/src/exec/libnetworking/rtems/rtems_showifstat.c c/src/exec/libnetworking/rtems/rtems_showipstat.c c/src/exec/libnetworking/rtems/rtems_showmbuf.c c/src/exec/libnetworking/rtems/rtems_showroute.c c/src/exec/libnetworking/rtems/rtems_showtcpstat.c c/src/exec/libnetworking/rtems/rtems_showudpstat.c c/src/exec/libnetworking/rtems/rtems_syscall.c c/src/exec/libnetworking/rtems/sghostname.c c/src/exec/libnetworking/rtems/tftp.h c/src/exec/libnetworking/sys/buf.h c/src/exec/libnetworking/sys/callout.h c/src/exec/libnetworking/sys/conf.h c/src/exec/libnetworking/sys/domain.h c/src/exec/libnetworking/sys/kernel.h c/src/exec/libnetworking/sys/libkern.h c/src/exec/libnetworking/sys/malloc.h c/src/exec/libnetworking/sys/mbuf.h c/src/exec/libnetworking/sys/mount.h c/src/exec/libnetworking/sys/param.h c/src/exec/libnetworking/sys/proc.h c/src/exec/libnetworking/sys/protosw.h c/src/exec/libnetworking/sys/queue.h c/src/exec/libnetworking/sys/reboot.h c/src/exec/libnetworking/sys/resourcevar.h c/src/exec/libnetworking/sys/rtprio.h c/src/exec/libnetworking/sys/select.h c/src/exec/libnetworking/sys/signalvar.h c/src/exec/libnetworking/sys/socket.h c/src/exec/libnetworking/sys/socketvar.h c/src/exec/libnetworking/sys/sysctl.h c/src/exec/libnetworking/sys/syslimits.h c/src/exec/libnetworking/sys/syslog.h c/src/exec/libnetworking/sys/systm.h c/src/exec/libnetworking/sys/ttydefaults.h c/src/exec/libnetworking/sys/ucred.h c/src/exec/libnetworking/sys/uio.h c/src/exec/libnetworking/syslog.h c/src/exec/libnetworking/vm/vm.h c/src/exec/libnetworking/vm/vm_extern.h c/src/exec/libnetworking/vm/vm_kern.h c/src/exec/libnetworking/vm/vm_param.h c/src/exec/posix/include/aio.h c/src/exec/posix/include/devctl.h c/src/exec/posix/include/intr.h c/src/exec/posix/include/limits.h c/src/exec/posix/include/mqueue.h c/src/exec/posix/include/pthread.h c/src/exec/posix/include/rtems/posix/Makefile.in c/src/exec/posix/include/rtems/posix/cancel.h c/src/exec/posix/include/rtems/posix/cond.h c/src/exec/posix/include/rtems/posix/condmp.h c/src/exec/posix/include/rtems/posix/config.h c/src/exec/posix/include/rtems/posix/intr.h c/src/exec/posix/include/rtems/posix/key.h c/src/exec/posix/include/rtems/posix/mqueue.h c/src/exec/posix/include/rtems/posix/mqueuemp.h c/src/exec/posix/include/rtems/posix/mutex.h c/src/exec/posix/include/rtems/posix/mutexmp.h c/src/exec/posix/include/rtems/posix/posixapi.h c/src/exec/posix/include/rtems/posix/priority.h c/src/exec/posix/include/rtems/posix/psignal.h c/src/exec/posix/include/rtems/posix/pthread.h c/src/exec/posix/include/rtems/posix/pthreadmp.h c/src/exec/posix/include/rtems/posix/semaphore.h c/src/exec/posix/include/rtems/posix/semaphoremp.h c/src/exec/posix/include/rtems/posix/seterr.h c/src/exec/posix/include/rtems/posix/threadsup.h c/src/exec/posix/include/rtems/posix/time.h c/src/exec/posix/include/sched.h c/src/exec/posix/include/semaphore.h c/src/exec/posix/include/sys/Makefile.in c/src/exec/posix/include/sys/utsname.h c/src/exec/posix/include/unistd.h c/src/exec/posix/include/wrap/Makefile.in c/src/exec/posix/inline/rtems/posix/Makefile.in c/src/exec/posix/inline/rtems/posix/cond.inl c/src/exec/posix/inline/rtems/posix/intr.inl c/src/exec/posix/inline/rtems/posix/key.inl c/src/exec/posix/inline/rtems/posix/mqueue.inl c/src/exec/posix/inline/rtems/posix/mutex.inl c/src/exec/posix/inline/rtems/posix/priority.inl c/src/exec/posix/inline/rtems/posix/pthread.inl c/src/exec/posix/inline/rtems/posix/semaphore.inl c/src/exec/posix/macros/rtems/posix/Makefile.in c/src/exec/rtems/include/rtems.h c/src/exec/rtems/include/rtems/rtems/Makefile.in c/src/exec/rtems/include/rtems/rtems/asr.h c/src/exec/rtems/include/rtems/rtems/attr.h c/src/exec/rtems/include/rtems/rtems/clock.h c/src/exec/rtems/include/rtems/rtems/config.h c/src/exec/rtems/include/rtems/rtems/dpmem.h c/src/exec/rtems/include/rtems/rtems/event.h c/src/exec/rtems/include/rtems/rtems/eventmp.h c/src/exec/rtems/include/rtems/rtems/eventset.h c/src/exec/rtems/include/rtems/rtems/intr.h c/src/exec/rtems/include/rtems/rtems/message.h c/src/exec/rtems/include/rtems/rtems/modes.h c/src/exec/rtems/include/rtems/rtems/mp.h c/src/exec/rtems/include/rtems/rtems/msgmp.h c/src/exec/rtems/include/rtems/rtems/options.h c/src/exec/rtems/include/rtems/rtems/part.h c/src/exec/rtems/include/rtems/rtems/partmp.h c/src/exec/rtems/include/rtems/rtems/ratemon.h c/src/exec/rtems/include/rtems/rtems/region.h c/src/exec/rtems/include/rtems/rtems/regionmp.h c/src/exec/rtems/include/rtems/rtems/rtemsapi.h c/src/exec/rtems/include/rtems/rtems/sem.h c/src/exec/rtems/include/rtems/rtems/semmp.h c/src/exec/rtems/include/rtems/rtems/signal.h c/src/exec/rtems/include/rtems/rtems/signalmp.h c/src/exec/rtems/include/rtems/rtems/status.h c/src/exec/rtems/include/rtems/rtems/support.h c/src/exec/rtems/include/rtems/rtems/taskmp.h c/src/exec/rtems/include/rtems/rtems/tasks.h c/src/exec/rtems/include/rtems/rtems/timer.h c/src/exec/rtems/include/rtems/rtems/types.h c/src/exec/rtems/inline/rtems/rtems/Makefile.in c/src/exec/rtems/inline/rtems/rtems/asr.inl c/src/exec/rtems/inline/rtems/rtems/attr.inl c/src/exec/rtems/inline/rtems/rtems/dpmem.inl c/src/exec/rtems/inline/rtems/rtems/event.inl c/src/exec/rtems/inline/rtems/rtems/eventset.inl c/src/exec/rtems/inline/rtems/rtems/message.inl c/src/exec/rtems/inline/rtems/rtems/modes.inl c/src/exec/rtems/inline/rtems/rtems/options.inl c/src/exec/rtems/inline/rtems/rtems/part.inl c/src/exec/rtems/inline/rtems/rtems/ratemon.inl c/src/exec/rtems/inline/rtems/rtems/region.inl c/src/exec/rtems/inline/rtems/rtems/sem.inl c/src/exec/rtems/inline/rtems/rtems/status.inl c/src/exec/rtems/inline/rtems/rtems/support.inl c/src/exec/rtems/inline/rtems/rtems/tasks.inl c/src/exec/rtems/inline/rtems/rtems/timer.inl c/src/exec/rtems/macros/rtems/rtems/Makefile.in c/src/exec/rtems/macros/rtems/rtems/asr.inl c/src/exec/rtems/macros/rtems/rtems/attr.inl c/src/exec/rtems/macros/rtems/rtems/dpmem.inl c/src/exec/rtems/macros/rtems/rtems/event.inl c/src/exec/rtems/macros/rtems/rtems/eventset.inl c/src/exec/rtems/macros/rtems/rtems/message.inl c/src/exec/rtems/macros/rtems/rtems/modes.inl c/src/exec/rtems/macros/rtems/rtems/options.inl c/src/exec/rtems/macros/rtems/rtems/part.inl c/src/exec/rtems/macros/rtems/rtems/ratemon.inl c/src/exec/rtems/macros/rtems/rtems/region.inl c/src/exec/rtems/macros/rtems/rtems/sem.inl c/src/exec/rtems/macros/rtems/rtems/status.inl c/src/exec/rtems/macros/rtems/rtems/support.inl c/src/exec/rtems/macros/rtems/rtems/tasks.inl c/src/exec/rtems/macros/rtems/rtems/timer.inl c/src/exec/rtems/src/rtclock.c c/src/exec/rtems/src/rtemstimer.c c/src/exec/sapi/include/confdefs.h c/src/exec/sapi/include/rtems/Makefile.in c/src/exec/sapi/include/rtems/README c/src/exec/sapi/include/rtems/config.h c/src/exec/sapi/include/rtems/directives.h c/src/exec/sapi/include/rtems/extension.h c/src/exec/sapi/include/rtems/fatal.h c/src/exec/sapi/include/rtems/init.h c/src/exec/sapi/include/rtems/io.h c/src/exec/sapi/include/rtems/mptables.h c/src/exec/sapi/include/rtems/sptables.h c/src/exec/sapi/inline/rtems/Makefile.in c/src/exec/sapi/inline/rtems/extension.inl c/src/exec/sapi/macros/rtems/Makefile.in c/src/exec/sapi/macros/rtems/extension.inl c/src/exec/score/cpu/mips/asm.h c/src/exec/score/cpu/mips/cpu.c c/src/exec/score/cpu/mips/cpu_asm.S c/src/exec/score/cpu/mips/cpu_asm.h c/src/exec/score/cpu/mips/idtcpu.h c/src/exec/score/cpu/mips/idtmon.h c/src/exec/score/cpu/mips/iregdef.h c/src/exec/score/cpu/mips/rtems.c c/src/exec/score/cpu/sh/ispsh7032.c c/src/exec/score/include/rtems/debug.h c/src/exec/score/include/rtems/score/Makefile.in c/src/exec/score/include/rtems/score/address.h c/src/exec/score/include/rtems/score/apiext.h c/src/exec/score/include/rtems/score/bitfield.h c/src/exec/score/include/rtems/score/chain.h c/src/exec/score/include/rtems/score/context.h c/src/exec/score/include/rtems/score/copyrt.h c/src/exec/score/include/rtems/score/coremsg.h c/src/exec/score/include/rtems/score/coremutex.h c/src/exec/score/include/rtems/score/coresem.h c/src/exec/score/include/rtems/score/heap.h c/src/exec/score/include/rtems/score/interr.h c/src/exec/score/include/rtems/score/isr.h c/src/exec/score/include/rtems/score/mpci.h c/src/exec/score/include/rtems/score/mppkt.h c/src/exec/score/include/rtems/score/object.h c/src/exec/score/include/rtems/score/objectmp.h c/src/exec/score/include/rtems/score/priority.h c/src/exec/score/include/rtems/score/stack.h c/src/exec/score/include/rtems/score/states.h c/src/exec/score/include/rtems/score/sysstate.h c/src/exec/score/include/rtems/score/thread.h c/src/exec/score/include/rtems/score/threadmp.h c/src/exec/score/include/rtems/score/threadq.h c/src/exec/score/include/rtems/score/tod.h c/src/exec/score/include/rtems/score/tqdata.h c/src/exec/score/include/rtems/score/userext.h c/src/exec/score/include/rtems/score/watchdog.h c/src/exec/score/include/rtems/score/wkspace.h c/src/exec/score/include/rtems/system.h c/src/exec/score/inline/rtems/score/Makefile.in c/src/exec/score/inline/rtems/score/address.inl c/src/exec/score/inline/rtems/score/chain.inl c/src/exec/score/inline/rtems/score/coremsg.inl c/src/exec/score/inline/rtems/score/coremutex.inl c/src/exec/score/inline/rtems/score/coresem.inl c/src/exec/score/inline/rtems/score/heap.inl c/src/exec/score/inline/rtems/score/isr.inl c/src/exec/score/inline/rtems/score/mppkt.inl c/src/exec/score/inline/rtems/score/object.inl c/src/exec/score/inline/rtems/score/objectmp.inl c/src/exec/score/inline/rtems/score/priority.inl c/src/exec/score/inline/rtems/score/stack.inl c/src/exec/score/inline/rtems/score/states.inl c/src/exec/score/inline/rtems/score/sysstate.inl c/src/exec/score/inline/rtems/score/thread.inl c/src/exec/score/inline/rtems/score/threadmp.inl c/src/exec/score/inline/rtems/score/tod.inl c/src/exec/score/inline/rtems/score/tqdata.inl c/src/exec/score/inline/rtems/score/userext.inl c/src/exec/score/inline/rtems/score/watchdog.inl c/src/exec/score/inline/rtems/score/wkspace.inl c/src/exec/score/macros/rtems/score/Makefile.in c/src/exec/score/macros/rtems/score/README c/src/exec/score/macros/rtems/score/address.inl c/src/exec/score/macros/rtems/score/chain.inl c/src/exec/score/macros/rtems/score/coremsg.inl c/src/exec/score/macros/rtems/score/coremutex.inl c/src/exec/score/macros/rtems/score/coresem.inl c/src/exec/score/macros/rtems/score/heap.inl c/src/exec/score/macros/rtems/score/isr.inl c/src/exec/score/macros/rtems/score/mppkt.inl c/src/exec/score/macros/rtems/score/object.inl c/src/exec/score/macros/rtems/score/objectmp.inl c/src/exec/score/macros/rtems/score/priority.inl c/src/exec/score/macros/rtems/score/stack.inl c/src/exec/score/macros/rtems/score/states.inl c/src/exec/score/macros/rtems/score/sysstate.inl c/src/exec/score/macros/rtems/score/thread.inl c/src/exec/score/macros/rtems/score/threadmp.inl c/src/exec/score/macros/rtems/score/tod.inl c/src/exec/score/macros/rtems/score/tqdata.inl c/src/exec/score/macros/rtems/score/userext.inl c/src/exec/score/macros/rtems/score/watchdog.inl c/src/exec/score/macros/rtems/score/wkspace.inl c/src/exec/score/src/coretod.c c/src/lib/include/rtems/assoc.h c/src/lib/include/rtems/error.h c/src/lib/include/rtems/libcsupport.h c/src/lib/include/rtems/libio.h c/src/lib/include/sys/filio.h c/src/lib/include/sys/ioctl.h c/src/lib/include/sys/sockio.h c/src/lib/include/sys/utsname.h c/src/lib/libbsp/a29k/portsw/start/Makefile.in c/src/lib/libbsp/a29k/portsw/start/amd.ah c/src/lib/libbsp/a29k/portsw/start/pswmacro.ah c/src/lib/libbsp/a29k/portsw/start/register.ah c/src/lib/libbsp/i386/shared/irq/idt.c c/src/lib/libbsp/i960/cvme961/start/Makefile.in c/src/lib/libbsp/m68k/efi332/start/Makefile.in c/src/lib/libbsp/m68k/efi332/start/start.c c/src/lib/libbsp/m68k/efi68k/start/Makefile.in c/src/lib/libbsp/m68k/efi68k/start/start.c c/src/lib/libbsp/m68k/gen68302/start/Makefile.in c/src/lib/libbsp/m68k/gen68302/start/start302.s c/src/lib/libbsp/m68k/gen68340/start/Makefile.in c/src/lib/libbsp/m68k/gen68340/start/start340.s c/src/lib/libbsp/m68k/gen68340/start/startfor340only.s c/src/lib/libbsp/m68k/gen68360/start/Makefile.in c/src/lib/libbsp/m68k/gen68360/start/start360.s c/src/lib/libbsp/m68k/ods68302/start/Makefile.in c/src/lib/libbsp/m68k/ods68302/start/cpuboot.c c/src/lib/libbsp/m68k/ods68302/start/debugreset.S c/src/lib/libbsp/m68k/ods68302/start/reset.S c/src/lib/libbsp/m68k/ods68302/startup/cpuboot.c c/src/lib/libbsp/mips/README c/src/lib/libbsp/mips/p4000/README c/src/lib/libbsp/mips/p4000/bsp_specs c/src/lib/libbsp/mips/p4000/console/console.c c/src/lib/libbsp/mips/p4000/console/led.S c/src/lib/libbsp/mips/p4000/include/bsp.h c/src/lib/libbsp/mips/p4000/include/coverhd.h c/src/lib/libbsp/mips/p4000/liblnk/lnklib.S c/src/lib/libbsp/mips/p4000/start/start.S c/src/lib/libbsp/mips/p4000/startup/bspclean.c c/src/lib/libbsp/mips/p4000/startup/bspstart.c c/src/lib/libbsp/mips/p4000/startup/ghlinkcmds c/src/lib/libbsp/mips/p4000/startup/idtmem.S c/src/lib/libbsp/mips/p4000/startup/idttlb.S c/src/lib/libbsp/mips/p4000/startup/inittlb.c c/src/lib/libbsp/mips/p4000/startup/linkcmds c/src/lib/libbsp/mips/p4000/startup/setvec.c c/src/lib/libbsp/mips/p4000/times c/src/lib/libbsp/mips64orion/p4000/start/Makefile.in c/src/lib/libbsp/mips64orion/p4000/start/start.S c/src/lib/libbsp/powerpc/dmv177/Makefile.in c/src/lib/libbsp/powerpc/dmv177/QUIRKS c/src/lib/libbsp/powerpc/dmv177/README c/src/lib/libbsp/powerpc/dmv177/README.net c/src/lib/libbsp/powerpc/dmv177/STATUS c/src/lib/libbsp/powerpc/dmv177/bsp_specs c/src/lib/libbsp/powerpc/dmv177/cable.doc c/src/lib/libbsp/powerpc/dmv177/clock/Makefile.in c/src/lib/libbsp/powerpc/dmv177/clock/clock.c c/src/lib/libbsp/powerpc/dmv177/console/Makefile.in c/src/lib/libbsp/powerpc/dmv177/console/config.c c/src/lib/libbsp/powerpc/dmv177/console/conscfg.c c/src/lib/libbsp/powerpc/dmv177/console/debugio.c c/src/lib/libbsp/powerpc/dmv177/include/Makefile.in c/src/lib/libbsp/powerpc/dmv177/include/bsp.h c/src/lib/libbsp/powerpc/dmv177/include/coverhd.h c/src/lib/libbsp/powerpc/dmv177/include/dmv170.h c/src/lib/libbsp/powerpc/dmv177/scv64/Makefile.in c/src/lib/libbsp/powerpc/dmv177/scv64/scv64.c c/src/lib/libbsp/powerpc/dmv177/sonic/Makefile.in c/src/lib/libbsp/powerpc/dmv177/sonic/sonic.c c/src/lib/libbsp/powerpc/dmv177/sonic/sonic.h c/src/lib/libbsp/powerpc/dmv177/start/Makefile.in c/src/lib/libbsp/powerpc/dmv177/start/start.s c/src/lib/libbsp/powerpc/dmv177/startup/Makefile.in c/src/lib/libbsp/powerpc/dmv177/startup/bspclean.c c/src/lib/libbsp/powerpc/dmv177/startup/bspstart.c c/src/lib/libbsp/powerpc/dmv177/startup/genpvec.c c/src/lib/libbsp/powerpc/dmv177/startup/linkcmds c/src/lib/libbsp/powerpc/dmv177/startup/setvec.c c/src/lib/libbsp/powerpc/dmv177/startup/vmeintr.c c/src/lib/libbsp/powerpc/dmv177/timer/Makefile.in c/src/lib/libbsp/powerpc/dmv177/timer/timer.c c/src/lib/libbsp/powerpc/dmv177/times c/src/lib/libbsp/powerpc/dmv177/tod/Makefile.in c/src/lib/libbsp/powerpc/dmv177/tod/config.c c/src/lib/libbsp/powerpc/dmv177/tod/todcfg.c c/src/lib/libbsp/powerpc/dmv177/wrapup/Makefile.in c/src/lib/libbsp/powerpc/psim/start/Makefile.in c/src/lib/libbsp/powerpc/psim/start/startsim.s c/src/lib/libbsp/sh/gensh1/start/Makefile.in c/src/lib/libbsp/shared/console.c c/src/lib/libbsp/shared/tod.c c/src/lib/libbsp/shared/tod.h c/src/lib/libbsp/shmdr/shm_driver.h c/src/lib/libbsp/sparc/erc32/start/Makefile.in c/src/lib/libbsp/sparc/erc32/start/startsis.s c/src/lib/libc/assoc.c c/src/lib/libc/assoc.h c/src/lib/libc/error.c c/src/lib/libc/error.h c/src/lib/libc/utsname.c c/src/lib/libchip/Makefile.in c/src/lib/libchip/rtc/Makefile.in c/src/lib/libchip/rtc/README.ds1643 c/src/lib/libchip/rtc/README.icm7170 c/src/lib/libchip/rtc/README.m48t08 c/src/lib/libchip/rtc/README.m48t18 c/src/lib/libchip/rtc/STATUS c/src/lib/libchip/rtc/icm7170.c c/src/lib/libchip/rtc/icm7170.h c/src/lib/libchip/rtc/icm7170_reg.c c/src/lib/libchip/rtc/icm7170_reg2.c c/src/lib/libchip/rtc/icm7170_reg4.c c/src/lib/libchip/rtc/icm7170_reg8.c c/src/lib/libchip/rtc/m48t08.c c/src/lib/libchip/rtc/m48t08.h c/src/lib/libchip/rtc/m48t08_reg.c c/src/lib/libchip/rtc/m48t08_reg2.c c/src/lib/libchip/rtc/m48t08_reg4.c c/src/lib/libchip/rtc/m48t08_reg8.c c/src/lib/libchip/rtc/rtc.h c/src/lib/libchip/rtc/rtcprobe.c c/src/lib/libchip/serial/Makefile.in c/src/lib/libchip/serial/README c/src/lib/libchip/serial/README.mc68681 c/src/lib/libchip/serial/README.ns16550 c/src/lib/libchip/serial/README.xr88681 c/src/lib/libchip/serial/README.z85c30 c/src/lib/libchip/serial/STATUS c/src/lib/libchip/serial/mc68681.c c/src/lib/libchip/serial/mc68681.h c/src/lib/libchip/serial/mc68681_baud.c c/src/lib/libchip/serial/mc68681_p.h c/src/lib/libchip/serial/mc68681_reg.c c/src/lib/libchip/serial/mc68681_reg2.c c/src/lib/libchip/serial/mc68681_reg4.c c/src/lib/libchip/serial/mc68681_reg8.c c/src/lib/libchip/serial/ns16550.c c/src/lib/libchip/serial/ns16550.h c/src/lib/libchip/serial/ns16550_p.h c/src/lib/libchip/serial/serial.h c/src/lib/libchip/serial/serprobe.c c/src/lib/libchip/serial/sersupp.h c/src/lib/libchip/serial/termios_baud2index.c c/src/lib/libchip/serial/termios_baud2num.c c/src/lib/libchip/serial/z85c30.c c/src/lib/libchip/serial/z85c30.h c/src/lib/libchip/serial/z85c30_p.h c/src/lib/libchip/serial/z85c30_reg.c c/src/lib/libcpu/i386/idt.c c/src/lib/libcpu/m68k/shared/misc/memcpy.c c/src/lib/libcpu/mips/clock/ckinit.c c/src/lib/libcpu/mips/clock/clock.S c/src/lib/libcpu/mips/clock/clock.h c/src/lib/libcpu/mips/timer/gettime.S c/src/lib/libcpu/mips/timer/timer.c c/src/lib/libcpu/sh/sh7032/score/cpu_asm.c c/src/lib/libcpu/sh/sh7032/score/ispsh7032.c c/src/lib/libcpu/sh/sh7045/score/cpu_asm.c c/src/lib/libcpu/sparc/include/erc32.h c/src/libchip/rtc/Makefile.in c/src/libchip/rtc/README.ds1643 c/src/libchip/rtc/README.icm7170 c/src/libchip/rtc/README.m48t08 c/src/libchip/rtc/README.m48t18 c/src/libchip/rtc/STATUS c/src/libchip/rtc/icm7170.c c/src/libchip/rtc/icm7170.h c/src/libchip/rtc/icm7170_reg.c c/src/libchip/rtc/icm7170_reg2.c c/src/libchip/rtc/icm7170_reg4.c c/src/libchip/rtc/icm7170_reg8.c c/src/libchip/rtc/m48t08.c c/src/libchip/rtc/m48t08.h c/src/libchip/rtc/m48t08_reg.c c/src/libchip/rtc/m48t08_reg2.c c/src/libchip/rtc/m48t08_reg4.c c/src/libchip/rtc/m48t08_reg8.c c/src/libchip/rtc/rtc.h c/src/libchip/rtc/rtcprobe.c c/src/libchip/serial/Makefile.in c/src/libchip/serial/README c/src/libchip/serial/README.mc68681 c/src/libchip/serial/README.ns16550 c/src/libchip/serial/README.xr88681 c/src/libchip/serial/README.z85c30 c/src/libchip/serial/STATUS c/src/libchip/serial/mc68681.c c/src/libchip/serial/mc68681.h c/src/libchip/serial/mc68681_baud.c c/src/libchip/serial/mc68681_p.h c/src/libchip/serial/mc68681_reg.c c/src/libchip/serial/mc68681_reg2.c c/src/libchip/serial/mc68681_reg4.c c/src/libchip/serial/mc68681_reg8.c c/src/libchip/serial/ns16550.c c/src/libchip/serial/ns16550.h c/src/libchip/serial/ns16550_p.h c/src/libchip/serial/serial.h c/src/libchip/serial/serprobe.c c/src/libchip/serial/sersupp.h c/src/libchip/serial/termios_baud2index.c c/src/libchip/serial/termios_baud2num.c c/src/libchip/serial/z85c30.c c/src/libchip/serial/z85c30.h c/src/libchip/serial/z85c30_p.h c/src/libchip/serial/z85c30_reg.c c/src/libchip/shmdr/README c/src/libchip/shmdr/addlq.c c/src/libchip/shmdr/cnvpkt.c c/src/libchip/shmdr/dump.c c/src/libchip/shmdr/fatal.c c/src/libchip/shmdr/getlq.c c/src/libchip/shmdr/getpkt.c c/src/libchip/shmdr/init.c c/src/libchip/shmdr/initlq.c c/src/libchip/shmdr/intr.c c/src/libchip/shmdr/mpci.h c/src/libchip/shmdr/mpisr.c c/src/libchip/shmdr/poll.c c/src/libchip/shmdr/receive.c c/src/libchip/shmdr/retpkt.c c/src/libchip/shmdr/send.c c/src/libchip/shmdr/setckvec.c c/src/libchip/shmdr/shm_driver.h c/src/libmisc/README c/src/libmisc/assoc/Makefile.in c/src/libmisc/assoc/assoc.c c/src/libmisc/assoc/assoc.h c/src/libmisc/cpuuse/Makefile.in c/src/libmisc/cpuuse/README c/src/libmisc/cpuuse/cpuuse.c c/src/libmisc/cpuuse/cpuuse.h c/src/libmisc/cpuuse/internal.h c/src/libmisc/error/Makefile.in c/src/libmisc/error/error.c c/src/libmisc/error/error.h c/src/libmisc/monitor/Makefile.in c/src/libmisc/monitor/README c/src/libmisc/monitor/mon-command.c c/src/libmisc/monitor/mon-config.c c/src/libmisc/monitor/mon-dname.c c/src/libmisc/monitor/mon-driver.c c/src/libmisc/monitor/mon-extension.c c/src/libmisc/monitor/mon-itask.c c/src/libmisc/monitor/mon-manager.c c/src/libmisc/monitor/mon-monitor.c c/src/libmisc/monitor/mon-mpci.c c/src/libmisc/monitor/mon-object.c c/src/libmisc/monitor/mon-prmisc.c c/src/libmisc/monitor/mon-queue.c c/src/libmisc/monitor/mon-server.c c/src/libmisc/monitor/mon-symbols.c c/src/libmisc/monitor/mon-task.c c/src/libmisc/monitor/monitor.h c/src/libmisc/monitor/symbols.h c/src/libmisc/rtmonuse/Makefile.in c/src/libmisc/rtmonuse/rtmonuse.c c/src/libmisc/rtmonuse/rtmonuse.h c/src/libmisc/stackchk/Makefile.in c/src/libmisc/stackchk/README c/src/libmisc/stackchk/check.c c/src/libmisc/stackchk/internal.h c/src/libmisc/stackchk/stackchk.h c/src/libmisc/wrapup/Makefile.in c/src/libnetworking/CHANGELOG c/src/libnetworking/Makefile.in c/src/libnetworking/README c/src/libnetworking/arpa/ftp.h c/src/libnetworking/arpa/inet.h c/src/libnetworking/arpa/nameser.h c/src/libnetworking/arpa/nameser_compat.h c/src/libnetworking/arpa/telnet.h c/src/libnetworking/bpfilter.h c/src/libnetworking/include/Makefile.in c/src/libnetworking/kern/Makefile.in c/src/libnetworking/kern/kern_subr.c c/src/libnetworking/kern/uipc_domain.c c/src/libnetworking/kern/uipc_mbuf.c c/src/libnetworking/kern/uipc_socket.c c/src/libnetworking/kern/uipc_socket2.c c/src/libnetworking/lib/Makefile.in c/src/libnetworking/lib/README c/src/libnetworking/lib/getprotoby.c c/src/libnetworking/lib/syslog.c c/src/libnetworking/lib/tftpDriver.c c/src/libnetworking/libc/Makefile.in c/src/libnetworking/libc/addr2ascii.3 c/src/libnetworking/libc/addr2ascii.c c/src/libnetworking/libc/ascii2addr.c c/src/libnetworking/libc/base64.c c/src/libnetworking/libc/byteorder.3 c/src/libnetworking/libc/ether_addr.c c/src/libnetworking/libc/ethers.3 c/src/libnetworking/libc/gethostbydns.c c/src/libnetworking/libc/gethostbyht.c c/src/libnetworking/libc/gethostbyname.3 c/src/libnetworking/libc/gethostbynis.c c/src/libnetworking/libc/gethostnamadr.c c/src/libnetworking/libc/gethostname.c c/src/libnetworking/libc/getnetbydns.c c/src/libnetworking/libc/getnetbyht.c c/src/libnetworking/libc/getnetbynis.c c/src/libnetworking/libc/getnetent.3 c/src/libnetworking/libc/getnetnamadr.c c/src/libnetworking/libc/getproto.c c/src/libnetworking/libc/getprotoent.3 c/src/libnetworking/libc/getprotoent.c c/src/libnetworking/libc/getprotoname.c c/src/libnetworking/libc/getservbyname.c c/src/libnetworking/libc/getservbyport.c c/src/libnetworking/libc/getservent.3 c/src/libnetworking/libc/getservent.c c/src/libnetworking/libc/herror.c c/src/libnetworking/libc/inet.3 c/src/libnetworking/libc/inet_addr.c c/src/libnetworking/libc/inet_lnaof.c c/src/libnetworking/libc/inet_makeaddr.c c/src/libnetworking/libc/inet_net_ntop.c c/src/libnetworking/libc/inet_net_pton.c c/src/libnetworking/libc/inet_neta.c c/src/libnetworking/libc/inet_netof.c c/src/libnetworking/libc/inet_network.c c/src/libnetworking/libc/inet_ntoa.c c/src/libnetworking/libc/inet_ntop.c c/src/libnetworking/libc/inet_pton.c c/src/libnetworking/libc/iso_addr.3 c/src/libnetworking/libc/iso_addr.c c/src/libnetworking/libc/linkaddr.3 c/src/libnetworking/libc/linkaddr.c c/src/libnetworking/libc/map_v4v6.c c/src/libnetworking/libc/ns.3 c/src/libnetworking/libc/ns_addr.c c/src/libnetworking/libc/ns_name.c c/src/libnetworking/libc/ns_netint.c c/src/libnetworking/libc/ns_ntoa.c c/src/libnetworking/libc/ns_parse.c c/src/libnetworking/libc/ns_print.c c/src/libnetworking/libc/ns_ttl.c c/src/libnetworking/libc/nsap_addr.c c/src/libnetworking/libc/rcmd.3 c/src/libnetworking/libc/rcmd.c c/src/libnetworking/libc/recv.c c/src/libnetworking/libc/res_comp.c c/src/libnetworking/libc/res_config.h c/src/libnetworking/libc/res_data.c c/src/libnetworking/libc/res_debug.c c/src/libnetworking/libc/res_init.c c/src/libnetworking/libc/res_mkquery.c c/src/libnetworking/libc/res_mkupdate.c c/src/libnetworking/libc/res_query.c c/src/libnetworking/libc/res_send.c c/src/libnetworking/libc/res_stubs.c c/src/libnetworking/libc/res_update.c c/src/libnetworking/libc/resolver.3 c/src/libnetworking/libc/send.c c/src/libnetworking/libc/strsep.c c/src/libnetworking/loop.h c/src/libnetworking/machine/conf.h c/src/libnetworking/machine/cpu.h c/src/libnetworking/machine/cpufunc.h c/src/libnetworking/machine/endian.h c/src/libnetworking/machine/in_cksum.h c/src/libnetworking/machine/limits.h c/src/libnetworking/machine/param.h c/src/libnetworking/machine/types.h c/src/libnetworking/machine/vmparam.h c/src/libnetworking/net/Makefile.in c/src/libnetworking/net/bpf.h c/src/libnetworking/net/ethernet.h c/src/libnetworking/net/if.c c/src/libnetworking/net/if.h c/src/libnetworking/net/if_arp.h c/src/libnetworking/net/if_dl.h c/src/libnetworking/net/if_ethersubr.c c/src/libnetworking/net/if_llc.h c/src/libnetworking/net/if_loop.c c/src/libnetworking/net/if_types.h c/src/libnetworking/net/netisr.h c/src/libnetworking/net/radix.c c/src/libnetworking/net/radix.h c/src/libnetworking/net/raw_cb.c c/src/libnetworking/net/raw_cb.h c/src/libnetworking/net/raw_usrreq.c c/src/libnetworking/net/route.c c/src/libnetworking/net/route.h c/src/libnetworking/net/rtsock.c c/src/libnetworking/netdb.h c/src/libnetworking/netinet/Makefile.in c/src/libnetworking/netinet/icmp_var.h c/src/libnetworking/netinet/if_ether.c c/src/libnetworking/netinet/if_ether.h c/src/libnetworking/netinet/igmp.c c/src/libnetworking/netinet/igmp.h c/src/libnetworking/netinet/igmp_var.h c/src/libnetworking/netinet/in.c c/src/libnetworking/netinet/in.h c/src/libnetworking/netinet/in_cksum.c c/src/libnetworking/netinet/in_cksum_i386.c c/src/libnetworking/netinet/in_cksum_m68k.c c/src/libnetworking/netinet/in_pcb.c c/src/libnetworking/netinet/in_pcb.h c/src/libnetworking/netinet/in_proto.c c/src/libnetworking/netinet/in_rmx.c c/src/libnetworking/netinet/in_systm.h c/src/libnetworking/netinet/in_var.h c/src/libnetworking/netinet/ip.h c/src/libnetworking/netinet/ip_divert.c c/src/libnetworking/netinet/ip_fw.c c/src/libnetworking/netinet/ip_fw.h c/src/libnetworking/netinet/ip_icmp.c c/src/libnetworking/netinet/ip_icmp.h c/src/libnetworking/netinet/ip_input.c c/src/libnetworking/netinet/ip_mroute.c c/src/libnetworking/netinet/ip_mroute.h c/src/libnetworking/netinet/ip_output.c c/src/libnetworking/netinet/ip_var.h c/src/libnetworking/netinet/raw_ip.c c/src/libnetworking/netinet/tcp.h c/src/libnetworking/netinet/tcp_debug.c c/src/libnetworking/netinet/tcp_debug.h c/src/libnetworking/netinet/tcp_fsm.h c/src/libnetworking/netinet/tcp_input.c c/src/libnetworking/netinet/tcp_output.c c/src/libnetworking/netinet/tcp_seq.h c/src/libnetworking/netinet/tcp_subr.c c/src/libnetworking/netinet/tcp_timer.c c/src/libnetworking/netinet/tcp_timer.h c/src/libnetworking/netinet/tcp_usrreq.c c/src/libnetworking/netinet/tcp_var.h c/src/libnetworking/netinet/tcpip.h c/src/libnetworking/netinet/udp.h c/src/libnetworking/netinet/udp_usrreq.c c/src/libnetworking/netinet/udp_var.h c/src/libnetworking/nfs/Makefile.in c/src/libnetworking/nfs/bootp_subr.c c/src/libnetworking/nfs/krpc.h c/src/libnetworking/nfs/nfs.h c/src/libnetworking/nfs/nfsdiskless.h c/src/libnetworking/nfs/nfsproto.h c/src/libnetworking/nfs/rpcv2.h c/src/libnetworking/nfs/xdr_subs.h c/src/libnetworking/opt_ipfw.h c/src/libnetworking/opt_mrouting.h c/src/libnetworking/opt_tcpdebug.h c/src/libnetworking/poll.h c/src/libnetworking/resolv.h c/src/libnetworking/rtems/Makefile.in c/src/libnetworking/rtems/issetugid.c c/src/libnetworking/rtems/rtems_bootp.c c/src/libnetworking/rtems/rtems_bsdnet.h c/src/libnetworking/rtems/rtems_bsdnet_internal.h c/src/libnetworking/rtems/rtems_glue.c c/src/libnetworking/rtems/rtems_showicmpstat.c c/src/libnetworking/rtems/rtems_showifstat.c c/src/libnetworking/rtems/rtems_showipstat.c c/src/libnetworking/rtems/rtems_showmbuf.c c/src/libnetworking/rtems/rtems_showroute.c c/src/libnetworking/rtems/rtems_showtcpstat.c c/src/libnetworking/rtems/rtems_showudpstat.c c/src/libnetworking/rtems/rtems_syscall.c c/src/libnetworking/rtems/sghostname.c c/src/libnetworking/rtems/tftp.h c/src/libnetworking/sys/buf.h c/src/libnetworking/sys/callout.h c/src/libnetworking/sys/cdefs.h c/src/libnetworking/sys/conf.h c/src/libnetworking/sys/domain.h c/src/libnetworking/sys/filio.h c/src/libnetworking/sys/ioccom.h c/src/libnetworking/sys/ioctl.h c/src/libnetworking/sys/kernel.h c/src/libnetworking/sys/libkern.h c/src/libnetworking/sys/malloc.h c/src/libnetworking/sys/mbuf.h c/src/libnetworking/sys/mount.h c/src/libnetworking/sys/param.h c/src/libnetworking/sys/proc.h c/src/libnetworking/sys/protosw.h c/src/libnetworking/sys/queue.h c/src/libnetworking/sys/reboot.h c/src/libnetworking/sys/resourcevar.h c/src/libnetworking/sys/rtprio.h c/src/libnetworking/sys/select.h c/src/libnetworking/sys/signalvar.h c/src/libnetworking/sys/socket.h c/src/libnetworking/sys/socketvar.h c/src/libnetworking/sys/sockio.h c/src/libnetworking/sys/sysctl.h c/src/libnetworking/sys/syslimits.h c/src/libnetworking/sys/syslog.h c/src/libnetworking/sys/systm.h c/src/libnetworking/sys/ttycom.h c/src/libnetworking/sys/ttydefaults.h c/src/libnetworking/sys/ucred.h c/src/libnetworking/sys/uio.h c/src/libnetworking/syslog.h c/src/libnetworking/vm/vm.h c/src/libnetworking/vm/vm_extern.h c/src/libnetworking/vm/vm_kern.h c/src/libnetworking/vm/vm_param.h c/src/libnetworking/wrapup/Makefile.in c/src/librtems++/README c/src/librtems++/include/rtems++/rtemsEvent.h c/src/librtems++/include/rtems++/rtemsInterrupt.h c/src/librtems++/include/rtems++/rtemsMessageQueue.h c/src/librtems++/include/rtems++/rtemsSemaphore.h c/src/librtems++/include/rtems++/rtemsStatusCode.h c/src/librtems++/include/rtems++/rtemsTask.h c/src/librtems++/include/rtems++/rtemsTaskMode.h c/src/librtems++/include/rtems++/rtemsTimer.h c/src/librtems++/src/Makefile.in c/src/librtems++/src/rtemsEvent.cc c/src/librtems++/src/rtemsInterrupt.cc c/src/librtems++/src/rtemsMessageQueue.cc c/src/librtems++/src/rtemsSemaphore.cc c/src/librtems++/src/rtemsStatusCode.cc c/src/librtems++/src/rtemsTask.cc c/src/librtems++/src/rtemsTimer.cc c/src/make/README c/src/make/compilers/gcc-target-default.cfg c/src/make/directory.cfg c/src/make/host.cfg.in c/src/make/lib.cfg c/src/optman/rtems/no-dpmem.c c/src/optman/rtems/no-event.c c/src/optman/rtems/no-mp.c c/src/optman/rtems/no-msg.c c/src/optman/rtems/no-part.c c/src/optman/rtems/no-region.c c/src/optman/rtems/no-rtmon.c c/src/optman/rtems/no-sem.c c/src/optman/rtems/no-signal.c c/src/optman/rtems/no-timer.c c/src/optman/sapi/no-ext.c c/src/optman/sapi/no-io.c c/src/tests/psxtests/include/pmacros.h c/src/wrapup/Makefile.in cpukit/ada/rtems.adb cpukit/ada/rtems.ads cpukit/libcsupport/include/chain.h cpukit/libcsupport/include/clockdrv.h cpukit/libcsupport/include/console.h cpukit/libcsupport/include/iosupp.h cpukit/libcsupport/include/motorola/mc68230.h cpukit/libcsupport/include/motorola/mc68681.h cpukit/libcsupport/include/ringbuf.h cpukit/libcsupport/include/rtems/assoc.h cpukit/libcsupport/include/rtems/error.h cpukit/libcsupport/include/rtems/libcsupport.h cpukit/libcsupport/include/rtems/libio.h cpukit/libcsupport/include/spurious.h cpukit/libcsupport/include/sys/filio.h cpukit/libcsupport/include/sys/ioctl.h cpukit/libcsupport/include/sys/sockio.h cpukit/libcsupport/include/sys/termios.h cpukit/libcsupport/include/sys/utsname.h cpukit/libcsupport/include/timerdrv.h cpukit/libcsupport/include/vmeintr.h cpukit/libcsupport/include/zilog/z8036.h cpukit/libcsupport/include/zilog/z8530.h cpukit/libcsupport/include/zilog/z8536.h cpukit/libcsupport/src/README cpukit/libcsupport/src/__brk.c cpukit/libcsupport/src/__gettod.c cpukit/libcsupport/src/__times.c cpukit/libcsupport/src/assoc.c cpukit/libcsupport/src/closedir.c cpukit/libcsupport/src/error.c cpukit/libcsupport/src/getdents.c cpukit/libcsupport/src/hosterr.c cpukit/libcsupport/src/libio.c cpukit/libcsupport/src/malloc.c cpukit/libcsupport/src/newlibc.c cpukit/libcsupport/src/no_libc.c cpukit/libcsupport/src/opendir.c cpukit/libcsupport/src/readdir.c cpukit/libcsupport/src/rewinddir.c cpukit/libcsupport/src/scandir.c cpukit/libcsupport/src/seekdir.c cpukit/libcsupport/src/tcdrain.c cpukit/libcsupport/src/telldir.c cpukit/libcsupport/src/termios.c cpukit/libcsupport/src/unixlibc.c cpukit/libcsupport/src/utsname.c cpukit/libmisc/README cpukit/libmisc/cpuuse/README cpukit/libmisc/cpuuse/cpuuse.c cpukit/libmisc/cpuuse/cpuuse.h cpukit/libmisc/monitor/README cpukit/libmisc/monitor/mon-command.c cpukit/libmisc/monitor/mon-config.c cpukit/libmisc/monitor/mon-dname.c cpukit/libmisc/monitor/mon-driver.c cpukit/libmisc/monitor/mon-extension.c cpukit/libmisc/monitor/mon-itask.c cpukit/libmisc/monitor/mon-manager.c cpukit/libmisc/monitor/mon-monitor.c cpukit/libmisc/monitor/mon-mpci.c cpukit/libmisc/monitor/mon-object.c cpukit/libmisc/monitor/mon-prmisc.c cpukit/libmisc/monitor/mon-queue.c cpukit/libmisc/monitor/mon-server.c cpukit/libmisc/monitor/mon-symbols.c cpukit/libmisc/monitor/mon-task.c cpukit/libmisc/monitor/monitor.h cpukit/libmisc/monitor/symbols.h cpukit/libmisc/rtmonuse/rtmonuse.c cpukit/libmisc/rtmonuse/rtmonuse.h cpukit/libmisc/stackchk/README cpukit/libmisc/stackchk/check.c cpukit/libmisc/stackchk/internal.h cpukit/libmisc/stackchk/stackchk.h cpukit/libnetworking/README cpukit/libnetworking/arpa/ftp.h cpukit/libnetworking/arpa/inet.h cpukit/libnetworking/arpa/nameser.h cpukit/libnetworking/arpa/nameser_compat.h cpukit/libnetworking/arpa/telnet.h cpukit/libnetworking/bpfilter.h cpukit/libnetworking/kern/kern_subr.c cpukit/libnetworking/kern/uipc_domain.c cpukit/libnetworking/kern/uipc_mbuf.c cpukit/libnetworking/kern/uipc_socket.c cpukit/libnetworking/kern/uipc_socket2.c cpukit/libnetworking/lib/README cpukit/libnetworking/lib/getprotoby.c cpukit/libnetworking/lib/syslog.c cpukit/libnetworking/lib/tftpDriver.c cpukit/libnetworking/libc/addr2ascii.3 cpukit/libnetworking/libc/addr2ascii.c cpukit/libnetworking/libc/ascii2addr.c cpukit/libnetworking/libc/base64.c cpukit/libnetworking/libc/byteorder.3 cpukit/libnetworking/libc/ether_addr.c cpukit/libnetworking/libc/ethers.3 cpukit/libnetworking/libc/gethostbydns.c cpukit/libnetworking/libc/gethostbyht.c cpukit/libnetworking/libc/gethostbyname.3 cpukit/libnetworking/libc/gethostbynis.c cpukit/libnetworking/libc/gethostnamadr.c cpukit/libnetworking/libc/gethostname.c cpukit/libnetworking/libc/getnetbydns.c cpukit/libnetworking/libc/getnetbyht.c cpukit/libnetworking/libc/getnetbynis.c cpukit/libnetworking/libc/getnetent.3 cpukit/libnetworking/libc/getnetnamadr.c cpukit/libnetworking/libc/getproto.c cpukit/libnetworking/libc/getprotoent.3 cpukit/libnetworking/libc/getprotoent.c cpukit/libnetworking/libc/getprotoname.c cpukit/libnetworking/libc/getservbyname.c cpukit/libnetworking/libc/getservbyport.c cpukit/libnetworking/libc/getservent.3 cpukit/libnetworking/libc/getservent.c cpukit/libnetworking/libc/herror.c cpukit/libnetworking/libc/inet.3 cpukit/libnetworking/libc/inet_addr.c cpukit/libnetworking/libc/inet_lnaof.c cpukit/libnetworking/libc/inet_makeaddr.c cpukit/libnetworking/libc/inet_net_ntop.c cpukit/libnetworking/libc/inet_net_pton.c cpukit/libnetworking/libc/inet_neta.c cpukit/libnetworking/libc/inet_netof.c cpukit/libnetworking/libc/inet_network.c cpukit/libnetworking/libc/inet_ntoa.c cpukit/libnetworking/libc/inet_ntop.c cpukit/libnetworking/libc/inet_pton.c cpukit/libnetworking/libc/iso_addr.3 cpukit/libnetworking/libc/iso_addr.c cpukit/libnetworking/libc/linkaddr.3 cpukit/libnetworking/libc/linkaddr.c cpukit/libnetworking/libc/map_v4v6.c cpukit/libnetworking/libc/ns.3 cpukit/libnetworking/libc/ns_addr.c cpukit/libnetworking/libc/ns_name.c cpukit/libnetworking/libc/ns_netint.c cpukit/libnetworking/libc/ns_ntoa.c cpukit/libnetworking/libc/ns_parse.c cpukit/libnetworking/libc/ns_print.c cpukit/libnetworking/libc/ns_ttl.c cpukit/libnetworking/libc/nsap_addr.c cpukit/libnetworking/libc/rcmd.3 cpukit/libnetworking/libc/rcmd.c cpukit/libnetworking/libc/recv.c cpukit/libnetworking/libc/res_comp.c cpukit/libnetworking/libc/res_config.h cpukit/libnetworking/libc/res_data.c cpukit/libnetworking/libc/res_debug.c cpukit/libnetworking/libc/res_init.c cpukit/libnetworking/libc/res_mkquery.c cpukit/libnetworking/libc/res_mkupdate.c cpukit/libnetworking/libc/res_query.c cpukit/libnetworking/libc/res_send.c cpukit/libnetworking/libc/res_stubs.c cpukit/libnetworking/libc/res_update.c cpukit/libnetworking/libc/resolver.3 cpukit/libnetworking/libc/send.c cpukit/libnetworking/libc/strsep.c cpukit/libnetworking/loop.h cpukit/libnetworking/machine/conf.h cpukit/libnetworking/machine/cpu.h cpukit/libnetworking/machine/cpufunc.h cpukit/libnetworking/machine/endian.h cpukit/libnetworking/machine/in_cksum.h cpukit/libnetworking/machine/limits.h cpukit/libnetworking/machine/param.h cpukit/libnetworking/machine/types.h cpukit/libnetworking/machine/vmparam.h cpukit/libnetworking/net/bpf.h cpukit/libnetworking/net/ethernet.h cpukit/libnetworking/net/if.c cpukit/libnetworking/net/if.h cpukit/libnetworking/net/if_arp.h cpukit/libnetworking/net/if_dl.h cpukit/libnetworking/net/if_ethersubr.c cpukit/libnetworking/net/if_llc.h cpukit/libnetworking/net/if_loop.c cpukit/libnetworking/net/if_types.h cpukit/libnetworking/net/netisr.h cpukit/libnetworking/net/radix.c cpukit/libnetworking/net/radix.h cpukit/libnetworking/net/raw_cb.c cpukit/libnetworking/net/raw_cb.h cpukit/libnetworking/net/raw_usrreq.c cpukit/libnetworking/net/route.c cpukit/libnetworking/net/route.h cpukit/libnetworking/net/rtsock.c cpukit/libnetworking/netdb.h cpukit/libnetworking/netinet/icmp_var.h cpukit/libnetworking/netinet/if_ether.c cpukit/libnetworking/netinet/if_ether.h cpukit/libnetworking/netinet/igmp.c cpukit/libnetworking/netinet/igmp.h cpukit/libnetworking/netinet/igmp_var.h cpukit/libnetworking/netinet/in.c cpukit/libnetworking/netinet/in.h cpukit/libnetworking/netinet/in_cksum.c cpukit/libnetworking/netinet/in_cksum_i386.c cpukit/libnetworking/netinet/in_cksum_i386.h cpukit/libnetworking/netinet/in_cksum_m68k.c cpukit/libnetworking/netinet/in_cksum_m68k.h cpukit/libnetworking/netinet/in_pcb.c cpukit/libnetworking/netinet/in_pcb.h cpukit/libnetworking/netinet/in_proto.c cpukit/libnetworking/netinet/in_rmx.c cpukit/libnetworking/netinet/in_systm.h cpukit/libnetworking/netinet/in_var.h cpukit/libnetworking/netinet/ip.h cpukit/libnetworking/netinet/ip_divert.c cpukit/libnetworking/netinet/ip_fw.c cpukit/libnetworking/netinet/ip_fw.h cpukit/libnetworking/netinet/ip_icmp.c cpukit/libnetworking/netinet/ip_icmp.h cpukit/libnetworking/netinet/ip_input.c cpukit/libnetworking/netinet/ip_mroute.c cpukit/libnetworking/netinet/ip_mroute.h cpukit/libnetworking/netinet/ip_output.c cpukit/libnetworking/netinet/ip_var.h cpukit/libnetworking/netinet/raw_ip.c cpukit/libnetworking/netinet/tcp.h cpukit/libnetworking/netinet/tcp_debug.c cpukit/libnetworking/netinet/tcp_debug.h cpukit/libnetworking/netinet/tcp_fsm.h cpukit/libnetworking/netinet/tcp_input.c cpukit/libnetworking/netinet/tcp_output.c cpukit/libnetworking/netinet/tcp_seq.h cpukit/libnetworking/netinet/tcp_subr.c cpukit/libnetworking/netinet/tcp_timer.c cpukit/libnetworking/netinet/tcp_timer.h cpukit/libnetworking/netinet/tcp_usrreq.c cpukit/libnetworking/netinet/tcp_var.h cpukit/libnetworking/netinet/tcpip.h cpukit/libnetworking/netinet/udp.h cpukit/libnetworking/netinet/udp_usrreq.c cpukit/libnetworking/netinet/udp_var.h cpukit/libnetworking/nfs/bootp_subr.c cpukit/libnetworking/nfs/krpc.h cpukit/libnetworking/nfs/nfs.h cpukit/libnetworking/nfs/nfsdiskless.h cpukit/libnetworking/nfs/nfsproto.h cpukit/libnetworking/nfs/rpcv2.h cpukit/libnetworking/nfs/xdr_subs.h cpukit/libnetworking/opt_ipfw.h cpukit/libnetworking/opt_mrouting.h cpukit/libnetworking/opt_tcpdebug.h cpukit/libnetworking/poll.h cpukit/libnetworking/resolv.h cpukit/libnetworking/rtems/issetugid.c cpukit/libnetworking/rtems/rtems_bootp.c cpukit/libnetworking/rtems/rtems_bsdnet.h cpukit/libnetworking/rtems/rtems_bsdnet_internal.h cpukit/libnetworking/rtems/rtems_glue.c cpukit/libnetworking/rtems/rtems_showicmpstat.c cpukit/libnetworking/rtems/rtems_showifstat.c cpukit/libnetworking/rtems/rtems_showipstat.c cpukit/libnetworking/rtems/rtems_showmbuf.c cpukit/libnetworking/rtems/rtems_showroute.c cpukit/libnetworking/rtems/rtems_showtcpstat.c cpukit/libnetworking/rtems/rtems_showudpstat.c cpukit/libnetworking/rtems/rtems_syscall.c cpukit/libnetworking/rtems/sghostname.c cpukit/libnetworking/rtems/tftp.h cpukit/libnetworking/sys/buf.h cpukit/libnetworking/sys/callout.h cpukit/libnetworking/sys/conf.h cpukit/libnetworking/sys/domain.h cpukit/libnetworking/sys/kernel.h cpukit/libnetworking/sys/libkern.h cpukit/libnetworking/sys/malloc.h cpukit/libnetworking/sys/mbuf.h cpukit/libnetworking/sys/mount.h cpukit/libnetworking/sys/param.h cpukit/libnetworking/sys/proc.h cpukit/libnetworking/sys/protosw.h cpukit/libnetworking/sys/queue.h cpukit/libnetworking/sys/reboot.h cpukit/libnetworking/sys/resourcevar.h cpukit/libnetworking/sys/rtprio.h cpukit/libnetworking/sys/select.h cpukit/libnetworking/sys/signalvar.h cpukit/libnetworking/sys/socket.h cpukit/libnetworking/sys/socketvar.h cpukit/libnetworking/sys/sysctl.h cpukit/libnetworking/sys/syslimits.h cpukit/libnetworking/sys/syslog.h cpukit/libnetworking/sys/systm.h cpukit/libnetworking/sys/ttydefaults.h cpukit/libnetworking/sys/ucred.h cpukit/libnetworking/sys/uio.h cpukit/libnetworking/syslog.h cpukit/libnetworking/vm/vm.h cpukit/libnetworking/vm/vm_extern.h cpukit/libnetworking/vm/vm_kern.h cpukit/libnetworking/vm/vm_param.h cpukit/posix/include/aio.h cpukit/posix/include/devctl.h cpukit/posix/include/intr.h cpukit/posix/include/mqueue.h cpukit/posix/include/rtems/posix/cancel.h cpukit/posix/include/rtems/posix/cond.h cpukit/posix/include/rtems/posix/condmp.h cpukit/posix/include/rtems/posix/config.h cpukit/posix/include/rtems/posix/intr.h cpukit/posix/include/rtems/posix/key.h cpukit/posix/include/rtems/posix/mqueue.h cpukit/posix/include/rtems/posix/mqueuemp.h cpukit/posix/include/rtems/posix/mutex.h cpukit/posix/include/rtems/posix/mutexmp.h cpukit/posix/include/rtems/posix/posixapi.h cpukit/posix/include/rtems/posix/priority.h cpukit/posix/include/rtems/posix/psignal.h cpukit/posix/include/rtems/posix/pthread.h cpukit/posix/include/rtems/posix/pthreadmp.h cpukit/posix/include/rtems/posix/semaphore.h cpukit/posix/include/rtems/posix/semaphoremp.h cpukit/posix/include/rtems/posix/threadsup.h cpukit/posix/include/rtems/posix/time.h cpukit/posix/include/sched.h cpukit/posix/include/semaphore.h cpukit/posix/inline/rtems/posix/cond.inl cpukit/posix/inline/rtems/posix/intr.inl cpukit/posix/inline/rtems/posix/key.inl cpukit/posix/inline/rtems/posix/mqueue.inl cpukit/posix/inline/rtems/posix/mutex.inl cpukit/posix/inline/rtems/posix/priority.inl cpukit/posix/inline/rtems/posix/pthread.inl cpukit/posix/inline/rtems/posix/semaphore.inl cpukit/posix/src/adasupp.c cpukit/posix/src/aio.c cpukit/posix/src/cancel.c cpukit/posix/src/cond.c cpukit/posix/src/devctl.c cpukit/posix/src/execl.c cpukit/posix/src/execle.c cpukit/posix/src/execlp.c cpukit/posix/src/execv.c cpukit/posix/src/execve.c cpukit/posix/src/execvp.c cpukit/posix/src/fork.c cpukit/posix/src/getpid.c cpukit/posix/src/intr.c cpukit/posix/src/key.c cpukit/posix/src/mqueue.c cpukit/posix/src/mutex.c cpukit/posix/src/psignal.c cpukit/posix/src/pthread.c cpukit/posix/src/pthreadatfork.c cpukit/posix/src/ptimer.c cpukit/posix/src/sched.c cpukit/posix/src/semaphore.c cpukit/posix/src/time.c cpukit/posix/src/types.c cpukit/posix/src/wait.c cpukit/posix/src/waitpid.c cpukit/rtems/include/rtems.h cpukit/rtems/include/rtems/rtems/asr.h cpukit/rtems/include/rtems/rtems/attr.h cpukit/rtems/include/rtems/rtems/clock.h cpukit/rtems/include/rtems/rtems/config.h cpukit/rtems/include/rtems/rtems/dpmem.h cpukit/rtems/include/rtems/rtems/event.h cpukit/rtems/include/rtems/rtems/eventmp.h cpukit/rtems/include/rtems/rtems/eventset.h cpukit/rtems/include/rtems/rtems/intr.h cpukit/rtems/include/rtems/rtems/message.h cpukit/rtems/include/rtems/rtems/modes.h cpukit/rtems/include/rtems/rtems/mp.h cpukit/rtems/include/rtems/rtems/msgmp.h cpukit/rtems/include/rtems/rtems/options.h cpukit/rtems/include/rtems/rtems/part.h cpukit/rtems/include/rtems/rtems/partmp.h cpukit/rtems/include/rtems/rtems/ratemon.h cpukit/rtems/include/rtems/rtems/region.h cpukit/rtems/include/rtems/rtems/regionmp.h cpukit/rtems/include/rtems/rtems/rtemsapi.h cpukit/rtems/include/rtems/rtems/sem.h cpukit/rtems/include/rtems/rtems/semmp.h cpukit/rtems/include/rtems/rtems/signal.h cpukit/rtems/include/rtems/rtems/signalmp.h cpukit/rtems/include/rtems/rtems/status.h cpukit/rtems/include/rtems/rtems/support.h cpukit/rtems/include/rtems/rtems/taskmp.h cpukit/rtems/include/rtems/rtems/tasks.h cpukit/rtems/include/rtems/rtems/timer.h cpukit/rtems/include/rtems/rtems/types.h cpukit/rtems/inline/rtems/rtems/asr.inl cpukit/rtems/inline/rtems/rtems/attr.inl cpukit/rtems/inline/rtems/rtems/dpmem.inl cpukit/rtems/inline/rtems/rtems/event.inl cpukit/rtems/inline/rtems/rtems/eventset.inl cpukit/rtems/inline/rtems/rtems/message.inl cpukit/rtems/inline/rtems/rtems/modes.inl cpukit/rtems/inline/rtems/rtems/options.inl cpukit/rtems/inline/rtems/rtems/part.inl cpukit/rtems/inline/rtems/rtems/ratemon.inl cpukit/rtems/inline/rtems/rtems/region.inl cpukit/rtems/inline/rtems/rtems/sem.inl cpukit/rtems/inline/rtems/rtems/status.inl cpukit/rtems/inline/rtems/rtems/support.inl cpukit/rtems/inline/rtems/rtems/tasks.inl cpukit/rtems/inline/rtems/rtems/timer.inl cpukit/rtems/macros/rtems/rtems/asr.inl cpukit/rtems/macros/rtems/rtems/attr.inl cpukit/rtems/macros/rtems/rtems/dpmem.inl cpukit/rtems/macros/rtems/rtems/event.inl cpukit/rtems/macros/rtems/rtems/eventset.inl cpukit/rtems/macros/rtems/rtems/message.inl cpukit/rtems/macros/rtems/rtems/modes.inl cpukit/rtems/macros/rtems/rtems/options.inl cpukit/rtems/macros/rtems/rtems/part.inl cpukit/rtems/macros/rtems/rtems/ratemon.inl cpukit/rtems/macros/rtems/rtems/region.inl cpukit/rtems/macros/rtems/rtems/sem.inl cpukit/rtems/macros/rtems/rtems/status.inl cpukit/rtems/macros/rtems/rtems/support.inl cpukit/rtems/macros/rtems/rtems/tasks.inl cpukit/rtems/macros/rtems/rtems/timer.inl cpukit/rtems/src/attr.c cpukit/rtems/src/dpmem.c cpukit/rtems/src/event.c cpukit/rtems/src/eventmp.c cpukit/rtems/src/intr.c cpukit/rtems/src/intrbody.c cpukit/rtems/src/mp.c cpukit/rtems/src/msg.c cpukit/rtems/src/msgmp.c cpukit/rtems/src/part.c cpukit/rtems/src/partmp.c cpukit/rtems/src/ratemon.c cpukit/rtems/src/region.c cpukit/rtems/src/regionmp.c cpukit/rtems/src/rtclock.c cpukit/rtems/src/rtemstimer.c cpukit/rtems/src/sem.c cpukit/rtems/src/semmp.c cpukit/rtems/src/signal.c cpukit/rtems/src/signalmp.c cpukit/rtems/src/taskmp.c cpukit/rtems/src/tasks.c cpukit/sapi/include/confdefs.h cpukit/sapi/include/rtems/README cpukit/sapi/include/rtems/config.h cpukit/sapi/include/rtems/extension.h cpukit/sapi/include/rtems/fatal.h cpukit/sapi/include/rtems/init.h cpukit/sapi/include/rtems/io.h cpukit/sapi/include/rtems/mptables.h cpukit/sapi/inline/rtems/extension.inl cpukit/sapi/macros/rtems/extension.inl cpukit/sapi/src/debug.c cpukit/sapi/src/exinit.c cpukit/sapi/src/extension.c cpukit/sapi/src/fatal.c cpukit/sapi/src/io.c cpukit/sapi/src/posixapi.c cpukit/sapi/src/rtemsapi.c cpukit/score/cpu/a29k/amd.ah cpukit/score/cpu/a29k/asm.h cpukit/score/cpu/a29k/cpu.c cpukit/score/cpu/a29k/pswmacro.ah cpukit/score/cpu/a29k/register.ah cpukit/score/cpu/hppa1.1/cpu.c cpukit/score/cpu/i386/asm.h cpukit/score/cpu/i386/cpu.c cpukit/score/cpu/i386/rtems/asm.h cpukit/score/cpu/i960/asm.h cpukit/score/cpu/i960/cpu.c cpukit/score/cpu/m68k/asm.h cpukit/score/cpu/m68k/cpu.c cpukit/score/cpu/m68k/m68302.h cpukit/score/cpu/m68k/m68360.h cpukit/score/cpu/m68k/memcpy.c cpukit/score/cpu/m68k/qsm.h cpukit/score/cpu/m68k/rtems/asm.h cpukit/score/cpu/m68k/rtems/m68k/m68302.h cpukit/score/cpu/m68k/rtems/m68k/m68360.h cpukit/score/cpu/m68k/rtems/m68k/qsm.h cpukit/score/cpu/m68k/rtems/m68k/sim.h cpukit/score/cpu/m68k/sim.h cpukit/score/cpu/mips/asm.h cpukit/score/cpu/mips/cpu.c cpukit/score/cpu/mips/cpu_asm.S cpukit/score/cpu/mips/idtcpu.h cpukit/score/cpu/mips/iregdef.h cpukit/score/cpu/mips/rtems/asm.h cpukit/score/cpu/mips/rtems/mips/idtcpu.h cpukit/score/cpu/mips/rtems/mips/iregdef.h cpukit/score/cpu/mips64orion/asm.h cpukit/score/cpu/mips64orion/cpu.c cpukit/score/cpu/mips64orion/cpu_asm.S cpukit/score/cpu/mips64orion/cpu_asm.h cpukit/score/cpu/mips64orion/idtcpu.h cpukit/score/cpu/mips64orion/idtmon.h cpukit/score/cpu/mips64orion/iregdef.h cpukit/score/cpu/no_cpu/asm.h cpukit/score/cpu/no_cpu/cpu.c cpukit/score/cpu/no_cpu/cpu_asm.c cpukit/score/cpu/no_cpu/rtems/asm.h cpukit/score/cpu/sh/asm.h cpukit/score/cpu/sh/cpu.c cpukit/score/cpu/sh/rtems/asm.h cpukit/score/cpu/sparc/README cpukit/score/cpu/sparc/asm.h cpukit/score/cpu/sparc/cpu.c cpukit/score/cpu/sparc/rtems/asm.h cpukit/score/cpu/unix/cpu.c cpukit/score/include/rtems/debug.h cpukit/score/include/rtems/score/address.h cpukit/score/include/rtems/score/apiext.h cpukit/score/include/rtems/score/bitfield.h cpukit/score/include/rtems/score/chain.h cpukit/score/include/rtems/score/context.h cpukit/score/include/rtems/score/copyrt.h cpukit/score/include/rtems/score/coremsg.h cpukit/score/include/rtems/score/coremutex.h cpukit/score/include/rtems/score/coresem.h cpukit/score/include/rtems/score/heap.h cpukit/score/include/rtems/score/interr.h cpukit/score/include/rtems/score/isr.h cpukit/score/include/rtems/score/mpci.h cpukit/score/include/rtems/score/mppkt.h cpukit/score/include/rtems/score/object.h cpukit/score/include/rtems/score/objectmp.h cpukit/score/include/rtems/score/priority.h cpukit/score/include/rtems/score/stack.h cpukit/score/include/rtems/score/states.h cpukit/score/include/rtems/score/sysstate.h cpukit/score/include/rtems/score/thread.h cpukit/score/include/rtems/score/threadmp.h cpukit/score/include/rtems/score/threadq.h cpukit/score/include/rtems/score/tod.h cpukit/score/include/rtems/score/tqdata.h cpukit/score/include/rtems/score/userext.h cpukit/score/include/rtems/score/watchdog.h cpukit/score/include/rtems/score/wkspace.h cpukit/score/include/rtems/system.h cpukit/score/inline/rtems/score/address.inl cpukit/score/inline/rtems/score/chain.inl cpukit/score/inline/rtems/score/coremsg.inl cpukit/score/inline/rtems/score/coremutex.inl cpukit/score/inline/rtems/score/coresem.inl cpukit/score/inline/rtems/score/heap.inl cpukit/score/inline/rtems/score/isr.inl cpukit/score/inline/rtems/score/mppkt.inl cpukit/score/inline/rtems/score/object.inl cpukit/score/inline/rtems/score/objectmp.inl cpukit/score/inline/rtems/score/priority.inl cpukit/score/inline/rtems/score/stack.inl cpukit/score/inline/rtems/score/states.inl cpukit/score/inline/rtems/score/sysstate.inl cpukit/score/inline/rtems/score/thread.inl cpukit/score/inline/rtems/score/threadmp.inl cpukit/score/inline/rtems/score/tod.inl cpukit/score/inline/rtems/score/tqdata.inl cpukit/score/inline/rtems/score/userext.inl cpukit/score/inline/rtems/score/watchdog.inl cpukit/score/inline/rtems/score/wkspace.inl cpukit/score/macros/README cpukit/score/macros/rtems/score/README cpukit/score/macros/rtems/score/address.inl cpukit/score/macros/rtems/score/chain.inl cpukit/score/macros/rtems/score/coremsg.inl cpukit/score/macros/rtems/score/coremutex.inl cpukit/score/macros/rtems/score/coresem.inl cpukit/score/macros/rtems/score/heap.inl cpukit/score/macros/rtems/score/isr.inl cpukit/score/macros/rtems/score/mppkt.inl cpukit/score/macros/rtems/score/object.inl cpukit/score/macros/rtems/score/objectmp.inl cpukit/score/macros/rtems/score/priority.inl cpukit/score/macros/rtems/score/stack.inl cpukit/score/macros/rtems/score/states.inl cpukit/score/macros/rtems/score/sysstate.inl cpukit/score/macros/rtems/score/thread.inl cpukit/score/macros/rtems/score/threadmp.inl cpukit/score/macros/rtems/score/tod.inl cpukit/score/macros/rtems/score/tqdata.inl cpukit/score/macros/rtems/score/userext.inl cpukit/score/macros/rtems/score/watchdog.inl cpukit/score/macros/rtems/score/wkspace.inl cpukit/score/src/apiext.c cpukit/score/src/chain.c cpukit/score/src/coremsg.c cpukit/score/src/coremutex.c cpukit/score/src/coresem.c cpukit/score/src/coretod.c cpukit/score/src/heap.c cpukit/score/src/interr.c cpukit/score/src/isr.c cpukit/score/src/mpci.c cpukit/score/src/object.c cpukit/score/src/objectmp.c cpukit/score/src/thread.c cpukit/score/src/threadmp.c cpukit/score/src/threadq.c cpukit/score/src/userext.c cpukit/score/src/watchdog.c cpukit/score/src/wkspace.c cpukit/zlib/doc/rfc1950.txt cpukit/zlib/doc/rfc1951.txt cpukit/zlib/doc/rfc1952.txt doc/HELP.html doc/Make.config doc/Makefile doc/README doc/TODO doc/ada_user/Makefile doc/ada_user/ada_user.texi doc/ada_user/example.texi doc/archgrey.gif doc/bsp_howto/Makefile doc/bsp_howto/analog.t doc/bsp_howto/bsp_howto.texi doc/bsp_howto/clock.t doc/bsp_howto/console.t doc/bsp_howto/discrete.t doc/bsp_howto/init.t doc/bsp_howto/intro.t doc/bsp_howto/linkcmds.t doc/bsp_howto/makefiles.t doc/bsp_howto/network.t doc/bsp_howto/nvmem.t doc/bsp_howto/rtc.t doc/bsp_howto/shmsupp.t doc/bsp_howto/support.t doc/bsp_howto/target.t doc/bsp_howto/timer.t doc/common/cpright.texi doc/common/oaronly.jpg doc/common/setup.texi doc/common/timemac.texi doc/common/timetbl.t doc/common/timing.t doc/common/treedef.tex doc/common/up-arrow.gif doc/common/wksheets.t doc/develenv/Makefile doc/develenv/compile.texi doc/develenv/develenv.texi doc/develenv/direct.texi doc/develenv/intro.texi doc/develenv/sample.texi doc/develenv/utils.texi doc/do_docs doc/index.html doc/networking/Makefile doc/networking/driver.t doc/networking/networkapp.t doc/networking/networking.eps doc/networking/networking.gif doc/networking/networking.texi doc/networking/networktasks.t doc/networking/preface.texi doc/networking/testing.t doc/new_chapters/Makefile doc/new_chapters/STATUS doc/new_chapters/adminiface.t doc/new_chapters/base.t doc/new_chapters/cancel.t doc/new_chapters/clock.t doc/new_chapters/cond.t doc/new_chapters/confspace.t doc/new_chapters/cspecific.t doc/new_chapters/device.t doc/new_chapters/dumpcontrol.t doc/new_chapters/eventlog.t doc/new_chapters/files.t doc/new_chapters/gen_section doc/new_chapters/io.t doc/new_chapters/key.t doc/new_chapters/memorymgmt.t doc/new_chapters/message.t doc/new_chapters/mutex.t doc/new_chapters/posix_users.texi doc/new_chapters/preface.texi doc/new_chapters/procenv.t doc/new_chapters/process.t doc/new_chapters/sched.t doc/new_chapters/semaphores.t doc/new_chapters/signal.t doc/new_chapters/systemdb.t doc/new_chapters/thread.t doc/oaronly.jpg doc/posix1003.1/Makefile doc/posix1003.1/ch01.t doc/posix1003.1/ch02.t doc/posix1003.1/ch03.t doc/posix1003.1/ch04.t doc/posix1003.1/ch05.t doc/posix1003.1/ch06.t doc/posix1003.1/ch07.t doc/posix1003.1/ch08.t doc/posix1003.1/ch09.t doc/posix1003.1/ch10.t doc/posix1003.1/ch11.t doc/posix1003.1/ch12.t doc/posix1003.1/ch13.t doc/posix1003.1/ch14.t doc/posix1003.1/ch15.t doc/posix1003.1/ch16.t doc/posix1003.1/ch17.t doc/posix1003.1/ch18.t doc/posix1003.1/posix1003_1.texi doc/posix1003.1/preface.texi doc/posix1003.1/summarize doc/posix_users/Makefile doc/posix_users/base.texi doc/posix_users/clock.texi doc/posix_users/cond.texi doc/posix_users/key.texi doc/posix_users/mutex.texi doc/posix_users/posix_users.texi doc/posix_users/preface.texi doc/posix_users/sched.texi doc/posix_users/signal.texi doc/posix_users/thread.texi doc/relnotes/Makefile doc/relnotes/install.texi doc/relnotes/intro.texi doc/relnotes/probrep.texi doc/relnotes/relnotes.texi doc/relnotes/status.texi doc/rtems_footer.html doc/rtems_header.html doc/rtems_support.html doc/src2html/Makefile doc/src2html/RTEMS.test doc/started/Makefile doc/started/buildc.t doc/started/buildrt.t doc/started/gdb.t doc/started/intro.t doc/started/nt.t doc/started/pictures/bit_ada.jpg doc/started/pictures/bit_ada.vsd doc/started/pictures/bit_c.jpg doc/started/pictures/bit_c.vsd doc/started/pictures/scfile10.jpg doc/started/pictures/scfile10.vsd doc/started/pictures/scfile11.jpg doc/started/pictures/scfile11.vsd doc/started/pictures/scfile12.jpg doc/started/pictures/scfile12.vsd doc/started/pictures/scfile13.jpg doc/started/pictures/scfile13.vsd doc/started/pictures/scsfile1.jpg doc/started/pictures/scsfile1.vsd doc/started/pictures/scsfile2.jpg doc/started/pictures/scsfile2.vsd doc/started/pictures/scsfile3.jpg doc/started/pictures/scsfile3.vsd doc/started/pictures/scsfile4.jpg doc/started/pictures/scsfile4.vsd doc/started/pictures/scsfile5.jpg doc/started/pictures/scsfile5.vsd doc/started/pictures/scsfile6.jpg doc/started/pictures/scsfile6.vsd doc/started/pictures/scsfile7.jpg doc/started/pictures/scsfile7.vsd doc/started/pictures/scsfile8.jpg doc/started/pictures/scsfile8.vsd doc/started/pictures/scsfile9.jpg doc/started/pictures/scsfile9.vsd doc/started/pictures/sfile12c.jpg doc/started/pictures/sfile12c.vsd doc/started/require.t doc/started/sample.t doc/started/started.texi doc/started/versions.texi doc/started_ada/Makefile doc/started_ada/buildada.t doc/started_ada/buildrt.t doc/started_ada/gdb.t doc/started_ada/intro.t doc/started_ada/require.t doc/started_ada/sample.t doc/started_ada/started_ada.texi doc/started_ada/versions.texi doc/supplements/hppa1_1/Makefile doc/supplements/hppa1_1/SIMHPPA_TIMES doc/supplements/hppa1_1/bsp.t doc/supplements/hppa1_1/callconv.t doc/supplements/hppa1_1/cpumodel.t doc/supplements/hppa1_1/cputable.t doc/supplements/hppa1_1/fatalerr.t doc/supplements/hppa1_1/hppa1_1.texi doc/supplements/hppa1_1/intr_NOTIMES.t doc/supplements/hppa1_1/memmodel.t doc/supplements/hppa1_1/preface.texi doc/supplements/hppa1_1/timeSIMHPPA.t doc/supplements/i386/FORCE386_TIMES doc/supplements/i386/Makefile doc/supplements/i386/bsp.t doc/supplements/i386/callconv.t doc/supplements/i386/cpumodel.t doc/supplements/i386/cputable.t doc/supplements/i386/fatalerr.t doc/supplements/i386/i386.texi doc/supplements/i386/intr_NOTIMES.t doc/supplements/i386/memmodel.t doc/supplements/i386/preface.texi doc/supplements/i386/timeFORCE386.t doc/supplements/i960/CVME961_TIMES doc/supplements/i960/Makefile doc/supplements/i960/bsp.t doc/supplements/i960/callconv.t doc/supplements/i960/cpumodel.t doc/supplements/i960/cputable.t doc/supplements/i960/fatalerr.t doc/supplements/i960/i960.texi doc/supplements/i960/intr_NOTIMES.t doc/supplements/i960/memmodel.t doc/supplements/i960/preface.texi doc/supplements/i960/timeCVME961.t doc/supplements/m68k/MVME136_TIMES doc/supplements/m68k/Makefile doc/supplements/m68k/bsp.t doc/supplements/m68k/callconv.t doc/supplements/m68k/cpumodel.t doc/supplements/m68k/cputable.t doc/supplements/m68k/fatalerr.t doc/supplements/m68k/intr_NOTIMES.t doc/supplements/m68k/m68k.texi doc/supplements/m68k/memmodel.t doc/supplements/m68k/preface.texi doc/supplements/m68k/timeMVME136.t doc/supplements/m68k/timedata.t doc/supplements/powerpc/DMV177_TIMES doc/supplements/powerpc/Makefile doc/supplements/powerpc/PSIM_TIMES doc/supplements/powerpc/bsp.t doc/supplements/powerpc/callconv.t doc/supplements/powerpc/cpumodel.t doc/supplements/powerpc/cputable.t doc/supplements/powerpc/fatalerr.t doc/supplements/powerpc/intr_NOTIMES.t doc/supplements/powerpc/memmodel.t doc/supplements/powerpc/powerpc.texi doc/supplements/powerpc/preface.texi doc/supplements/powerpc/timeDMV177.t doc/supplements/powerpc/timePSIM.t doc/supplements/sh/callconv.texi doc/supplements/sparc/ERC32_TIMES doc/supplements/sparc/Makefile doc/supplements/sparc/bsp.t doc/supplements/sparc/callconv.t doc/supplements/sparc/cpumodel.t doc/supplements/sparc/cputable.t doc/supplements/sparc/fatalerr.t doc/supplements/sparc/intr_NOTIMES.t doc/supplements/sparc/memmodel.t doc/supplements/sparc/preface.texi doc/supplements/sparc/sparc.texi doc/supplements/sparc/timeERC32.t doc/supplements/template/BSP_TIMES doc/supplements/template/Makefile doc/supplements/template/bsp.t doc/supplements/template/callconv.t doc/supplements/template/cpumodel.t doc/supplements/template/cputable.t doc/supplements/template/fatalerr.t doc/supplements/template/intr_NOTIMES.t doc/supplements/template/memmodel.t doc/supplements/template/preface.texi doc/supplements/template/template.texi doc/supplements/template/timeBSP.t doc/texinfo/texinfo.tex doc/tools/bmenu/Makefile doc/tools/bmenu/address.h doc/tools/bmenu/address.inl doc/tools/bmenu/base.h doc/tools/bmenu/chain.c doc/tools/bmenu/chain.h doc/tools/bmenu/chain.inl doc/tools/bmenu/isr.h doc/tools/bmenu/main.c doc/tools/bmenu/system.h doc/tools/bmenu/testdoc.texi doc/tools/pdl2texi/Drive.d doc/tools/pdl2texi/Makefile doc/tools/pdl2texi/address.h doc/tools/pdl2texi/address.inl doc/tools/pdl2texi/afcc.texi doc/tools/pdl2texi/base.h doc/tools/pdl2texi/chain.c doc/tools/pdl2texi/chain.h doc/tools/pdl2texi/chain.inl doc/tools/pdl2texi/drive.d doc/tools/pdl2texi/isr.h doc/tools/pdl2texi/main.c doc/tools/pdl2texi/s.d doc/tools/pdl2texi/sample.d doc/tools/pdl2texi/system.h doc/tools/pdl2texi/t1.d doc/tools/pdl2texi/test_cases/avdas.d doc/tools/pdl2texi/test_cases/enum.d doc/tools/pdl2texi/test_cases/enumbad.d doc/tools/pdl2texi/test_cases/table.d doc/tools/src2html/Makefile doc/tools/src2html1.4a/Ctags/C.c doc/tools/src2html1.4a/Ctags/Makefile doc/tools/src2html1.4a/Ctags/ctags.1 doc/tools/src2html1.4a/Ctags/ctags.c doc/tools/src2html1.4a/Ctags/ctags.h doc/tools/src2html1.4a/Ctags/fortran.c doc/tools/src2html1.4a/Ctags/lisp.c doc/tools/src2html1.4a/Ctags/print.c doc/tools/src2html1.4a/Ctags/strerror.c doc/tools/src2html1.4a/Ctags/tree.c doc/tools/src2html1.4a/Ctags/yacc.c doc/tools/src2html1.4a/Ctags/z.c doc/tools/src2html1.4a/FreeBSD/FreeBSD.hdr doc/tools/src2html1.4a/FreeBSD/FreeBSD.s2h doc/tools/src2html1.4a/FreeBSD/conf.hdr doc/tools/src2html1.4a/FreeBSD/ddb.hdr doc/tools/src2html1.4a/FreeBSD/i386.i386.hdr doc/tools/src2html1.4a/FreeBSD/i386.include.hdr doc/tools/src2html1.4a/FreeBSD/i386.isa.hdr doc/tools/src2html1.4a/FreeBSD/i386.stand.hdr doc/tools/src2html1.4a/FreeBSD/kern.hdr doc/tools/src2html1.4a/FreeBSD/net.hdr doc/tools/src2html1.4a/FreeBSD/netinet.hdr doc/tools/src2html1.4a/FreeBSD/nfs.hdr doc/tools/src2html1.4a/FreeBSD/stand.hdr doc/tools/src2html1.4a/FreeBSD/sys.hdr doc/tools/src2html1.4a/FreeBSD/ufs.hdr doc/tools/src2html1.4a/FreeBSD/vm.hdr doc/tools/src2html1.4a/Readme doc/tools/src2html1.4a/ctags-emacs/README doc/tools/src2html1.4a/ctags-emacs/ctags doc/tools/src2html1.4a/ctags-emacs/etags.c-ada-patch doc/tools/src2html1.4a/ctags-wr doc/tools/src2html1.4a/src2html doc/tools/src2html1.4a/src2html.1 doc/tools/src2html1.4a/src2html.cgi doc/tools/texi2www/Makefile doc/tools/texi2www/archive/texi2www-960103.tgz doc/tools/texi2www/dir-arrow.gif doc/tools/texi2www/missing-arrow.gif doc/tools/texi2www/next-arrow.gif doc/tools/texi2www/prev-arrow.gif doc/tools/texi2www/texi2dvi doc/tools/texi2www/texi2www doc/tools/texi2www/texi2www.texi doc/tools/texi2www/up-arrow.gif doc/tools/update doc/tools/word-replace doc/user/Makefile doc/user/bsp.t doc/user/c_user.texi doc/user/clock.t doc/user/concepts.t doc/user/conf.t doc/user/dirstat.texi doc/user/dpmem.t doc/user/event.t doc/user/example.texi doc/user/fatal.t doc/user/glossary.texi doc/user/init.t doc/user/intr.t doc/user/io.t doc/user/mp.t doc/user/msg.t doc/user/overview.t doc/user/part.t doc/user/preface.texi doc/user/region.t doc/user/rtemsarc.gif doc/user/rtemspie.gif doc/user/rtmon.t doc/user/schedule.t doc/user/sem.t doc/user/signal.t doc/user/states.gif doc/user/task.t doc/user/timer.t doc/user/userext.t make/custom/dmv177.cfg testsuites/PROBLEMS testsuites/README testsuites/libtests/README testsuites/libtests/cpuuse/cpuuse.scn testsuites/libtests/cpuuse/init.c testsuites/libtests/cpuuse/system.h testsuites/libtests/cpuuse/task1.c testsuites/libtests/cpuuse/task2.c testsuites/libtests/cpuuse/task3.c testsuites/libtests/cpuuse/tswitch.c testsuites/libtests/malloctest/init.c testsuites/libtests/malloctest/system.h testsuites/libtests/malloctest/task1.c testsuites/libtests/monitor/init.c testsuites/libtests/monitor/system.h testsuites/libtests/rtems++/Init.cc testsuites/libtests/rtems++/System.h testsuites/libtests/rtems++/Task1.cc testsuites/libtests/rtems++/Task2.cc testsuites/libtests/rtems++/Task3.cc testsuites/libtests/rtems++/rtems++.doc testsuites/libtests/rtems++/rtems++.scn testsuites/libtests/rtmonuse/getall.c testsuites/libtests/rtmonuse/init.c testsuites/libtests/rtmonuse/rtmonuse.scn testsuites/libtests/rtmonuse/system.h testsuites/libtests/rtmonuse/task1.c testsuites/libtests/stackchk/blow.c testsuites/libtests/stackchk/init.c testsuites/libtests/stackchk/stackchk.scn testsuites/libtests/stackchk/system.h testsuites/libtests/stackchk/task1.c testsuites/libtests/termios/README testsuites/libtests/termios/init.c testsuites/mptests/README testsuites/mptests/mp01/init.c testsuites/mptests/mp01/node1/mp01.doc testsuites/mptests/mp01/node1/mp01.scn testsuites/mptests/mp01/node2/mp01.doc testsuites/mptests/mp01/node2/mp01.scn testsuites/mptests/mp01/system.h testsuites/mptests/mp01/task1.c testsuites/mptests/mp02/init.c testsuites/mptests/mp02/node1/mp02.doc testsuites/mptests/mp02/node1/mp02.scn testsuites/mptests/mp02/node2/mp02.doc testsuites/mptests/mp02/node2/mp02.scn testsuites/mptests/mp02/system.h testsuites/mptests/mp02/task1.c testsuites/mptests/mp03/delay.c testsuites/mptests/mp03/init.c testsuites/mptests/mp03/node1/mp03.doc testsuites/mptests/mp03/node1/mp03.scn testsuites/mptests/mp03/node2/mp03.doc testsuites/mptests/mp03/node2/mp03.scn testsuites/mptests/mp03/system.h testsuites/mptests/mp03/task1.c testsuites/mptests/mp04/init.c testsuites/mptests/mp04/node1/mp04.doc testsuites/mptests/mp04/node1/mp04.scn testsuites/mptests/mp04/node2/mp04.doc testsuites/mptests/mp04/node2/mp04.scn testsuites/mptests/mp04/system.h testsuites/mptests/mp04/task1.c testsuites/mptests/mp05/asr.c testsuites/mptests/mp05/init.c testsuites/mptests/mp05/node1/mp05.doc testsuites/mptests/mp05/node1/mp05.scn testsuites/mptests/mp05/node2/mp05.doc testsuites/mptests/mp05/node2/mp05.scn testsuites/mptests/mp05/system.h testsuites/mptests/mp05/task1.c testsuites/mptests/mp06/init.c testsuites/mptests/mp06/node1/mp06.doc testsuites/mptests/mp06/node1/mp06.scn testsuites/mptests/mp06/node2/mp06.doc testsuites/mptests/mp06/node2/mp06.scn testsuites/mptests/mp06/system.h testsuites/mptests/mp06/task1.c testsuites/mptests/mp07/init.c testsuites/mptests/mp07/node1/mp07.doc testsuites/mptests/mp07/node1/mp07.scn testsuites/mptests/mp07/node2/mp07.doc testsuites/mptests/mp07/node2/mp07.scn testsuites/mptests/mp07/system.h testsuites/mptests/mp07/task1.c testsuites/mptests/mp08/init.c testsuites/mptests/mp08/node1/mp08.doc testsuites/mptests/mp08/node1/mp08.scn testsuites/mptests/mp08/node2/mp08.doc testsuites/mptests/mp08/node2/mp08.scn testsuites/mptests/mp08/system.h testsuites/mptests/mp08/task1.c testsuites/mptests/mp09/init.c testsuites/mptests/mp09/node1/mp09.doc testsuites/mptests/mp09/node1/mp09.scn testsuites/mptests/mp09/node2/mp09.doc testsuites/mptests/mp09/node2/mp09.scn testsuites/mptests/mp09/recvmsg.c testsuites/mptests/mp09/sendmsg.c testsuites/mptests/mp09/system.h testsuites/mptests/mp09/task1.c testsuites/mptests/mp10/init.c testsuites/mptests/mp10/node1/mp10.doc testsuites/mptests/mp10/node1/mp10.scn testsuites/mptests/mp10/node2/mp10.doc testsuites/mptests/mp10/node2/mp10.scn testsuites/mptests/mp10/system.h testsuites/mptests/mp10/task1.c testsuites/mptests/mp10/task2.c testsuites/mptests/mp10/task3.c testsuites/mptests/mp11/init.c testsuites/mptests/mp11/node1/mp11.doc testsuites/mptests/mp11/node1/mp11.scn testsuites/mptests/mp11/node2/mp11.doc testsuites/mptests/mp11/node2/mp11.scn testsuites/mptests/mp11/system.h testsuites/mptests/mp12/init.c testsuites/mptests/mp12/node1/mp12.doc testsuites/mptests/mp12/node1/mp12.scn testsuites/mptests/mp12/node2/mp12.doc testsuites/mptests/mp12/node2/mp12.scn testsuites/mptests/mp12/system.h testsuites/mptests/mp13/init.c testsuites/mptests/mp13/node1/mp13.doc testsuites/mptests/mp13/node1/mp13.scn testsuites/mptests/mp13/node2/mp13.doc testsuites/mptests/mp13/node2/mp13.scn testsuites/mptests/mp13/system.h testsuites/mptests/mp13/task1.c testsuites/mptests/mp13/task2.c testsuites/mptests/mp14/delay.c testsuites/mptests/mp14/evtask1.c testsuites/mptests/mp14/evtmtask.c testsuites/mptests/mp14/exit.c testsuites/mptests/mp14/init.c testsuites/mptests/mp14/msgtask1.c testsuites/mptests/mp14/node1/mp14.doc testsuites/mptests/mp14/node1/mp14.scn testsuites/mptests/mp14/node2/mp14.doc testsuites/mptests/mp14/node2/mp14.scn testsuites/mptests/mp14/pttask1.c testsuites/mptests/mp14/smtask1.c testsuites/mptests/mp14/system.h testsuites/psxtests/include/pmacros.h testsuites/psxtests/psx01/init.c testsuites/psxtests/psx01/psx01.scn testsuites/psxtests/psx01/system.h testsuites/psxtests/psx01/task.c testsuites/psxtests/psx02/init.c testsuites/psxtests/psx02/psx02.scn testsuites/psxtests/psx02/system.h testsuites/psxtests/psx02/task.c testsuites/psxtests/psx03/init.c testsuites/psxtests/psx03/psx03.scn testsuites/psxtests/psx03/system.h testsuites/psxtests/psx03/task.c testsuites/psxtests/psx04/init.c testsuites/psxtests/psx04/psx04.scn testsuites/psxtests/psx04/system.h testsuites/psxtests/psx04/task1.c testsuites/psxtests/psx04/task2.c testsuites/psxtests/psx04/task3.c testsuites/psxtests/psx05/init.c testsuites/psxtests/psx05/psx05.scn testsuites/psxtests/psx05/system.h testsuites/psxtests/psx05/task.c testsuites/psxtests/psx05/task2.c testsuites/psxtests/psx05/task3.c testsuites/psxtests/psx06/init.c testsuites/psxtests/psx06/psx06.scn testsuites/psxtests/psx06/system.h testsuites/psxtests/psx06/task.c testsuites/psxtests/psx06/task2.c testsuites/psxtests/psx07/init.c testsuites/psxtests/psx07/psx07.scn testsuites/psxtests/psx07/system.h testsuites/psxtests/psx07/task.c testsuites/psxtests/psx08/init.c testsuites/psxtests/psx08/psx08.scn testsuites/psxtests/psx08/system.h testsuites/psxtests/psx08/task2.c testsuites/psxtests/psx09/init.c testsuites/psxtests/psx09/psx09.scn testsuites/psxtests/psx09/system.h testsuites/psxtests/psx10/init.c testsuites/psxtests/psx10/psx10.scn testsuites/psxtests/psx10/system.h testsuites/psxtests/psx10/task.c testsuites/psxtests/psx10/task2.c testsuites/psxtests/psx10/task3.c testsuites/psxtests/psx11/init.c testsuites/psxtests/psx11/psx11.scn testsuites/psxtests/psx11/system.h testsuites/psxtests/psx11/task.c testsuites/psxtests/psx12/init.c testsuites/psxtests/psx12/psx12.scn testsuites/psxtests/psx12/system.h testsuites/psxtests/psx12/task.c testsuites/psxtests/psxhdrs/clock01.c testsuites/psxtests/psxhdrs/clock02.c testsuites/psxtests/psxhdrs/clock03.c testsuites/psxtests/psxhdrs/clock04.c testsuites/psxtests/psxhdrs/clock05.c testsuites/psxtests/psxhdrs/clock06.c testsuites/psxtests/psxhdrs/cond01.c testsuites/psxtests/psxhdrs/cond02.c testsuites/psxtests/psxhdrs/cond03.c testsuites/psxtests/psxhdrs/cond04.c testsuites/psxtests/psxhdrs/cond05.c testsuites/psxtests/psxhdrs/cond06.c testsuites/psxtests/psxhdrs/cond07.c testsuites/psxtests/psxhdrs/cond08.c testsuites/psxtests/psxhdrs/cond09.c testsuites/psxtests/psxhdrs/cond10.c testsuites/psxtests/psxhdrs/key01.c testsuites/psxtests/psxhdrs/key02.c testsuites/psxtests/psxhdrs/key03.c testsuites/psxtests/psxhdrs/key04.c testsuites/psxtests/psxhdrs/mutex01.c testsuites/psxtests/psxhdrs/mutex02.c testsuites/psxtests/psxhdrs/mutex03.c testsuites/psxtests/psxhdrs/mutex04.c testsuites/psxtests/psxhdrs/mutex05.c testsuites/psxtests/psxhdrs/mutex06.c testsuites/psxtests/psxhdrs/mutex07.c testsuites/psxtests/psxhdrs/mutex08.c testsuites/psxtests/psxhdrs/mutex09.c testsuites/psxtests/psxhdrs/mutex10.c testsuites/psxtests/psxhdrs/mutex11.c testsuites/psxtests/psxhdrs/mutex12.c testsuites/psxtests/psxhdrs/mutex13.c testsuites/psxtests/psxhdrs/mutex14.c testsuites/psxtests/psxhdrs/mutex15.c testsuites/psxtests/psxhdrs/mutex16.c testsuites/psxtests/psxhdrs/proc01.c testsuites/psxtests/psxhdrs/proc02.c testsuites/psxtests/psxhdrs/proc03.c testsuites/psxtests/psxhdrs/proc04.c testsuites/psxtests/psxhdrs/proc05.c testsuites/psxtests/psxhdrs/proc06.c testsuites/psxtests/psxhdrs/proc07.c testsuites/psxtests/psxhdrs/proc08.c testsuites/psxtests/psxhdrs/proc09.c testsuites/psxtests/psxhdrs/proc10.c testsuites/psxtests/psxhdrs/proc11.c testsuites/psxtests/psxhdrs/proc12.c testsuites/psxtests/psxhdrs/proc13.c testsuites/psxtests/psxhdrs/proc14.c testsuites/psxtests/psxhdrs/pthread01.c testsuites/psxtests/psxhdrs/pthread02.c testsuites/psxtests/psxhdrs/pthread03.c testsuites/psxtests/psxhdrs/pthread04.c testsuites/psxtests/psxhdrs/pthread05.c testsuites/psxtests/psxhdrs/pthread06.c testsuites/psxtests/psxhdrs/pthread07.c testsuites/psxtests/psxhdrs/pthread08.c testsuites/psxtests/psxhdrs/pthread09.c testsuites/psxtests/psxhdrs/pthread10.c testsuites/psxtests/psxhdrs/pthread11.c testsuites/psxtests/psxhdrs/pthread12.c testsuites/psxtests/psxhdrs/pthread13.c testsuites/psxtests/psxhdrs/pthread14.c testsuites/psxtests/psxhdrs/pthread15.c testsuites/psxtests/psxhdrs/pthread16.c testsuites/psxtests/psxhdrs/pthread17.c testsuites/psxtests/psxhdrs/pthread18.c testsuites/psxtests/psxhdrs/pthread19.c testsuites/psxtests/psxhdrs/pthread20.c testsuites/psxtests/psxhdrs/pthread21.c testsuites/psxtests/psxhdrs/pthread22.c testsuites/psxtests/psxhdrs/pthread23.c testsuites/psxtests/psxhdrs/pthread24.c testsuites/psxtests/psxhdrs/pthread25.c testsuites/psxtests/psxhdrs/pthread26.c testsuites/psxtests/psxhdrs/pthread27.c testsuites/psxtests/psxhdrs/pthread28.c testsuites/psxtests/psxhdrs/pthread29.c testsuites/psxtests/psxhdrs/pthread30.c testsuites/psxtests/psxhdrs/pthread31.c testsuites/psxtests/psxhdrs/pthread32.c testsuites/psxtests/psxhdrs/pthread33.c testsuites/psxtests/psxhdrs/pthread34.c testsuites/psxtests/psxhdrs/pthread35.c testsuites/psxtests/psxhdrs/pthread36.c testsuites/psxtests/psxhdrs/sched01.c testsuites/psxtests/psxhdrs/sched02.c testsuites/psxtests/psxhdrs/sched03.c testsuites/psxtests/psxhdrs/sched04.c testsuites/psxtests/psxhdrs/sched05.c testsuites/psxtests/psxhdrs/sched06.c testsuites/psxtests/psxhdrs/sched07.c testsuites/psxtests/psxhdrs/sched08.c testsuites/psxtests/psxhdrs/signal01.c testsuites/psxtests/psxhdrs/signal02.c testsuites/psxtests/psxhdrs/signal03.c testsuites/psxtests/psxhdrs/signal04.c testsuites/psxtests/psxhdrs/signal05.c testsuites/psxtests/psxhdrs/signal06.c testsuites/psxtests/psxhdrs/signal07.c testsuites/psxtests/psxhdrs/signal08.c testsuites/psxtests/psxhdrs/signal09.c testsuites/psxtests/psxhdrs/signal10.c testsuites/psxtests/psxhdrs/signal11.c testsuites/psxtests/psxhdrs/signal12.c testsuites/psxtests/psxhdrs/signal13.c testsuites/psxtests/psxhdrs/signal14.c testsuites/psxtests/psxhdrs/signal15.c testsuites/psxtests/psxhdrs/signal16.c testsuites/psxtests/psxhdrs/signal17.c testsuites/psxtests/psxhdrs/signal18.c testsuites/psxtests/psxhdrs/signal19.c testsuites/psxtests/psxhdrs/signal20.c testsuites/psxtests/psxhdrs/signal21.c testsuites/psxtests/psxhdrs/signal22.c testsuites/psxtests/psxhdrs/time01.c testsuites/psxtests/psxhdrs/time02.c testsuites/psxtests/psxhdrs/time03.c testsuites/psxtests/psxhdrs/time04.c testsuites/psxtests/psxhdrs/time05.c testsuites/psxtests/psxhdrs/time06.c testsuites/psxtests/psxhdrs/time07.c testsuites/psxtests/psxhdrs/time08.c testsuites/psxtests/psxhdrs/time09.c testsuites/psxtests/psxhdrs/time10.c testsuites/psxtests/psxhdrs/time11.c testsuites/psxtests/psxhdrs/time12.c testsuites/psxtests/psxhdrs/time13.c testsuites/psxtests/psxhdrs/timer01.c testsuites/psxtests/psxhdrs/timer02.c testsuites/psxtests/psxhdrs/timer03.c testsuites/psxtests/psxhdrs/timer04.c testsuites/psxtests/psxhdrs/timer05.c testsuites/psxtests/psxhdrs/timer06.c testsuites/samples/README testsuites/samples/base_mp/apptask.c testsuites/samples/base_mp/init.c testsuites/samples/base_mp/node1/base_mp.doc testsuites/samples/base_mp/node1/base_mp.scn testsuites/samples/base_mp/node2/base_mp.doc testsuites/samples/base_mp/node2/base_mp.scn testsuites/samples/base_mp/system.h testsuites/samples/base_sp/apptask.c testsuites/samples/base_sp/base_sp.doc testsuites/samples/base_sp/base_sp.scn testsuites/samples/base_sp/init.c testsuites/samples/base_sp/system.h testsuites/samples/cdtest/cdtest.scn testsuites/samples/cdtest/init.c testsuites/samples/cdtest/main.cc testsuites/samples/cdtest/system.h testsuites/samples/hello/hello.doc testsuites/samples/hello/hello.scn testsuites/samples/hello/init.c testsuites/samples/hello/system.h testsuites/samples/paranoia/init.c testsuites/samples/paranoia/paranoia.c testsuites/samples/paranoia/paranoia.doc testsuites/samples/paranoia/system.h testsuites/samples/ticker/init.c testsuites/samples/ticker/system.h testsuites/samples/ticker/tasks.c testsuites/samples/ticker/ticker.doc testsuites/samples/ticker/ticker.scn testsuites/sptests/README testsuites/sptests/sp01/init.c testsuites/sptests/sp01/sp01.doc testsuites/sptests/sp01/sp01.scn testsuites/sptests/sp01/system.h testsuites/sptests/sp01/task1.c testsuites/sptests/sp02/init.c testsuites/sptests/sp02/preempt.c testsuites/sptests/sp02/sp02.doc testsuites/sptests/sp02/sp02.scn testsuites/sptests/sp02/system.h testsuites/sptests/sp02/task1.c testsuites/sptests/sp02/task2.c testsuites/sptests/sp02/task3.c testsuites/sptests/sp03/init.c testsuites/sptests/sp03/sp03.doc testsuites/sptests/sp03/sp03.scn testsuites/sptests/sp03/system.h testsuites/sptests/sp03/task1.c testsuites/sptests/sp03/task2.c testsuites/sptests/sp04/init.c testsuites/sptests/sp04/sp04.doc testsuites/sptests/sp04/sp04.scn testsuites/sptests/sp04/system.h testsuites/sptests/sp04/task1.c testsuites/sptests/sp04/task2.c testsuites/sptests/sp04/task3.c testsuites/sptests/sp04/tswitch.c testsuites/sptests/sp05/init.c testsuites/sptests/sp05/sp05.doc testsuites/sptests/sp05/sp05.scn testsuites/sptests/sp05/system.h testsuites/sptests/sp05/task1.c testsuites/sptests/sp05/task2.c testsuites/sptests/sp05/task3.c testsuites/sptests/sp06/init.c testsuites/sptests/sp06/sp06.doc testsuites/sptests/sp06/sp06.scn testsuites/sptests/sp06/system.h testsuites/sptests/sp06/task1.c testsuites/sptests/sp06/task2.c testsuites/sptests/sp06/task3.c testsuites/sptests/sp07/init.c testsuites/sptests/sp07/sp07.doc testsuites/sptests/sp07/sp07.scn testsuites/sptests/sp07/system.h testsuites/sptests/sp07/task1.c testsuites/sptests/sp07/task2.c testsuites/sptests/sp07/task3.c testsuites/sptests/sp07/task4.c testsuites/sptests/sp07/taskexit.c testsuites/sptests/sp07/tcreate.c testsuites/sptests/sp07/tdelete.c testsuites/sptests/sp07/trestart.c testsuites/sptests/sp07/tstart.c testsuites/sptests/sp08/init.c testsuites/sptests/sp08/sp08.doc testsuites/sptests/sp08/sp08.scn testsuites/sptests/sp08/system.h testsuites/sptests/sp08/task1.c testsuites/sptests/sp09/delay.c testsuites/sptests/sp09/init.c testsuites/sptests/sp09/isr.c testsuites/sptests/sp09/screen01.c testsuites/sptests/sp09/screen02.c testsuites/sptests/sp09/screen03.c testsuites/sptests/sp09/screen04.c testsuites/sptests/sp09/screen05.c testsuites/sptests/sp09/screen06.c testsuites/sptests/sp09/screen07.c testsuites/sptests/sp09/screen08.c testsuites/sptests/sp09/screen09.c testsuites/sptests/sp09/screen10.c testsuites/sptests/sp09/screen11.c testsuites/sptests/sp09/screen12.c testsuites/sptests/sp09/screen13.c testsuites/sptests/sp09/screen14.c testsuites/sptests/sp09/sp09.doc testsuites/sptests/sp09/sp09.scn testsuites/sptests/sp09/system.h testsuites/sptests/sp09/task1.c testsuites/sptests/sp09/task2.c testsuites/sptests/sp09/task3.c testsuites/sptests/sp09/task4.c testsuites/sptests/sp11/init.c testsuites/sptests/sp11/sp11.doc testsuites/sptests/sp11/sp11.scn testsuites/sptests/sp11/system.h testsuites/sptests/sp11/task1.c testsuites/sptests/sp11/task2.c testsuites/sptests/sp11/timer.c testsuites/sptests/sp12/init.c testsuites/sptests/sp12/pridrv.c testsuites/sptests/sp12/pritask.c testsuites/sptests/sp12/sp12.doc testsuites/sptests/sp12/sp12.scn testsuites/sptests/sp12/system.h testsuites/sptests/sp12/task1.c testsuites/sptests/sp12/task2.c testsuites/sptests/sp12/task3.c testsuites/sptests/sp12/task4.c testsuites/sptests/sp12/task5.c testsuites/sptests/sp13/fillbuff.c testsuites/sptests/sp13/init.c testsuites/sptests/sp13/putbuff.c testsuites/sptests/sp13/sp13.doc testsuites/sptests/sp13/sp13.scn testsuites/sptests/sp13/system.h testsuites/sptests/sp13/task1.c testsuites/sptests/sp13/task2.c testsuites/sptests/sp13/task3.c testsuites/sptests/sp14/asr.c testsuites/sptests/sp14/init.c testsuites/sptests/sp14/sp14.doc testsuites/sptests/sp14/sp14.scn testsuites/sptests/sp14/system.h testsuites/sptests/sp14/task1.c testsuites/sptests/sp14/task2.c testsuites/sptests/sp15/init.c testsuites/sptests/sp15/sp15.doc testsuites/sptests/sp15/sp15.scn testsuites/sptests/sp15/system.h testsuites/sptests/sp15/task1.c testsuites/sptests/sp16/init.c testsuites/sptests/sp16/sp16.doc testsuites/sptests/sp16/sp16.scn testsuites/sptests/sp16/system.h testsuites/sptests/sp16/task1.c testsuites/sptests/sp16/task2.c testsuites/sptests/sp16/task3.c testsuites/sptests/sp16/task4.c testsuites/sptests/sp16/task5.c testsuites/sptests/sp17/asr.c testsuites/sptests/sp17/init.c testsuites/sptests/sp17/sp17.doc testsuites/sptests/sp17/sp17.scn testsuites/sptests/sp17/system.h testsuites/sptests/sp17/task1.c testsuites/sptests/sp17/task2.c testsuites/sptests/sp19/first.c testsuites/sptests/sp19/fptask.c testsuites/sptests/sp19/fptest.h testsuites/sptests/sp19/init.c testsuites/sptests/sp19/inttest.h testsuites/sptests/sp19/sp19.doc testsuites/sptests/sp19/sp19.scn testsuites/sptests/sp19/system.h testsuites/sptests/sp19/task1.c testsuites/sptests/sp20/getall.c testsuites/sptests/sp20/init.c testsuites/sptests/sp20/sp20.doc testsuites/sptests/sp20/sp20.scn testsuites/sptests/sp20/system.h testsuites/sptests/sp20/task1.c testsuites/sptests/sp21/init.c testsuites/sptests/sp21/sp21.doc testsuites/sptests/sp21/sp21.scn testsuites/sptests/sp21/system.h testsuites/sptests/sp21/task1.c testsuites/sptests/sp22/delay.c testsuites/sptests/sp22/init.c testsuites/sptests/sp22/prtime.c testsuites/sptests/sp22/sp22.doc testsuites/sptests/sp22/sp22.scn testsuites/sptests/sp22/system.h testsuites/sptests/sp22/task1.c testsuites/sptests/sp23/init.c testsuites/sptests/sp23/sp23.doc testsuites/sptests/sp23/sp23.scn testsuites/sptests/sp23/system.h testsuites/sptests/sp23/task1.c testsuites/sptests/sp24/init.c testsuites/sptests/sp24/resume.c testsuites/sptests/sp24/sp24.doc testsuites/sptests/sp24/sp24.scn testsuites/sptests/sp24/system.h testsuites/sptests/sp24/task1.c testsuites/sptests/sp25/init.c testsuites/sptests/sp25/sp25.doc testsuites/sptests/sp25/sp25.scn testsuites/sptests/sp25/system.h testsuites/sptests/sp25/task1.c testsuites/sptests/spfatal/fatal.c testsuites/sptests/spfatal/init.c testsuites/sptests/spfatal/puterr.c testsuites/sptests/spfatal/spfatal.doc testsuites/sptests/spfatal/spfatal.scn testsuites/sptests/spfatal/system.h testsuites/sptests/spfatal/task1.c testsuites/sptests/spsize/getint.c testsuites/sptests/spsize/init.c testsuites/sptests/spsize/size.c testsuites/sptests/spsize/system.h testsuites/support/include/tmacros.h testsuites/tmtests/README testsuites/tmtests/include/timesys.h testsuites/tmtests/tm01/system.h testsuites/tmtests/tm01/task1.c testsuites/tmtests/tm01/tm01.doc testsuites/tmtests/tm02/system.h testsuites/tmtests/tm02/task1.c testsuites/tmtests/tm02/tm02.doc testsuites/tmtests/tm03/system.h testsuites/tmtests/tm03/task1.c testsuites/tmtests/tm03/tm03.doc testsuites/tmtests/tm04/system.h testsuites/tmtests/tm04/task1.c testsuites/tmtests/tm04/tm04.doc testsuites/tmtests/tm05/system.h testsuites/tmtests/tm05/task1.c testsuites/tmtests/tm05/tm05.doc testsuites/tmtests/tm06/system.h testsuites/tmtests/tm06/task1.c testsuites/tmtests/tm06/tm06.doc testsuites/tmtests/tm07/system.h testsuites/tmtests/tm07/task1.c testsuites/tmtests/tm07/tm07.doc testsuites/tmtests/tm08/system.h testsuites/tmtests/tm08/task1.c testsuites/tmtests/tm08/tm08.doc testsuites/tmtests/tm09/system.h testsuites/tmtests/tm09/task1.c testsuites/tmtests/tm09/tm09.doc testsuites/tmtests/tm10/system.h testsuites/tmtests/tm10/task1.c testsuites/tmtests/tm10/tm10.doc testsuites/tmtests/tm11/system.h testsuites/tmtests/tm11/task1.c testsuites/tmtests/tm11/tm11.doc testsuites/tmtests/tm12/system.h testsuites/tmtests/tm12/task1.c testsuites/tmtests/tm12/tm12.doc testsuites/tmtests/tm13/system.h testsuites/tmtests/tm13/task1.c testsuites/tmtests/tm13/tm13.doc testsuites/tmtests/tm14/system.h testsuites/tmtests/tm14/task1.c testsuites/tmtests/tm14/tm14.doc testsuites/tmtests/tm15/system.h testsuites/tmtests/tm15/task1.c testsuites/tmtests/tm15/tm15.doc testsuites/tmtests/tm16/system.h testsuites/tmtests/tm16/task1.c testsuites/tmtests/tm16/tm16.doc testsuites/tmtests/tm17/system.h testsuites/tmtests/tm17/task1.c testsuites/tmtests/tm17/tm17.doc testsuites/tmtests/tm18/system.h testsuites/tmtests/tm18/task1.c testsuites/tmtests/tm18/tm18.doc testsuites/tmtests/tm19/system.h testsuites/tmtests/tm19/task1.c testsuites/tmtests/tm19/tm19.doc testsuites/tmtests/tm20/system.h testsuites/tmtests/tm20/task1.c testsuites/tmtests/tm20/tm20.doc testsuites/tmtests/tm21/system.h testsuites/tmtests/tm21/task1.c testsuites/tmtests/tm21/tm21.doc testsuites/tmtests/tm22/system.h testsuites/tmtests/tm22/task1.c testsuites/tmtests/tm22/tm22.doc testsuites/tmtests/tm23/system.h testsuites/tmtests/tm23/task1.c testsuites/tmtests/tm23/tm23.doc testsuites/tmtests/tm24/system.h testsuites/tmtests/tm24/task1.c testsuites/tmtests/tm24/tm24.doc testsuites/tmtests/tm25/system.h testsuites/tmtests/tm25/task1.c testsuites/tmtests/tm25/tm25.doc testsuites/tmtests/tm26/fptest.h testsuites/tmtests/tm26/system.h testsuites/tmtests/tm26/task1.c testsuites/tmtests/tm26/tm26.doc testsuites/tmtests/tm27/system.h testsuites/tmtests/tm27/task1.c testsuites/tmtests/tm27/tm27.doc testsuites/tmtests/tm28/system.h testsuites/tmtests/tm28/task1.c testsuites/tmtests/tm28/tm28.doc testsuites/tmtests/tm29/system.h testsuites/tmtests/tm29/task1.c testsuites/tmtests/tm29/tm29.doc testsuites/tmtests/tmck/system.h testsuites/tmtests/tmck/task1.c testsuites/tmtests/tmck/tmck.doc testsuites/tmtests/tmoverhd/dumrtems.h testsuites/tmtests/tmoverhd/empty.c testsuites/tmtests/tmoverhd/system.h testsuites/tmtests/tmoverhd/testtask.c testsuites/tmtests/tmoverhd/tmoverhd.doc tools/build/Makefile.in tools/build/README tools/build/binpatch.c tools/build/cklength.c tools/build/eolstrip.c tools/build/install-if-change.in tools/build/lock-directory.in tools/build/os/Makefile.in tools/build/os/msdos/Makefile.in tools/build/os/msdos/README tools/build/os/msdos/cklength.uue tools/build/os/msdos/fixtimer.c tools/build/os/msdos/fixtimer.uue tools/build/os/msdos/ifc.c tools/build/os/msdos/ifc_exe.uue tools/build/packhex.c tools/build/rcs-clean.in tools/build/scripts/Makefile.in tools/build/scripts/README tools/build/scripts/install-if-change.in tools/build/scripts/lock-directory.in tools/build/scripts/rcs-clean.in tools/build/scripts/search-id.sh tools/build/scripts/unlock-directory.in tools/build/search-id.sh tools/build/src/Makefile.in tools/build/src/cklength.c tools/build/src/config.h.in tools/build/src/eolstrip.c tools/build/src/packhex.c tools/build/src/unhex.c tools/build/unhex.c tools/build/unlock-directory.in tools/cpu/Makefile.in tools/cpu/generic/Makefile.in tools/cpu/generic/size_rtems.in tools/cpu/hppa1.1/genoffsets.c tools/cpu/sh/AUTHORS tools/cpu/sh/COPYING tools/cpu/sh/Makefile.in tools/cpu/sh/TODO tools/cpu/sh/sci.c tools/cpu/sh/sci.h tools/cpu/sh/shgen.c tools/cpu/unix/Makefile.in tools/cpu/unix/gensize.c tools/update/310_to_320_list tools/update/Makefile.in tools/update/README tools/update/update.in tools/update/word-replace.in
Diffstat (limited to 'doc')
-rw-r--r--doc/HELP.html22
-rw-r--r--doc/Make.config65
-rw-r--r--doc/Makefile49
-rw-r--r--doc/README36
-rw-r--r--doc/TODO77
-rw-r--r--doc/ada_user/Makefile59
-rw-r--r--doc/ada_user/ada_user.texi169
-rw-r--r--doc/ada_user/example.texi21
-rw-r--r--doc/archgrey.gifbin12160 -> 0 bytes
-rw-r--r--doc/bsp_howto/Makefile137
-rw-r--r--doc/bsp_howto/analog.t12
-rw-r--r--doc/bsp_howto/bsp_howto.texi128
-rw-r--r--doc/bsp_howto/clock.t46
-rw-r--r--doc/bsp_howto/console.t269
-rw-r--r--doc/bsp_howto/discrete.t12
-rw-r--r--doc/bsp_howto/init.t364
-rw-r--r--doc/bsp_howto/intro.t57
-rw-r--r--doc/bsp_howto/linkcmds.t422
-rw-r--r--doc/bsp_howto/makefiles.t208
-rw-r--r--doc/bsp_howto/network.t12
-rw-r--r--doc/bsp_howto/nvmem.t12
-rw-r--r--doc/bsp_howto/rtc.t12
-rw-r--r--doc/bsp_howto/shmsupp.t12
-rw-r--r--doc/bsp_howto/support.t12
-rw-r--r--doc/bsp_howto/target.t218
-rw-r--r--doc/bsp_howto/timer.t74
-rw-r--r--doc/common/cpright.texi45
-rw-r--r--doc/common/oaronly.jpgbin1584 -> 0 bytes
-rw-r--r--doc/common/setup.texi75
-rw-r--r--doc/common/timemac.texi36
-rw-r--r--doc/common/timetbl.t1330
-rw-r--r--doc/common/timing.t396
-rw-r--r--doc/common/treedef.tex317
-rw-r--r--doc/common/up-arrow.gifbin264 -> 0 bytes
-rw-r--r--doc/common/wksheets.t409
-rw-r--r--doc/develenv/Makefile49
-rw-r--r--doc/develenv/compile.texi159
-rw-r--r--doc/develenv/develenv.texi122
-rw-r--r--doc/develenv/direct.texi730
-rw-r--r--doc/develenv/intro.texi58
-rw-r--r--doc/develenv/sample.texi287
-rw-r--r--doc/develenv/utils.texi312
-rwxr-xr-xdoc/do_docs64
-rw-r--r--doc/index.html26
-rw-r--r--doc/networking/Makefile84
-rw-r--r--doc/networking/driver.t284
-rw-r--r--doc/networking/networkapp.t279
-rw-r--r--doc/networking/networking.eps1343
-rw-r--r--doc/networking/networking.gifbin6274 -> 0 bytes
-rw-r--r--doc/networking/networking.texi107
-rw-r--r--doc/networking/networktasks.t62
-rw-r--r--doc/networking/preface.texi57
-rw-r--r--doc/networking/testing.t175
-rw-r--r--doc/new_chapters/Makefile172
-rw-r--r--doc/new_chapters/STATUS7
-rw-r--r--doc/new_chapters/adminiface.t129
-rw-r--r--doc/new_chapters/base.t62
-rw-r--r--doc/new_chapters/cancel.t175
-rw-r--r--doc/new_chapters/clock.t274
-rw-r--r--doc/new_chapters/cond.t323
-rw-r--r--doc/new_chapters/confspace.t1351
-rw-r--r--doc/new_chapters/cspecific.t623
-rw-r--r--doc/new_chapters/device.t465
-rw-r--r--doc/new_chapters/dumpcontrol.t98
-rw-r--r--doc/new_chapters/eventlog.t1265
-rw-r--r--doc/new_chapters/files.t1959
-rw-r--r--doc/new_chapters/gen_section212
-rw-r--r--doc/new_chapters/io.t1085
-rw-r--r--doc/new_chapters/key.t140
-rw-r--r--doc/new_chapters/memorymgmt.t315
-rw-r--r--doc/new_chapters/message.t259
-rw-r--r--doc/new_chapters/mutex.t555
-rw-r--r--doc/new_chapters/posix_users.texi165
-rw-r--r--doc/new_chapters/preface.texi34
-rw-r--r--doc/new_chapters/procenv.t654
-rw-r--r--doc/new_chapters/process.t414
-rw-r--r--doc/new_chapters/sched.t175
-rw-r--r--doc/new_chapters/semaphores.t287
-rw-r--r--doc/new_chapters/signal.t726
-rw-r--r--doc/new_chapters/systemdb.t259
-rw-r--r--doc/new_chapters/thread.t892
-rw-r--r--doc/oaronly.jpgbin1584 -> 0 bytes
-rw-r--r--doc/posix1003.1/Makefile160
-rw-r--r--doc/posix1003.1/ch01.t40
-rw-r--r--doc/posix1003.1/ch02.t279
-rw-r--r--doc/posix1003.1/ch03.t203
-rw-r--r--doc/posix1003.1/ch04.t181
-rw-r--r--doc/posix1003.1/ch05.t220
-rw-r--r--doc/posix1003.1/ch06.t173
-rw-r--r--doc/posix1003.1/ch07.t207
-rw-r--r--doc/posix1003.1/ch08.t288
-rw-r--r--doc/posix1003.1/ch09.t34
-rw-r--r--doc/posix1003.1/ch10.t68
-rw-r--r--doc/posix1003.1/ch11.t130
-rw-r--r--doc/posix1003.1/ch12.t77
-rw-r--r--doc/posix1003.1/ch13.t132
-rw-r--r--doc/posix1003.1/ch14.t71
-rw-r--r--doc/posix1003.1/ch15.t69
-rw-r--r--doc/posix1003.1/ch16.t72
-rw-r--r--doc/posix1003.1/ch17.t31
-rw-r--r--doc/posix1003.1/ch18.t66
-rw-r--r--doc/posix1003.1/posix1003_1.texi138
-rw-r--r--doc/posix1003.1/preface.texi20
-rwxr-xr-xdoc/posix1003.1/summarize199
-rw-r--r--doc/posix_users/Makefile54
-rw-r--r--doc/posix_users/base.texi98
-rw-r--r--doc/posix_users/clock.texi264
-rw-r--r--doc/posix_users/cond.texi386
-rw-r--r--doc/posix_users/key.texi179
-rw-r--r--doc/posix_users/mutex.texi642
-rw-r--r--doc/posix_users/posix_users.texi126
-rw-r--r--doc/posix_users/preface.texi24
-rw-r--r--doc/posix_users/sched.texi228
-rw-r--r--doc/posix_users/signal.texi691
-rw-r--r--doc/posix_users/thread.texi1025
-rw-r--r--doc/relnotes/Makefile48
-rw-r--r--doc/relnotes/install.texi176
-rw-r--r--doc/relnotes/intro.texi217
-rw-r--r--doc/relnotes/probrep.texi62
-rw-r--r--doc/relnotes/relnotes.texi119
-rw-r--r--doc/relnotes/status.texi260
-rw-r--r--doc/rtems_footer.html1
-rw-r--r--doc/rtems_header.html5
-rw-r--r--doc/rtems_support.html72
-rw-r--r--doc/src2html/Makefile39
-rw-r--r--doc/src2html/RTEMS.test62
-rw-r--r--doc/started/Makefile94
-rw-r--r--doc/started/buildc.t485
-rw-r--r--doc/started/buildrt.t137
-rw-r--r--doc/started/gdb.t222
-rw-r--r--doc/started/intro.t162
-rw-r--r--doc/started/nt.t365
-rw-r--r--doc/started/pictures/bit_ada.jpgbin30320 -> 0 bytes
-rw-r--r--doc/started/pictures/bit_ada.vsdbin15360 -> 0 bytes
-rw-r--r--doc/started/pictures/bit_c.jpgbin29778 -> 0 bytes
-rw-r--r--doc/started/pictures/bit_c.vsdbin14336 -> 0 bytes
-rw-r--r--doc/started/pictures/scfile10.jpgbin12972 -> 0 bytes
-rw-r--r--doc/started/pictures/scfile10.vsdbin26112 -> 0 bytes
-rw-r--r--doc/started/pictures/scfile11.jpgbin45560 -> 0 bytes
-rw-r--r--doc/started/pictures/scfile11.vsdbin24576 -> 0 bytes
-rw-r--r--doc/started/pictures/scfile12.jpgbin12972 -> 0 bytes
-rw-r--r--doc/started/pictures/scfile12.vsdbin11776 -> 0 bytes
-rw-r--r--doc/started/pictures/scfile13.jpgbin33103 -> 0 bytes
-rw-r--r--doc/started/pictures/scfile13.vsdbin15360 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile1.jpgbin88599 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile1.vsdbin25088 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile2.jpgbin175286 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile2.vsdbin26624 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile3.jpgbin87075 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile3.vsdbin19456 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile4.jpgbin97380 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile4.vsdbin16896 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile5.jpgbin22942 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile5.vsdbin13824 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile6.jpgbin34989 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile6.vsdbin13824 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile7.jpgbin99516 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile7.vsdbin19456 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile8.jpgbin52638 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile8.vsdbin16896 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile9.jpgbin62821 -> 0 bytes
-rw-r--r--doc/started/pictures/scsfile9.vsdbin13824 -> 0 bytes
-rw-r--r--doc/started/pictures/sfile12c.jpgbin11663 -> 0 bytes
-rw-r--r--doc/started/pictures/sfile12c.vsdbin11264 -> 0 bytes
-rw-r--r--doc/started/require.t56
-rw-r--r--doc/started/sample.t57
-rw-r--r--doc/started/started.texi117
-rw-r--r--doc/started/versions.texi86
-rw-r--r--doc/started_ada/Makefile88
-rw-r--r--doc/started_ada/buildada.t541
-rw-r--r--doc/started_ada/buildrt.t141
-rw-r--r--doc/started_ada/gdb.t232
-rw-r--r--doc/started_ada/intro.t161
-rw-r--r--doc/started_ada/require.t102
-rw-r--r--doc/started_ada/sample.t54
-rw-r--r--doc/started_ada/started_ada.texi115
-rw-r--r--doc/started_ada/versions.texi96
-rw-r--r--doc/supplements/hppa1_1/Makefile147
-rw-r--r--doc/supplements/hppa1_1/SIMHPPA_TIMES247
-rw-r--r--doc/supplements/hppa1_1/bsp.t53
-rw-r--r--doc/supplements/hppa1_1/callconv.t143
-rw-r--r--doc/supplements/hppa1_1/cpumodel.t56
-rw-r--r--doc/supplements/hppa1_1/cputable.t117
-rw-r--r--doc/supplements/hppa1_1/fatalerr.t32
-rw-r--r--doc/supplements/hppa1_1/hppa1_1.texi121
-rw-r--r--doc/supplements/hppa1_1/intr_NOTIMES.t191
-rw-r--r--doc/supplements/hppa1_1/memmodel.t67
-rw-r--r--doc/supplements/hppa1_1/preface.texi36
-rw-r--r--doc/supplements/hppa1_1/timeSIMHPPA.t86
-rw-r--r--doc/supplements/i386/FORCE386_TIMES247
-rw-r--r--doc/supplements/i386/Makefile165
-rw-r--r--doc/supplements/i386/bsp.t109
-rw-r--r--doc/supplements/i386/callconv.t90
-rw-r--r--doc/supplements/i386/cpumodel.t72
-rw-r--r--doc/supplements/i386/cputable.t121
-rw-r--r--doc/supplements/i386/fatalerr.t31
-rw-r--r--doc/supplements/i386/i386.texi120
-rw-r--r--doc/supplements/i386/intr_NOTIMES.t168
-rw-r--r--doc/supplements/i386/memmodel.t72
-rw-r--r--doc/supplements/i386/preface.texi41
-rw-r--r--doc/supplements/i386/timeFORCE386.t101
-rw-r--r--doc/supplements/i960/CVME961_TIMES247
-rw-r--r--doc/supplements/i960/Makefile156
-rw-r--r--doc/supplements/i960/bsp.t54
-rw-r--r--doc/supplements/i960/callconv.t97
-rw-r--r--doc/supplements/i960/cpumodel.t62
-rw-r--r--doc/supplements/i960/cputable.t125
-rw-r--r--doc/supplements/i960/fatalerr.t30
-rw-r--r--doc/supplements/i960/i960.texi120
-rw-r--r--doc/supplements/i960/intr_NOTIMES.t193
-rw-r--r--doc/supplements/i960/memmodel.t40
-rw-r--r--doc/supplements/i960/preface.texi40
-rw-r--r--doc/supplements/i960/timeCVME961.t88
-rw-r--r--doc/supplements/m68k/MVME136_TIMES247
-rw-r--r--doc/supplements/m68k/Makefile165
-rw-r--r--doc/supplements/m68k/bsp.t93
-rw-r--r--doc/supplements/m68k/callconv.t92
-rw-r--r--doc/supplements/m68k/cpumodel.t91
-rw-r--r--doc/supplements/m68k/cputable.t111
-rw-r--r--doc/supplements/m68k/fatalerr.t31
-rw-r--r--doc/supplements/m68k/intr_NOTIMES.t196
-rw-r--r--doc/supplements/m68k/m68k.texi121
-rw-r--r--doc/supplements/m68k/memmodel.t39
-rw-r--r--doc/supplements/m68k/preface.texi60
-rw-r--r--doc/supplements/m68k/timeMVME136.t108
-rw-r--r--doc/supplements/m68k/timedata.t150
-rw-r--r--doc/supplements/powerpc/DMV177_TIMES248
-rw-r--r--doc/supplements/powerpc/Makefile178
-rw-r--r--doc/supplements/powerpc/PSIM_TIMES248
-rw-r--r--doc/supplements/powerpc/bsp.t76
-rw-r--r--doc/supplements/powerpc/callconv.t229
-rw-r--r--doc/supplements/powerpc/cpumodel.t156
-rw-r--r--doc/supplements/powerpc/cputable.t156
-rw-r--r--doc/supplements/powerpc/fatalerr.t47
-rw-r--r--doc/supplements/powerpc/intr_NOTIMES.t184
-rw-r--r--doc/supplements/powerpc/memmodel.t110
-rw-r--r--doc/supplements/powerpc/powerpc.texi121
-rw-r--r--doc/supplements/powerpc/preface.texi94
-rw-r--r--doc/supplements/powerpc/timeDMV177.t113
-rw-r--r--doc/supplements/powerpc/timePSIM.t97
-rw-r--r--doc/supplements/sh/callconv.texi102
-rw-r--r--doc/supplements/sparc/ERC32_TIMES247
-rw-r--r--doc/supplements/sparc/Makefile158
-rw-r--r--doc/supplements/sparc/bsp.t87
-rw-r--r--doc/supplements/sparc/callconv.t392
-rw-r--r--doc/supplements/sparc/cpumodel.t128
-rw-r--r--doc/supplements/sparc/cputable.t104
-rw-r--r--doc/supplements/sparc/fatalerr.t32
-rw-r--r--doc/supplements/sparc/intr_NOTIMES.t199
-rw-r--r--doc/supplements/sparc/memmodel.t104
-rw-r--r--doc/supplements/sparc/preface.texi91
-rw-r--r--doc/supplements/sparc/sparc.texi119
-rw-r--r--doc/supplements/sparc/timeERC32.t120
-rw-r--r--doc/supplements/template/BSP_TIMES247
-rw-r--r--doc/supplements/template/Makefile154
-rw-r--r--doc/supplements/template/bsp.t93
-rw-r--r--doc/supplements/template/callconv.t92
-rw-r--r--doc/supplements/template/cpumodel.t68
-rw-r--r--doc/supplements/template/cputable.t111
-rw-r--r--doc/supplements/template/fatalerr.t31
-rw-r--r--doc/supplements/template/intr_NOTIMES.t196
-rw-r--r--doc/supplements/template/memmodel.t39
-rw-r--r--doc/supplements/template/preface.texi55
-rw-r--r--doc/supplements/template/template.texi121
-rw-r--r--doc/supplements/template/timeBSP.t108
-rw-r--r--doc/texinfo/texinfo.tex4426
-rw-r--r--doc/tools/bmenu/Makefile45
-rw-r--r--doc/tools/bmenu/address.h110
-rw-r--r--doc/tools/bmenu/address.inl105
-rw-r--r--doc/tools/bmenu/base.h113
-rw-r--r--doc/tools/bmenu/chain.c229
-rw-r--r--doc/tools/bmenu/chain.h347
-rw-r--r--doc/tools/bmenu/chain.inl271
-rw-r--r--doc/tools/bmenu/isr.h18
-rw-r--r--doc/tools/bmenu/main.c1048
-rw-r--r--doc/tools/bmenu/system.h36
-rw-r--r--doc/tools/bmenu/testdoc.texi690
-rw-r--r--doc/tools/pdl2texi/Drive.d890
-rw-r--r--doc/tools/pdl2texi/Makefile83
-rw-r--r--doc/tools/pdl2texi/address.h110
-rw-r--r--doc/tools/pdl2texi/address.inl104
-rw-r--r--doc/tools/pdl2texi/afcc.texi94
-rw-r--r--doc/tools/pdl2texi/base.h119
-rw-r--r--doc/tools/pdl2texi/chain.c229
-rw-r--r--doc/tools/pdl2texi/chain.h347
-rw-r--r--doc/tools/pdl2texi/chain.inl270
-rw-r--r--doc/tools/pdl2texi/drive.d874
-rw-r--r--doc/tools/pdl2texi/isr.h18
-rw-r--r--doc/tools/pdl2texi/main.c3615
-rw-r--r--doc/tools/pdl2texi/s.d129
-rw-r--r--doc/tools/pdl2texi/sample.d136
-rw-r--r--doc/tools/pdl2texi/system.h36
-rw-r--r--doc/tools/pdl2texi/t1.d52
-rw-r--r--doc/tools/pdl2texi/test_cases/avdas.d260
-rw-r--r--doc/tools/pdl2texi/test_cases/enum.d44
-rw-r--r--doc/tools/pdl2texi/test_cases/enumbad.d48
-rw-r--r--doc/tools/pdl2texi/test_cases/table.d27
-rw-r--r--doc/tools/src2html/Makefile38
-rw-r--r--doc/tools/src2html1.4a/Ctags/C.c444
-rw-r--r--doc/tools/src2html1.4a/Ctags/Makefile15
-rw-r--r--doc/tools/src2html1.4a/Ctags/ctags.1225
-rw-r--r--doc/tools/src2html1.4a/Ctags/ctags.c265
-rw-r--r--doc/tools/src2html1.4a/Ctags/ctags.h81
-rw-r--r--doc/tools/src2html1.4a/Ctags/fortran.c155
-rw-r--r--doc/tools/src2html1.4a/Ctags/lisp.c97
-rw-r--r--doc/tools/src2html1.4a/Ctags/print.c130
-rw-r--r--doc/tools/src2html1.4a/Ctags/strerror.c6
-rw-r--r--doc/tools/src2html1.4a/Ctags/tree.c138
-rw-r--r--doc/tools/src2html1.4a/Ctags/yacc.c144
-rw-r--r--doc/tools/src2html1.4a/Ctags/z.c20
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/FreeBSD.hdr25
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/FreeBSD.s2h68
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/conf.hdr9
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/ddb.hdr6
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/i386.i386.hdr5
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/i386.include.hdr5
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/i386.isa.hdr10
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/i386.stand.hdr14
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/kern.hdr18
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/net.hdr11
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/netinet.hdr10
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/nfs.hdr7
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/stand.hdr14
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/sys.hdr6
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/ufs.hdr10
-rw-r--r--doc/tools/src2html1.4a/FreeBSD/vm.hdr9
-rw-r--r--doc/tools/src2html1.4a/Readme65
-rw-r--r--doc/tools/src2html1.4a/ctags-emacs/README20
-rw-r--r--doc/tools/src2html1.4a/ctags-emacs/ctagsbin145997 -> 0 bytes
-rw-r--r--doc/tools/src2html1.4a/ctags-emacs/etags.c-ada-patch424
-rw-r--r--doc/tools/src2html1.4a/ctags-wr41
-rw-r--r--doc/tools/src2html1.4a/src2html704
-rw-r--r--doc/tools/src2html1.4a/src2html.1244
-rw-r--r--doc/tools/src2html1.4a/src2html.cgi100
-rw-r--r--doc/tools/texi2www/Makefile45
-rw-r--r--doc/tools/texi2www/archive/texi2www-960103.tgzbin131143 -> 0 bytes
-rw-r--r--doc/tools/texi2www/dir-arrow.gifbin2609 -> 0 bytes
-rw-r--r--doc/tools/texi2www/missing-arrow.gifbin166 -> 0 bytes
-rw-r--r--doc/tools/texi2www/next-arrow.gifbin275 -> 0 bytes
-rw-r--r--doc/tools/texi2www/prev-arrow.gifbin279 -> 0 bytes
-rw-r--r--doc/tools/texi2www/texi2dvi218
-rwxr-xr-xdoc/tools/texi2www/texi2www1276
-rw-r--r--doc/tools/texi2www/texi2www.texi707
-rw-r--r--doc/tools/texi2www/up-arrow.gifbin264 -> 0 bytes
-rw-r--r--doc/tools/update221
-rwxr-xr-xdoc/tools/word-replace89
-rw-r--r--doc/user/Makefile180
-rw-r--r--doc/user/bsp.t313
-rw-r--r--doc/user/c_user.texi169
-rw-r--r--doc/user/clock.t403
-rw-r--r--doc/user/concepts.t297
-rw-r--r--doc/user/conf.t966
-rw-r--r--doc/user/dirstat.texi42
-rw-r--r--doc/user/dpmem.t327
-rw-r--r--doc/user/event.t320
-rw-r--r--doc/user/example.texi105
-rw-r--r--doc/user/fatal.t158
-rw-r--r--doc/user/glossary.texi771
-rw-r--r--doc/user/init.t405
-rw-r--r--doc/user/intr.t426
-rw-r--r--doc/user/io.t563
-rw-r--r--doc/user/mp.t593
-rw-r--r--doc/user/msg.t774
-rw-r--r--doc/user/overview.t530
-rw-r--r--doc/user/part.t414
-rw-r--r--doc/user/preface.texi189
-rw-r--r--doc/user/region.t613
-rw-r--r--doc/user/rtemsarc.gifbin7653 -> 0 bytes
-rw-r--r--doc/user/rtemspie.gifbin31070 -> 0 bytes
-rw-r--r--doc/user/rtmon.t1123
-rw-r--r--doc/user/schedule.t390
-rw-r--r--doc/user/sem.t729
-rw-r--r--doc/user/signal.t360
-rw-r--r--doc/user/states.gifbin31256 -> 0 bytes
-rw-r--r--doc/user/task.t1440
-rw-r--r--doc/user/timer.t467
-rw-r--r--doc/user/userext.t696
377 files changed, 0 insertions, 78802 deletions
diff --git a/doc/HELP.html b/doc/HELP.html
deleted file mode 100644
index 55ddc054a1..0000000000
--- a/doc/HELP.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<HTML>
-<HEAD><TITLE>RTEMS 4.0.0 On-Line Library</TITLE></HEAD>
-<BODY BGCOLOR="FFFFFF">
-<A HREF="http://www.oarcorp.com" target="Text Frame">
- <IMG align=right BORDER=0 SRC="oaronly.jpg" ALT="OAR"> </A>
-<H1>RTEMS On-Line Library</H1>
-<HR>
-<BODY>
-The following supplement manuals do not currently exist:
-<MENU>
- <LI>RTEMS AMD 29K Applications Supplement</LI>
- <LI>RTEMS MIPS Applications Supplement</LI>
- <LI>RTEMS Hitachi SH Applications Supplement</LI>
- <LI>RTEMS UNIX Port Applications Supplement</LI>
-</MENU>
-If you have knowledge of the processors used in the above ports and
-want to contribute to RTEMS, please contact
-<A HREF="mailto:rtems@OARcorp.com"><I>rtems@OARcorp.com</I></A>
-
-<HR>
-Copyright &copy; 1988-1998 <A HREF="http://www.oarcorp.com" target="Text Frame">OAR Corporation</A>
-</BODY></HTML>
diff --git a/doc/Make.config b/doc/Make.config
deleted file mode 100644
index 2b7cab80b8..0000000000
--- a/doc/Make.config
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# Build information which may change
-#
-# $Id$
-#
-
-RTEMS_VERSION=4.0.0
-DOC_INSTALL_BASE=/usr1/tmp/rtemsdoc-$(RTEMS_VERSION)
-
-SRCDIR=/usr1/rtems/rtemsdoc-work
-
-BMENU=$(SRCDIR)/tools/bmenu/bmenu
-PDL2TEXI=$(SRCDIR)/tools/pdl2texi/pdl2texi
-
-SRC2HTML=$(SRCDIR)/tools/src2html/src2html
-TEXI2DVI=$(SRCDIR)/tools/texi2www/texi2dvi
-TEXI2WWW=$(SRCDIR)/tools/texi2www/texi2www
-MAKEINFO=makeinfo
-INFO=info
-XDVI=xdvi -s 4
-GHOSTVIEW=ghostview -magstep -1
-
-# Account for tree organization which restricts visibility
-ifeq ($(DISTRIBUTION_LEVEL),public)
-RLEVEL=
-WWW_INSTALL=$(DOC_INSTALL_BASE)/html
-INFO_INSTALL=$(DOC_INSTALL_BASE)/info
-PS_INSTALL=$(DOC_INSTALL_BASE)/ps
-INDEX_FILE=../$(RLEVEL)index.html
-else
-RLEVEL=../
-WWW_INSTALL=$(DOC_INSTALL_BASE)/html/$(DISTRIBUTION_LEVEL)
-INFO_INSTALL=$(DOC_INSTALL_BASE)/info/$(DISTRIBUTION_LEVEL)
-PS_INSTALL=$(DOC_INSTALL_BASE)/ps/$(DISTRIBUTION_LEVEL)
-INDEX_FILE=../$(RLEVEL)rtems_full.html
-endif
-
-#TEXI2WWW_ARGS=-dirfile $(WWW_INSTALL)/index.html \
-# -header $(WWW_INSTALL)/rtems_header.html \
-# -footer $(WWW_INSTALL)/rtems_footer.html
-TEXI2WWW_ARGS=-dirfile $(INDEX_FILE) \
- -header $(WWW_INSTALL)/$(RLEVEL)rtems_header.html \
- -footer $(WWW_INSTALL)/$(RLEVEL)rtems_footer.html \
- -icons $(RLEVEL)..
-
-
-define make-dirs
- @ if [ ! -d $(WWW_INSTALL) ] ; then \
- mkdir -p $(WWW_INSTALL); \
- fi
- @ if [ ! -d $(INFO_INSTALL) ] ; then \
- mkdir -p $(INFO_INSTALL); \
- fi
- @ if [ ! -d $(PS_INSTALL) ] ; then \
- mkdir -p $(PS_INSTALL); \
- fi
- @ - cp $(SRCDIR)/oaronly.jpg $(WWW_INSTALL)
- @ - sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \
- <$(SRCDIR)/rtems_footer.html >$(DOC_INSTALL_BASE)/html/rtems_footer.html
- @ - cp $(SRCDIR)/HELP.html $(DOC_INSTALL_BASE)/html
- @ - cp $(SRCDIR)/common/*.gif $(DOC_INSTALL_BASE)/html
- @ - cp $(SRCDIR)/tools/texi2www/*.gif $(DOC_INSTALL_BASE)/html
- @ - cp $(SRCDIR)/common/*.jpg $(DOC_INSTALL_BASE)/html
-endef
-
diff --git a/doc/Makefile b/doc/Makefile
deleted file mode 100644
index 14e6b578b1..0000000000
--- a/doc/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# $Id$
-#
-
-include Make.config
-
-BASEDIR=$(shell pwd)
-
-all: env info html ps
-# find $(WWW_INSTALL) -type f | xargs -e chmod 444
-# find $(WWW_INSTALL) -type d | xargs -e chmod 555
-
-env: tools dirs headers
-
-dirs:
- $(make-dirs)
-
-headers:
- sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \
- <$(SRCDIR)/index.html >$(WWW_INSTALL)/index.html
- sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \
- <$(SRCDIR)/rtems_support.html >$(WWW_INSTALL)/rtems_support.html
- sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \
- <$(SRCDIR)/rtems_header.html >$(WWW_INSTALL)/rtems_header.html
- sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \
- <$(SRCDIR)/rtems_footer.html >$(WWW_INSTALL)/rtems_footer.html
-
-info: env
- ./do_docs $(BASEDIR) info
-
-html: env
- ./do_docs $(BASEDIR) html
-
-ps: dirs env
- ./do_docs $(BASEDIR) ps
-
-clean:
- ./do_docs $(BASEDIR) clean
- cd tools/bmenu ; gmake clean
- cd tools/pdl2texi ; gmake clean
- cd tools/src2html ; gmake clean
-
-
-.PHONY: tools
-
-tools:
- cd tools/bmenu ; gmake
- cd tools/pdl2texi ; gmake
- cd tools/src2html ; gmake
diff --git a/doc/README b/doc/README
deleted file mode 100644
index 225dfa23b8..0000000000
--- a/doc/README
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# $Id$
-#
-
-Tools Required
-==============
-The following tools are used in the production of this documentation:
-
-TeX
-texinfo 3.7
-texi2www-960103
-
-This was used by the authors to generate the directory tree figure
-in the texinfo printed version:
-
-tree (from the CTAN Archives -- see http://jasper.ora.com/ctan.html)
-
-Installation
-============
-1. Edit replace-word so it references perl in the correct location.
-
-2. Edit Make.config and localize it.
-
-3. Edit do_docs and fix basedir
-
-4. Create the installation point for the html and info files.
-
-5. Copy texi2www gif files into the main rtems html install directory.
-
-
-Use do_docs to:
-
-do_docs info
-do_docs html
-do_docs clean
-
diff --git a/doc/TODO b/doc/TODO
deleted file mode 100644
index 0aa41ce461..0000000000
--- a/doc/TODO
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# $Id$
-#
-
-This is a collection of things which need to be done to the various
-manuals.
-
-POSIX User Notes
-================
-
-Add pages for network services.
-
-Add timer() services if we have any.
-
-
-Development Environment Guide
-=============================
-Either rename to "A Tour of the RTEMS Source Tree" or include
-more information on the GNU tools.
-
-The "C Suites" section is oddly named and the directory
-tree included is wrong in that make is no longer under
-the c directory. I think the build-tools make have
-moved as well.
-
-All the paths should be provided as relative paths
-from the top of the RTEMS source tree. It wastes
-valuable screen space to do otherwise.
-
-The last paragraph of "C Suites" is vague and could
-be written better. It should include the subdirectory
-names as part of the textual description.
-
-
-Should this documentation even use the phrase "C Implementation"
-any longer?
-
-Directory names should be in @code -- not "quoted".
-
-In "Support Library Source Directory", look for "which installed"
-
-In the latter part of the "libbsp" paragraph in "Support
-Library Source Directory", there is reference to the
-stubdr directory which is no longer there.
-
-Update this section to include discussion of the shared
-subdirectory and its relationship to the BSPs. Write this
-in such a way that it can be passed on to Geoffroy Montel.
-
-Include a better discussion of the subdirectories
-under each BSP. This can be a starting point for
-Geoffroy Montel. The sample tests also deserve mention
-in a BSP development guide.
-
-In the section, "Test Suite Source Directory", there is a
-numeric count of the number of tests in each suite. This
-should be eliminated for maintenance purposes.
-
-The psxtest directory is not mentioned. Check that no others
-have been forgotten.
-
-There should probably be no reference to the Ada sample
-applications. This document used to cover both implementations.
-This now seems inappropriate.
-
-The hello world sample test discussion mentions that it provides
-a rudiementary test of the BSP startup code and the "RTEMS
-C Library". This should be rewritten to tell mroe about what
-this test shows (actually a lot). It should mention that this
-test tries to avoid using interrupts.
-
-The ticker test should mention that in contrast to hello, it
-does use interrupts. :) It can be used to tune the clock
-tick.
-
-The ticker test documentation says it calls "tm_get" -- jeez
-how old is this manual.
diff --git a/doc/ada_user/Makefile b/doc/ada_user/Makefile
deleted file mode 100644
index e2d6d39122..0000000000
--- a/doc/ada_user/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=ada_user
-DISTRIBUTION_LEVEL=internal
-
-include ../Make.config
-
-all: html info ps
-
-COMMON_FILES=../common/cpright.texi ../user/bsp.texi ../user/clock.texi \
- ../user/concepts.texi ../user/conf.texi ../user/dirstat.texi \
- ../user/dpmem.texi ../user/event.texi \
- ../user/fatal.texi ../user/glossary.texi ../user/init.texi \
- ../user/intr.texi ../user/io.texi ../user/mp.texi ../user/msg.texi \
- ../user/overview.texi ../user/part.texi ../user/preface.texi \
- ../user/region.texi ../user/rtmon.texi ../user/schedule.texi \
- ../user/sem.texi ../user/signal.texi ../user/task.texi \
- ../user/timer.texi ../user/userext.texi
-FILES= ada_user.texi example.texi $(COMMON_FILES)
-
-dirs:
- $(make-dirs)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs ada_user
- cp $(shell ls -1 $(PROJECT) $(PROJECT)-* 2>/dev/null) $(INFO_INSTALL)
-
-ada_user: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: dirs $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/ada_user
- cp ../user/rtemsarc.gif ../user/rtemspie.gif ../user/states.gif \
- $(WWW_INSTALL)/ada_user
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core *.html
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f ada_user ada_user-* _*
-
diff --git a/doc/ada_user/ada_user.texi b/doc/ada_user/ada_user.texi
deleted file mode 100644
index 9be98cfbf4..0000000000
--- a/doc/ada_user/ada_user.texi
+++ /dev/null
@@ -1,169 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename ada_user
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Ada User's Guide
-@c
-
-@c Joel's Questions
-@c
-@c 1. Why does paragraphindent only impact makeinfo?
-@c 2. Why does paragraphindent show up in HTML?
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Ada User: (ada_user). The Ada User's Guide
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c variable substitution info:
-@c
-@clear is-C
-@set is-Ada
-@set LANGUAGE Ada
-@set STRUCTURE record
-@set ROUTINE subprogram
-@set OR or
-@set RPREFIX RTEMS.
-@set DIRPREFIX rtems.
-@c the language is @value{LANGUAGE}
-@c NOTE: don't use underscore in the name
-@c
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Applications Ada User's Guide
-
-@setchapternewpage odd
-@settitle RTEMS Ada User's Guide
-@titlepage
-@finalout
-
-@title RTEMS Applications Ada User's Guide
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include ../user/preface.texi
-@include ../user/overview.texi
-@include ../user/concepts.texi
-@include ../user/init.texi
-@include ../user/task.texi
-@include ../user/intr.texi
-@include ../user/clock.texi
-@include ../user/timer.texi
-@include ../user/sem.texi
-@include ../user/msg.texi
-@include ../user/event.texi
-@include ../user/signal.texi
-@include ../user/part.texi
-@include ../user/region.texi
-@include ../user/dpmem.texi
-@include ../user/io.texi
-@include ../user/fatal.texi
-@include ../user/schedule.texi
-@include ../user/rtmon.texi
-@include ../user/bsp.texi
-@include ../user/userext.texi
-@include ../user/conf.texi
-@include ../user/mp.texi
-@include ../user/dirstat.texi
-@include example.texi
-@include ../user/glossary.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top ada_user
-
-This is the online version of the RTEMS Ada User's Guide.
-
-@menu
-* Preface::
-* Overview::
-* Key Concepts::
-* Initialization Manager::
-* Task Manager::
-* Interrupt Manager::
-* Clock Manager::
-* Timer Manager::
-* Semaphore Manager::
-* Message Manager::
-* Event Manager::
-* Signal Manager::
-* Partition Manager::
-* Region Manager::
-* Dual-Ported Memory Manager::
-* I/O Manager::
-* Fatal Error Manager::
-* Scheduling Concepts::
-* Rate Monotonic Manager::
-* Board Support Packages::
-* User Extensions Manager::
-* Configuring a System::
-* Multiprocessing Manager::
-* Directive Status Codes::
-* Example Application::
-* Glossary::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, Glossary, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/ada_user/example.texi b/doc/ada_user/example.texi
deleted file mode 100644
index 46cc42e693..0000000000
--- a/doc/ada_user/example.texi
+++ /dev/null
@@ -1,21 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Example Application, Glossary, Directive Status Codes, Top
-@end ifinfo
-@chapter Example Application
-
-@example
-
-Currently there is no example Ada application provided.
-
-@end example
-
-
-
diff --git a/doc/archgrey.gif b/doc/archgrey.gif
deleted file mode 100644
index d315b028f2..0000000000
--- a/doc/archgrey.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bsp_howto/Makefile b/doc/bsp_howto/Makefile
deleted file mode 100644
index f61d8b5739..0000000000
--- a/doc/bsp_howto/Makefile
+++ /dev/null
@@ -1,137 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=bsp_howto
-DISTRIBUTION_LEVEL=public
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi ../common/setup.texi
-
-GENERATED_FILES= \
- intro.texi target.texi makefiles.texi linkcmds.texi support.texi \
- init.texi console.texi clock.texi timer.texi rtc.texi nvmem.texi \
- network.texi shmsupp.texi analog.texi discrete.texi
-
-FILES=$(PROJECT).texi $(GENERATED_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs $(PROJECT)
- #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL)
- # cp $(PROJECT) $(INFO_INSTALL)
-
-$(PROJECT): $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- # cp $(PROJECT).ps $(PS_INSTALL)
-
-# run texi2dvi twice to generate the xref's properly.
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES)
- rm -f *.fixed _*
-
-#
-# Process Automatically Generated Files
-#
-
-intro.texi: intro.t Makefile
- $(BMENU) -p "Top" \
- -u "Top" \
- -n "Target Dependent Files" ${*}.t
-
-target.texi: target.t Makefile
- $(BMENU) -p "Introduction" \
- -u "Top" \
- -n "Makefiles" ${*}.t
-
-makefiles.texi: makefiles.t Makefile
- $(BMENU) -p "Target Dependent Files Board Support Package Structure" \
- -u "Top" \
- -n "Linker Script" ${*}.t
-
-linkcmds.texi: linkcmds.t Makefile
- $(BMENU) -p "Makefiles Creating a New BSP Make Customization File" \
- -u "Top" \
- -n "Required Support Routines" ${*}.t
-
-support.texi: support.t Makefile
- $(BMENU) -p "Linker Script Initialized Data" \
- -u "Top" \
- -n "" ${*}.t
-
-init.texi: init.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-console.texi: console.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-clock.texi: clock.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-timer.texi: timer.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-rtc.texi: rtc.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-nvmem.texi: nvmem.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-network.texi: network.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-shmsupp.texi: shmsupp.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-analog.texi: analog.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-discrete.texi: discrete.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
diff --git a/doc/bsp_howto/analog.t b/doc/bsp_howto/analog.t
deleted file mode 100644
index 8c402ad5c9..0000000000
--- a/doc/bsp_howto/analog.t
+++ /dev/null
@@ -1,12 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Analog Driver
-
-XXX FILL ME IN
-
diff --git a/doc/bsp_howto/bsp_howto.texi b/doc/bsp_howto/bsp_howto.texi
deleted file mode 100644
index bf9dc23960..0000000000
--- a/doc/bsp_howto/bsp_howto.texi
+++ /dev/null
@@ -1,128 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename bsp_howto
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Getting Started (C) Guide
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* BSP and Device Driver Development Guide (bsp_howto):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage BSP and Device Driver Development Guide
-
-@setchapternewpage odd
-@settitle BSP and Device Driver Development Guide
-@titlepage
-@finalout
-
-@title BSP and Device Driver Development Guide
-@subtitle Edition @value{edition}, for @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include intro.texi
-@include target.texi
-@include makefiles.texi
-@include linkcmds.texi
-@include support.texi
-@include init.texi
-@include console.texi
-@include clock.texi
-@include timer.texi
-@include rtc.texi
-@include nvmem.texi
-@include network.texi
-@include shmsupp.texi
-@include analog.texi
-@include discrete.texi
-
-@ifinfo
-@node Top, Introduction, (dir), (dir)
-@top bsp_howto
-
-This is the online version of the Getting Started with RTEMS for C/C++ Users.
-
-@menu
-* Introduction::
-* Target Dependent Files::
-* Makefiles::
-* Linker Script::
-* Required Support Routines::
-* Initialization Code::
-* Console Driver::
-* Clock Driver::
-* Timer Driver::
-* Real-Time Clock Driver::
-* Networking Driver::
-* Non-Volatile Memory Driver::
-* Shared Memory Support Driver::
-* Analog Driver::
-* Discrete Driver::
-@end menu
-
-@c * Command and Variable Index::
-@c * Concept Index::
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@c @node Command and Variable Index, Concept Index, Installing EGCS AND NEWLIB, Top
-@c @unnumbered Command and Variable Index
-
-@c There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@c @node Concept Index, , Command and Variable Index, Top
-@c @unnumbered Concept Index
-
-@c There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/bsp_howto/clock.t b/doc/bsp_howto/clock.t
deleted file mode 100644
index 918f6331b2..0000000000
--- a/doc/bsp_howto/clock.t
+++ /dev/null
@@ -1,46 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Clock Driver
-
-@section Introduction
-
-The clock driver aims at giving a steady time basis to the kernel, so that
-the RTEMS primitives that need a clock tick work properly. <insert a link
-to the Clock Driver defs>
-
-The clock driver is located in the clock directory of the BSP.
-
-@section Primitives
-
-@subsection Initialization
-
-The major and minor numbers of the clock driver can be made available to
-the others, such as the Shared Memory Driver.
-
-Then you have to program your integrated processor periodic interval timer
-so that an interrupt is generated every m microseconds, where m =
-BSP_Configuration.microseconds_per_tick. Sometimes the periodic interval
-timer can use a prescaler so you have to look carefully at your user's
-manual to determine the correct value.
-
-You must use the RTEMS primitive to put your clock interrupt routine in
-the VBR:
-
-@example
-rtems_interrupt_catch (InterruptHandler, CONSOLE_VECTOR, &old_handler);
-@end example
-
-@subsection The Clock Interrupt Subroutine
-
-It only has to inform the kernel that a ticker has elapsed, so call :
-
-@example
-rtems_clock_tick();
-@end example
-
diff --git a/doc/bsp_howto/console.t b/doc/bsp_howto/console.t
deleted file mode 100644
index 09d8b25640..0000000000
--- a/doc/bsp_howto/console.t
+++ /dev/null
@@ -1,269 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Console Driver
-
-@section Introduction
-
-This chapter describes how to do a console driver using RTEMS Termios
-support.
-
-The serial driver is called as soon as printf/scanf or read/write kind of
-input/output are needed. There are two main functioning modes:
-
-@itemize @bullet
-
-@item console: formatted input/output, with special characters (end of
-line, tabulations, etc...) recognition and processing,
-
-@item raw: permits raw data processing.
-
-@end itemize
-
-We may think that one need two serial drivers to deal with those two types
-of data, but Termios permits having only one driver.
-
-@section Termios
-
-Termios is a standard for terminal management, included in several Unix
-versions. Termios is good because:
-
-@itemize @bullet
-
-@item from the user's side: primitives to access the terminal and change
-configuration settings are the same under Unix and Rtems.
-
-@item from the BSP developer's side: it frees you from dealing with buffer
-states and mutual exclusions on them.
-
-@end itemize
-
-Termios support includes:
-
-@itemize @bullet
-
-@item raw and console handling,
-
-@item blocking or non-blocking characters receive, with or without
-Timeout.
-
-@end itemize
-
-For more information on Termios, type man termios in your Unix box or go
-to http://www.freebsd.org/cgi/man.cgi.
-
-@section Driver Functioning Modes
-
-There are generally two main functioning modes for an UART (Universal
-Asynchronous Receiver-Transmitter, i.e. the serial chip):
-
-@itemize @bullet
-
-@item polling mode: the processor blocks on sending/receiving characters.
-This mode is not powerful, but is necessary when one wants to print an
-error message when the board hung. This is also the most simple mode to
-program,
-
-@item interrupt mode: the processor doesn't block on sending/receiving
-characters. Two buffers (one for the in-going characters, the others for
-the characters to be sent) are used. An interrupt is raised as soon as a
-character is in the UART. Then the int errupt subroutine insert the
-character at the input buffer queue. When a character is asked for input,
-this at the head of the buffer is returned. When characters have to be
-sent, one have to put the first characters (the number depends on the
-UART) in th e UART. Then an interrupt is raised when all the characters
-have been emitted. The interrupt subroutine has to send the characters
-remaining in the output buffer the same way.
-
-@end itemize
-
-@section Serial Driver Functioning Overview
-
-Figure 5 is an attempt of showing how a Termios driven serial driver works :
-
-@itemize @bullet
-
-@item the application programmer uses standard C library call (printf,
-scanf, read, write, etc.),
-
-@item C library (in fact that's Cygnus Newlib) calls RTEMS procedure: glue
-is made in newlib*.c files which can be found under
-$RTEMS_ROOT/c/src/lib/libc directory,
-
-@item Glue code calls your serial driver entry routines.
-
-@end itemize
-
-@subsection Termios and Polled I/O
-
-You have to point Termios out which functions are used for simple
-character input/output:
-
-
-Function
-
-Description
-
-@example
-int pollWrite (int minor, const char *buf, int len)
-
-for (i=0; i<len; i++) @{
- put buf[i] into the UART channel minor
- wait for the character to be transmitted
- on the serial line
-@}
-int pollread(int minor)
-@end example
-
-wait for a character to be available in the UART channel minor, then return it.
-
-@subsection Termios and Interrupt Driven I/O
-
-The UART generally generates interrupts when it is ready to accept or to
-emit a number of characters. In this mode, the interrupt subroutine is the
-core of the driver:
-
-@example
-rtems_isr InterruptHandler (rtems_vector_number v)
-@end example
-
-check whether there was an error
-
-if some characters were received:
- ask Termios to put them on his input buffer
-
-if some characters have been transmitted (i.e. the UART output buffer is empty)
- tell TERMIOS that the characters have been
- transmitted. The TERMIOS routine will call
- the InterruptWrite function with the number
- of characters not transmitted yet if it is
- not zero.
-
-@example
-static int InterruptWrite(int minor, const char *buf, int len)
-@end example
-
-you have to put the n first buf characters in the UART channel minor
-buffer (n is the UART channel size, n=1 on the MC68640). Generally, an
-interrupt is raised after these n characters being transmitted. So you may
-have to enable the UART interrupts after having put the characters in the
-UART.
-
-
-Figure 5: general TERMIOS driven serial driver functioning
-
-@subsection Initialization
-
-The driver initialization is called once during RTEMS initialization
-process.
-
-The console_initialize function has to :
-
-@itemize @bullet
-
-@item initialize Termios support: call rtems_termios_initialize(),
-
-@item initialize your integrated processor's UART: the operation is
-normally described in your user's manual and you must follow these
-instructions but it usually consists in:
-
-@item reinitialize the UART channels,
-
-@item set the channels configuration to Termios default one, i.e.: 9600
-bauds, no parity, 1 stop bit, 8 bits per character,
-
-@item register your console interrupt routine to RTEMS:
-
-@example
- rtems_interrupt_catch (InterruptHandler,CONSOLE_VECTOR,&old_handler);
-@end example
-
-@item enable the UART channels,
-
-@item register your device name: in order to use the console (i.e. being
-able to do printf/scanf on stdin, stdout, and stderr), you have to
-register the "/dev/console" device:
-
-@example
-rtems_io_register_name ("dev/console", major, i);
-@end example
-
-@end itemize
-
-@subsection Opening a serial device
-
-The console device is opened during RTEMS initialization but the
-console_open function is called when a new device is opened. For instance,
-if you register the "/dev/tty1" device for the UART channel 2, the
-console_open will be called with a fopen("/dev/t ty", mode) in your
-application.
-
-The console_open function has to inform Termios of your low-level function
-for serial line support; the "callbacks".
-
-The gen68340 BSP defines two kinds of callbacks:
-
-@itemize @bullet
-
-@item functions to use with polled input/output,
-
-@item functions to use with interrupt input/output.
-
-@end itemize
-
-@subsubsection Polled I/O
-
-You have to point Termios out which functions are used for simple
-character input/output, i.e. pointers to pollWrite and pollRead functions
-defined in 8.4.1.
-
-@subsubsection Interrupt Driven I/O
-
-Driver functioning is quite different in this mode. You can see there's no
-read function passed to Termios. Indeed a console_read call returns the
-content of Termios input buffer. This buffer is filled in the driver
-interrupt subroutine (cf. 8.4.2).
-
-But you actually have to provide a pointer to the InterruptWrite function.
-
-@subsection Closing a serial device
-
-The driver entry point is: console_close.
-
-You just have to notify Termios that the serial device was closed, with a
-call to rtems_termios_close.
-
-@subsection Reading characters from the serial device
-
-The driver entry point is: console_read.
-
-You just have to return the content of the Termios input buffer.
-
-Call rtems_termios_read.
-
-@subsection Writing characters to the serial device
-
-The driver entry point is: console_write.
-
-You just have to add the characters at the end of the Termios output
-buffer.
-
-Call rtems_termios_write.
-
-@subsection Changing serial line parameters
-
-The driver entry point is: console_control.
-
-The application write is able to control the serial line configuration
-with Termios calls (such as the ioctl command, see Termios man page for
-more details). If you want to support dynamic configuration, you have to
-write the console_control piece of code . Look at the gen68340 BSP for an
-example of how it is done. Basically ioctl commands call console_control
-with the serial line configuration in a Termios structure. You just have
-to reinitialize the UART with the correct settings.
-
diff --git a/doc/bsp_howto/discrete.t b/doc/bsp_howto/discrete.t
deleted file mode 100644
index c40bf8284a..0000000000
--- a/doc/bsp_howto/discrete.t
+++ /dev/null
@@ -1,12 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Discrete Driver
-
-XXX FILL ME IN
-
diff --git a/doc/bsp_howto/init.t b/doc/bsp_howto/init.t
deleted file mode 100644
index 669d5f9d3b..0000000000
--- a/doc/bsp_howto/init.t
+++ /dev/null
@@ -1,364 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Initialization Code
-
-@section Introduction
-
-The initialization code is the first piece of code executed when there's a
-reset/reboot. Its purpose is to initialize the board for the application.
-This chapter contains a narrative description of the initialization
-process followed by a description of each of the files and routines
-commonly found in the BSP related to initialization. The remainder of
-this chapter covers special issues which require attention such
-as interrupt vector table and chip select initialization.
-
-Most of the examples in this chapter will be based on the gen68340 BSP
-initialization code. Like most BSPs, the initialization for this
-BSP is divided into two subdirectories under the BSP source directory.
-The gen68340 BSP source code in the following directory:
-
-@example
-c/src/lib/libbsp/m68k/gen68340:
-@end example
-
-@itemize @bullet
-
-@item @code{start340}: assembly language code which contains early
-initialization routines
-
-@item @code{startup}: C code with higher level routines (RTEMS
-initialization related)
-
-@end itemize
-
-@b{NOTE:} The directory @code{start340} is simply named @code{start} or
-start followed by a BSP designation.
-
-In the @code{start340} directory are two source files. The file
-@code{startfor340only.s} is the simpler of these files as it only has
-initialization code for a MC68340 board. The file @code{start340.s}
-contains initialization for a 68349 based board as well.
-
-@section Board Initialization
-
-This section describes the steps an application goes through from the
-time the first BSP code is executed until the first application task
-executes. The routines invoked during this will be discussed and
-their location in the RTEMS source tree pointed out.
-
-@subsection Start Code - Assembly Language Initialization
-
-The assembly language code in the directory @code{start} is
-the first part of the application to execute. It is
-responsible for initializing the processor and board enough to execute
-the rest of the BSP. This includes:
-
-@itemize @bullet
-@item initializing the stack
-@item zeroing out the uninitialized data section @code{.bss}
-@item disabling external interrupts
-@item copy the initialized data from ROM to RAM
-@end itemize
-
-The general rule of thumb is that the
-start code in assembly should do the minimum necessary to allow C code
-to execute to complete the initialization sequence.
-
-The initial assembly language start code completes its execution by
-invoking the shared routine @code{boot_card()}.
-
-@subsection boot_card() - Boot the Card
-
-The @code{boot_card()} is the first C code invoked. Most of the BSPs
-use the sams shared version of @code{boot_card()} which is located in
-the following file:
-
-@example
-c/src/lib/libbsp/shared/main.c
-@end example
-
-The @code{boot_card()} routine performs the following functions:
-
-@itemize @bullet
-
-@item initializes the shared fields of the CPU Configuration Table
-(variable name @code{Cpu_table}) to a default state,
-
-@item copies the application's RTEMS Configuration Table
-(variable name @code{Configuration}) to the BSP's Configuration
-Table (variable name @code{BSP_Configuration}) so it can be modified
-as necessary without copying the original table,
-
-@item invokes the BSP specific routine @code{bsp_start()},
-
-@item invokes the RTEMS directive @code{rtems_initialize_executive_early()}
-to initialize the executive, C Library, and all device drivers but
-return without initiating multitasking or enabling interrupts,
-
-@item invokes the shared @code{main()} in the same file as
-@code{boot_card()} which does not return until the
-@code{rtems_shutdown_executive} directive is called, and
-
-@item invokes the BSP specific routine @code{bsp_cleanup()} to perform
-any necessary board specific shutdown actions.
-
-@end itemize
-
-It is important to note that the executive and much of the
-support environment must be initialized before invoking @code{main()}.
-
-@subsection bsp_start() - BSP Specific Initialization
-
-This is the first BSP specific C routine to execute during system
-initialization. This routine often performs required fundamental
-hardware initialization such as setting bus controller registers
-that do not have a direct impact on whether or not C code can execute.
-The source code for this routine is usually found in the following
-file:
-
-@example
-c/src/lib/libbsp/CPU/BSP/startup/bspstart.c
-@end example
-
-This routine is also responsible for overriding the default settings
-in the CPU Configuration Table and setting port specific entries
-in this table. This routine will typically install routines
-for one or more of the following initialization hooks:
-
-@itemize @bullet
-@item BSP Pretasking Hook
-@item BSP Predriver Hook
-@item BSP Postdriver Hook
-@end itemize
-
-One of the most important functions performed by this routine
-is determining where the RTEMS Executive Work Space is to be
-located in memory. All RTEMS objects and task stacks will be
-allocated from this Workspace. The RTEMS Workspace is distinct
-from the application heap used for @code{malloc()}.
-
-Many BSPs place this area at the end of RAM although this is
-certainly not a requirement.
-
-After completing execution, this routine returns to the
-@code{boot_card()} routine.
-
-@subsection main() - C Main
-
-This routine is the C main entry point. This is a special routine
-and the GNU Compiler Suite treats it as such. The GNU C Compiler
-recognizes @code{main()} and automatically inserts a call to the
-compiler run-time support routine @code{__main()} as the first
-code executed in @code{main()}.
-
-The routine @code{__main()} initializes the compiler's basic run-time
-support library and, most importantly, invokes the C++ global
-constructors.
-
-The precise placement of when @code{main()} is invoked in the
-RTEMS initialization sequence insures that C Library and non-blocking
-calls can be made in global C++ constructors.
-
-The shared implementation of this routine is located in the following file:
-
-@example
-c/src/lib/libbsp/shared/main.c
-@end example
-
-In addition to the implicit invocation of @code{__main}, this
-routine performs some explitit initialization. This routine
-sets the variable @code{rtems_progname} and initiates
-multitasking via a call to the RTEMS directive
-@code{rtems_initialize_executive_late}. It is important to note
-that the executive does not return to this routine until the
-RTEMS directive @code{rtems_shutdown_executive} is invoked.
-
-@subsection RTEMS Pretasking Callback
-
-The @code{pretasking_hook} entry in the RTEMS CPU Configuration
-Table may be the address of a user provided routine that is
-invoked once RTEMS initialization is complete but before interrupts
-and tasking are enabled. No tasks -- not even the IDLE task -- have
-been created when this hook is invoked. The pretasking hook is optional.
-
-Although optional, most of the RTEMS BSPs provide a pretasking hook
-callback. This routine is usually called @code{bsp_pretasking_hook}
-and is found in the file:
-
-@example
-c/src/lib/libbsp/CPU/BSP/startup/bspstart.c
-@end example
-
-The @code{bsp_pretasking_hook()} routine is the appropriate place to
-initialize any support components which depend on the RTEMS APIs.
-Most BSPs initialize the RTEMS C Library support in their
-implementation of @code{bsp_pretasking_hook()}. This initialization
-includes the application heap as well as the reentrancy support
-for the C Library.
-
-@subsection RTEMS Predriver Callback
-
-XXX is the address of the user provided
-routine which is invoked with tasking enabled immediately before
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-but no device drivers are initialized. This field may be NULL to
-indicate that the hook is not utilized.
-
-@subsection Device Driver Initialization
-
-At this point in the initialization sequence, the initialization
-routines for all of the device drivers specified in the Device
-Driver Table are invoked.
-
-@subsection RTEMS Postdriver Callback
-
-XXX is the address of the user provided
-routine which is invoked with tasking enabled immediately after
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-and the device drivers are initialized. This field may be NULL
-to indicate that the hook is not utilized.
-
-
-@section The Interrupts Vector Table
-
-
-
-After the entry label starts a code section in which some room is
-allocated for the table of interrupts vectors. They are assigned to the
-address of the __uhoh label.
-
-At __uhoh label you can find the default interrupt handler routine. This
-routine is only called when an unexpected interrupts is raised. You can
-add your own routine there (in that case there's a call to a routine -
-$BSP_ROOT/startup/dumpanic.c - that pri nts which address caused the
-interrupt and the contents of the registers, stack...), but this should
-not return.
-
-@section Chip Select Initialization
-
-When the microprocessor accesses a memory area, address decoding is
-handled by an address decoder (!), so that the microprocessor knows which
-memory chip to access.
-
-Figure 4 : address decoding
-
-You have to program your Chip Select registers in order that they match
-the linkcmds settings. In this BSP ROM and RAM addresses can be found in
-both the linkcmds and initialization code, but this is not a great way to
-do, better use some shared variables .
-
-@section Integrated processor registers initialization
-
-There are always some specific integrated processor registers
-initialization to do. Integrated processors' user manuals often detail
-them.
-
-@section Data section recopy
-
-The next initialization part can be found in
-$BSP340_ROOT/start340/init68340.c. First the Interrupt Vector Table is
-copied into RAM, then the data section recopy is initiated
-(_CopyDataClearBSSAndStart in $BSP340_ROOT/start340/startfor340only.s).
-
-This code performs the following actions:
-
-@itemize @bullet
-
-@item copies the .data section from ROM to its location reserved in RAM
-(see 5.2 for more details about this copy),
-
-@item clear .bss section (all the non-initialized data will take value 0).
-
-@end itemize
-
-Then control is passed to the RTEMS-specific initialization code.
-
-@section RTEMS-Specific Initialization
-
-@section The RTEMS configuration table
-
-The RTEMS configuration table contains the maximum number of objects RTEMS
-can handle during the application (e.g. maximum number of tasks,
-semaphores, etc.). It's used to allocate the size for the RTEMS inner data
-structures.
-
-The RTEMS configuration table is application dependant, which means that
-one has to provide one per application. It's usually an header file
-included in the main module of the application.
-
-The BSP_Configuration label points on this table.
-
-For more information on the RTEMS configuration table, refer to C user's
-guide, chapter 23 <insert a link here>.
-
-@section RTEMS initialization procedure
-
-The RTEMS initialization procedure is described in the 3rd chapter of the
-C user's manual <insert a link here>. Please read it carefully.
-
-There are a few BSP specific functions called from the initialization
-manager. They can be found in the startup directory of the BSP.
-
-@table @b
-
-@item bspstart.c
-
-It starts the application. It includes application, board, and monitor
-specific initialization and configuration.
-
-@item bspstart.c
-
-@table @b
-@item bsp_pretasking_hook
-
-It starts libc support (needed to allocate some memory using C primitive
-malloc for example). Heap size must be passed in argument, this is the one
-which is defined in the linkcmds (cf. 5.)
-
-
-@end table
-
-@item bspclean.c
-
-@table @b
-
-@item bsp_cleanup
-
-Return control to the monitor.
-
-@end table
-
-@end table
-
-@section Drivers initialization
-
-The Driver Address Table is part of the RTEMS configuration table. It
-defines RTEMS drivers entry points (initialization, open, close, read,
-write, and control). For more information about this table, check C User's
-manual chapter 21 section 6 <insert a l ink here>.
-
-The RTEMS initialization procedure calls the initialization function for
-every driver defined in the RTEMS Configuration Table (this permits to add
-only the drivers needed by the application).
-
-All these primitives have a major and a minor number as arguments:
-
-@itemize @bullet
-
-@item the major number refers to the driver type,
-
-@item the minor number is used to control two peripherals with the same
-driver (for instance, we define only one major number for the serial
-driver, but two minor numbers for channel A and B if there are two
-channels in the UART).
-
-@end itemize
-
diff --git a/doc/bsp_howto/intro.t b/doc/bsp_howto/intro.t
deleted file mode 100644
index a7ab4a0a10..0000000000
--- a/doc/bsp_howto/intro.t
+++ /dev/null
@@ -1,57 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Introduction
-
-Before reading this documentation, it is strongly advised to read the
-RTEMS Development Environment Guide to get acquainted with the RTEMS
-directory structure. This document describes how to do a RTEMS Board
-Support Package, i.e. how to port RTEMS on a new target board. Discussions
-are provided for the following topics:
-
-@itemize @bullet
-
-@item RTEMS Board Support Package Organization
-
-@item Makefiles and the Linker Command Script
-
-@item Board Initialization Sequence
-
-@item Device Drivers Including:
-
-@itemize @bullet
-
-@item Console Driver
-
-@item Clock Driver
-
-@item Timer Driver
-
-@item Real-Time Clock Driver
-
-@item Non-Volatile Memory Driver
-
-@item Networking Driver
-
-@item Shared Memory Support Driver
-
-@item Analog Driver
-
-@item Discrete Driver
-
-@end itemize
-
-@end itemize
-
-The original version of this manual was written by Geoffroy Montel
-<g_montel@@yahoo.com>. When he started development of the gen68340
-BSP, this manual did not exist. He wrote the initial version of
-this manual as the result of his experiences. At that time, this
-document was viewed internally as the most important "missing manual"
-in the RTEMS documentation set.
-
diff --git a/doc/bsp_howto/linkcmds.t b/doc/bsp_howto/linkcmds.t
deleted file mode 100644
index 3bfb28b4be..0000000000
--- a/doc/bsp_howto/linkcmds.t
+++ /dev/null
@@ -1,422 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Linker Script
-
-@section What is a "linkcmds" file?
-
-The @code{linkcmds} file is a script which is passed to the linker at linking
-time. This file describes the memory configuration of the board as needed
-to link the program. Specifically it specifies where the code and data
-for the application will reside in memory.
-
-@section Program Sections
-
-An embedded systems programmer must be much more aware of the
-placement of their executable image in memory than the average
-"normal" programmer. A program destined to be embedded as well
-as the target system have some specific properties that must be
-taken into account. Embedded machines often mean average performances
-and small memory usage. It is the memory usage that concerns us
-when examining the linker command file.
-
-Two types of memories have to be distinguished:
-
-@itemize @bullet
-@item RAM - volatile offering read and write access
-@item ROM - non-volatile but read only
-@end itemize
-
-Even though RAM and ROM can be found in every personal computer,
-one generally doesn't care about them. In a personal computer,
-a program is nearly always stored on disk and executed in RAM. Things
-are a bit different for embedded targets: the target will execute the
-program each time it is rebooted or switched on. The application
-program is stored in non-volatile memory such as ROM, PROM, EEPROM,
-or Flash. On the other hand, data processing occurs in RAM.
-
-This leads us to the structure of an embedded program. In rough terms,
-an embedded program is made of sections. It is the responsibility of
-the application programmer to place these sections in the appropriate
-place in target memory. To make this clearer, if using COFF on the
-Motorola m68k family of microprocessors, the following sections will
-be present:
-
-@itemize @bullet
-
-@item @b{code (@code{.text}) section}:
-is the program's code and it should not be modified.
-This section may be placed in ROM.
-
-@item @b{non-initialized data (@code{.bss}) section}:
-holds uninitialized variables of the program. It can stay in RAM.
-
-@item @b{initialized data (@code{.data}) section}:
-holds the initialized program data which may be modified during the
-program's life. This means they have to be in RAM.
-On the other hand, these variables must be set to predefined values, and
-those predefined values have to be stored in ROM.
-
-@end itemize
-
-@b{NOTE:} Many programs and support libraries unknowingly assume that the
-@code{.bss} section and, possibly, the application heap are initialized
-to zero at program start. This is not required by the ISO/ANSI C Standard
-but is such a common requirement that most BSPs do this.
-
-That brings us up to the notion of the image of an executable: it consists
-of the set of the sections that together constitute the application.
-
-@section Image of an Executable
-
-As a program executable has many sections (note that the user can define
-their own, and that compilers define theirs without any notice), one has to
-specify the placement of each section as well as the type of memory
-(RAM or ROM) the sections will be placed into.
-For instance, a program compiled for a Personal Computer will see all the
-sections to go to RAM, while a program destined to be embedded will see
-some of his sections going into the ROM.
-
-The connection between a section and where that section is loaded into
-memory is made at link time. One has to let the linker know where
-the different sections are to be placed once they are in memory.
-
-The following example shows a simple layout of program sections. With
-some object formats, there are many more sections but the basic
-layout is conceptually similar.
-
-@example
-@group
- +-----------------+
- | .text | RAM or ROM
- +-----------------+
- | .data | RAM
- +-----------------+
- | .bss | RAM
- +-----------------+
-@end group
-@end example
-
-@section Example Linker Command Script
-
-The GNU linker has a command language to specify the image format. This
-command language can be quite complicated but most of what is required
-can be learned by careful examination of a well-documented example.
-The following is a heavily commented version of the linker script
-used with the the @code{gen68340} BSP This file can be found at
-$BSP340_ROOT/startup/linkcmds.
-
-@example
-/*
- * Specify that the output is to be coff-m68k regardless of what the
- * native object format is.
- */
-
-OUTPUT_FORMAT(coff-m68k)
-
-/*
- * Set the amount of RAM on the target board.
- *
- * NOTE: The default may be overridden by passing an argument to ld.
- */
-
-RamSize = DEFINED(RamSize) ? RamSize : 4M;
-
-/*
- * Set the amount of RAM to be used for the application heap. Objects
- * allocated using malloc() come from this area. Having a tight heap size
- * is somewhat difficult and multiple attempts to squeeze it may be needed
- * reducing memory usage is important. If all objects are allocated from
- * the heap at system initialization time, this eases the sizing of the
- * application heap.
- *
- * NOTE 1: The default may be overridden by passing an argument to ld.
- *
- * NOTE 2: The TCP/IP stack requires additional memory in the Heap.
- *
- * NOTE 3: The GNAT/RTEMS run-time requires additional memory in the Heap.
- */
-
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
-
-/*
- * Set the size of the starting stack used during BSP initialization
- * until first task switch. After that point, task stacks allocated
- * by RTEMS are used.
- *
- * NOTE: The default may be overridden by passing an argument to ld.
- */
-
-StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
-
-/*
- * Starting addresses and length of RAM and ROM.
- *
- * The addresses must be valid addresses on the board. The Chip Selects
- * should be initialized such that the code addresses are valid.
- */
-
-MEMORY @{
- ram : ORIGIN = 0x10000000, LENGTH = 4M
- rom : ORIGIN = 0x01000000, LENGTH = 4M
-@}
-
-/*
- * This is for the network driver. See the Networking documentation
- * for more details.
- */
-
-ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
-
-/*
- * The following defines the order in which the sections should go.
- * It also defines a number of variables which can be used by the
- * application program.
- *
- * NOTE: Each variable appears with 1 or 2 leading underscores to insure
- * that the variable is accessible from C code with a single
- * underscore. Some object formats automatically add a leading
- * underscore to all C global symbols.
- */
-
-SECTIONS @{
-
- /*
- * Make the RomBase variable available to the application.
- */
-
- _RamSize = RamSize;
- __RamSize = RamSize;
-
- /*
- * Boot PROM - Set the RomBase variable to the start of the ROM.
- */
-
- rom : @{
- _RomBase = .;
- __RomBase = .;
- @} >rom
-
- /*
- * Dynamic RAM - set the RamBase variable to the start of the RAM.
- */
-
- ram : @{
- _RamBase = .;
- __RamBase = .;
- @} >ram
-
- /*
- * Text (code) goes into ROM
- */
-
- .text : @{
- /*
- * Create a symbol for each object (.o).
- */
-
- CREATE_OBJECT_SYMBOLS
-
- /*
- * Put all the object files code sections here.
- */
-
- *(.text)
-
- . = ALIGN (16); /* go to a 16-byte boundary */
-
- /*
- * C++ constructors and destructors
- *
- * NOTE: See the CROSSGCC mailing-list FAQ for
- * more details about the "[......]".
- */
-
- __CTOR_LIST__ = .;
- [......]
- __DTOR_END__ = .;
-
- /*
- * Declares where the .text section ends.
- */
-
- etext = .;
- _etext = .;
- @} >rom
-
- /*
- * Exception Handler Frame section
- */
-
- .eh_fram : @{
- . = ALIGN (16);
- *(.eh_fram)
- @} >ram
-
- /*
- * GCC Exception section
- */
-
- .gcc_exc : @{
- . = ALIGN (16);
- *(.gcc_exc)
- @} >ram
-
- /*
- * Special variable to let application get to the dual-ported
- * memory.
- */
-
- dpram : @{
- m340 = .;
- _m340 = .;
- . += (8 * 1024);
- @} >ram
-
- /*
- * Initialized Data section goes in RAM
- */
-
- .data : @{
- copy_start = .;
- *(.data)
-
- . = ALIGN (16);
- _edata = .;
- copy_end = .;
- @} >ram
-
- /*
- * Uninitialized Data section goes in ROM
- */
-
- .bss : @{
- /*
- * M68K specific: Reserve some room for the Vector Table
- * (256 vectors of 4 bytes).
- */
-
- M68Kvec = .;
- _M68Kvec = .;
- . += (256 * 4);
-
- /*
- * Start of memory to zero out at initialization time.
- */
-
- clear_start = .;
-
- /*
- * Put all the object files uninitialized data sections
- * here.
- */
-
- *(.bss)
-
- *(COMMON)
-
- . = ALIGN (16);
- _end = .;
-
- /*
- * Start of the Application Heap
- */
-
- _HeapStart = .;
- __HeapStart = .;
- . += HeapSize;
-
- /*
- * The Starting Stack goes after the Application Heap.
- * M68K stack grows down so start at high address.
- */
-
- . += StackSize;
- . = ALIGN (16);
- stack_init = .;
-
- clear_end = .;
-
- /*
- * The RTEMS Executive Workspace goes here. RTEMS
- * allocates tasks, stacks, semaphores, etc. from this
- * memory.
- */
-
- _WorkspaceBase = .;
- __WorkspaceBase = .;
- @} >ram
-@}
-@end example
-
-@section Initialized Data
-
-Now there's a problem with the initialized data: the @code{.data} section
-has to be in RAM as this data may be modified during the program execution.
-But how will the values be initialized at boot time?
-
-One approach is to place the entire program image in RAM and reload
-the image in its entirety each time the program is run. This is fine
-for use in a debug environment where a high-speed connection is available
-between the development host computer and the target. But even in this
-environment, it is cumbersome.
-
-The solution is to place a copy of the initialized data in a separate
-area of memory and copy it into the proper location each time the
-program is started. It is common practice to place a copy of the initialized
-@code{.data} section at the end of the code (@code{.text}) section
-in ROM when building a PROM image. The GNU tool @code{objcopy}
-can be used for this purpose.
-
-The following figure illustrates the steps a linked program goes through
-to become a downloadable image.
-
-@example
-@group
-+--------------+ +--------------------+
-| .data RAM | | .data RAM |
-+--------------+ +--------------------+
-| .bss RAM | | .bss RAM |
-+--------------+ +--------------------+ +----------------+
-| .text ROM | | .text ROM | | .text |
-+--------------+ +--------------------+ +----------------+
- | copy of .data ROM | | copy of .data |
- +--------------------+ +----------------+
-
- Step 1 Step 2 Step 3
-@end group
-@end example
-
-In Step 1, the program is linked together using the BSP linker script.
-
-In Step 2, a copy is made of the @code{.data} section and placed
-after the @code{.text} section so it can be placed in PROM. This step
-is done after the linking time. There is an example
-of doing this in the file $RTEMS_ROOT/make/custom/gen68340.cfg:
-
-@example
-# make a PROM image using objcopy
-m68k-rtems-objcopy \
---adjust-section-vma .data= \
-
-`m68k-rtems-objdump --section-headers \
-$(basename $@@).exe \
-| awk '[...]` \
-$(basename $@@).exe
-@end example
-
-NOTE: The address of the "copy of @code{.data} section" is
-created by extracting the last address in the @code{.text}
-section with an @code{awk} script. The details of how
-this is done are not relevant.
-
-Step 3 shows the final executable image as it logically appears in
-the target's non-volatile program memory. The board initialization
-code will copy the initialized data initial values (which are stored in
-ROM) to their reserved location in RAM.
-
diff --git a/doc/bsp_howto/makefiles.t b/doc/bsp_howto/makefiles.t
deleted file mode 100644
index cf815f10a1..0000000000
--- a/doc/bsp_howto/makefiles.t
+++ /dev/null
@@ -1,208 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Makefiles
-
-@section Makefiles Used During The BSP Building Process
-
-There is a file named @code{Makefile.in} in each directory of a BSP.
-RTEMS uses the @b{GNU autoconf} automatic configuration package.
-This tool specializes the @code{Makefile.in} files at the time that RTEMS
-is configured for a specific development host and target. Makefiles
-are automatically generated from the @code{Makefile.in} files. It is
-necessary for the BSP developer to provide these files. Most of the
-time, it is possible to copy the @code{Makefile.in} from another
-similar directory and edit it.
-
-The @code{Makefile} files generated are processed when building
-RTEMS for a given BSP.
-
-The BSP developer is responsible for generating @code{Makefile.in}
-files which properly build all the files associated with their BSP.
-There are generally three types of Makefiles in a BSP source tree:
-
-
-@itemize @bullet
-@item Directory Makefiles
-@item Source Directory Makefiles
-@item Wrapup Makefile
-@end itemize
-
-@subsection Directory Makefiles
-
-The Directory class of Makefiles directs the build process through
-a set of subdirectories in a particular order. This order is usually
-chosen to insure that build dependencies are properly processed.
-Most BSPs only have one Directory class Makefile. The @code{Makefile.in}
-in the BSP root directory (@code{c/src/lib/libbsp/CPU/BSP}) specifies
-which directories are to be built for this BSP. For example, the
-following Makefile fragment shows how a BSP would only build the
-networking device driver if HAS_NETWORKING was defined:
-
-@example
-NETWORKING_DRIVER_yes_V = network
-NETWORKING_DRIVER = $(NETWORKING_DRIVER_$(HAS_NETWORKING)_V)
-
-[...]
-
-SUB_DIRS=include start340 startup clock console timer \
- $(NETWORKING_DRIVER) wrapup
-@end example
-
-This fragment states that all the directories have to be processed,
-except for the @code{network} directory which is included only if the
-user configured networking.
-
-@subsection Source Directory Makefiles
-
-There is a @code{Makefile.in} in most of the directories in a BSP. This
-class of Makefile lists the files to be built as part of the driver.
-When adding new files to an existing directory, Do not forget to add
-the new files to the list of files to be built in the @code{Makefile.in}.
-
-@b{NOTE:} The @code{Makefile.in} files are ONLY processed during the configure
-process of a RTEMS build. Therefore, when developing
-a BSP and adding a new file to a @code{Makefile.in}, the
-already generated @code{Makefile} will not include the new references.
-This results in the new file not being be taken into account!
-The @code{configure} script must be run again or the @code{Makefile}
-(the result of the configure process) modified by hand. This file will
-be in a directory such as the following:
-
-@example
-MY_BUILD_DIR/c/src/lib/libbsp/CPU/BSP/DRIVER
-@end example
-
-@subsection Wrapup Makefile
-
-This class of Makefiles produces a library. The BSP wrapup Makefile
-is responsible for producing the library @code{libbsp.a} which is later
-merged into the @code{librtemsall.a} library. This Makefile specifies
-which BSP components are to be placed into the library as well as which
-components from the CPU dependent support code library. For example,
-this component may choose to use a default exception handler from the
-CPU dependent support code or provide its own.
-
-This Makefile makes use of a neat construct in @b{GNU make} to pick
-up the required components:
-
-@example
-BSP_PIECES=startup clock console timer
-CPU_PIECES=
-GENERIC_PIECES=
-
-# bummer; have to use $foreach since % pattern subst rules only replace 1x
-OBJS=$(foreach piece, $(BSP_PIECES), ../$(piece)/$(ARCH)/$(piece).rel) \
- $(foreach piece, $(CPU_PIECES), \
- ../../../../libcpu/$(RTEMS_CPU)/$(piece)/$(ARCH)/$(piece).rel) \
- $(wildcard \
- ../../../../libcpu/$(RTEMS_CPU)/$(RTEMS_CPU_MODEL)/fpsp/$(ARCH)/fpsp.rel) \
- $(foreach piece, $(GENERIC_PIECES), ../../../$(piece)/$(ARCH)/$(piece).rel)
-@end example
-
-The variable @code{OBJS} is the list of "pieces" expanded to include
-path information to the appropriate object files. The @code{wildcard}
-function is used on pieces of @code{libbsp.a} which are optional and
-may not be present based upon the configuration options.
-
-@section Makefiles Used Both During The BSP Design and its Use
-
-When building a BSP or an application using that BSP, it is necessary
-to tailor the compilation arguments to account for compiler flags, use
-custom linker scripts, include the RTEMS libraries, etc.. The BSP
-must be built using this information. Later, once the BSP is installed
-with the toolset, this same information must be used when building the
-application. So a BSP must include a build configuration file. The
-configuration file is @code{make/custom/BSP.cfg}.
-
-The configuration file is taken into account when building one's
-application using the RTEMS template Makefiles (@code{make/templates}).
-It is strongly advised to use these template Makefiles since they
-encapsulate a number of build rules along with the compile and link
-time options necessary to execute on the target board.
-
-There is a template Makefile provided for each of class of RTEMS
-Makefiles. The purpose of each class of RTEMS Makefile is to:
-
-@itemize @bullet
-@item call recursively the makefiles in the directories beneath
-the current one,
-
-@item build a library, or
-
-@item build an executable.
-
-@end itemize
-
-The following is a shortened and heavily commented version of the
-make customization file for the gen68340 BSP. The original source
-for this file can be found in the @code{make/custom} directory.
-
-@example
-
-# The RTEMS CPU Family and Model
-RTEMS_CPU=m68k
-RTEMS_CPU_MODEL=mcpu32
-
-include $(RTEMS_ROOT)/make/custom/default.cfg
-
-# The name of the BSP directory used for the actual source code.
-# This allows for build variants of the same BSP source.
-RTEMS_BSP_FAMILY=gen68340
-
-# CPU flag to pass to GCC
-CPU_CFLAGS = -mcpu32
-
-# optimization flag to pass to GCC
-CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
-
-# The name of the start file to be linked with. This file is the first
-# part of the BSP which executes.
-START_BASE=start340
-
-[...]
-
-# This make-exe macro is used in template makefiles to build the
-# final executable. Any other commands to follow, just as using
-# objcopy to build a PROM image or converting the executable to binary.
-
-ifeq ($(RTEMS_USE_GCC272),yes)
-# This has rules to link an application if an older version of GCC is
-# to be used with this BSP. It is not required for a BSP to support
-# older versions of GCC. This option is supported in some of the
-# BSPs which already had this support.
-[...]
-else
-# This has rules to link an application using gcc 2.8 or newer or any
-# egcs version. All BSPs should support this. This version is required
-# to support GNAT/RTEMS.
-define make-exe
- $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@@).exe $(LINK_OBJS)
- $(NM) -g -n $(basename $@@).exe > $(basename $@@).num
- $(SIZE) $(basename $@@).exe
-endif
-@end example
-
-@subsection Creating a New BSP Make Customization File
-
-The basic steps for creating a @code{make/custom} file for a new BSP
-are as follows:
-
-@itemize @bullet
-
-@item copy any @code{.cfg} file to @code{BSP.cfg}
-
-@item modify RTEMS_CPU, RTEMS_CPU_MODEL, RTEMS_BSP_FAMILY,
-RTEMS_BSP, CPU_CFLAGS, START_BASE, and make-exe rules.
-
-@end itemize
-
-It is generally easier to copy a @code{make/custom} file from a
-BSP similar to the one being developed.
-
-
diff --git a/doc/bsp_howto/network.t b/doc/bsp_howto/network.t
deleted file mode 100644
index 2721898ab1..0000000000
--- a/doc/bsp_howto/network.t
+++ /dev/null
@@ -1,12 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Networking Driver
-
-XXX FILL ME IN
-
diff --git a/doc/bsp_howto/nvmem.t b/doc/bsp_howto/nvmem.t
deleted file mode 100644
index 070621ddca..0000000000
--- a/doc/bsp_howto/nvmem.t
+++ /dev/null
@@ -1,12 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Non-Volatile Memory Driver
-
-XXX FILL ME IN
-
diff --git a/doc/bsp_howto/rtc.t b/doc/bsp_howto/rtc.t
deleted file mode 100644
index f0e3bccabb..0000000000
--- a/doc/bsp_howto/rtc.t
+++ /dev/null
@@ -1,12 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Real-Time Clock Driver
-
-XXX FILL ME IN
-
diff --git a/doc/bsp_howto/shmsupp.t b/doc/bsp_howto/shmsupp.t
deleted file mode 100644
index 96e0f31ab2..0000000000
--- a/doc/bsp_howto/shmsupp.t
+++ /dev/null
@@ -1,12 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Shared Memory Support Driver
-
-XXX FILL ME IN
-
diff --git a/doc/bsp_howto/support.t b/doc/bsp_howto/support.t
deleted file mode 100644
index 59f0054d7c..0000000000
--- a/doc/bsp_howto/support.t
+++ /dev/null
@@ -1,12 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Required Support Routines
-
-XXX FILL ME IN
-
diff --git a/doc/bsp_howto/target.t b/doc/bsp_howto/target.t
deleted file mode 100644
index a14f7d6a49..0000000000
--- a/doc/bsp_howto/target.t
+++ /dev/null
@@ -1,218 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Target Dependent Files
-
-RTEMS has a multi-layered approach to portability. This is done to
-maximize the amount of software that can be reused. Much of the
-RTEMS source code can be reused on all RTEMS platforms. Other parts
-of the executive are specific to hardware in some sense.
-RTEMS classifies target dependent code based upon its dependencies
-into one of the following categories.
-
-@itemize @bullet
-@item CPU dependent
-@item Board dependent
-@item Peripheral dependent
-@end itemize
-
-@section CPU Dependent
-
-This class of code includes the foundation
-routines for the executive proper such as the context switch and
-the interrupt subroutine implementations. Sources for the supported
-processor families can be found in @code{c/src/exec/score/cpu}.
-A good starting point for a new family of processors is the
-@code{no_cpu} directory, which holds both prototypes and
-descriptions of each needed CPU dependent function.
-
-CPU dependent code is further subcategorized if the implementation is
-dependent on a particular CPU model. For example, the MC68000 and MC68020
-processors are both members of the m68k CPU family but there are significant
-differents between these CPU models which RTEMS must take into account.
-
-@section Board Dependent
-
-This class of code provides the most specific glue between RTEMS and
-a particular board. This code is represented by the Board Support Packages
-and associated Device Drivers. Sources for the BSPs included in the
-RTEMS distribution are located in the directory @code{c/src/lib/libbsp}.
-The BSP source directory is further subdivided based on the CPU family
-and BSP.
-
-Some BSPs may support multiple board models within a single board family.
-This is necessary when the board supports multiple variants on a
-single base board. For example, the Motorola MVME162 board family has a
-fairly large number of variations based upon the particular CPU model
-and the peripherals actually placed on the board.
-
-@section Peripheral Dependent
-
-This class of code provides a reusable library of peripheral device
-drivers which can be tailored easily to a particular board. This
-reusable library provides software objects which correspond to standard
-controllers. Just as the hardware engineer choose a standard controller
-when designing a board, the goal of this library is to let the software
-engineer do the same thing.
-
-The source code for the reusable peripheral driver library may be found
-in the directory @code{c/src/lib/libchip}. The source code is further
-divided based upon the class of hardware. Example classes include serial
-communications controllers, real-time clocks, non-volatile memory, and
-network controllers.
-
-@section Questions to Ask
-
-When evaluating what is required to support RTEMS applications on
-a particular target board, the following questions should be asked:
-
-@itemize @bullet
-
-@item Does a BSP for this board exist?
-
-@item Does a BSP for a similar board exists?
-
-@item Is the board's CPU supported?
-
-@end itemize
-
-If there is already a BSP for the board, then things may already be ready
-to start developing application software. All that remains is to verify
-that the existing BSP provides device drivers for all the peripherals
-on the board that the application will be using. For example, the application
-in question may require that the board's Ethernet controller be used and
-the existing BSP may not support this.
-
-If the BSP does not exist and the board's CPU model is supported, then
-examine the reusable chip library and existing BSPs for a close match.
-This will help reduce the development effort required. It is often
-possible to copy existing components in the reusable chip library or
-device drivers from BSPs from different CPU families as the starting
-point for a new device driver.
-
-If the board's CPU family is supported but the particular CPU model on
-that board is not, then the RTEMS port to that CPU family will have to
-be augmented. After this is done, development of the new BSP can proceed.
-
-Otherwise both CPU dependent code and the BSP will have to be written.
-
-Regardless of the amount of development required, OAR Corporation
-offers custom development services to assist RTEMS users.
-For more information on custom development, training courses, and
-support, contact OAR Corporation at
-@ifset use-html
-@href{http://www.oarcorp.com,,,http://www.oarcorp.com}.
-@end ifset
-@ifclear use-html
-http://www.oarcorp.com.
-@end ifclear
-
-
-@section CPU Dependent Executive Files
-
-The CPU dependent files in the RTEMS executive source code are found
-in the following directory:
-
-@example
-c/src/exec/score/cpu/@i{CPU}
-@end example
-
-where @i{CPU} is replaced with the CPU family name.
-
-Within each CPU dependent directory inside the executive proper is a
-file named @code{@i{CPU}.h} which contains information about each of the
-supported CPU models within that family.
-
-@section CPU Dependent Support Files
-
-The CPU dependent support files contain routines which aid in the development
-of applications using that CPU family. For example, the support routines
-may contain standard trap handlers for alignment or floating point exceptions
-or device drivers for peripheral controllers found on the CPU itself.
-This class of code may be found in the following directory:
-
-@example
-c/src/lib/libcpu/@i{CPU}
-@end example
-
-CPU model dependent support code is found in the following directory:
-
-@example
-c/src/lib/libcpu/@i{CPU}/@i{CPU_MODEL}
-@end example
-
-@section Board Support Package Structure
-
-The BSPs are all under the c/src/lib/libbsp directory. Below this
-directory, there is a subdirectory for each CPU family. Each BSP
-is found under the subdirectory for the appropriate processor
-family (m68k, powerpc, etc.). In addition, there is source code
-available which may be shared across all BSPs regardless of
-the CPU family or just across BSPs within a single CPU family. This
-results in a BSP using the following directories:
-
-@example
-c/src/lib/libbsp/shared
-c/src/lib/libbsp/@i{CPU}/shared
-c/src/lib/libbsp/@i{CPU}/@i{BSP}
-@end example
-
-Under each BSP specific directory, there is a collection of
-subdirectories. For commonly provided functionality, the BSPs
-follow a convention on subdirectory naming. The following list
-describes the commonly found subdirectories under each BSP.
-
-@itemize @bullet
-
-@item @b{console}:
-is technically the serial driver for the BSP rather
-than just a console driver, it deals with the board
-UARTs (i.e. serial devices).
-
-@item @b{clock}:
-support for the clock tick -- a regular time basis to the kernel.
-
-@item @b{timer}:
-support of timer devices.
-
-@item @b{rtc}:
-support for the hardware real-time clock.
-
-@item @b{nvmem}:
-support for non-volatile memory such as EEPROM or Flash.
-
-@item @b{network}:
-the Ethernet driver.
-
-@item @b{shmsupp}:
-support of shared memory driver MPCI layer in a multiprocessor system,
-
-@item @b{include}:
-include files for this BSP.
-
-@item @b{wrapup}:
-bundles all the components necessary to construct the BSP library.
-
-@end itemize
-
-The build order of the BSP is determined by the Makefile structure.
-This structure is discussed in more detail in the @ref{Makefiles}
-chapter.
-
-@b{NOTE:} This manual refers to the gen68340 BSP for numerous concrete
-examples. You should have a copy of the gen68340 BSP available while
-reading this piece of documentation. This BSP is located in the
-following directory:
-
-@example
-c/src/lib/libbsp/m68k/gen68340
-@end example
-
-Later in this document, the $BSP340_ROOT label will be used
-to refer to this directory.
-
diff --git a/doc/bsp_howto/timer.t b/doc/bsp_howto/timer.t
deleted file mode 100644
index d2d5629682..0000000000
--- a/doc/bsp_howto/timer.t
+++ /dev/null
@@ -1,74 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Timer Driver
-
-You can program the timer driver for your own needs, but here are two uses
-of it:
-
-@section UART'S FIFO Full Mode
-
-The gen68340 BSP is an example of the use of the timer to support the UART
-input FIFO full mode (FIFO means First In First Out and roughly means
-buffer). This mode consists in the UART raising an interrupt when n
-characters have been received (n is the UA RT's FIFO length). It results
-in a lower interrupt processing time, but the problem is that a scanf
-primitive will block on a receipt of less than n characters. The solution
-is to set a timer that will check whether there are some characters
-waiting in th e UART's input FIFO. The delay time has to be set carefully
-otherwise high rates will be broken:
-
-@itemize @bullet
-
-@item if no character was received last time the interrupt subroutine was
-entered, set a long delay,
-
-@item otherwise set the delay to the delay needed for n characters
-receipt.
-
-@end itemize
-
-@section Measuring RTEMS Primitives Time
-
-RTEMS Timing Test Suite needs a timer support. You have to provide two
-primitives:
-
-
-
-Function
-
-Description
-
-@example
-void Timer_initialize (void)
-@end example
-
-Initialize the timer to be a counter to the microsecond.
-
-@example
-int Read_timer (void)
-@end example
-
-Returns the number of microseconds elapsed since the last call to
-Timer_initialize.
-
-@example
-rtems_status_code Empty_function (void)
-
-return RTEMS_SUCCESSFUL;
-@end example
-
-@example
-void Set_find_average_overhead (rtems_boolean find_flag)
-@end example
-
-DOES NOTHING ??????????
-
-
-
-
diff --git a/doc/common/cpright.texi b/doc/common/cpright.texi
deleted file mode 100644
index 12b698ee7b..0000000000
--- a/doc/common/cpright.texi
+++ /dev/null
@@ -1,45 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c The following puts a space somewhere on an otherwise empty page so we
-@c can force the copyright description onto a left hand page.
-@c
-
-@tex
-{\parskip=0pt \hfill On-Line Applications Research Corporation\par \hfill
-\TeX{}info \texinfoversion\par }
-@end tex
-
-@vskip 0pt plus 1filll
-COPYRIGHT @copyright{} 1988 - 1998.@*
-On-Line Applications Research Corporation (OAR).@*
-
-The authors have used their best efforts in preparing
-this material. These efforts include the development, research,
-and testing of the theories and programs to determine their
-effectiveness. No warranty of any kind, expressed or implied,
-with regard to the software or the material contained in this
-document is provided. No liability arising out of the
-application or use of any product described in this document is
-assumed. The authors reserve the right to revise this material
-and to make changes from time to time in the content hereof
-without obligation to notify anyone of such revision or changes.
-
-Any inquiries concerning RTEMS, its related support
-components, or its documentation should be directed to either:
-
-@example
-On-Line Applications Research Corporation
-4910-L Corporate Drive
-Huntsville, AL 35805
-VOICE: (256) 722-9985
-FAX: (256) 722-0985
-EMAIL: rtems@@OARcorp.com
-@end example
-
diff --git a/doc/common/oaronly.jpg b/doc/common/oaronly.jpg
deleted file mode 100644
index c87c151404..0000000000
--- a/doc/common/oaronly.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/common/setup.texi b/doc/common/setup.texi
deleted file mode 100644
index 8578a86ece..0000000000
--- a/doc/common/setup.texi
+++ /dev/null
@@ -1,75 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Set Variables
-@c
-
-@set RTEMS-RELEASE 4.0.0
-@set RTEMS-EDITION 4.0.0
-@set RTEMS-VERSION 4.0.0
-@set RTEMS-UPDATE-DATE October 27 1998
-@set RTEMS-UPDATE-MONTH October 1998
-
-@c
-@c The following determines which set of the tables and figures we will use.
-@c We default to ASCII but if available TeX or HTML versions will
-@c be used instead.
-@c
-
-@set use-ascii
-@clear use-html
-@clear use-tex
-
-@iftex
-@clear use-ascii
-@clear use-html
-@set use-tex
-@end iftex
-
-@ifhtml
-@clear use-ascii
-@clear use-tex
-@set use-html
-@end ifhtml
-
-@c
-@c The following variable says to use texinfo or html for the two column
-@c texinfo tables. For somethings the format does not look good in html.
-@c With our adjustment to the left column in TeX, it nearly always looks
-@c good printed.
-@c
-@ifset use-ascii
-@set use-texinfo-tables
-@end ifset
-@ifset use-tex
-@set use-texinfo-tables
-@end ifset
-@ifset use-html
-@clear use-texinfo-tables
-@end ifset
-
-@c
-@c Custom whitespace adjustments. We could fiddle a bit more.
-@c
-@tex
-\global\parindent 0in
-\global\chapheadingskip = 15pt plus 4pt minus 2pt
-\global\secheadingskip = 12pt plus 4pt minus 2pt
-\global\subsecheadingskip = 9pt plus 4pt minus 2pt
-\global\hbadness = 10000
-\global\tolerance = 6000
-\global\tableindent = 1.5in
-\global\itemindent = 0.5in
-
-@ifclear smallbook
-\global\parskip 6pt plus 1pt
-@end ifclear
-@end tex
-
-
diff --git a/doc/common/timemac.texi b/doc/common/timemac.texi
deleted file mode 100644
index 25a0b27e9a..0000000000
--- a/doc/common/timemac.texi
+++ /dev/null
@@ -1,36 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-@c
-@c Macros to help with the tables in this file
-@c
-
-@tex
-\global\advance \smallskipamount by -4pt
-
-\global\def\rtemstimetable{
-\vrule\strut##&
-\hbox to 3.0in{\enskip##\hfil}&
-\hbox to 0.75in{\enskip##\hfil}&
-\vrule##\cr
-\noalign{\hrule}
-}
-
-\global\def\rtemsendtimetable{}
-\global\def\rtemsonecase#1#2{
-& \bf #1\hfil& #2 & \cr\noalign{\hrule}
-}
-
-\global\def\rtemsdirective#1{
-& \bf #1 \hfil& & \cr\noalign{\hrule}
-}
-
-\global\def\rtemscase#1#2{
-& \hskip 0.3in #1\hfil& #2 & \cr\noalign{\hrule}
-}
-
-@end tex
diff --git a/doc/common/timetbl.t b/doc/common/timetbl.t
deleted file mode 100644
index ce91bb79ff..0000000000
--- a/doc/common/timetbl.t
+++ /dev/null
@@ -1,1330 +0,0 @@
-@c ****** This comment is here to remind you not to edit the timetbl.t
-@c ****** in any directory but common.
-@c
-@c Time Table Template
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{No Floating Point Contexts}{RTEMS_NO_FP_CONTEXTS}
-\rtemsdirective{Floating Point Contexts}
-\rtemscase{restore first FP task}{RTEMS_RESTORE_1ST_FP_TASK}
-\rtemscase{save initialized, restore initialized}{RTEMS_SAVE_INIT_RESTORE_INIT}
-\rtemscase{save idle, restore initialized}{RTEMS_SAVE_IDLE_RESTORE_INIT}
-\rtemscase{save idle, restore idle}{RTEMS_SAVE_IDLE_RESTORE_IDLE}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-@item No Floating Point Contexts
-@itemize -
-@item only case: RTEMS_NO_FP_CONTEXTS
-@end itemize
-@item Floating Point Contexts
-@itemize -
-@item restore first FP task: RTEMS_RESTORE_1ST_FP_TASK
-@item save initialized, restore initialized: RTEMS_SAVE_INIT_RESTORE_INIT
-@item save idle, restore initialized: RTEMS_SAVE_IDLE_RESTORE_INIT
-@item save idle, restore idle: RTEMS_SAVE_IDLE_RESTORE_INIT
-@end itemize
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD>
- <TD ALIGN=center>RTEMS_NO_FP_CONTEXTS</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR>
- <TR><TD ALIGN=left><dd>restore first FP task</TD>
- <TD ALIGN=center>RTEMS_RESTORE_1ST_FP_TASK</TD>
- <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD>
- <TD ALIGN=center>RTEMS_SAVE_INIT_RESTORE_INIT</TD>
- <TR><TD ALIGN=left><dd>save idle, restore initialized</TD>
- <TD ALIGN=center>RTEMS_SAVE_IDLE_RESTORE_INIT</TD>
- <TR><TD ALIGN=left><dd>save idle, restore idle</TD>
- <TD ALIGN=center>RTEMS_SAVE_IDLE_RESTORE_IDLE</TD>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Directive Times
-
-This sections is divided into a number of
-subsections, each of which contains a table listing the
-execution times of that manager's directives.
-
-@page
-@section Task Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{TASK\_CREATE}{RTEMS_TASK_CREATE_ONLY}
-\rtemsonecase{TASK\_IDENT}{RTEMS_TASK_IDENT_ONLY}
-\rtemsonecase{TASK\_START}{RTEMS_TASK_START_ONLY}
-\rtemsdirective{TASK\_RESTART}
-\rtemscase{calling task}{RTEMS_TASK_RESTART_CALLING_TASK}
-\rtemscase{suspended task -- returns to caller}
- {RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER}
-\rtemscase{blocked task -- returns to caller}
- {RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER}
-\rtemscase{ready task -- returns to caller}
- {RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER}
-\rtemscase{suspended task -- preempts caller}
- {RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER}
-\rtemscase{blocked task -- preempts caller}
- {RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER}
-\rtemscase{ready task -- preempts caller}
- {RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER}
-\rtemsdirective{TASK\_DELETE}
-\rtemscase{calling task}{RTEMS_TASK_DELETE_CALLING_TASK}
-\rtemscase{suspended task}{RTEMS_TASK_DELETE_SUSPENDED_TASK}
-\rtemscase{blocked task}{RTEMS_TASK_DELETE_BLOCKED_TASK}
-\rtemscase{ready task}{RTEMS_TASK_DELETE_READY_TASK}
-\rtemsdirective{TASK\_SUSPEND}
-\rtemscase{calling task}{RTEMS_TASK_SUSPEND_CALLING_TASK}
-\rtemscase{returns to caller}{RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER}
-\rtemsdirective{TASK\_RESUME}
-\rtemscase{task readied -- returns to caller}
- {RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER}
-\rtemscase{task readied -- preempts caller}
- {RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER}
-\rtemsdirective{TASK\_SET\_PRIORITY}
-\rtemscase{obtain current priority}
- {RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY}
-\rtemscase{returns to caller}{RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER}
-\rtemscase{preempts caller}{RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER}
-\rtemsdirective{TASK\_MODE}
-\rtemscase{obtain current mode}{RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE}
-\rtemscase{no reschedule}{RTEMS_TASK_MODE_NO_RESCHEDULE}
-\rtemscase{reschedule -- returns to caller}
- {RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER}
-\rtemscase{reschedule -- preempts caller}
- {RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER}
-\rtemsonecase{TASK\_GET\_NOTE}{RTEMS_TASK_GET_NOTE_ONLY}
-\rtemsonecase{TASK\_SET\_NOTE}{RTEMS_TASK_SET_NOTE_ONLY}
-\rtemsdirective{TASK\_WAKE\_AFTER}
-\rtemscase{yield -- returns to caller}
- {RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER}
-\rtemscase{yield -- preempts caller}
- {RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER}
-\rtemsonecase{TASK\_WAKE\_WHEN}{RTEMS_TASK_WAKE_WHEN_ONLY}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item TASK_CREATE
-@itemize -
-@item only case: RTEMS_TASK_CREATE_ONLY
-@end itemize
-
-@item TASK_IDENT
-@itemize -
-@item only case: RTEMS_TASK_IDENT_ONLY
-@end itemize
-
-@item TASK_START
-@itemize -
-@item only case: RTEMS_TASK_START_ONLY
-@end itemize
-
-@item TASK_RESTART
-@itemize -
-@item calling task: RTEMS_TASK_RESTART_CALLING_TASK
-@item suspended task -- returns to caller: RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER
-@item blocked task -- returns to caller: RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER
-@item ready task -- returns to caller: RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER
-@item suspended task -- preempts caller: RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER
-@item blocked task -- preempts caller: RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER
-@item ready task -- preempts caller: RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER
-@end itemize
-
-@item TASK_DELETE
-@itemize -
-@item calling task: RTEMS_TASK_DELETE_CALLING_TASK
-@item suspended task: RTEMS_TASK_DELETE_SUSPENDED_TASK
-@item blocked task: RTEMS_TASK_DELETE_BLOCKED_TASK
-@item ready task: RTEMS_TASK_DELETE_READY_TASK
-@end itemize
-
-@item TASK_SUSPEND
-@itemize -
-@item calling task: RTEMS_TASK_SUSPEND_CALLING_TASK
-@item returns to caller: RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER
-@end itemize
-
-@item TASK_RESUME
-@itemize -
-@item task readied -- returns to caller: RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER
-@item task readied -- preempts caller: RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER
-@end itemize
-
-@item TASK_SET_PRIORITY
-@itemize -
-@item obtain current priority: RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY
-@item returns to caller: RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER
-@item preempts caller: RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER
-@end itemize
-
-@item TASK_MODE
-@itemize -
-@item obtain current mode: RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE
-@item no reschedule: RTEMS_TASK_MODE_NO_RESCHEDULE
-@item reschedule -- returns to caller: RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER
-@item reschedule -- preempts caller: RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER
-@end itemize
-
-@item TASK_GET_NOTE
-@itemize -
-@item only case: RTEMS_TASK_GET_NOTE_ONLY
-@end itemize
-
-@item TASK_SET_NOTE
-@itemize -
-@item only case: RTEMS_TASK_SET_NOTE_ONLY
-@end itemize
-
-@item TASK_WAKE_AFTER
-@itemize -
-@item yield -- returns to caller: RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER
-@item yield -- preempts caller: RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER
-@end itemize
-
-@item TASK_WAKE_WHEN
-@itemize -
-@item only case: RTEMS_TASK_WAKE_WHEN_ONLY
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD>
- <TD ALIGN=center>RTEMS_TASK_CREATE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD>
- <TD ALIGN=center>RTEMS_TASK_IDENT_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD>
- <TD ALIGN=center>RTEMS_TASK_START_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>calling task</TD>
- <TD ALIGN=center>RTEMS_TASK_RESTART_CALLING_TASK</TD></TR>
- <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>calling task</TD>
- <TD ALIGN=center>RTEMS_TASK_DELETE_CALLING_TASK</TD></TR>
- <TR><TD ALIGN=left><dd>suspended task</TD>
- <TD ALIGN=center>RTEMS_TASK_DELETE_SUSPENDED_TASK</TD></TR>
- <TR><TD ALIGN=left><dd>blocked task</TD>
- <TD ALIGN=center>RTEMS_TASK_DELETE_BLOCKED_TASK</TD></TR>
- <TR><TD ALIGN=left><dd>ready task</TD>
- <TD ALIGN=center>RTEMS_TASK_DELETE_READY_TASK</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>calling task</TD>
- <TD ALIGN=center>RTEMS_TASK_SUSPEND_CALLING_TASK</TD></TR>
- <TR><TD ALIGN=left><dd>returns to caller</TD>
- <TD ALIGN=center>RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>obtain current priority</TD>
- <TD ALIGN=center>RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY</TD></TR>
- <TR><TD ALIGN=left><dd>returns to caller</TD>
- <TD ALIGN=center>RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>preempts caller</TD>
- <TD ALIGN=center>RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>obtain current mode</TD>
- <TD ALIGN=center>RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE</TD></TR>
- <TR><TD ALIGN=left><dd>no reschedule</TD>
- <TD ALIGN=center>RTEMS_TASK_MODE_NO_RESCHEDULE</TD></TR>
- <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD>
- <TD ALIGN=center>RTEMS_TASK_GET_NOTE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD>
- <TD ALIGN=center>RTEMS_TASK_SET_NOTE_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>yield -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>yield -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD>
- <TD ALIGN=center>RTEMS_TASK_WAKE_WHEN_ONLY</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@page
-@section Interrupt Manager
-
-It should be noted that the interrupt entry times
-include vectoring the interrupt handler.
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsdirective{Interrupt Entry Overhead}
-\rtemscase{returns to nested interrupt}{RTEMS_INTR_ENTRY_RETURNS_TO_NESTED}
-\rtemscase{returns to interrupted task}
- {RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK}
-\rtemscase{returns to preempting task}
- {RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK}
-\rtemsdirective{Interrupt Exit Overhead}
-\rtemscase{returns to nested interrupt}{RTEMS_INTR_EXIT_RETURNS_TO_NESTED}
-\rtemscase{returns to interrupted task}
- {RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK}
-\rtemscase{returns to preempting task}
- {RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item Interrupt Entry Overhead
-@itemize -
-@item returns to nested interrupt: RTEMS_INTR_ENTRY_RETURNS_TO_NESTED
-@item returns to interrupted task: RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK
-@item returns to preempting task: RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-@end itemize
-
-@item Interrupt Exit Overhead
-@itemize -
-@item returns to nested interrupt: RTEMS_INTR_EXIT_RETURNS_TO_NESTED
-@item returns to interrupted task: RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK
-@item returns to preempting task: RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>returns to nested interrupt</TD>
- <TD ALIGN=center>RTEMS_INTR_ENTRY_RETURNS_TO_NESTED</TD></TR>
- <TR><TD ALIGN=left><dd>returns to interrupted task</TD>
- <TD ALIGN=center>RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK</TD></TR>
- <TR><TD ALIGN=left><dd>returns to preempting task</TD>
- <TD ALIGN=center>RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>returns to nested interrupt</TD>
- <TD ALIGN=center>RTEMS_INTR_EXIT_RETURNS_TO_NESTED</TD></TR>
- <TR><TD ALIGN=left><dd>returns to interrupted task</TD>
- <TD ALIGN=center>RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK</TD></TR>
- <TR><TD ALIGN=left><dd>returns to preempting task</TD>
- <TD ALIGN=center>RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-
-@section Clock Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{CLOCK\_SET}{RTEMS_CLOCK_SET_ONLY}
-\rtemsonecase{CLOCK\_GET}{RTEMS_CLOCK_GET_ONLY}
-\rtemsonecase{CLOCK\_TICK}{RTEMS_CLOCK_TICK_ONLY}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item CLOCK_SET
-@itemize -
-@item only case: RTEMS_CLOCK_SET_ONLY
-@end itemize
-
-@item CLOCK_GET
-@itemize -
-@item only case: RTEMS_CLOCK_GET_ONLY
-@end itemize
-
-@item CLOCK_TICK
-@itemize -
-@item only case: RTEMS_CLOCK_TICK_ONLY
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD>
- <TD ALIGN=center>RTEMS_CLOCK_SET_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD>
- <TD ALIGN=center>RTEMS_CLOCK_GET_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD>
- <TD ALIGN=center>RTEMS_CLOCK_TICK_ONLY</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Timer Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{TIMER\_CREATE}{RTEMS_TIMER_CREATE_ONLY}
-\rtemsonecase{TIMER\_IDENT}{RTEMS_TIMER_IDENT_ONLY}
-\rtemsdirective{TIMER\_DELETE}
-\rtemscase{inactive}{RTEMS_TIMER_DELETE_INACTIVE}
-\rtemscase{active}{RTEMS_TIMER_DELETE_ACTIVE}
-\rtemsdirective{TIMER\_FIRE\_AFTER}
-\rtemscase{inactive}{RTEMS_TIMER_FIRE_AFTER_INACTIVE}
-\rtemscase{active}{RTEMS_TIMER_FIRE_AFTER_ACTIVE}
-\rtemsdirective{TIMER\_FIRE\_WHEN}
-\rtemscase{inactive}{RTEMS_TIMER_FIRE_WHEN_INACTIVE}
-\rtemscase{active}{RTEMS_TIMER_FIRE_WHEN_ACTIVE}
-\rtemsdirective{TIMER\_RESET}
-\rtemscase{inactive}{RTEMS_TIMER_RESET_INACTIVE}
-\rtemscase{active}{RTEMS_TIMER_RESET_ACTIVE}
-\rtemsdirective{TIMER\_CANCEL}
-\rtemscase{inactive}{RTEMS_TIMER_CANCEL_INACTIVE}
-\rtemscase{active}{RTEMS_TIMER_CANCEL_ACTIVE}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item TIMER_CREATE
-@itemize -
-@item only case: RTEMS_TIMER_CREATE_ONLY
-@end itemize
-
-@item TIMER_IDENT
-@itemize -
-@item only case: RTEMS_TIMER_IDENT_ONLY
-@end itemize
-
-@item TIMER_DELETE
-@itemize -
-@item inactive: RTEMS_TIMER_DELETE_INACTIVE
-@item active: RTEMS_TIMER_DELETE_ACTIVE
-@end itemize
-
-@item TIMER_FIRE_AFTER
-@itemize -
-@item inactive: RTEMS_TIMER_FIRE_AFTER_INACTIVE
-@item active: RTEMS_TIMER_FIRE_AFTER_ACTIVE
-@end itemize
-
-@item TIMER_FIRE_WHEN
-@itemize -
-@item inactive: TIMER_FIRE_WHEN_INACTIVE
-@item active: TIMER_FIRE_WHEN_ACTIVE
-@end itemize
-
-@item TIMER_RESET
-@itemize -
-@item inactive: TIMER_RESET_INACTIVE
-@item active: TIMER_RESET_ACTIVE
-@end itemize
-
-@item TIMER_CANCEL
-@itemize -
-@item inactive: TIMER_CANCEL_INACTIVE
-@item active: TIMER_CANCEL_ACTIVE
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD>
- <TD ALIGN=center>RTEMS_TIMER_CREATE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD>
- <TD ALIGN=center>RTEMS_TIMER_IDENT_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>inactive</TD>
- <TD ALIGN=center>RTEMS_TIMER_DELETE_INACTIVE</TD></TR>
- <TR><TD ALIGN=left><dd>active</TD>
- <TD ALIGN=center>RTEMS_TIMER_DELETE_ACTIVE</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>inactive</TD>
- <TD ALIGN=center>RTEMS_TIMER_FIRE_AFTER_INACTIVE</TD></TR>
- <TR><TD ALIGN=left><dd>active</TD>
- <TD ALIGN=center>RTEMS_TIMER_FIRE_AFTER_ACTIVE</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>inactive</TD>
- <TD ALIGN=center>RTEMS_TIMER_FIRE_WHEN_INACTIVE</TD></TR>
- <TR><TD ALIGN=left><dd>active</TD>
- <TD ALIGN=center>RTEMS_TIMER_FIRE_WHEN_ACTIVE</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>inactive</TD>
- <TD ALIGN=center>RTEMS_TIMER_RESET_INACTIVE</TD></TR>
- <TR><TD ALIGN=left><dd>active</TD>
- <TD ALIGN=center>RTEMS_TIMER_RESET_ACTIVE</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>inactive</TD>
- <TD ALIGN=center>RTEMS_TIMER_CANCEL_INACTIVE</TD></TR>
- <TR><TD ALIGN=left><dd>active</TD>
- <TD ALIGN=center>RTEMS_TIMER_CANCEL_ACTIVE</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@page
-@section Semaphore Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{SEMAPHORE\_CREATE}{RTEMS_SEMAPHORE_CREATE_ONLY}
-\rtemsonecase{SEMAPHORE\_IDENT}{RTEMS_SEMAPHORE_IDENT_ONLY}
-\rtemsonecase{SEMAPHORE\_DELETE}{RTEMS_SEMAPHORE_DELETE_ONLY}
-\rtemsdirective{SEMAPHORE\_OBTAIN}
-\rtemscase{available}{RTEMS_SEMAPHORE_OBTAIN_AVAILABLE}
-\rtemscase{not available -- NO\_WAIT}
- {RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT}
-\rtemscase{not available -- caller blocks}
- {RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS}
-\rtemsdirective{SEMAPHORE\_RELEASE}
-\rtemscase{no waiting tasks}{RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS}
-\rtemscase{task readied -- returns to caller}
- {RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER}
-\rtemscase{task readied -- preempts caller}
- {RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item SEMAPHORE_CREATE
-@itemize -
-@item only case: RTEMS_SEMAPHORE_CREATE_ONLY
-@end itemize
-
-@item SEMAPHORE_IDENT
-@itemize -
-@item only case: RTEMS_SEMAPHORE_IDENT_ONLY
-@end itemize
-
-@item SEMAPHORE_DELETE
-@itemize -
-@item only case: RTEMS_SEMAPHORE_DELETE_ONLY
-@end itemize
-
-@item SEMAPHORE_OBTAIN
-@itemize -
-@item available: RTEMS_SEMAPHORE_OBTAIN_AVAILABLE
-@item not available -- NO_WAIT: RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT
-@item not available -- caller blocks: RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS
-@end itemize
-
-@item SEMAPHORE_RELEASE
-@itemize -
-@item no waiting tasks: RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS
-@item task readied -- returns to caller: RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER
-@item task readied -- preempts caller: RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_CREATE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_IDENT_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_DELETE_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>available</TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_OBTAIN_AVAILABLE</TD></TR>
- <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT</TD></TR>
- <TR><TD ALIGN=left><dd>not available -- caller blocks</TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>no waiting tasks</TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Message Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{RTEMS_MESSAGE_QUEUE_CREATE_ONLY}
-\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{RTEMS_MESSAGE_QUEUE_IDENT_ONLY}
-\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{RTEMS_MESSAGE_QUEUE_DELETE_ONLY}
-\rtemsdirective{MESSAGE\_QUEUE\_SEND}
-\rtemscase{no waiting tasks}
- {RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS}
-\rtemscase{task readied -- returns to caller}
- {RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER}
-\rtemscase{task readied -- preempts caller}
- {RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER}
-\rtemsdirective{MESSAGE\_QUEUE\_URGENT}
-\rtemscase{no waiting tasks}{RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS}
-\rtemscase{task readied -- returns to caller}
- {RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER}
-\rtemscase{task readied -- preempts caller}
- {RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER}
-\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST}
-\rtemscase{no waiting tasks}{RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS}
-\rtemscase{task readied -- returns to caller}
- {RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER}
-\rtemscase{task readied -- preempts caller}
- {RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER}
-\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE}
-\rtemscase{available}{RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE}
-\rtemscase{not available -- NO\_WAIT}
- {RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT}
-\rtemscase{not available -- caller blocks}
- {RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS}
-\rtemsdirective{MESSAGE\_QUEUE\_FLUSH}
-\rtemscase{no messages flushed}{RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED}
-\rtemscase{messages flushed}{RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item MESSAGE_QUEUE_CREATE
-@itemize -
-@item only case: RTEMS_MESSAGE_QUEUE_CREATE_ONLY
-@end itemize
-
-@item MESSAGE_QUEUE_IDENT
-@itemize -
-@item only case: RTEMS_MESSAGE_QUEUE_IDENT_ONLY
-@end itemize
-
-@item MESSAGE_QUEUE_DELETE
-@itemize -
-@item only case: RTEMS_MESSAGE_QUEUE_DELETE_ONLY
-@end itemize
-
-@item MESSAGE_QUEUE_SEND
-@itemize -
-@item no waiting tasks: RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS
-@item task readied -- returns to caller: RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER
-@item task readied -- preempts caller: RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER
-@end itemize
-
-@item MESSAGE_QUEUE_URGENT
-@itemize -
-@item no waiting tasks: RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS
-@item task readied -- returns to caller: RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER
-@item task readied -- preempts caller: RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER
-@end itemize
-
-@item MESSAGE_QUEUE_BROADCAST
-@itemize -
-@item no waiting tasks: RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS
-@item task readied -- returns to caller: RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER
-@item task readied -- preempts caller: RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER
-@end itemize
-
-@item MESSAGE_QUEUE_RECEIVE
-@itemize -
-@item available: RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE
-@item not available -- NO_WAIT: RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT
-@item not available -- caller blocks: RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS
-@end itemize
-
-@item MESSAGE_QUEUE_FLUSH
-@itemize -
-@item no messages flushed: RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED
-@item messages flushed: RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_CREATE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_IDENT_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_DELETE_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>no waiting tasks</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>no waiting tasks</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>no waiting tasks</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>available</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE</TD></TR>
- <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT</TD></TR>
- <TR><TD ALIGN=left><dd>not available -- caller blocks</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>no messages flushed</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED</TD></TR>
- <TR><TD ALIGN=left><dd>messages flushed</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED</TD></TR>
-
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@page
-@section Event Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsdirective{EVENT\_SEND}
-\rtemscase{no task readied}{RTEMS_EVENT_SEND_NO_TASK_READIED}
-\rtemscase{task readied -- returns to caller}
- {RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER}
-\rtemscase{task readied -- preempts caller}
- {RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER}
-\rtemsdirective{EVENT\_RECEIVE}
-\rtemscase{obtain current events}{RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS}
-\rtemscase{available}{RTEMS_EVENT_RECEIVE_AVAILABLE}
-\rtemscase{not available -- NO\_WAIT}{RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT}
-\rtemscase{not available -- caller blocks}
- {RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item EVENT_SEND
-@itemize -
-@item no task readied: RTEMS_EVENT_SEND_NO_TASK_READIED
-@item task readied -- returns to caller: RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER
-@item task readied -- preempts caller: RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER
-@end itemize
-
-@item EVENT_RECEIVE
-@itemize -
-@item obtain current events: RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS
-@item available: RTEMS_EVENT_RECEIVE_AVAILABLE
-@item not available -- NO_WAIT: RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT
-@item not available -- caller blocks: RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>no task readied</TD>
- <TD ALIGN=center>RTEMS_EVENT_SEND_NO_TASK_READIED</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD>
- <TD ALIGN=center>RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD>
- <TD ALIGN=center>RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>obtain current events</TD>
- <TD ALIGN=center>RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS</TD></TR>
- <TR><TD ALIGN=left><dd>available</TD>
- <TD ALIGN=center>RTEMS_EVENT_RECEIVE_AVAILABLE</TD></TR>
- <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD>
- <TD ALIGN=center>RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT</TD></TR>
- <TR><TD ALIGN=left><dd>not available -- caller blocks</TD>
- <TD ALIGN=center>RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS</TD></TR>
-
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-@section Signal Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{SIGNAL\_CATCH}{RTEMS_SIGNAL_CATCH_ONLY}
-\rtemsdirective{SIGNAL\_SEND}
-\rtemscase{returns to caller}{RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER}
-\rtemscase{signal to self}{RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF}
-\rtemsdirective{EXIT ASR OVERHEAD}
-\rtemscase{returns to calling task}
- {RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK}
-\rtemscase{returns to preempting task}
- {RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-@item SIGNAL_CATCH
-@itemize -
-@item only case: RTEMS_SIGNAL_CATCH_ONLY
-@end itemize
-
-@item SIGNAL_SEND
-@itemize -
-@item returns to caller: RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER
-@item signal to self: RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF
-@end itemize
-
-@item EXIT ASR OVERHEAD
-@itemize -
-@item returns to calling task: RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK
-@item returns to preempting task: RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD>
- <TD ALIGN=center>RTEMS_SIGNAL_CATCH_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR>
- <TR><TD ALIGN=left><dd>returns to caller</TD>
- <TD ALIGN=center>RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>signal to self</TD>
- <TD ALIGN=center>RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR>
- <TR><TD ALIGN=left><dd>returns to calling task</TD>
- <TD ALIGN=center>
- RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK</TD></TR>
- <TR><TD ALIGN=left><dd>returns to preempting task</TD>
- <TD ALIGN=center>
- RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Partition Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{PARTITION\_CREATE}{RTEMS_PARTITION_CREATE_ONLY}
-\rtemsonecase{PARTITION\_IDENT}{RTEMS_PARTITION_IDENT_ONLY}
-\rtemsonecase{PARTITION\_DELETE}{RTEMS_PARTITION_DELETE_ONLY}
-\rtemsdirective{PARTITION\_GET\_BUFFER}
-\rtemscase{available}{RTEMS_PARTITION_GET_BUFFER_AVAILABLE}
-\rtemscase{not available}{RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE}
-\rtemsonecase{PARTITION\_RETURN\_BUFFER}
- {RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item PARTITION_CREATE
-@itemize -
-@item only case: RTEMS_PARTITION_CREATE_ONLY
-@end itemize
-
-@item PARTITION_IDENT
-@itemize -
-@item only case: RTEMS_PARTITION_IDENT_ONLY
-@end itemize
-
-@item PARTITION_DELETE
-@itemize -
-@item only case: RTEMS_PARTITION_DELETE_ONLY
-@end itemize
-
-@item PARTITION_GET_BUFFER
-@itemize -
-@item available: RTEMS_PARTITION_GET_BUFFER_AVAILABLE
-@item not available: RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE
-@end itemize
-
-@item PARTITION_RETURN_BUFFER
-@itemize -
-@item only case: RTEMS_PARTITION_RETURN_BUFFER_ONLY
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD>
- <TD ALIGN=center>RTEMS_PARTITION_CREATE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD>
- <TD ALIGN=center>RTEMS_PARTITION_IDENT_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD>
- <TD ALIGN=center>RTEMS_PARTITION_DELETE_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR>
- <TR><TD ALIGN=left><dd>available</TD>
- <TD ALIGN=center>RTEMS_PARTITION_GET_BUFFER_AVAILABLE</TD></TR>
- <TR><TD ALIGN=left><dd>not available</TD>
- <TD ALIGN=center>RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE</TD></TR>
- <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD>
- <TD ALIGN=center>RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@page
-@section Region Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{REGION\_CREATE}{RTEMS_REGION_CREATE_ONLY}
-\rtemsonecase{REGION\_IDENT}{RTEMS_REGION_IDENT_ONLY}
-\rtemsonecase{REGION\_DELETE}{RTEMS_REGION_DELETE_ONLY}
-\rtemsdirective{REGION\_GET\_SEGMENT}
-\rtemscase{available}{RTEMS_REGION_GET_SEGMENT_AVAILABLE}
-\rtemscase{not available -- NO\_WAIT}
- {RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT}
-\rtemscase{not available -- caller blocks}
- {RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS}
-\rtemsdirective{REGION\_RETURN\_SEGMENT}
-\rtemscase{no waiting tasks}{RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS}
-\rtemscase{task readied -- returns to caller}
- {RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER}
-\rtemscase{task readied -- preempts caller}
- {RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item REGION_CREATE
-@itemize -
-@item only case: RTEMS_REGION_CREATE_ONLY
-@end itemize
-
-@item REGION_IDENT
-@itemize -
-@item only case: RTEMS_REGION_IDENT_ONLY
-@end itemize
-
-@item REGION_DELETE
-@itemize -
-@item only case: RTEMS_REGION_DELETE_ONLY
-@end itemize
-
-@item REGION_GET_SEGMENT
-@itemize -
-@item available: RTEMS_REGION_GET_SEGMENT_AVAILABLE
-@item not available -- NO_WAIT: RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT
-@item not available -- caller blocks: RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS
-@end itemize
-
-@item REGION_RETURN_SEGMENT
-@itemize -
-@item no waiting tasks: RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS
-@item task readied -- returns to caller: RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER
-@item task readied -- preempts caller: RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD>
- <TD ALIGN=center>RTEMS_REGION_CREATE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD>
- <TD ALIGN=center>RTEMS_REGION_IDENT_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD>
- <TD ALIGN=center>RTEMS_REGION_DELETE_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR>
- <TR><TD ALIGN=left><dd>available</TD>
- <TD ALIGN=center>RTEMS_REGION_GET_SEGMENT_AVAILABLE</TD></TR>
- <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD>
- <TD ALIGN=center>
- RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT</TD></TR>
- <TR><TD ALIGN=left><dd>not available -- caller blocks</TD>
- <TD ALIGN=center>
- RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR>
- <TR><TD ALIGN=left><dd>no waiting tasks</TD>
- <TD ALIGN=center>RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD>
- <TD ALIGN=center>
- RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD>
- <TD ALIGN=center>
- RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Dual-Ported Memory Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{PORT\_CREATE}{RTEMS_PORT_CREATE_ONLY}
-\rtemsonecase{PORT\_IDENT}{RTEMS_PORT_IDENT_ONLY}
-\rtemsonecase{PORT\_DELETE}{RTEMS_PORT_DELETE_ONLY}
-\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL}
- {RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY}
-\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL}
- {RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item PORT_CREATE
-@itemize -
-@item only case: RTEMS_PORT_CREATE_ONLY
-@end itemize
-
-@item PORT_IDENT
-@itemize -
-@item only case: RTEMS_PORT_IDENT_ONLY
-@end itemize
-
-@item PORT_DELETE
-@itemize -
-@item only case: RTEMS_PORT_DELETE_ONLY
-@end itemize
-
-@item PORT_INTERNAL_TO_EXTERNAL
-@itemize -
-@item only case: RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY
-@end itemize
-
-@item PORT_EXTERNAL_TO_INTERNAL
-@itemize -
-@item only case: RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD>
- <TD ALIGN=center>RTEMS_PORT_CREATE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD>
- <TD ALIGN=center>RTEMS_PORT_IDENT_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD>
- <TD ALIGN=center>RTEMS_PORT_DELETE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD>
- <TD ALIGN=center>RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD>
- <TD ALIGN=center>RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY</TD></TR>
-
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section I/O Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{IO\_INITIALIZE}{RTEMS_IO_INITIALIZE_ONLY}
-\rtemsonecase{IO\_OPEN}{RTEMS_IO_OPEN_ONLY}
-\rtemsonecase{IO\_CLOSE}{RTEMS_IO_CLOSE_ONLY}
-\rtemsonecase{IO\_READ}{RTEMS_IO_READ_ONLY}
-\rtemsonecase{IO\_WRITE}{RTEMS_IO_WRITE_ONLY}
-\rtemsonecase{IO\_CONTROL}{RTEMS_IO_CONTROL_ONLY}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item IO_INITIALIZE
-@itemize -
-@item only case: RTEMS_IO_INITIALIZE_ONLY
-@end itemize
-
-@item IO_OPEN
-@itemize -
-@item only case: RTEMS_IO_OPEN_ONLY
-@end itemize
-
-@item IO_CLOSE
-@itemize -
-@item only case: RTEMS_IO_CLOSE_ONLY
-@end itemize
-
-@item IO_READ
-@itemize -
-@item only case: RTEMS_IO_READ_ONLY
-@end itemize
-
-@item IO_WRITE
-@itemize -
-@item only case: RTEMS_IO_WRITE_ONLY
-@end itemize
-
-@item IO_CONTROL
-@itemize -
-@item only case: RTEMS_IO_CONTROL_ONLY
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD>
- <TD ALIGN=center>RTEMS_IO_INITIALIZE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD>
- <TD ALIGN=center>RTEMS_IO_OPEN_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD>
- <TD ALIGN=center>RTEMS_IO_CLOSE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD>
- <TD ALIGN=center>RTEMS_IO_READ_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD>
- <TD ALIGN=center>RTEMS_IO_WRITE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD>
- <TD ALIGN=center>RTEMS_IO_CONTROL_ONLY</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Rate Monotonic Manager
-
-@ifset use-tex
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\span\rtemstimetable
-\rtemsonecase{RATE\_MONOTONIC\_CREATE}{RTEMS_RATE_MONOTONIC_CREATE_ONLY}
-\rtemsonecase{RATE\_MONOTONIC\_IDENT}{RTEMS_RATE_MONOTONIC_IDENT_ONLY}
-\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{RTEMS_RATE_MONOTONIC_CANCEL_ONLY}
-\rtemsdirective{RATE\_MONOTONIC\_DELETE}
-\rtemscase{active}{RTEMS_RATE_MONOTONIC_DELETE_ACTIVE}
-\rtemscase{inactive}{RTEMS_RATE_MONOTONIC_DELETE_INACTIVE}
-\rtemsdirective{RATE\_MONOTONIC\_PERIOD}
-\rtemscase{initiate period -- returns to caller}
- {RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER}
-\rtemscase{conclude period -- caller blocks}
- {RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS}
-\rtemscase{obtain status}{RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS}
-\rtemsendtimetable
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-ascii
-@ifinfo
-@itemize @bullet
-
-@item RATE_MONOTONIC_CREATE
-@itemize -
-@item only case: RTEMS_RATE_MONOTONIC_CREATE_ONLY
-@end itemize
-
-@item RATE_MONOTONIC_IDENT
-@itemize -
-@item only case: RTEMS_RATE_MONOTONIC_IDENT_ONLY
-@end itemize
-
-@item RATE_MONOTONIC_CANCEL
-@itemize -
-@item only case: RTEMS_RATE_MONOTONIC_CANCEL_ONLY
-@end itemize
-
-@item RATE_MONOTONIC_DELETE
-@itemize -
-@item active: RTEMS_RATE_MONOTONIC_DELETE_ACTIVE
-@item inactive: RTEMS_RATE_MONOTONIC_DELETE_INACTIVE
-@end itemize
-
-@item RATE_MONOTONIC_PERIOD
-@itemize -
-@item initiate period -- returns to caller: RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER
-@item conclude period -- caller blocks: RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS
-@item obtain status: RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS
-@end itemize
-
-@end itemize
-@end ifinfo
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD>
- <TD ALIGN=center>RTEMS_RATE_MONOTONIC_CREATE_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD>
- <TD ALIGN=center>RTEMS_RATE_MONOTONIC_IDENT_ONLY</TD></TR>
-<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD>
- <TD ALIGN=center>RTEMS_RATE_MONOTONIC_CANCEL_ONLY</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR>
- <TR><TD ALIGN=left><dd>active</TD>
- <TD ALIGN=center>RTEMS_RATE_MONOTONIC_DELETE_ACTIVE</TD></TR>
- <TR><TD ALIGN=left><dd>inactive</TD>
- <TD ALIGN=center>RTEMS_RATE_MONOTONIC_DELETE_INACTIVE</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR>
- <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD>
- <TD ALIGN=center>
- RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER</TD></TR>
- <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD>
- <TD ALIGN=center>
- RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS</TD></TR>
- <TR><TD ALIGN=left><dd>obtain status</TD>
- <TD ALIGN=center>RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@tex
-\global\advance \smallskipamount by 4pt
-@end tex
diff --git a/doc/common/timing.t b/doc/common/timing.t
deleted file mode 100644
index 60840c5752..0000000000
--- a/doc/common/timing.t
+++ /dev/null
@@ -1,396 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Timing Specification
-
-@section Introduction
-
-This chapter provides information pertaining to the
-measurement of the performance of RTEMS, the methods of
-gathering the timing data, and the usefulness of the data. Also
-discussed are other time critical aspects of RTEMS that affect
-an applications design and ultimate throughput. These aspects
-include determinancy, interrupt latency and context switch times.
-
-@section Philosophy
-
-Benchmarks are commonly used to evaluate the
-performance of software and hardware. Benchmarks can be an
-effective tool when comparing systems. Unfortunately,
-benchmarks can also be manipulated to justify virtually any
-claim. Benchmarks of real-time executives are difficult to
-evaluate for a variety of reasons. Executives vary in the
-robustness of features and options provided. Even when
-executives compare favorably in functionality, it is quite
-likely that different methodologies were used to obtain the
-timing data. Another problem is that some executives provide
-times for only a small subset of directives, This is typically
-justified by claiming that these are the only time-critical
-directives. The performance of some executives is also very
-sensitive to the number of objects in the system. To obtain any
-measure of usefulness, the performance information provided for
-an executive should address each of these issues.
-
-When evaluating the performance of a real-time
-executive, one typically considers the following areas:
-determinancy, directive times, worst case interrupt latency, and
-context switch time. Unfortunately, these areas do not have
-standard measurement methodologies. This allows vendors to
-manipulate the results such that their product is favorably
-represented. We have attempted to provide useful and meaningful
-timing information for RTEMS. To insure the usefulness of our
-data, the methodology and definitions used to obtain and
-describe the data are also documented.
-
-@subsection Determinancy
-
-The correctness of data in a real-time system must
-always be judged by its timeliness. In many real-time systems,
-obtaining the correct answer does not necessarily solve the
-problem. For example, in a nuclear reactor it is not enough to
-determine that the core is overheating. This situation must be
-detected and acknowledged early enough that corrective action
-can be taken and a meltdown avoided.
-
-Consequently, a system designer must be able to
-predict the worst-case behavior of the application running under
-the selected executive. In this light, it is important that a
-real-time system perform consistently regardless of the number
-of tasks, semaphores, or other resources allocated. An
-important design goal of a real-time executive is that all
-internal algorithms be fixed-cost. Unfortunately, this goal is
-difficult to completely meet without sacrificing the robustness
-of the executive's feature set.
-
-Many executives use the term deterministic to mean
-that the execution times of their services can be predicted.
-However, they often provide formulas to modify execution times
-based upon the number of objects in the system. This usage is
-in sharp contrast to the notion of deterministic meaning fixed
-cost.
-
-Almost all RTEMS directives execute in a fixed amount
-of time regardless of the number of objects present in the
-system. The primary exception occurs when a task blocks while
-acquiring a resource and specifies a non-zero timeout interval.
-
-Other exceptions are message queue broadcast,
-obtaining a variable length memory block, object name to ID
-translation, and deleting a resource upon which tasks are
-waiting. In addition, the time required to service a clock tick
-interrupt is based upon the number of timeouts and other
-"events" which must be processed at that tick. This second
-group is composed primarily of capabilities which are inherently
-non-deterministic but are infrequently used in time critical
-situations. The major exception is that of servicing a clock
-tick. However, most applications have a very small number of
-timeouts which expire at exactly the same millisecond (usually
-none, but occasionally two or three).
-
-@subsection Interrupt Latency
-
-Interrupt latency is the delay between the CPU's
-receipt of an interrupt request and the execution of the first
-application-specific instruction in an interrupt service
-routine. Interrupts are a critical component of most real-time
-applications and it is critical that they be acted upon as
-quickly as possible.
-
-Knowledge of the worst case interrupt latency of an
-executive aids the application designer in determining the
-maximum period of time between the generation of an interrupt
-and an interrupt handler responding to that interrupt. The
-interrupt latency of an system is the greater of the executive's
-and the applications's interrupt latency. If the application
-disables interrupts longer than the executive, then the
-application's interrupt latency is the system's worst case
-interrupt disable period.
-
-The worst case interrupt latency for a real-time
-executive is based upon the following components:
-
-@itemize @bullet
-@item the longest period of time interrupts are disabled
-by the executive,
-
-@item the overhead required by the executive at the
-beginning of each ISR,
-
-@item the time required for the CPU to vector the
-interrupt, and
-
-@item for some microprocessors, the length of the longest
-instruction.
-@end itemize
-
-The first component is irrelevant if an interrupt
-occurs when interrupts are enabled, although it must be included
-in a worst case analysis. The third and fourth components are
-particular to a CPU implementation and are not dependent on the
-executive. The fourth component is ignored by this document
-because most applications use only a subset of a
-microprocessor's instruction set. Because of this the longest
-instruction actually executed is application dependent. The
-worst case interrupt latency of an executive is typically
-defined as the sum of components (1) and (2). The second
-component includes the time necessry for RTEMS to save registers
-and vector to the user-defined handler. RTEMS includes the
-third component, the time required for the CPU to vector the
-interrupt, because it is a required part of any interrupt.
-
-Many executives report the maximum interrupt disable
-period as their interrupt latency and ignore the other
-components. This results in very low worst-case interrupt
-latency times which are not indicative of actual application
-performance. The definition used by RTEMS results in a higher
-interrupt latency being reported, but accurately reflects the
-longest delay between the CPU's receipt of an interrupt request
-and the execution of the first application-specific instruction
-in an interrupt service routine.
-
-The actual interrupt latency times are reported in
-the Timing Data chapter of this supplement.
-
-@subsection Context Switch Time
-
-An RTEMS context switch is defined as the act of
-taking the CPU from the currently executing task and giving it
-to another task. This process involves the following components:
-
-@itemize @bullet
-@item Saving the hardware state of the current task.
-
-@item Optionally, invoking the TASK_SWITCH user extension.
-
-@item Restoring the hardware state of the new task.
-@end itemize
-
-RTEMS defines the hardware state of a task to include
-the CPU's data registers, address registers, and, optionally,
-floating point registers.
-
-Context switch time is often touted as a performance
-measure of real-time executives. However, a context switch is
-performed as part of a directive's actions and should be viewed
-as such when designing an application. For example, if a task
-is unable to acquire a semaphore and blocks, a context switch is
-required to transfer control from the blocking task to a new
-task. From the application's perspective, the context switch is
-a direct result of not acquiring the semaphore. In this light,
-the context switch time is no more relevant than the performance
-of any other of the executive's subroutines which are not
-directly accessible by the application.
-
-In spite of the inappropriateness of using the
-context switch time as a performance metric, RTEMS context
-switch times for floating point and non-floating points tasks
-are provided for comparison purposes. Of the executives which
-actually support floating point operations, many do not report
-context switch times for floating point context switch time.
-This results in a reported context switch time which is
-meaningless for an application with floating point tasks.
-
-The actual context switch times are reported in the
-Timing Data chapter of this supplement.
-
-@subsection Directive Times
-
-Directives are the application's interface to the
-executive, and as such their execution times are critical in
-determining the performance of the application. For example, an
-application using a semaphore to protect a critical data
-structure should be aware of the time required to acquire and
-release a semaphore. In addition, the application designer can
-utilize the directive execution times to evaluate the
-performance of different synchronization and communication
-mechanisms.
-
-The actual directive execution times are reported in
-the Timing Data chapter of this supplement.
-
-@section Methodology
-
-@subsection Software Platform
-
-The RTEMS timing suite is written in C. The overhead
-of passing arguments to RTEMS by C is not timed. The times
-reported represent the amount of time from entering to exiting
-RTEMS.
-
-The tests are based upon one of two execution models:
-(1) single invocation times, and (2) average times of repeated
-invocations. Single invocation times are provided for
-directives which cannot easily be invoked multiple times in the
-same scenario. For example, the times reported for entering and
-exiting an interrupt service routine are single invocation
-times. The second model is used for directives which can easily
-be invoked multiple times in the same scenario. For example,
-the times reported for semaphore obtain and semaphore release
-are averages of multiple invocations. At least 100 invocations
-are used to obtain the average.
-
-@subsection Hardware Platform
-
-Since RTEMS supports a variety of processors, the
-hardware platform used to gather the benchmark times must also
-vary. Therefore, for each processor supported the hardware
-platform must be defined. Each definition will include a brief
-description of the target hardware platform including the clock
-speed, memory wait states encountered, and any other pertinent
-information. This definition may be found in the processor
-dependent timing data chapter within this supplement.
-
-@subsection What is measured?
-
-An effort was made to provide execution times for a
-large portion of RTEMS. Times were provided for most directives
-regardless of whether or not they are typically used in time
-critical code. For example, execution times are provided for
-all object create and delete directives, even though these are
-typically part of application initialization.
-
-The times include all RTEMS actions necessary in a
-particular scenario. For example, all times for blocking
-directives include the context switch necessary to transfer
-control to a new task. Under no circumstances is it necessary
-to add context switch time to the reported times.
-
-The following list describes the objects created by
-the timing suite:
-
-@itemize @bullet
-@item All tasks are non-floating point.
-
-@item All tasks are created as local objects.
-
-@item No timeouts are used on blocking directives.
-
-@item All tasks wait for objects in FIFO order.
-
-@end itemize
-
-In addition, no user extensions are configured.
-
-@subsection What is not measured?
-
-The times presented in this document are not intended
-to represent best or worst case times, nor are all directives
-included. For example, no times are provided for the initialize
-executive and fatal_error_occurred directives. Other than the
-exceptions detailed in the Determinancy section, all directives
-will execute in the fixed length of time given.
-
-Other than entering and exiting an interrupt service
-routine, all directives were executed from tasks and not from
-interrupt service routines. Directives invoked from ISRs, when
-allowable, will execute in slightly less time than when invoked
-from a task because rescheduling is delayed until the interrupt
-exits.
-
-@subsection Terminology
-
-The following is a list of phrases which are used to
-distinguish individual execution paths of the directives taken
-during the RTEMS performance analysis:
-
-@table @b
-@item another task
-The directive was performed
-on a task other than the calling task.
-
-@item available
-A task attempted to obtain a resource and
-immediately acquired it.
-
-@item blocked task
-The task operated upon by the
-directive was blocked waiting for a resource.
-
-@item caller blocks
-The requested resoure was not
-immediately available and the calling task chose to wait.
-
-@item calling task
-The task invoking the directive.
-
-@item messages flushed
-One or more messages was flushed
-from the message queue.
-
-@item no messages flushed
-No messages were flushed from
-the message queue.
-
-@item not available
-A task attempted to obtain a resource
-and could not immediately acquire it.
-
-@item no reschedule
-The directive did not require a
-rescheduling operation.
-
-@item NO_WAIT
-A resource was not available and the
-calling task chose to return immediately via the NO_WAIT option
-with an error.
-
-@item obtain current
-The current value of something was
-requested by the calling task.
-
-@item preempts caller
-The release of a resource caused a
-task of higher priority than the calling to be readied and it
-became the executing task.
-
-@item ready task
-The task operated upon by the directive
-was in the ready state.
-
-@item reschedule
-The actions of the directive
-necessitated a rescheduling operation.
-
-@item returns to caller
-The directive succeeded and
-immediately returned to the calling task.
-
-@item returns to interrupted task
-The instructions
-executed immediately following this interrupt will be in the
-interrupted task.
-
-@item returns to nested interrupt
-The instructions
-executed immediately following this interrupt will be in a
-previously interrupted ISR.
-
-@item returns to preempting task
-The instructions
-executed immediately following this interrupt or signal handler
-will be in a task other than the interrupted task.
-
-@item signal to self
-The signal set was sent to the
-calling task and signal processing was enabled.
-
-@item suspended task
-The task operated upon by the
-directive was in the suspended state.
-
-@item task readied
-The release of a resource caused a
-task of lower or equal priority to be readied and the calling
-task remained the executing task.
-
-@item yield
-The act of attempting to voluntarily release
-the CPU.
-
-@end table
-
diff --git a/doc/common/treedef.tex b/doc/common/treedef.tex
deleted file mode 100644
index 26eda0c28c..0000000000
--- a/doc/common/treedef.tex
+++ /dev/null
@@ -1,317 +0,0 @@
-% treedef.tex
-%
-% These definitions for tree macros are taken from "Trees in TeX",
-% by David Eppstein, as published in TUGboat 6#1, March 1985.
-% David Eppstein's address (as of 15 June 1988) is
-% Computer Science Department
-% Columbia University
-% New York, NY 10027
-% Eppstein@cs.Columbia.edu
-%
-% Tree -- a macro to make aligned (horizontal) trees in TeX
-%
-% Input is of the form
-% \tree
-% item
-% \subtree
-% \leaf{item}
-% .
-% .
-% .
-% \endsubtree
-% \subtree
-% .
-% .
-% .
-% \endsubtree
-% \endsubtree
-% \endtree
-%
-% Nesting is to any level. \leaf is defined as a subtree of one item:
-% \def\leaf#1{\subtree#1\endsubtree}.
-%
-% A structure:
-% \subtree
-% item_part1
-% item_part2
-% .
-% .
-% .
-%
-% will print item_part2 directly below item_part1 as a single item
-% as if they were in a \box.
-%
-% The macro is a 3-pass macro. On the first pass it sets up a data
-% structure from the \subtree ... \endsubtree definitions. On the second pass
-% it recursively calculates the width of each level of the tree. On the third
-% pass it sets up the boxes, glue and rules.
-%
-% By David Eppstein, TUGboat, vol. 6 (1985), no. 1, pp. 31--35.
-% Transcribed by Margaret Kromer (peg), Feb., 1986.
-%
-% Pass 1
-% At the end of pass 1, the tree is coded as a nested collection of \hboxes
-% and \vboxes.
-\newbox\treebox\newcount\treeboxcnt
-\def\tree{\message{Begin tree}\treeboxcnt=1\global\setbox\treebox=\boxtree}
-\def\subtree{\ettext \advance\treeboxcnt by 1 \boxtree}
-\def\leaf#1{\subtree#1\endsubtree}
-\def\endsubtree{\ettext \egroup \advance\treeboxcnt-1{}%
- \ifnum\treeboxcnt=-1 \treeerrora\fi}
-\def\endtree{\endsubtree \ifnum\treeboxcnt>0 \treeerrorb\fi%
- \settreesizes \typesettree \message{-- end tree}}
-% Error messages for unbalanced tree
-\def\treeerrora{\errhelp=\treeerrorahelp%
- \errmessage{Unbalanced tree -- too many endsubtrees}}
-\newhelp\treeerrorahelp{There are more subtrees closed than opened}
-\def\treeerrorb{\errhelp=\treeerrorbhelp%
- \errmessage{Unbalanced tree -- not enough endsubtrees}}
-\newhelp\treeerrorbhelp{Not all the subtrees of the tree are closed.
-If you continue, you'll get some mysterious secondary errors.}
-% Set up \vbox containing root of tree
-\newif\iftreetext\treetextfalse % Whether still aligning text
-\def\boxtree{\hbox\bgroup % Start outer box of tree or subtree
- \baselineskip 2.5ex % Narrow line spacing slightly
- \tabskip 0pt % No spurious glue in alignment
- \vbox\bgroup % Start inner text \vbox
- \treetexttrue % Remember for \ettext
- \let\par\crcr \obeylines % New line breaks without explicit \cr
- \halign\bgroup##\hfil\cr} % Start alignment with simple template
-\def\ettext{\iftreetext % Are we still in inner text \vbox?
- \crcr\egroup \egroup \fi} % Yes, end alignment and box
-% Pass 2
-% Recursively calculate widths of tree with \setsizes; keep results in
-% \treesizes; \treewidth contains total width calculated so far. \treeworkbox
-% is workspace containing subtree being sized.
-\newbox\treeworkbox
-\def\cons#1#2{\edef#2{\xmark #1#2}} % Add something to start of list
-\def\car#1{\expandafter\docar#1\docar} % Take first element of list
-\def\docar\xmark#1\xmark#2\docar{#1} % ..by ignoring rest in expansion
-\def\cdr#1{\expandafter\docdr#1\docdr#1}% Similarly, drop first element
-\def\docdr\xmark#1\xmark#2\docdr#3{\def#3{\xmark #2}}
-\def\xmark{\noexpand\xmark} % List separator expands to self
-\def\nil{\xmark} % Empty list is just separator
-\def\settreesizes{\setbox\treeworkbox=\copy\treebox%
- \global\let\treesizes\nil \setsizes}
-\newdimen\treewidth % Width of this part of the tree
-\def\setsizes{\setbox\treeworkbox=\hbox\bgroup% Get a horiz list as a workspace
- \unhbox\treeworkbox\unskip % Take tree, unpack it into horiz list
- \inittreewidth % Get old width at this level
- \sizesubtrees % Recurse through all subtrees
- \sizelevel % Now set width from remaining \vbox
- \egroup} % All done, finish our \hbox
-\def\inittreewidth{\ifx\treesizes\nil % If this is the first at this level
- \treewidth=0pt % ..then we have no previous max width
- \else \treewidth=\car\treesizes % Otherwise take old max level width
- \global\cdr\treesizes % ..and advance level width storage
- \fi} % ..in preparation for next level.
-\def\sizesubtrees{\loop % For each box in horiz list (subtree)
- \setbox\treeworkbox=\lastbox \unskip % ..pull it off list and flush glue
- \ifhbox\treeworkbox \setsizes % If hbox, it's a subtree - recurse
- \repeat} % ..and loop; end loop on tree text
-\def\sizelevel{%
- \ifdim\treewidth<\wd\treeworkbox % If greater than previous maximum
- \treewidth=\wd\treeworkbox \fi % Then set max to new high
- \global\cons{\the\treewidth}\treesizes}% In either case, put back on list
-% Pass 3
-% Recursively typeset tree with \maketree by adding an \hbox containing
-% a subtree (in \treebox) to the horizontal list.
-\newdimen\treeheight % Height of this part of the tree
-\newif\ifleaf % Tree has no subtrees (is a leaf)
-\newif\ifbotsub % Bottom subtree of parent
-\newif\iftopsub % Top subtree of parent
-\def\typesettree{\medskip\maketree\medskip} % Make whole tree
-\def\maketree{\hbox{\treewidth=\car\treesizes % Get width at this level
- \cdr\treesizes % Set up width list for recursion
- \makesubtreebox\unskip % Set \treebox to text, make subtrees
- \ifleaf \makeleaf % No subtrees, add glue
- \else \makeparent \fi}} % Have subtrees, stick them at right
-{\catcode`@=11 % Be able to use \voidb@x
-\gdef\makesubtreebox{\unhbox\treebox % Open up tree or subtree
- \unskip\global\setbox\treebox\lastbox % Pick up very last box
- \ifvbox\treebox % If we're already at the \vbox
- \global\leaftrue \let\next\relax % ..then this is a leaf
- \else \botsubtrue % Otherwise, we have subtrees
- \setbox\treeworkbox\box\voidb@x % Init stack of processed subs
- \botsubtrue \let\next\makesubtree % ..and call \maketree on them
- \fi \next}} % Finish up for whichever it was
-\def\makesubtree{\setbox1\maketree % Call \maketree on this subtree
- \unskip\global\setbox\treebox\lastbox % Pick up box before it
- \treeheight=\ht1 % Get height of subtree we made
- \advance\treeheight 2ex % Add some room around the edges
- \ifhbox\treebox \topsubfalse % If picked up box is a \vbox,
- \else \topsubtrue \fi % ..this is the top, otherwise not
- \addsubtreebox % Stack subtree with the rest
- \iftopsub \global\leaffalse % If top, remember not a leaf
- \let\next\relax \else % ..(after recursion), set return
- \botsubfalse \let\next\makesubtree % Otherwise, we have more subtrees
- \fi \next} % Do tail recursion or return
-\def\addsubtreebox{\setbox\treeworkbox=\vbox{\subtreebox\unvbox\treeworkbox}}
-\def\subtreebox{\hbox\bgroup % Start \hbox of tree and lines
- \vbox to \treeheight\bgroup % Start \vbox for vertical rules
- \ifbotsub \iftopsub \vfil % If both bottom and top subtree
- \hrule width 0.4pt % ..vertical rule is just a dot
- \else \treehalfrule \fi \vfil % Bottom gets half-height rule
- \else \iftopsub \vfil \treehalfrule % Top gets half-height the other way
- \else \hrule width 0.4pt height \treeheight \fi\fi % Middle, full height
- \egroup % Finish vertical rule \vbox
- \treectrbox{\hrule width 1em}\hskip 0.2em\treectrbox{\box1}\egroup}
-\def\treectrbox#1{\vbox to \treeheight{\vfil #1\vfil}}
-\def\treehalfrule{\dimen\treeworkbox=\treeheight % Get total height
- \divide\dimen\treeworkbox 2%
- \advance\dimen\treeworkbox 0.2pt % Divide by two, add half horiz height
- \hrule width 0.4pt height \dimen\treeworkbox}% Make a vertical rule that high
-\def\makeleaf{\box\treebox} % Add leaf box to horiz list
-\def\makeparent{\ifdim\ht\treebox>%
- \ht\treeworkbox % If text is higher than subtrees
- \treeheight=\ht\treebox % ..use that height
- \else \treeheight=\ht\treeworkbox \fi % Otherwise use height of subtrees
- \advance\treewidth-\wd\treebox % Take remainder of level width
- \advance\treewidth 1em % ..after accounting for text and glue
- \treectrbox{\box\treebox}\hskip 0.2em % Add text, space before connection
-\treectrbox{\hrule width \treewidth}%
- \treectrbox{\box\treeworkbox}} % Add \hrule, subs
-
-************************************************
-% Plain TeX driver for tree.tex
-
-\def\uncatcodespecials{\catcode`@=12\def\do##1{\catcode`##1=12}\dospecials}
-\def\setupverbatim{\tt\obeylines\uncatcodespecials\obeyspaces}
-{\obeyspaces\global\let =\ }
-\def\beginshowoff{\par\begingroup\setupverbatim\doverbatim}
-{\catcode`\!=0 \catcode`\\=12
-!obeylines!gdef!doverbatim^^M#1\endshowoff{#1!endgroup!medbreak!filbreak%
-!smallskip}}
-
-% see The TeXbook, exercise 22.14
-%\input tree.tex
-\centerline{\bf TREE TREE}
-\bigskip
-\tree
- {Tree}
- Uses
- \subtree
- Computer
- Science
- \subtree
- Data
- Structures
- \leaf{Search Tree}
- \leaf{Priority Queue}
- \endsubtree
- \subtree
- Parsing
- \leaf{Parse Tree}
- \leaf{Symbol Table}
- \endsubtree
- \subtree
- Structured
- Programming
- \endsubtree
- \endsubtree
- \subtree
- Genealogy
- \leaf{Ancestors}
- \leaf{Descendants}
- \endsubtree
- \subtree
- Electrical
- Engineering
- \subtree
- Paper
- \leaf{{\it Vitae}}
- \leaf{Announcements}
- \leaf{Proposals}
- \leaf{\TeX{} Samples}
- \endsubtree
- \endsubtree
- \subtree
- Construction
- \leaf{Fences}
- \subtree
- Buildings
- \subtree
- Houses
- \leaf{Human}
- \leaf{Dog}
- \leaf{Bird}
- \leaf{Tree}
- \endsubtree
- \leaf{Barns}
- \leaf{Other}
- \endsubtree
- \leaf{\dots}
- \endsubtree
- \subtree
- Taxonomies
- \leaf{Tree Uses}
- \endsubtree
-\endtree
-
-\vskip.5truein
-\beginshowoff
-% see The TeXbook, exercise 22.14
-\input tree.tex
-\centerline{TREE TREE}
-\bigskip
-\tree
- Tree
- Uses
- \subtree
- Computer
- Science
- \subtree
- Data
- Structures
- \leaf{Search Tree}
- \leaf{Priority Queue}
- \endsubtree
- \subtree
- Parsing
- \leaf{Parse Tree}
- \leaf{Symbol Table}
- \endsubtree
- \subtree
- Structured
- Programming
- \endsubtree
- \endsubtree
- \subtree
- Genealogy
- \leaf{Ancestors}
- \leaf{Descendants}
- \endsubtree
- \subtree
- Electrical
- Engineering
- \subtree
- Paper
- \leaf{{\it Vitae}}
- \leaf{Announcements}
- \leaf{Proposals}
- \leaf{\TeX{} Samples}
- \endsubtree
- \endsubtree
- \subtree
- Construction
- \leaf{Fences}
- \subtree
- Buildings
- \subtree
- Houses
- \leaf{Human}
- \leaf{Dog}
- \leaf{Bird}
- \leaf{Tree}
- \endsubtree
- \leaf{Barns}
- \leaf{Other}
- \endsubtree
- \leaf{\dots}
- \endsubtree
- \subtree
- Taxonomies
- \leaf{Tree Uses}
- \endsubtree
-\endtree
-\endshowoff
diff --git a/doc/common/up-arrow.gif b/doc/common/up-arrow.gif
deleted file mode 100644
index 82aa8ccc68..0000000000
--- a/doc/common/up-arrow.gif
+++ /dev/null
Binary files differ
diff --git a/doc/common/wksheets.t b/doc/common/wksheets.t
deleted file mode 100644
index b3e5c2c94f..0000000000
--- a/doc/common/wksheets.t
+++ /dev/null
@@ -1,409 +0,0 @@
-@c ****** This comment is here to remind you not to edit the wksheets.t
-@c ****** in any directory but common.
-@c
-@c Figures ...
-@c RTEMS RAM Workspace Worksheet
-@c RTEMS Code Space Worksheet
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Requirements
-
-@section Introduction
-
-Memory is typically a limited resource in real-time
-embedded systems, therefore, RTEMS can be configured to utilize
-the minimum amount of memory while meeting all of the
-applications requirements. Worksheets are provided which allow
-the RTEMS application developer to determine the amount of RTEMS
-code and RAM workspace which is required by the particular
-configuration. Also provided are the minimum code space,
-maximum code space, and the constant data space required by
-RTEMS.
-
-@section Data Space Requirements
-
-RTEMS requires a small amount of memory for its
-private variables. This data area must be in RAM and is
-separate from the RTEMS RAM Workspace. The following
-illustrates the data space required for all configurations of
-RTEMS:
-
-@itemize @bullet
-@item Data Space: RTEMS_DATA_SPACE
-@end itemize
-
-@section Minimum and Maximum Code Space Requirements
-
-A maximum configuration of RTEMS includes the core
-and all managers, including the multiprocessing manager.
-Conversely, a minimum configuration of RTEMS includes only the
-core and the following managers: initialization, task, interrupt
-and fatal error. The following illustrates the code space
-required by these configurations of RTEMS:
-
-@itemize @bullet
-@item Minimum Configuration: RTEMS_MINIMUM_CONFIGURATION
-@item Maximum Configuration: RTEMS_MAXIMUM_CONFIGURATION
-@end itemize
-
-@section RTEMS Code Space Worksheet
-
-The RTEMS Code Space Worksheet is a tool provided to
-aid the RTEMS application designer to accurately calculate the
-memory required by the RTEMS run-time environment. RTEMS allows
-the custom configuration of the executive by optionally
-excluding managers which are not required by a particular
-application. This worksheet provides the included and excluded
-size of each manager in tabular form allowing for the quick
-calculation of any custom configuration of RTEMS. The RTEMS
-Code Space Worksheet is below:
-
-@ifset use-ascii
-@page
-@end ifset
-@ifset use-tex
-@page
-@end ifset
-
-@page
-@center @b{RTEMS Code Space Worksheet}
-@sp 1
-
-@ifset use-ascii
-
-The following is a list of the components of the RTEMS code space. The first
-number in parentheses is the size when the component is included,
-while the second number indicates its size when not included. If the second
-number is "NA", then the component must always be included.
-
-@itemize @bullet
-@item Core (RTEMS_CORE_CODE_SIZE, NA)
-@item Initialization (RTEMS_INITIALIZATION_CODE_SIZE, NA)
-@item Task (RTEMS_TASK_CODE_SIZE, NA)
-@item Interrupt (RTEMS_INTERRUPT_CODE_SIZE, NA)
-@item Clock (RTEMS_CLOCK_CODE_SIZE, NA)
-@item Timer (RTEMS_TIMER_CODE_SIZE, RTEMS_TIMER_CODE_OPTSIZE)
-@item Semaphore (RTEMS_SEMAPHORE_CODE_SIZE, RTEMS_SEMAPHORE_CODE_OPTSIZE)
-@item Message (RTEMS_MESSAGE_CODE_SIZE, RTEMS_MESSAGE_CODE_OPTSIZE)
-@item Event (RTEMS_EVENT_CODE_SIZE, RTEMS_EVENT_CODE_OPTSIZE)
-@item Signal (RTEMS_SIGNAL_CODE_SIZE, RTEMS_SIGNAL_CODE_OPTSIZE)
-@item Partition (RTEMS_PARTITION_CODE_SIZE, RTEMS_PARTITION_CODE_OPTSIZE)
-@item Region (RTEMS_REGION_CODE_SIZE, RTEMS_REGION_CODE_OPTSIZE)
-@item Dual Ported Memory (RTEMS_DPMEM_CODE_SIZE, RTEMS_DPMEM_CODE_OPTSIZE)
-@item I/O (RTEMS_IO_CODE_SIZE, RTEMS_IO_CODE_OPTSIZE)
-@item Fatal Error (RTEMS_FATAL_ERROR_CODE_SIZE, NA)
-@item Rate Monotonic (RTEMS_RATE_MONOTONIC_CODE_SIZE, RTEMS_RATE_MONOTONIC_CODE_OPTSIZE)
-@item Multiprocessing (RTEMS_MULTIPROCESSING_CODE_SIZE, RTEMS_MULTIPROCESSING_CODE_OPTSIZE)
-@end itemize
-@end ifset
-
-@ifset use-tex
-
-@tex
-\line{\hskip 0.50in\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 2.25in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.25in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-&\bf Component && \bf Included && \bf Not Included && \bf Size &\cr\noalign{\hrule}
-&Core && RTEMS_CORE_CODE_SIZE && NA && &\cr\noalign{\hrule}
-&Initialization && RTEMS_INITIALIZATION_CODE_SIZE && NA && &\cr\noalign{\hrule}
-&Task && RTEMS_TASK_CODE_SIZE && NA && &\cr\noalign{\hrule}
-&Interrupt && RTEMS_INTERRUPT_CODE_SIZE && NA && &\cr\noalign{\hrule}
-&Clock && RTEMS_CLOCK_CODE_SIZE && NA && &\cr\noalign{\hrule}
-&Timer && RTEMS_TIMER_CODE_SIZE && RTEMS_TIMER_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Semaphore && RTEMS_SEMAPHORE_CODE_SIZE && RTEMS_SEMAPHORE_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Message && RTEMS_MESSAGE_CODE_SIZE && RTEMS_MESSAGE_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Event && RTEMS_EVENT_CODE_SIZE && RTEMS_EVENT_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Signal && RTEMS_SIGNAL_CODE_SIZE && RTEMS_SIGNAL_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Partition && RTEMS_PARTITION_CODE_SIZE && RTEMS_PARTITION_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Region && RTEMS_REGION_CODE_SIZE && RTEMS_REGION_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Dual Ported Memory && RTEMS_DPMEM_CODE_SIZE && RTEMS_DPMEM_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&I/O && RTEMS_IO_CODE_SIZE && RTEMS_IO_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Fatal Error && RTEMS_FATAL_ERROR_CODE_SIZE && NA && &\cr\noalign{\hrule}
-&Rate Monotonic && RTEMS_RATE_MONOTONIC_CODE_SIZE && RTEMS_RATE_MONOTONIC_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&Multiprocessing && RTEMS_MULTIPROCESSING_CODE_SIZE && RTEMS_MULTIPROCESSING_CODE_OPTSIZE && &\cr\noalign{\hrule}
-&\multispan 5 \bf\hfil Total Code Space Requirements\qquad\hfil&&&\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=4 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Component</STRONG></TD>
- <TD ALIGN=center><STRONG>Included</STRONG></TD>
- <TD ALIGN=center><STRONG>Not Included</STRONG></TD>
- <TD ALIGN=center><STRONG>Size</STRONG></TD></TR>
-<TR><TD ALIGN=center>Core</TD>
- <TD ALIGN=center>RTEMS_CORE_CODE_SIZE</TD>
- <TD ALIGN=center>NA</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Initialization</TD>
- <TD ALIGN=center>RTEMS_INITIALIZATION_CODE_SIZE</TD>
- <TD ALIGN=center>NA</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Task</TD>
- <TD ALIGN=center>RTEMS_TASK_CODE_SIZE</TD>
- <TD ALIGN=center>NA</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Interrupt</TD>
- <TD ALIGN=center>RTEMS_INTERRUPT_CODE_SIZE</TD>
- <TD ALIGN=center>NA</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Clock</TD>
- <TD ALIGN=center>RTEMS_CLOCK_CODE_SIZE</TD>
- <TD ALIGN=center>NA</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Timer</TD>
- <TD ALIGN=center>RTEMS_TIMER_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_TIMER_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Semaphore</TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_SEMAPHORE_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Message</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_MESSAGE_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Event</TD>
- <TD ALIGN=center>RTEMS_EVENT_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_EVENT_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Signal</TD>
- <TD ALIGN=center>RTEMS_SIGNAL_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_SIGNAL_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Partition</TD>
- <TD ALIGN=center>RTEMS_PARTITION_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_PARTITION_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Region</TD>
- <TD ALIGN=center>RTEMS_REGION_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_REGION_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Dual Ported Memory</TD>
- <TD ALIGN=center>RTEMS_DPMEM_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_DPMEM_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>I/O</TD>
- <TD ALIGN=center>RTEMS_IO_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_IO_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Fatal Error</TD>
- <TD ALIGN=center>RTEMS_FATAL_ERROR_CODE_SIZE</TD>
- <TD ALIGN=center>NA</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Rate Monotonic</TD>
- <TD ALIGN=center>RTEMS_RATE_MONOTONIC_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_RATE_MONOTONIC_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center>Multiprocessing</TD>
- <TD ALIGN=center>RTEMS_MULTIPROCESSING_CODE_SIZE</TD>
- <TD ALIGN=center>RTEMS_MULTIPROCESSING_CODE_OPTSIZE</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=center COLSPAN=3>
- <STRONG>Total Code Space Requirements</STRONG></TD>
- <TD><BR></TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@page
-
-@c ****** Next node is set by a sed script in the document Makefile.
-@c ****** This comment is here to remind you not to edit the wksheets.t
-@c ****** in any directory but common.
-
-@section RTEMS RAM Workspace Worksheet
-
-The RTEMS RAM Workspace Worksheet is a tool provided
-to aid the RTEMS application designer to accurately calculate
-the minimum memory block to be reserved for RTEMS use. This
-worksheet provides equations for calculating the amount of
-memory required based upon the number of objects configured,
-whether for single or multiple processor versions of the
-executive. This information is presented in tabular form, along
-with the fixed system requirements, allowing for quick
-calculation of any application defined configuration of RTEMS.
-The RTEMS RAM Workspace Worksheet is provided below:
-
-@ifset use-ascii
-@page
-@end ifset
-@ifset use-tex
-@sp 2
-@end ifset
-
-@center @b{RTEMS RAM Workspace Worksheet}
-@sp 2
-
-@ifset use-ascii
-The total RTEMS RAM Workspace required is the sum of the following:
-
-@itemize @bullet
-@item maximum_tasks * RTEMS_BYTES_PER_TASK
-@item maximum_timers * RTEMS_BYTES_PER_TIMER
-@item maximum_semaphores * RTEMS_BYTES_PER_SEMAPHORE
-@item maximum_message_queues * RTEMS_BYTES_PER_MESSAGE_QUEUE
-@item maximum_regions * RTEMS_BYTES_PER_REGION
-@item maximum_partitions * RTEMS_BYTES_PER_PARTITION
-@item maximum_ports * RTEMS_BYTES_PER_PORT
-@item maximum_periods * RTEMS_BYTES_PER_PERIOD
-@item maximum_extensions * RTEMS_BYTES_PER_EXTENSION
-@item Floating Point Tasks * RTEMS_BYTES_PER_FP_TASK
-@item Task Stacks
-@item maximum_nodes * RTEMS_BYTES_PER_NODE
-@item maximum_global_objects * RTEMS_BYTES_PER_GLOBAL_OBJECT
-@item maximum_proxies * RTEMS_BYTES_PER_PROXY
-@item Fixed System Requirements of RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS
-@end itemize
-@end ifset
-
-@ifset use-tex
-@tex
-\line{\hskip 0.75in\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 3.0in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.25in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-& \bf Description && \bf Equation && \bf Bytes Required &\cr\noalign{\hrule}
-& maximum\_tasks && * RTEMS_BYTES_PER_TASK = &&&\cr\noalign{\hrule}
-& maximum\_timers && * RTEMS_BYTES_PER_TIMER = &&&\cr\noalign{\hrule}
-& maximum\_semaphores && * RTEMS_BYTES_PER_SEMAPHORE = &&&\cr\noalign{\hrule}
-& maximum\_message\_queues && * RTEMS_BYTES_PER_MESSAGE_QUEUE = &&&\cr\noalign{\hrule}
-& maximum\_regions && * RTEMS_BYTES_PER_REGION = &&&\cr\noalign{\hrule}
-& maximum\_partitions && * RTEMS_BYTES_PER_PARTITION = &&&\cr\noalign{\hrule}
-& maximum\_ports && * RTEMS_BYTES_PER_PORT = &&&\cr\noalign{\hrule}
-& maximum\_periods && * RTEMS_BYTES_PER_PERIOD = &&&\cr\noalign{\hrule}
-& maximum\_extensions && * RTEMS_BYTES_PER_EXTENSION = &&&\cr\noalign{\hrule}
-& Floating Point Tasks && * RTEMS_BYTES_PER_FP_TASK = &&&\cr\noalign{\hrule}
-& Task Stacks &&\hskip 2.3em=&&&\cr\noalign{\hrule}
-& Total Single Processor Requirements &&&&&\cr\noalign{\hrule}
-}}\hfil}
-
-\line{\hskip 0.75in\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 3.0in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.25in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-& \bf Description && \bf Equation && \bf Bytes Required &\cr\noalign{\hrule}
-& maximum\_nodes && * RTEMS_BYTES_PER_NODE = &&&\cr\noalign{\hrule}
-& maximum\_global\_objects && * RTEMS_BYTES_PER_GLOBAL_OBJECT = &&&\cr\noalign{\hrule}
-& maximum\_proxies && * RTEMS_BYTES_PER_PROXY = &&&\cr\noalign{\hrule}
-}}\hfil}
-
-\line{\hskip 0.75in\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 3.0in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.25in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-& Total Multiprocessing Requirements &&&&&\cr\noalign{\hrule}
-& Fixed System Requirements && RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS &&&\cr\noalign{\hrule}
-& Total Single Processor Requirements &&&&&\cr\noalign{\hrule}
-& Total Multiprocessing Requirements &&&&&\cr\noalign{\hrule}
-& Minimum Bytes for RTEMS Workspace &&&&&\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=3 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Description</STRONG></TD>
- <TD ALIGN=center><STRONG>Equation</STRONG></TD>
- <TD ALIGN=center><STRONG>Bytes Required</STRONG></TD></TR>
-<TR><TD ALIGN=left>maximum_tasks</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_TASK =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_timers</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_TIMER =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_semaphores</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_SEMAPHORE =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_message_queues</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_MESSAGE_QUEUE =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_regions</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_REGION =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_partitions</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_PARTITION =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_ports</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_PORT =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_periods</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_PERIOD =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_extensions</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_EXTENSION =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>Floating Point Tasks</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_FP_TASK =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left COLSPAN=2>Task Stacks</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left COLSPAN=2>
- <STRONG>Total Single Processor Requirements</STRONG></TD>
- <TD><BR></TD></TR>
-<TR></TR>
-<TR><TD ALIGN=center><STRONG>Description</STRONG></TD>
- <TD ALIGN=center><STRONG>Equation</STRONG></TD>
- <TD ALIGN=center><STRONG>Bytes Required</STRONG></TD></TR>
-<TR><TD ALIGN=left>maximum_nodes</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_NODE =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_global_objects</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_GLOBAL_OBJECT =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left>maximum_proxies</TD>
- <TD ALIGN=right>* RTEMS_BYTES_PER_PROXY =</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left COLSPAN=2>
- <STRONG>Total Multiprocessing Requirements</STRONG></TD>
- <TD><BR></TD></TR>
-<TR></TR>
-<TR><TD ALIGN=left COLSPAN=2>Fixed System Requirements</TD>
- <TD ALIGN=center>RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS</TD></TR>
-<TR><TD ALIGN=left COLSPAN=2>Total Single Processor Requirements</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left COLSPAN=2>Total Multiprocessing Requirements</TD>
- <TD><BR></TD></TR>
-<TR><TD ALIGN=left COLSPAN=2>
- <STRONG>Minimum Bytes for RTEMS Workspace</STRONG></TD>
- <TD><BR></TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
diff --git a/doc/develenv/Makefile b/doc/develenv/Makefile
deleted file mode 100644
index c93c8da2d7..0000000000
--- a/doc/develenv/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=develenv
-DISTRIBUTION_LEVEL=public
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi
-
-FILES=compile.texi $(PROJECT).texi direct.texi intro.texi sample.texi utils.texi
-
-info: dirs $(PROJECT)
- cp $(PROJECT) $(INFO_INSTALL)
-
-$(PROJECT): $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- -cd .. ; gmake headers
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core *.html
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-* _*
-
diff --git a/doc/develenv/compile.texi b/doc/develenv/compile.texi
deleted file mode 100644
index 2ac1069a86..0000000000
--- a/doc/develenv/compile.texi
+++ /dev/null
@@ -1,159 +0,0 @@
-@c This chapter is not currently in the Development Environment Guide.
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Compilation and GNU Make Stanzas, Compilation and GNU Make Stanzas Building the Entire Tree, Test Suite Source Directory, Top
-@end ifinfo
-@chapter Compilation and GNU Make Stanzas
-@ifinfo
-@menu
-* Compilation and GNU Make Stanzas Building the Entire Tree::
-* Compilation and GNU Make Stanzas Making a Component::
-* Compilation and GNU Make Stanzas Optional Manager Support::
-@end menu
-@end ifinfo
-
-RTEMS is compiled using the GNU gmake(1G) utilities.
-All examples in this section are with the gmake(1G) command.
-Note that the installation procedure for GNU Make installs it as
-make. It is referred to as gmake in this document to
-distinguish it from any other make utilities which may also be
-on the development system.
-
-The GNU Make utility uses a file that describes the
-relationships among the files and the operations necessary for
-updating each file. The GNU Make utility uses stanzas to specify
-which set of relationships to update. Each component and suite
-control directory contains a make control file, Makefile, which
-describes the relationships which must be checked and the
-associated update operations for each stanza. This facility is
-used to perform compilation, to remove intermediate files, to
-install RTEMS, and to maintain release and working set source
-and documentation notebooks. The following is a list of stanzas
-used by RTEMS make control files:
-
-@ifset use-texinfo-tables
-@table @code
-@item all
-perform compilation but do not install
-
-@item install
-perform compilation if directory contains source but do not install
-
-@item clean
-delete most generated files and directories for the current CPU and target
-
-@item clobber
-delete all generated files and directories for the current CPU and target
-@end table
-@end ifset
-
-@ifclear use-texinfo-tables
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center>all</TD>
- <TD ALIGN=center>perform compilation but do not install</TD></TR>
-<TR><TD ALIGN=center>install</TD>
- <TD ALIGN=center>perform compilation if directory contains source
- but do not install</TD></TR>
-<TR><TD ALIGN=center>clean</TD>
- <TD ALIGN=center>delete most generated files and directories for
- the current CPU and target</TD></TR>
-<TR><TD ALIGN=center>clobber</TD>
- <TD ALIGN=center>delete all generated files and directories for
- the current CPU and target</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifclear
-
-@ifinfo
-@node Compilation and GNU Make Stanzas Building the Entire Tree, Compilation and GNU Make Stanzas Making a Component, Compilation and GNU Make Stanzas, Compilation and GNU Make Stanzas
-@end ifinfo
-@section Building the Entire Tree
-
-At the top of the C source tree, execute the command
-gmake all. This will build and install all components and tests
-into the directory <TARGET> in this directory.
-
-@ifinfo
-@node Compilation and GNU Make Stanzas Making a Component, Compilation and GNU Make Stanzas Optional Manager Support, Compilation and GNU Make Stanzas Building the Entire Tree, Compilation and GNU Make Stanzas
-@end ifinfo
-@section Making a Component
-
-A single component can be compiled by changing to the
-directory which contains that component and performing the
-following command:
-
-@example
-gmake
-@end example
-
-
-This is equivalent to the following command:
-
-@example
-gmake all
-@end example
-
-Both commands will result in the GNU Make utility
-determining which files require compilation or assembly. If any
-files require compilation or assembly, then these operations
-will be performed followed by the appropriate archive or link
-command. Files installed are placed in subdirectories under the
-install point. The install point is determined by the setting
-of the variable PROJECT_HOME in the file
-c/make/custom/<TARGET>.cfg.
-
-If the current directory is not a leaf directory,
-then the requested operation will be performed recursively to
-all subdirectories under the current directory.
-
-By specifying one of the other stanzas supported by
-the Makefile, the GNU Make utility can be used to perform such
-operations as removing all automatically generated files in a
-component (clean and clobbers stanza).
-
-NOTE: For many components it is not possible to
-compile them until other components have been installed.
-
-@ifinfo
-@node Compilation and GNU Make Stanzas Optional Manager Support, Sample Applications, Compilation and GNU Make Stanzas Making a Component, Compilation and GNU Make Stanzas
-@end ifinfo
-@section Optional Manager Support
-
-RTEMS allows the C applications developer to build
-images that only contain those components of the executive that
-are needed, leaving out those that will not be utilized. This
-is accomplished by the RTEMS Makefile system linking in the
-"stub" versions of the optional managers in the place of those
-managers not needed by the specific application. The
-application Makefile sets the system variable $(MANAGERS) list
-to contain those managers that are required by the application.
-The RTEMS Makefile system then is able to build a list of
-managers that are unwanted, effectively linking in the stubbed
-versions of these managers before the RTEMS library is built.
-
-For more information and implementation details refer
-to the following files:
-
-@itemize @bullet
-@item c/make/leaf.cfg,
-
-@item a Makefile for a test or sample application, and
-
-@item a compiler description file from c/make/compilers
-@end itemize
-
-These files demonstrate the use of $(MANAGERS) and
-how the unwanted managers are handled.
-
-
diff --git a/doc/develenv/develenv.texi b/doc/develenv/develenv.texi
deleted file mode 100644
index ce6d250a2c..0000000000
--- a/doc/develenv/develenv.texi
+++ /dev/null
@@ -1,122 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename develenv
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file
-@c
-
-@c Joel's Questions
-@c
-@c 1. Why does paragraphindent only impact makeinfo?
-@c 2. Why does paragraphindent show up in HTML?
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS C User: (develenv). The C User's Guide
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c variable substitution info:
-@c
-@c @set LANGUAGE C
-@c the language is @value{LANGUAGE}
-@c NOTE: don't use underscore in the name
-@c
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Development Environment Guide
-
-@setchapternewpage odd
-@settitle RTEMS Development Environment Guide
-@titlepage
-@finalout
-
-@title RTEMS Development Environment Guide
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include intro.texi
-@include direct.texi
-@c @include compile.texi
-@include sample.texi
-@include utils.texi
-
-@ifinfo
-@node Top, Introduction, (dir), (dir)
-@top develenv
-
-This is the online version of the RTEMS Development Environment Guide.
-
-@c * Compilation and GNU Make Stanzas::
-
-@menu
-* Introduction::
-* Directory Structure::
-* Sample Applications::
-* RTEMS Specific Utilities::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, RTEMS Specific Utilities Ada Language Specific Utilities, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/develenv/direct.texi b/doc/develenv/direct.texi
deleted file mode 100644
index 13f366509f..0000000000
--- a/doc/develenv/direct.texi
+++ /dev/null
@@ -1,730 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Directory Structure, Directory Structure Suites, Introduction, Top
-@end ifinfo
-@chapter Directory Structure
-@ifinfo
-@menu
-* Directory Structure Suites::
-@end menu
-@end ifinfo
-
-The RTEMS directory structure is designed to meet
-the following requirements:
-
-@itemize @bullet
-@item encourage development of modular components.
-
-@item isolate processor and target dependent code, while
-allowing as much common source code as possible to be shared
-across multiple processors and targets.
-
-@item allow multiple RTEMS users to perform simultaneous
-compilation of RTEMS and its support facilities for different
-processors and targets.
-@end itemize
-
-The resulting directory structure has processor and
-target dependent source files isolated from generic files. When
-RTEMS is built, object directories and an install point will be
-automatically created based upon the target BSP selected. The
-placement of object files based upon the selected BSP name
-insures that object files are not mixed across CPUs or targets.
-This in combination with the make files allows the specific
-compilation options to be tailored for a particular target
-board. For example, the efficiency of the memory subsystem for
-a particular target board may be sensitive to the alignment of
-data structures, while on another target board with the same
-processor memory may be very limited. For the first target, the
-options could specify very strict alignment requirements, while
-on the second the data structures could be "packed" to conserve
-memory. It is impossible to achieve this degree of flexibility
-without providing source code.
-@ifinfo
-@node Directory Structure Suites, C Suites, Directory Structure, Directory Structure
-@end ifinfo
-@section Suites
-@ifinfo
-@menu
-* C Suites::
-* Executive Source Directory::
-* Support Library Source Directory::
-* Test Suite Source Directory::
-@end menu
-@end ifinfo
-
-The RTEMS source tree is organized based on the
-following four variables:
-
-@itemize @bullet
-@item language,
-
-@item target processor,
-
-@item target board, and
-
-@item compiler vendor (Ada only).
-@end itemize
-
-The language may be either C or Ada and there is
-currently nothing shared between the source trees for these two
-implementations of RTEMS. The user generally selects the
-subdirectory for the implementation they are using and ignores
-that for the other implementation. The only exceptions to this
-normally occurs when comparing the source code for the two
-implementations or when porting both to a new CPU or target
-board. The following shows the top level RTEMS directory
-structure which includes directories for each language
-implementation and a language independent source documentation
-directory. The source documentation directory is currently not
-supported.
-
-@c
-@c Tree 1 - Top Level
-@c
-
-@ifset use-ascii
-@example
-@group
- RTEMS
- |
-+-----------------------+-----------------------+
-| |
-c doc
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-
-@tex
-{\parskip=0pt\offinterlineskip%
-\hskip 15.0em
-\hskip 1.25em\hbox to 3.00em{\hss{RTEMS}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par\penalty10000
-\hskip 15.0em
-\hskip 2.75em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 15.0em
-\hskip 0.25em\vrule width2.50em height-0.407ex depth0.500ex%
-\vrule width.04em\vrule width2.50em height-0.407ex depth0.500ex%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 15.0em
-\hskip 0.25em\vrule width.04em%
-\hskip 4.92em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 15.0em
-\hskip 0.00em\hbox to 0.50em{\hss{c}\hss}%
-\hskip 1.50em\hbox to 1.50em{\hss{ }\hss}%
-\hskip 1.00em\hbox to 1.50em{\hss{doc}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par}
-@end tex
-@end ifset
-
-@c
-@c for now continue to use the ascii
-@c
-@ifset use-html
-@example
-@group
- RTEMS
- |
-+-----------------------+-----------------------+
-| |
-c doc
-@end group
-@end example
-@html
-@end html
-@end ifset
-
-Each of the following sections will describe the
-contents of the directories in the RTEMS source
-tree.
-
-@ifinfo
-@node C Suites, Executive Source Directory, Directory Structure Suites, Directory Structure Suites
-@end ifinfo
-@subsection C Suites
-
-The following table lists the suites currently included with the
-C implementation of RTEMS and the directory in which they may be located:
-
-@ifset use-texinfo-tables
-@table @code
-@item Support Libraries (BSPs, C library, CPU support)
-$RTEMS_ROOT/c/src/lib
-
-@item Single Processor Tests
-$RTEMS_ROOT/c/src/tests/sptests
-
-@item Timing Tests
-$RTEMS_ROOT/c/src/tests/tmtests
-
-@item Multiprocessor Tests
-$RTEMS_ROOT/c/src/tests/mptests
-
-@item Sample Applications
-$RTEMS_ROOT/c/src/tests/samples
-
-@item RTEMS Build Tools
-$RTEMS_SRC_BASE/c/build_tools
-
-@item Make Support
-$RTEMS_ROOT/c/make
-@end table
-@end ifset
-
-@ifclear use-texinfo-tables
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center>Support Libraries (BSPs, C library, CPU support)</TD>
- <TD ALIGN=center>$RTEMS_ROOT/c/src/lib</TD></TR>
-<TR><TD ALIGN=center>Single Processor Tests</TD>
- <TD ALIGN=center>$RTEMS_ROOT/c/src/tests/sptests</TD></TR>
-<TR><TD ALIGN=center>Timing Tests</TD>
- <TD ALIGN=center>$RTEMS_ROOT/c/src/tests/tmtests</TD></TR>
-<TR><TD ALIGN=center>Multiprocessor Tests</TD>
- <TD ALIGN=center>$RTEMS_ROOT/c/src/tests/mptests</TD></TR>
-<TR><TD ALIGN=center>Sample Applications</TD>
- <TD ALIGN=center>$RTEMS_ROOT/c/src/tests/samples</TD></TR>
-<TR><TD ALIGN=center>RTEMS Build Tools</TD>
- <TD ALIGN=center>$RTEMS_SRC_BASE/c/build_tools</TD></TR>
-<TR><TD ALIGN=center>Make Support</TD>
- <TD ALIGN=center>$RTEMS_ROOT/c/make</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifclear
-
-
-The top level directory structure for the C implementation of RTEMS
-is as follows:
-
-@c
-@c Tree 2 - Top C Level
-@c
-
-@ifset use-ascii
-@example
-@group
- C
- |
- +----------+-----------+----------+
- | | | |
-build_tools make src update_tools
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-
-@tex
-{\parskip=0pt\offinterlineskip%
-\hskip 08.0em
-\hskip 13.00em\hbox to 0.50em{\hss{C}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par\penalty10000
-\hskip 08.0em
-\hskip 13.25em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 08.0em
-\hskip 1.75em\vrule width11.50em height-0.407ex depth0.500ex%
-\vrule width.04em\vrule width11.50em height-0.407ex depth0.500ex%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 08.0em
-\hskip 1.75em\vrule width.04em%
-\hskip 5.71em\vrule width.04em%
-\hskip 5.71em\vrule width.04em%
-\hskip 5.71em\vrule width.04em%
-\hskip 5.71em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 08.0em
-\hskip 0.00em\hbox to 3.50em{\hss{Modules}\hss}%
-\hskip 1.00em\hbox to 6.00em{\hss{build\_tools}\hss}%
-\hskip 1.75em\hbox to 2.00em{\hss{make}\hss}%
-\hskip 4.00em\hbox to 1.50em{\hss{src}\hss}%
-\hskip 1.75em\hbox to 6.50em{\hss{update\_tools}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par}
-@end tex
-@end ifset
-
-@ifset use-html
-@example
-@group
- C
- |
- +----------+-----------+----------+
- | | | |
-build_tools make src update_tools
-@end group
-@end example
-@html
-@end html
-@end ifset
-
-This directory contains the subdirectories which
-contain the entire C implementation of the RTEMS executive.
-The "build-tools" directory contains an assortment of support tools
-for the RTEMS development environment. Two subdirectories exist
-under "build-tools" which contain scripts (executables) and
-source for the support tools. The "make" directory contains
-configuration files and subdirectories which provide a robust
-host and cross-target makefile system supporting the building of
-the executive for numerous application environments. The
-"update_tools" directory contains utilities which aid in the
-updating from a previous version to the current version of the
-RTEMS executive.
-
-The "src" directory structure for the C implementation of RTEMS is as follows:
-
-@c
-@c Tree 3 - Top C src Level
-@c
-
-@ifset use-ascii
-@example
-@group
- C Source
- |
- +-----------------------+-----------------------+
- | | |
-exec lib tests
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-
-@tex
-{\parskip=0pt\offinterlineskip%
-\hskip 15.0em
-\hskip 2.00em\hbox to 4.00em{\hss{C Source}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par\penalty10000
-\hskip 15.0em
-\hskip 4.00em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 15.0em
-\hskip 1.00em\vrule width3.00em height-0.407ex depth0.500ex%
-\vrule width.04em\vrule width3.00em height-0.407ex depth0.500ex%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 15.0em
-\hskip 1.00em\vrule width.04em%
-\hskip 2.96em\vrule width.04em%
-\hskip 2.96em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 15.0em
-\hskip 0.00em\hbox to 2.00em{\hss{exec}\hss}%
-\hskip 1.25em\hbox to 1.50em{\hss{lib}\hss}%
-\hskip 1.00em\hbox to 2.50em{\hss{tests}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par}
-@end tex
-@end ifset
-
-@ifset use-html
-@example
-@group
- C Source
- |
- +-----------------------+-----------------------+
- | | |
-exec lib tests
-@end group
-@end example
-@html
-@end html
-@end ifset
-
-This directory contains all source files that
-comprises the RTEMS executive, supported target board support
-packages, and the RTEMS Test Suite.
-
-@ifinfo
-@node Executive Source Directory, Support Library Source Directory, C Suites, Directory Structure Suites
-@end ifinfo
-@subsection Executive Source Directory
-
-The "exec" directory structure for the C implementation is as follows:
-
-@c
-@c Tree 4 - C Executive Tree
-@c
-
-@ifset use-ascii
-@example
-@group
- C Executive
- |
- +-----------+----------+-----------+----------+
- | | | | |
-posix rtems sapi score wrapup
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-
-@tex
-{\parskip=0pt\offinterlineskip%
-\hskip 10.0em
-\hskip 6.00em\hbox to 5.50em{\hss{C Executive}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par\penalty10000
-\hskip 10.0em
-\hskip 8.75em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 10.0em
-\hskip 1.25em\vrule width7.50em height-0.407ex depth0.500ex%
-\vrule width.04em\vrule width7.50em height-0.407ex depth0.500ex%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 10.0em
-\hskip 1.25em\vrule width.04em%
-\hskip 3.71em\vrule width.04em%
-\hskip 3.71em\vrule width.04em%
-\hskip 3.71em\vrule width.04em%
-\hskip 3.71em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 10.0em
-\hskip 0.00em\hbox to 2.50em{\hss{posix}\hss}%
-\hskip 1.25em\hbox to 2.50em{\hss{rtems}\hss}%
-\hskip 1.50em\hbox to 2.00em{\hss{sapi}\hss}%
-\hskip 1.50em\hbox to 2.50em{\hss{score}\hss}%
-\hskip 1.00em\hbox to 3.00em{\hss{wrapup}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par}
-@end tex
-@end ifset
-
-@ifset use-html
-@example
-@group
- C Executive
- |
- +-----------+----------+-----------+----------+
- | | | | |
-posix rtems sapi score wrapup
-@end group
-@end example
-@html
-@end html
-@end ifset
-
-This directory contains a set of subdirectories which
-contains the source files comprising the executive portion of
-the RTEMS development environment. At this point the API
-specific and "supercore" source code files are separated into
-distinct directory trees. The "rtems" and the "posix"
-subdirectories contain the C language source files for each
-module comprising the respective API. Also included in this
-directory are the subdirectories "sapi" and "score" which are
-the supercore modules. Within the "score" directory the CPU
-dependent modules are found.
-
-The "cpu" directory contains a subdirectory for each
-target CPU supported by the @value{RELEASE} release of the RTEMS
-executive. Each processor directory contains the CPU dependent
-code necessary to host RTEMS. The "no_cpu" directory provides a
-starting point for developing a new port to an unsupported
-processor. The files contained within the "no_cpu" directory
-may also be used as a reference for the other ports to specific
-processors.
-
-@ifinfo
-@node Support Library Source Directory, Test Suite Source Directory, Executive Source Directory, Directory Structure Suites
-@end ifinfo
-@subsection Support Library Source Directory
-
-The "lib" directory contains the support libraries and BSPS.
-Board support packages (BSPs), processor environment start up code,
-C library support, the FreeBSD TCP/IP stack, common BSP header files,
-and miscellaneous support functions are provided in the subdirectories.
-These are combined with the RTEMS executive object to form the single
-RTEMS library which installed.
-
-@c
-@c Tree 6 - Libraries
-@c
-
-
-The "libbsp" directory contains a directory for each CPU family supported
-by RTEMS. Beneath each CPU directory is a directory for each BSP for that
-processor family.
-
-@c
-@c Tree 7 - C BSP Library
-@c
-
-The "libbsp" directory provides all the BSPs provided with this
-release of the RTEMS executive. The subdirectories are
-divided, as discussed previously, based on specific processor
-family, then further breaking down into specific target board
-environments. The "shmdr" subdirectory provides the
-implementation of a shared memory driver which supports the
-multiprocessing portion of the executive. In addition, two
-starting point subdirectories are provided for reference. The
-"no_cpu" subdirectory provides a template BSP which can be used
-to develop a specific BSP for an unsupported target board. The
-"stubdr" subdirectory provides stubbed out BSPs. These files
-may aid in preliminary testing of the RTEMS development
-environment that has been built for no particular target in mind.
-
-Below each CPU dependent directory is a directory for each target BSP
-supported in this release.
-
-Each BSP provides the modules which comprise an RTEMS BSP. The
-modules are separated into the subdirectories "clock", "console",
-"include", "shmsupp", "startup", and "timer" as shown in the following
-figure:
-
-@c
-@c Tree 8 - Each BSP
-@c
-
-@ifset use-ascii
-@example
-@group
- Each BSP
- |
- +-----------+----------+-----+-----+----------+----------+
- | | | | | |
-clock console include shmsupp startup timer
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-
-@tex
-{\parskip=0pt\offinterlineskip%
-\hskip 10.0em
-\hskip 10.25em\hbox to 4.50em{\hss{Each BSP}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par\penalty10000
-\hskip 10.0em
-\hskip 12.50em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 10.0em
-\hskip 1.25em\vrule width11.25em height-0.407ex depth0.500ex%
-\vrule width.04em\vrule width11.25em height-0.407ex depth0.500ex%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 10.0em
-\hskip 1.25em\vrule width.04em%
-\hskip 4.46em\vrule width.04em%
-\hskip 4.46em\vrule width.04em%
-\hskip 4.46em\vrule width.04em%
-\hskip 4.46em\vrule width.04em%
-\hskip 4.46em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 10.0em
-\hskip 0.00em\hbox to 2.50em{\hss{clock}\hss}%
-\hskip 1.50em\hbox to 3.50em{\hss{console}\hss}%
-\hskip 1.00em\hbox to 3.50em{\hss{include}\hss}%
-\hskip 1.00em\hbox to 3.50em{\hss{shmsupp}\hss}%
-\hskip 1.00em\hbox to 3.50em{\hss{startup}\hss}%
-\hskip 1.50em\hbox to 2.50em{\hss{timer}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par}
-@end tex
-@end ifset
-
-@ifset use-html
-@example
-@group
- Each BSP
- |
- +-----------+----------+-----+-----+----------+----------+
- | | | | | |
-clock console include ... startup timer
-@end group
-@end example
-@html
-@end html
-@end ifset
-
-@ifinfo
-@node Test Suite Source Directory, Sample Applications, Support Library Source Directory, Directory Structure Suites
-@end ifinfo
-@subsection Test Suite Source Directory
-
-The "tests" directory structure for the C
-implementation is as follows:
-
-@c
-@c Tree 9 - C Tests
-@c
-
-@ifset use-ascii
-@example
-@group
- C Tests
- |
- +----------+---------+----------+---------+---------+---------+
- | | | | | | |
-libtests sptests support tmtests mptests psxtest samples
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-
-@tex
-{\parskip=0pt\offinterlineskip%
-\hskip 05.0em
-\hskip 14.50em\hbox to 3.50em{\hss{C Tests}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par\penalty10000
-\hskip 05.0em
-\hskip 16.25em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 05.0em
-\hskip 2.00em\vrule width14.25em height-0.407ex depth0.500ex%
-\vrule width.04em\vrule width14.25em height-0.407ex depth0.500ex%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 05.0em
-\hskip 2.00em\vrule width.04em%
-\hskip 4.71em\vrule width.04em%
-\hskip 4.71em\vrule width.04em%
-\hskip 4.71em\vrule width.04em%
-\hskip 4.71em\vrule width.04em%
-\hskip 4.71em\vrule width.04em%
-\hskip 4.71em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 05.0em
-\hskip 0.00em\hbox to 4.00em{\hss{libtests}\hss}%
-\hskip 1.00em\hbox to 3.50em{\hss{sptests}\hss}%
-\hskip 1.25em\hbox to 3.50em{\hss{support}\hss}%
-\hskip 1.25em\hbox to 3.50em{\hss{tmtests}\hss}%
-\hskip 1.25em\hbox to 3.50em{\hss{mptests}\hss}%
-\hskip 1.75em\hbox to 2.50em{\hss{tools}\hss}%
-\hskip 1.75em\hbox to 3.50em{\hss{samples}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par}
-@end tex
-@end ifset
-
-@ifset use-html
-@example
-@group
- C Tests
- |
- +----------+---------+----------+---------+---------+---------+
- | | | | | | |
-libtests sptests support tmtests mptests tools samples
-@end group
-@end example
-@html
-@end html
-@end ifset
-
-This directory provides the entire RTEMS Test Suite
-which includes the single processor tests, multiprocessor tests,
-timing tests, library tests, and sample tests. Additionally,
-subdirectories for support functions and test related header
-files are provided.
-
-The "sptests" subdirectory consists of twenty-four
-tests designed to cover the entire executive code. The
-"spfatal" test will verify any code associated with the
-occurrence of a fatal error. Also provided is a test which
-will determine the size of the RTEMS executive.
-
-The multiprocessor test are provided in "mptests".
-Fourteen tests are provided in this subdirectory which address
-two node configurations and cover the multiprocessor code found
-in RTEMS.
-
-Tests that time each directive and a set of critical
-executive functions are provided in the "tmtests" subdirectory.
-Within this subdirectory thirty-one tests are provided along
-with a subdirectory to contain each targets timing results.
-
-The "samples" directory structure for the C
-implementation is as follows:
-
-@c
-@c Tree 10 - C Samples
-@c
-
-@ifset use-ascii
-@example
-@group
- C Samples
- |
- +-----------+----------+-----+-----+----------+----------+
- | | | | | |
-base_mp base_sp cdtest hello paranoia ticker
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-
-@tex
-{\parskip=0pt\offinterlineskip%
-\hskip 05.0em
-\hskip 12.25em\hbox to 4.50em{\hss{C Samples}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par\penalty10000
-\hskip 05.0em
-\hskip 14.50em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 05.0em
-\hskip 2.00em\vrule width12.50em height-0.407ex depth0.500ex%
-\vrule width.04em\vrule width12.50em height-0.407ex depth0.500ex%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 05.0em
-\hskip 2.00em\vrule width.04em%
-\hskip 4.96em\vrule width.04em%
-\hskip 4.96em\vrule width.04em%
-\hskip 4.96em\vrule width.04em%
-\hskip 4.96em\vrule width.04em%
-\hskip 4.96em\vrule width.04em%
-\vrule width0em height1.500ex depth0.500ex\par\penalty10000
-\hskip 05.0em
-\hskip 0.00em\hbox to 4.00em{\hss{base\_mp}\hss}%
-\hskip 1.00em\hbox to 4.00em{\hss{base\_sp}\hss}%
-\hskip 1.50em\hbox to 3.00em{\hss{cdtest}\hss}%
-\hskip 2.25em\hbox to 2.50em{\hss{hello}\hss}%
-\hskip 1.75em\hbox to 4.00em{\hss{paranoia}\hss}%
-\hskip 1.50em\hbox to 3.00em{\hss{ticker}\hss}%
-\vrule width0em height1.972ex depth0.812ex\par}
-@end tex
-@end ifset
-
-@ifset use-html
-@example
-@group
- C Samples
- |
- +-----------+----------+-----+-----+----------+----------+
- | | | | | |
-base_mp base_sp cdtest hello paranoia ticker
-@end group
-@end example
-@html
-@end html
-@end ifset
-
-This directory provides sample application tests
-which aid in the testing a newly built RTEMS environment, a new
-BSP, or as starting points for the development of an application
-using the RTEMS executive. A Hello World test is provided in
-the subdirectory "hello". This test is helpful when testing new
-versions of RTEMS, BSPs, or modifications to any portion of the
-RTEMS development environment. The "ticker" subdirectory
-provides a test for verification of clock chip device drivers of
-BSPs. A simple single processor test similar to those in the
-single processor test suite is provided in "base_sp". A simple
-two node multiprocessor test capable of testing an newly
-developed MPCI layer is provided in "base_mp". The "cdtest"
-subdirectory provides a simple C++ application using
-constructors and destructors. The final sample test is a
-public domain floating point and math library toolset test is
-provided in "paranoia".
diff --git a/doc/develenv/intro.texi b/doc/develenv/intro.texi
deleted file mode 100644
index 95ae797978..0000000000
--- a/doc/develenv/intro.texi
+++ /dev/null
@@ -1,58 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Introduction, Directory Structure, Top, Top
-@end ifinfo
-@chapter Introduction
-
-This document describes the RTEMS development
-environment. Discussions are provided for the following topics:
-
-@itemize @bullet
-@item the directory structure used by RTEMS,
-
-@item usage of the GNU Make utility within the RTEMS
-development environment,
-
-@item sample applications, and
-
-@item the RTEMS specific utilities.
-@end itemize
-
-RTEMS was designed as a reusable software component.
-Highly reusable software such as RTEMS is typically distributed
-in the form of source code without providing any support tools.
-RTEMS is the foundation for a complex family of facilities
-including board support packages, device drivers, and support
-libraries. The RTEMS Development Environment is not a CASE
-tool. It is a collection of tools designed to reduce the
-complexity of using and enhancing the RTEMS family. Tools are
-provided which aid in the management of the development,
-maintenance, and usage of RTEMS, its run-time support
-facilities, and applications which utilize the executive.
-
-A key component of the RTEMS development environment
-is the GNU family of free tools. This is robust set of
-development and POSIX compatible tools for which source code is
-freely available. The primary compilers, assemblers, linkers,
-and make utility used by the RTEMS development team are the GNU
-tools. They are highly portable supporting a wide variety of
-host computers and, in the case of the development tools, a wide
-variety of target processors.
-
-It is recommended that the RTEMS developer become
-familiar with the RTEMS Development Environment before
-proceeding with any modifications to the executive source tree.
-The source code for the executive is very modular and source
-code is divided amongst directories based upon functionality as
-well as dependencies on CPU and target board. This organization
-is aimed at isolating and minimizing non-portable code. This
-has the immediate result that adding support for a new CPU or
-target board requires very little "wandering" around the source
-tree.
diff --git a/doc/develenv/sample.texi b/doc/develenv/sample.texi
deleted file mode 100644
index e5e094608b..0000000000
--- a/doc/develenv/sample.texi
+++ /dev/null
@@ -1,287 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Sample Applications, Sample Applications Introduction, Test Suite Source Directory, Top
-@end ifinfo
-@chapter Sample Applications
-@ifinfo
-@menu
-* Sample Applications Introduction::
-* Sample Applications Hello World::
-* Sample Applications Clock Tick::
-* Sample Applications Base Single Processor Application::
-* Sample Applications Base Multiple Processor Application::
-* Sample Applications Constructor/Destructor C++ Application::
-* Sample Applications Paranoia Floating Point Application::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Sample Applications Introduction, Sample Applications Hello World, Sample Applications, Sample Applications
-@end ifinfo
-@section Introduction
-
-RTEMS is shipped with the following sample applications:
-
-@itemize @bullet
-@item Hello World - C and Ada
-
-@item Clock Tick - C and Ada
-
-@item Base Single Processor - C and Ada
-
-@item Base Multiple Processor - C and Ada
-
-@item Constructor/Destructor C++ Test - C only if C++
-enabled
-
-@item Paranoia Floating Point Test - C only
-@end itemize
-
-These applications are intended to illustrate the
-basic format of RTEMS single and multiple processor
-applications. In addition, these relatively simple applications
-can be used to test locally developed board support packages and
-device drivers.
-
-The reader should be familiar with the terms used and
-material presented in the RTEMS Applications User's Guide.
-
-@ifinfo
-@node Sample Applications Hello World, Sample Applications Clock Tick, Sample Applications Introduction, Sample Applications
-@end ifinfo
-@section Hello World
-
-This sample application is in the following directory:
-
-@example
-$RTEMS_SRC_BASE/tests/samples/hello
-@end example
-
-It provides a rudimentary test of the BSP start up
-code and the console output routine. The C version of this
-sample application uses the printf function from the RTEMS
-Standard C Library to output messages. The Ada version of this
-sample use the TEXT_IO package to output the hello messages.
-The following messages are printed:
-
-@example
-@group
-*** HELLO WORLD TEST ***
-Hello World
-*** END OF HELLO WORLD TEST ***
-@end group
-@end example
-
-These messages are printed from the application's
-single initialization task. If the above messages are not
-printed correctly, then either the BSP start up code or the
-console output routine is not operating properly.
-
-@ifinfo
-@node Sample Applications Clock Tick, Sample Applications Base Single Processor Application, Sample Applications Hello World, Sample Applications
-@end ifinfo
-@section Clock Tick
-
-This sample application is in the following directory:
-
-@example
-$RTEMS_SRC_BASE/tests/samples/ticker
-@end example
-
-This application is designed as a simple test of the
-clock tick device driver. In addition, this application also
-tests the printf function from the RTEMS Standard C Library by
-using it to output the following messages:
-
-@example
-@group
-*** CLOCK TICK TEST ***
-TA1 - tm_get - 09:00:00 12/31/1988
-TA2 - tm_get - 09:00:00 12/31/1988
-TA3 - tm_get - 09:00:00 12/31/1988
-TA1 - tm_get - 09:00:05 12/31/1988
-TA1 - tm_get - 09:00:10 12/31/1988
-TA2 - tm_get - 09:00:10 12/31/1988
-TA1 - tm_get - 09:00:15 12/31/1988
-TA3 - tm_get - 09:00:15 12/31/1988
-TA1 - tm_get - 09:00:20 12/31/1988
-TA2 - tm_get - 09:00:20 12/31/1988
-TA1 - tm_get - 09:00:25 12/31/1988
-TA1 - tm_get - 09:00:30 12/31/1988
-TA2 - tm_get - 09:00:30 12/31/1988
-TA3 - tm_get - 09:00:30 12/31/1988
-*** END OF CLOCK TICK TEST ***
-@end group
-@end example
-
-The clock tick sample application utilizes a single
-initialization task and three copies of the single application
-task. The initialization task prints the test herald, sets the
-time and date, and creates and starts the three application
-tasks before deleting itself. The three application tasks
-generate the rest of the output. Every five seconds, one or
-more of the tasks will print the current time obtained via the
-tm_get directive. The first task, TA1, executes every five
-seconds, the second task, TA2, every ten seconds, and the third
-task, TA3, every fifteen seconds. If the time printed does not
-match the above output, then the clock device driver is not
-operating properly.
-
-@ifinfo
-@node Sample Applications Base Single Processor Application, Sample Applications Base Multiple Processor Application, Sample Applications Clock Tick, Sample Applications
-@end ifinfo
-@section Base Single Processor Application
-
-This sample application is in the following directory:
-
-@example
-$RTEMS_SRC_BASE/tests/samples/base_sp
-@end example
-
-It provides a framework from which a single processor
-RTEMS application can be developed. The use of the task argument
-is illustrated. This sample application uses the printf
-function from the RTEMS Standard C Library or TEXT_IO functions
-when using the Ada version to output the following messages:
-
-@example
-@group
-*** SAMPLE SINGLE PROCESSOR APPLICATION ***
-Creating and starting an application task
-Application task was invoked with argument (0) and has id of 0x10002
-*** END OF SAMPLE SINGLE PROCESSOR APPLICATION ***
-@end group
-@end example
-
-The first two messages are printed from the
-application's single initialization task. The final messages
-are printed from the single application task.
-
-@ifinfo
-@node Sample Applications Base Multiple Processor Application, Sample Applications Constructor/Destructor C++ Application, Sample Applications Base Single Processor Application, Sample Applications
-@end ifinfo
-@section Base Multiple Processor Application
-
-This sample application is in the following directory:
-
-@example
-$RTEMS_SRC_BASE/tests/samples/base_mp
-@end example
-
-It provides a framework from which a multiprocessor
-RTEMS application can be developed. This directory has a
-subdirectory for each node in the multiprocessor system. The
-task argument is used to distinguish the node on which the
-application task is executed. The first node will print the
-following messages:
-
-@example
-@group
-*** SAMPLE MULTIPROCESSOR APPLICATION ***
-Creating and starting an application task
-This task was invoked with the node argument (1)
-This task has the id of 0x10002
-*** END OF SAMPLE MULTIPROCESSOR APPLICATION ***
-@end group
-@end example
-
-The second node will print the following messages:
-
-@example
-@group
-*** SAMPLE MULTIPROCESSOR APPLICATION ***
-Creating and starting an application task
-This task was invoked with the node argument (2)
-This task has the id of 0x20002
-*** END OF SAMPLE MULTIPROCESSOR APPLICATION ***
-@end group
-@end example
-
-The herald is printed from the application's single
-initialization task on each node. The final messages are
-printed from the single application task on each node.
-
-In this sample application, all source code is shared
-between the nodes except for the node dependent configuration
-files. These files contains the definition of the node number
-used in the initialization of the RTEMS Multiprocessor
-Configuration Table. This file is not shared because the node
-number field in the RTEMS Multiprocessor Configuration Table
-must be unique on each node.
-
-@ifinfo
-@node Sample Applications Constructor/Destructor C++ Application, Sample Applications Paranoia Floating Point Application, Sample Applications Base Multiple Processor Application, Sample Applications
-@end ifinfo
-@section Constructor/Destructor C++ Application
-
-This sample application is in the following directory:
-
-@example
-$RTEMS_SRC_BASE/tests/samples/cdtest
-@end example
-
-This sample application demonstrates that RTEMS is
-compatible with C++ applications. It uses constructors,
-destructor, and I/O stream output in testing these various
-capabilities. The board support package responsible for this
-application must support a C++ environment.
-
-This sample application uses the printf function from
-the RTEMS Standard C Library to output the following messages:
-
-@example
-@group
-Hey I'M in base class constructor number 1 for 0x400010cc.
-Hey I'M in base class constructor number 2 for 0x400010d4.
-Hey I'M in derived class constructor number 3 for 0x400010d4.
-*** CONSTRUCTOR/DESTRUCTOR TEST ***
-Hey I'M in base class constructor number 4 for 0x4009ee08.
-Hey I'M in base class constructor number 5 for 0x4009ee10.
-Hey I'M in base class constructor number 6 for 0x4009ee18.
-Hey I'M in base class constructor number 7 for 0x4009ee20.
-Hey I'M in derived class constructor number 8 for 0x4009ee20.
-Testing a C++ I/O stream
-Hey I'M in derived class constructor number 8 for 0x4009ee20.
-Derived class - Instantiation order 8
-Hey I'M in base class constructor number 7 for 0x4009ee20.
-Instantiation order 8
-Hey I'M in base class constructor number 6 for 0x4009ee18.
-Instantiation order 6
-Hey I'M in base class constructor number 5 for 0x4009ee10.
-Instantiation order 5
-Hey I'M in base class constructor number 4 for 0x4009ee08.
-Instantiation order 5
-*** END OF CONSTRUCTOR/DESTRUCTOR TEST ***
-Hey I'M in base class constructor number 3 for 0x400010d4.
-Hey I'M in base class constructor number 2 for 0x400010d4.
-Hey I'M in base class constructor number 1 for 0x400010cc.
-@end group
-@end example
-
-@ifinfo
-@node Sample Applications Paranoia Floating Point Application, RTEMS Specific Utilities, Sample Applications Constructor/Destructor C++ Application, Sample Applications
-@end ifinfo
-@section Paranoia Floating Point Application
-
-This sample application is in the following directory:
-
-@example
-$RTEMS_SRC_BASE/tests/samples/paranoia
-@end example
-
-This sample application uses a public domain floating
-point and math library test to verify these capabilities of the
-RTEMS executive. Deviations between actual and expected results
-are reported to the screen. This is a very extensive test which
-tests all mathematical and number conversion functions.
-Paranoia is also very large and requires a long period of time
-to run. Problems which commonly prevent this test from
-executing to completion include stack overflow and FPU exception
-handlers not installed.
diff --git a/doc/develenv/utils.texi b/doc/develenv/utils.texi
deleted file mode 100644
index d740536dac..0000000000
--- a/doc/develenv/utils.texi
+++ /dev/null
@@ -1,312 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node RTEMS Specific Utilities, RTEMS Specific Utilities C Language Specific Utilities, Sample Applications Paranoia Floating Point Application, Top
-@end ifinfo
-@chapter RTEMS Specific Utilities
-@ifinfo
-@menu
-* RTEMS Specific Utilities C Language Specific Utilities::
-* RTEMS Specific Utilities Ada Language Specific Utilities::
-@end menu
-@end ifinfo
-
-This section describes the additional commands
-available within the RTEMS Development Environment. Although
-some of these commands are of general use, most are included to
-provide some capability necessary to perform a required function
-in the development of the RTEMS executive, one of its support
-components, or an RTEMS based application. The commands have
-been classified into the following categories for clarity:
-
-@itemize @bullet
-@item C Language Specific Utilities
-
-@item Ada Language Specific Utilities
-@end itemize
-
-Some of the commands are implemented as C programs.
-However, most commands are implemented as Bourne shell scripts.
-Even if the current user has selected a different shell, the
-scripts will automatically invoke the Bourne shell during their
-execution lifetime.
-
-The commands are presented in UNIX manual page style
-for compatibility and convenience. A standard set of paragraph
-headers were used for all of the command descriptions. If a
-section contained no data, the paragraph header was omitted to
-conserve space. Each of the permissible paragraph headers and
-their contents are described below:
-
-@table @code
-@item SYNOPSIS
-describes the command syntax
-
-@item DESCRIPTION
-a full description of the command
-
-@item OPTIONS
-describes each of the permissible options for the command
-
-@item NOTES
-lists any special noteworthy comments about the command
-
-@item ENVIRONMENT
-describes all environment variables utilized by the command
-
-@item EXAMPLES
-illustrates the use of the command with specific examples
-
-@item FILES
-provides a list of major files that the command references
-
-@item SEE ALSO
-lists any relevant commands which can be consulted
-@end table
-
-Most environment variables referenced by the commands
-are defined for the RTEMS Development Environment during the
-login procedure. During login, the user selects a default RTEMS
-environment through the use of the Modules package. This tool
-effectively sets the environment variables to provide a
-consistent development environment for a specific user.
-Additional environment variables within the RTEMS environment
-were set by the system administrator during installation. When
-specifying paths, a command description makes use of these
-environment variables.
-
-When referencing other commands in the SEE ALSO
-paragraph, the following notation is used: command(code).
-Where command is the name of a related command, and code is a
-section number. Valid section numbers are as follows:
-
-@table @code
-@item 1
-Section 1 of the standard UNIX documentation
-
-@item 1G
-Section 1 of the GNU documentation
-
-@item 1R
-a manual page from this document, the RTEMS Development Environment Guide
-@end table
-
-For example, ls(1) means see the standard ls command
-in section 1 of the UNIX documentation. gcc020(1G) means see
-the description of gcc020 in section 1 of the GNU documentation.
-
-@ifinfo
-@node RTEMS Specific Utilities C Language Specific Utilities, packhex - Compress Hexadecimal File, RTEMS Specific Utilities, RTEMS Specific Utilities
-@end ifinfo
-@section C Language Specific Utilities
-@ifinfo
-@menu
-* packhex - Compress Hexadecimal File::
-* unhex - Convert Hexadecimal File into Binary::
-* size_rtems - report RTEMS size information::
-@end menu
-@end ifinfo
-
-The C language utilities provide a powerful set of
-tools which combine to allow operations within the RTEMS
-Development Environment to be consistent and easy to use. Much
-effort was devoted to providing as close to the standard UNIX
-and GNU style of operations as possible. Each of these
-utilities are described in the section below.
-
-@ifinfo
-@node packhex - Compress Hexadecimal File, unhex - Convert Hexadecimal File into Binary, RTEMS Specific Utilities C Language Specific Utilities, RTEMS Specific Utilities C Language Specific Utilities
-@end ifinfo
-@subsection packhex - Compress Hexadecimal File
-
-@subheading SYNOPSIS
-
-@example
-packhex <source >destination
-@end example
-
-@subheading DESCRIPTION
-
-packhex accepts Intel Hexadecimal or Motorola Srecord
-on its standard input and attempts to pack as many contiguous
-bytes as possible into a single hexadecimal record. Many
-programs output hexadecimal records which are less than 80 bytes
-long (for human viewing). The overhead required by each
-unnecessary record is significant and packhex can often reduce
-the size of the download image by 20%. packhex attempts to
-output records which are as long as the hexadecimal format
-allows.
-
-@subheading OPTIONS
-
-This command has no options.
-
-@subheading EXAMPLES
-
-Assume the current directory contains the Motorola
-Srecord file download.sr. Then executing the command:
-
-@example
-packhex <download.sr >packed.sr
-@end example
-
-will generate the file packed.sr which is usually
-smaller than download.sr.
-
-@subheading CREDITS
-
-The source for packhex first appeared in the May 1993
-issue of Embedded Systems magazine. The code was downloaded
-from their BBS. Unfortunately, the author's name was not
-provided in the listing.
-
-@ifinfo
-@node unhex - Convert Hexadecimal File into Binary, size_rtems - report RTEMS size information, packhex - Compress Hexadecimal File, RTEMS Specific Utilities C Language Specific Utilities
-@end ifinfo
-@subsection unhex - Convert Hexadecimal File into Binary Equivalent
-
-@subheading SYNOPSIS
-
-@example
-unhex [-valF] [-o file] [file [file ...] ]
-@end example
-
-@subheading DESCRIPTION
-
-unhex accepts Intel Hexadecimal, Motorola Srecord, or
-TI 'B' records and converts them to their binary equivalent.
-The output may sent to standout or may be placed in a specified
-file with the -o option. The designated output file may not be
-an input file. Multiple input files may be specified with their
-outputs logically concatenated into the output file.
-
-@subheading OPTIONS
-
-This command has the following options:
-
-@table @code
-@item v
-Verbose
-
-@item a base
-First byte of output corresponds with base
-address
-
-@item l
-Linear Output
-
-@item o file
-Output File
-
-@item F k_bits
-Fill holes in input with 0xFFs up to k_bits * 1024 bits
-@end table
-
-@subheading EXAMPLES
-
-The following command will create a binary equivalent
-file for the two Motorola S record files in the specified output
-file binary.bin:
-
-@example
-unhex -o binary.bin downloadA.sr downloadB.sr
-@end example
-
-@ifinfo
-@node size_rtems - report RTEMS size information, RTEMS Specific Utilities Ada Language Specific Utilities, unhex - Convert Hexadecimal File into Binary, RTEMS Specific Utilities C Language Specific Utilities
-@end ifinfo
-@subsection size_rtems - report RTEMS size information
-
-@subheading SYNOPSIS
-
-@example
-size_rtems
-@end example
-
-@subheading DESCRIPTION
-
-size_rtems analyzes RTEMS and determines all of the
-critical sizing information which is reported in the related
-documentation.
-
-@subheading EXAMPLES
-
-To generate the RTEMS size report for the currently
-configured processor, execute the following command:
-
-@example
-size_rtems
-@end example
-
-Although the actual size information will differ, a
-report of the following format will be output:
-
-@example
- RTEMS SIZE REPORT
-
-CODE DATA BSS
-==================
-MANAGERS: 15988 0 0
-CORE : 4568 0 0
-CPU : 364 0 0
-OVERALL : 20556 0 0
-MINIMUM : 8752 0 0
-
-init : 1592 0 0
-tasks : 2440 0 0
-intr : 64 0 0
-clock : 2252 0 0
-sem : 876 0 0
-msg : 1624 0 0
-event : 604 0 0
-signal : 212 0 0
-part : 872 0 0
-region : 844 0 0
-dpmem : 532 0 0
-timer : 424 0 0
-io : 288 0 0
-fatal : 40 0 0
-rtmon : 764 0 0
-mp : 2984 0 0
-
-sem : 4 0 0
-msg : 4 0 0
-event : 4 0 0
-signal : 4 0 0
-part : 4 0 0
-region : 4 0 0
-timer : 4 0 0
-dpmem : 4 0 0
-io : 4 0 0
-rtmon : 4 0 0
-mp : 8 0 0
-@end example
-
-@subheading SEE ALSO
-
-gsize020(1G), gsize386(1G), gsize960(1G)
-
-
-@ifinfo
-@node RTEMS Specific Utilities Ada Language Specific Utilities, Command and Variable Index, size_rtems - report RTEMS size information, RTEMS Specific Utilities
-@end ifinfo
-@section Ada Language Specific Utilities
-
-The Ada language utilities provide a powerful set of
-tools which combine to allow operations within the RTEMS
-Development Environment to be consistent and easy to use. Much
-effort was devoted to providing as close to the standard UNIX
-and GNU style of operations as possible. Each of these
-utilities are described in the section below.
-
-NOTE: The Ada implementation is not included in this
-release.
-
-
-
diff --git a/doc/do_docs b/doc/do_docs
deleted file mode 100755
index e67d07e1dd..0000000000
--- a/doc/do_docs
+++ /dev/null
@@ -1,64 +0,0 @@
-#! /bin/sh
-#
-# $Id$
-#
-
-basedir=$1
-shift
-
-# classes of documents
-supplements="supplements/hppa1_1 supplements/i386 \
- supplements/i960 supplements/m68k supplements/sparc supplements/powerpc"
-# gnu_tools="gnu_tools/newlib-1.8.0 gnu_tools/egcs-1.0.2"
-
-# Division by access level
-public_docs="user develenv networking posix_users started started_ada"
-support_docs="${supplements} ${gnu_tools}"
-partners_docs="posix1003.1 posix1003.1h"
-oar_manuals="ada_user hwapi tools/texi2www \
- browseable_rtems posix_users_new bsp_howto"
-
-# relnotes is obsolete
-# posix_users manual left out until finished
-# ada_user manual left out until bindings released
-
-if [ x${MANUAL_SET} = x ] ; then
- MANUAL_SET=public
-fi
-
-case ${MANUAL_SET} in
- public)
- manuals="$public_docs"
- ;;
- support)
- manuals="$public_docs $support_docs"
- ;;
- partners)
- manuals="$public_docs $support_docs $partners_docs"
- ;;
- internal)
- manuals="$public_docs $support_docs $partners_docs $oar_manuals"
- ;;
- *)
- echo "ERROR: Unknown manual set ${MANUAL_SET}"
- exit 1
- ;;
-esac
-
-for action in $*
-do
- for manual in $manuals
- do
- if [ x${TEST} = xyes ] ; then
- echo "TEST *** make $action on ${basedir}/${manual} ***"
- else
- echo
- echo "*** make $action on ${basedir}/${manual} ***"
- echo
- cd ${basedir}/${manual}
- gmake $action || exit $?
- fi
- done
-done
-
-exit 0
diff --git a/doc/index.html b/doc/index.html
deleted file mode 100644
index 8504a3e5b3..0000000000
--- a/doc/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<HTML>
-<HEAD><TITLE>RTEMS RTEMS_VERSION On-Line Library</TITLE></HEAD>
-<BODY BGCOLOR="FFFFFF">
-<A HREF="http://www.oarcorp.com" target="Text Frame">
- <IMG align=right BORDER=0 SRC="oaronly.jpg" ALT="OAR"> </A>
-<H1>RTEMS RTEMS_VERSION On-Line Library</H1>
-<HR>
-<BODY>
-<MENU>
- <LI><A HREF="c_user/index.html">
- RTEMS Applications C User's Guide</A>
- <LI><A HREF="started/index.html">
- Getting Started with RTEMS for C/C++ Users</A>
- <LI><A HREF="started_ada/index.html">
- Getting Started with GNAT/RTEMS</A>
- <LI><A HREF="develenv/index.html">
- RTEMS Development Environment Guide</A>
- <LI><A HREF="posix_users/index.html">
- RTEMS POSIX API User's Guide</A>
- <LI><A HREF="networking/index.html">
- RTEMS Network Supplement</A>
-</MENU>
-
-<HR>
-Copyright &copy; 1988-1998 <A HREF="http://www.oarcorp.com" target="Text Frame">OAR Corporation</A>
-</BODY></HTML>
diff --git a/doc/networking/Makefile b/doc/networking/Makefile
deleted file mode 100644
index 6f36ead921..0000000000
--- a/doc/networking/Makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=networking
-DISTRIBUTION_LEVEL=public
-
-include ../Make.config
-
-REPLACE=../tools/word-replace
-
-BMENU+= -c
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi ../common/setup.texi
-
-GENERATED_FILES=networkapp.texi driver.texi networktasks.texi testing.texi
-
-FILES= $(PROJECT).texi \
- networktasks.texi preface.texi $(GENERATED_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs networking
- #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL)
- cp $(PROJECT) $(INFO_INSTALL)
-
-networking: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-networktasks.texi: networktasks.t Makefile
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Writing RTEMS Network Device Drivers" ${*}.t
-
-driver.texi: driver.t Makefile
- $(BMENU) -p "Network Task Structure and Data Flow" \
- -u "Top" \
- -n "Using Networking in an RTEMS Application" ${*}.t
-
-networkapp.texi: networkapp.t Makefile
- $(BMENU) -p " Write Your Driver Statistic-Printing Function" \
- -u "Top" \
- -n "Testing the Driver" ${*}.t
-
-testing.texi: testing.t Makefile
- $(BMENU) -p "Network Statistics" \
- -u "Top" \
- -n "Command and Variable Index" ${*}.t
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- rm -f $(WWW_INSTALL)/$(PROJECT)/networking.gif
- cp networking.gif $(WWW_INSTALL)/$(PROJECT)/networking.gif
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES)
- rm -f networking networking-*
- rm -f timedata.texi timetbl.texi intr.texi wksheets.texi
- rm -f timetbl.t wksheets.t
- rm -f *.fixed _*
-
diff --git a/doc/networking/driver.t b/doc/networking/driver.t
deleted file mode 100644
index 5de7b54991..0000000000
--- a/doc/networking/driver.t
+++ /dev/null
@@ -1,284 +0,0 @@
-@c
-@c Written by Eric Norum
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Writing RTEMS Network Device Drivers
-
-@section Introduction
-
-This chapter is intended to provide an introduction to the
-procedure for writing RTEMS network device drivers.
-The example code is taken from the `Generic 68360' network device
-driver. The source code for this driver is located in the
-@code{c/src/lib/libbsp/m68k/gen68360/network} directory in the RTEMS
-source code distribution. You should have a copy of this driver at
-hand when reading the following notes.
-
-@section Learn about the network device
-
-Before starting to write the network driver you need to be completely
-familiar with the programmer's view of the device.
-The following points list some of the details of the
-device that must be understood before a driver can be written.
-
-@itemize @bullet
-
-@item Does the device use DMA to transfer packets to and from
-memory or does the processor have to
-copy packets to and from memory on the device?
-
-@item If the device uses DMA, is it capable of forming a single
-outtoing packet from multiple fragments scattered in separate
-memory buffers?
-
-@item If the device uses DMA, is it capable of chaining multiple
-outgoing packets, or does each outgoing packet require
-intervention by the driver?
-
-@item Does the device automatically pad short frames to the minimum
-64 bytes or does the driver have to supply the padding?
-
-@item Does the device automatically retry a transmission on detection
-of a collision?
-
-@item If the device uses DMA, is it capable of buffering multiple
-packets to memory, or does the receiver have to be restarted
-after the arrival of each packet?
-
-@item How are packets that are too short, too long, or received with
-CRC errors handled? Does the device automatically continue
-reception or does the driver have to intervene?
-
-@item How is the device Ethernet address set? How is the device
-programmed to accept or reject broadcast and multicast packets?
-
-@item What interrupts does the device generate? Does it generate an
-interrupt for each incoming packet, or only for packets received
-without error? Does it generate an interrupt for each packet
-transmitted, or only when the transmit queue is empty? What
-happens when a transmit error is detected?
-
-@end itemize
-
-In addition, some controllers have specific questions regarding
-board specific configuration. For example, the SONIC Ethernet
-controller has a very configurable data bus interface. It can
-even be configured for sixteen and thirty-two bit data buses. This
-type of information should be obtained from the board vendor.
-
-@section Understand the network scheduling conventions
-
-When writing code for your driver transmit and receive tasks you must
-take care to follow the network scheduling conventions. All tasks
-which are associated with networking share various
-data structures and resources. To ensure the consistency
-of these structures the tasks
-execute only when they hold the network semaphore (@code{rtems_bsdnet_semaphore}).
-Your transmit and receive tasks must abide by this protocol which means you must
-be careful to avoid `deadly embraces' with the other network tasks.
-A number of routines are provided to make it easier for your code
-to conform to the network task scheduling conventions.
-
-@itemize @bullet
-
-@item @code{void rtems_bsdnet_semaphore_release(void)}
-
-This function releases the network semaphore.
-Your task must call this function immediately before
-making any blocking RTEMS request.
-
-@item @code{void rtems_bsdnet_semaphore_obtain(void)}
-
-This function obtains the network semaphore.
-If your task has released the network semaphore to allow other
-network-related tasks to run while your task blocks you must call this
-function to reobtain the semaphore immediately after the return from the
-blocking RTEMS request.
-
-@item @code{rtems_bsdnet_event_receive(rtems_event_set, rtems_option, rtems_interval, rtems_event_set *)}
-Your task should call this function when it wishes to wait for an event.
-This function releases the network semaphore,
-calls @code{rtems_event_receive} to wait for the specified event
-or events and reobtains the semaphore.
-The value returned is the value returned by the @code{rtems_event_receive}.
-
-@end itemize
-
-@section Write your driver attach function
-The driver attach function is responsible for configuring the driver
-and making the connection between the network stack
-and the driver.
-
-Driver attach functions take a pointer to an
-@code{rtems_bsdnet_ifconfig} structure as their only argument.
-and set the driver parameters based on the
-values in this structure. If an entry in the configuration
-structure is zero the attach function chooses an
-appropriate default value for that parameter.
-
-
-The driver should then set up several fields in the ifnet structure
-in the device-dependent data structure supplied and maintained by the driver:
-
-@table @code
-@item ifp->if_softc
-Pointer to the device-dependent data. The first entry
-in the device-dependent data structure must be an @code{arpcom}
-structure.
-
-@item ifp->if_name
-The name of the device. The network stack uses this string
-and the device number for device name lookups. The name should not
-contain digits as these will be assumed to be part of the unit number
-and not part of the device name.
-
-
-@item ifp->if_unit
-The device number. The network stack uses this number and the
-device name for device name lookups. For example, if
-@code{ifp->if_name} is @samp{scc}, and @code{ifp->if_unit} is @samp{1},
-the full device name would be @samp{scc1}.
-
-@item ifp->if_mtu
-The maximum transmission unit for the device. For Ethernet
-devices this value should almost always be 1500.
-
-@item ifp->if_flags
-The device flags. Ethernet devices should set the flags
-to @code{IFF_BROADCAST|IFF_SIMPLEX}, indicating that the
-device can broadcast packets to multiple destinations
-and does not receive and transmit at the same time.
-
-@item ifp->if_snd.ifq_maxlen
-The maximum length of the queue of packets waiting to be
-sent to the driver. This is normally set to @code{ifqmaxlen}.
-
-@item ifp->if_init
-The address of the driver initialization function.
-
-@item ifp->if_start
-The address of the driver start function.
-
-@item ifp->if_ioctl
-The address of the driver ioctl function.
-
-@item ifp->if_output
-The address of the output function. Ethernet devices
-should set this to @code{ether_output}.
-@end table
-
-Once the attach function has set up the above entries it must link the
-driver data structure onto the list of devices by
-calling @code{if_attach}. Ethernet devices should then
-call @code{ether_ifattach}. Both functions take a pointer to the
-device's @code{ifnet} structure as their only argument.
-
-The attach function should return a non-zero value to indicate that
-the driver has been successfully configured and attached.
-
-
-
-
-@section Write your driver start function.
-This function is called each time the network stack wants to start the
-transmitter. This occures whenever the network stack adds a packet
-to a device's send queue and the @code{IFF_OACTIVE} bit in the
-device's @code{if_flags} is not set.
-
-For many devices this function need only set the @code{IFF_OACTIVE} bit in the
-@code{if_flags} and send an event to the transmit task
-indicating that a packet is in the driver transmit queue.
-
-
-@section Write your driver initialization function.
-This function should initialize the device, attach to interrupt handler,
-and start the driver transmit and receive tasks. The function
-
-@example
-rtems_id
-rtems_bsdnet_newproc (char *name,
- int stacksize,
- void(*entry)(void *),
- void *arg);
-@end example
-
-should be used to start the driver tasks.
-
-Note that the network stack may call the driver initialization function more
-than once.
-Make sure you don't start multiple versions of the receive and transmit tasks.
-
-
-
-@section Write your driver transmit task.
-This task is reponsible for removing packets from the driver send queue and sending them to the device. The task should block waiting for an event from the
-driver start function indicating that packets are waiting to be transmitted.
-When the transmit task has drained the driver send queue the task should clear
-the @code{IFF_OACTIVE} bit in @code{if_flags} and block until another outgoing
-packet is queued.
-
-
-@section Write your driver receive task.
-This task should block until a packet arrives from the device. If the
-device is an Ethernet interface the function @code{ether_input} should be called
-to forward the packet to the network stack. The arguments to @code{ether_input}
-are a pointer to the interface data structure, a pointer to the ethernet
-header and a pointer to an mbuf containing the packet itself.
-
-
-
-
-@section Write your driver interrupt handler.
-A typical interrupt handler will do nothing more than the hardware
-manipulation required to acknowledge the interrupt and send an RTEMS event
-to wake up the driver receive or transmit task waiting for the event.
-Network interface interrupt handlers must not make any calls to other
-network routines.
-
-
-
-@section Write your driver ioctl function.
-This function handles ioctl requests directed at the device. The ioctl
-commands which must be handled are:
-
-@table @code
-@item SIOCGIFADDR
-@item SIOCSIFADDR
-If the device is an Ethernet interface these
-commands should be passed on to @code{ether_ioctl}.
-
-@item SIOCSIFFLAGS
-This command should be used to start or stop the device,
-depending on the state of the interface @code{IFF_UP} and
-@code{IFF_RUNNING} bits in @code{if_flags}:
-@table @code
-@item IFF_RUNNING
-Stop the device.
-
-@item IFF_UP
-Start the device.
-
-@item IFF_UP|IFF_RUNNING
-Stop then start the device.
-
-@item 0
-Do nothing.
-
-@end table
-@end table
-
-
-
-@section Write Your Driver Statistic-Printing Function
-This function should print the values of any statistic/diagnostic
-counters your driver may use. The driver ioctl function should call
-the statistic-printing function when the ioctl command is
-@code{SIO_RTEMS_SHOW_STATS}.
-
-
diff --git a/doc/networking/networkapp.t b/doc/networking/networkapp.t
deleted file mode 100644
index 19b3940d4f..0000000000
--- a/doc/networking/networkapp.t
+++ /dev/null
@@ -1,279 +0,0 @@
-@c
-@c Written by Eric Norum
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Using Networking in an RTEMS Application
-
-@section Makefile changes
-@subsection Including the required managers
-The FreeBSD networking code requires several RTEMS managers
-in the application:
-
-@example
-MANAGERS = io event semaphore
-@end example
-
-@subsection Increasing the size of the heap
-The networking tasks allocate a lot of memory. For most applications
-the heap should be at least 256 kbytes.
-The amount of memory set aside for the heap can be adjusted by setting
-the @code{CFLAGS_LD} definition as shown below:
-
-@example
-CFLAGS_LD += -Wl,--defsym -Wl,HeapSize=0x80000
-@end example
-
-This sets aside 512 kbytes of memory for the heap.
-
-@section System Configuration
-
-The networking tasks allocate some RTEMS objects. These
-must be accounted for in the application configuration table. The following
-lists the requirements.
-
-@table @b
-@item TASKS
-One network task plus a receive and transmit task for each device.
-
-@item SEMAPHORES
-One network semaphore plus one syslog mutex semaphore if the application uses
-openlog/syslog.
-
-@item EVENTS
-The network stack uses @code{RTEMS_EVENT_24} and @code{RTEMS_EVENT_25}.
-This has no effect on the application configuration, but
-application tasks which call the network functions should not
-use these events for other purposes.
-
-@end table
-
-@section Initialization
-@subsection Additional include files
-The source file which declares the network configuration
-structures and calls the network initialization function must include
-
-@example
-#include <rtems/rtems_bsdnet.h>
-@end example
-
-@subsection Network configuration
-The network configuration is specified by declaring
-and initializing the @code{rtems_bsdnet_configuration}
-structure.
-
-The structure entries are described in the following table.
-If your application uses BOOTP to obtain network configuration
-information and if you are happy with the default values described
-below, you need to provide only the first two entries in this structure.
-
-@table @code
-
-@item struct rtems_bsdnet_ifconfig *ifconfig
-A pointer to the first configuration structure of the first network
-device. This structure is described in the following section.
-You must provide a value for this entry since there is no default value for it.
-
-
-@item void (*bootp)(void)
-This entry should be set to @code{rtems_bsdnet_do_bootp}
-if your application will use BOOTP to obtain network configuration information.
-It should be set to @code{NULL}
-if your application does not use BOOTP.
-
-
-@item int network_task_priority
-The priority at which the network task and network device
-receive and transmit tasks will run.
-If a value of 0 is specified the tasks will run at priority 100.
-
-@item unsigned long mbuf_bytecount
-The number of bytes to allocate from the heap for use as mbufs.
-If a value of 0 is specified, 64 kbytes will be allocated.
-
-@item unsigned long mbuf_cluster_bytecount
-The number of bytes to allocate from the heap for use as mbuf clusters.
-If a value of 0 is specified, 128 kbytes will be allocated.
-
-@item char *hostname
-The host name of the system.
-If this, or any of the following, entries are @code{NULL} the value
-may be obtained from a BOOTP server.
-
-@item char *domainname
-The name of the Internet domain to which the system belongs.
-
-@item char *gateway
-The Internet host number of the network gateway machine,
-specified in `dotted decimal' (@code{129.128.4.1}) form.
-
-@item char *log_host
-The Internet host number of the machine to which @code{syslog} messages
-will be sent.
-
-@item char *name_server[3]
-The Internet host numbers of up to three machines to be used as
-Internet Domain Name Servers.
-
-@item int port
-The I/O port number (ex: 0x240) on which the external Ethernet
-can be accessed.
-
-@item int irno
-The interrupt number of the external Ethernet controller.
-
-@item int bpar
-The address of the shared memory on the external Ethernet controller.
-
-
-@end table
-
-@subsection Network device configuration
-Network devices are specified and configured by declaring and initializing a
-@code{struct rtems_bsdnet_ifcontig} structure for each network device.
-
-The structure entries are described in the following table. An application
-which uses a single network interface, gets network configuration information
-from a BOOTP server, and uses the default values for all driver
-parameters needs to initialize only the first two entries in the
-structure.
-
-@table @code
-@item char *name
-The full name of the network device. This name consists of the
-driver name and the unit number (e.g. @code{"scc1"}).
-The @code{bsp.h} include file usually defines RTEMS_BSP_NETWORK_DRIVER_NAME as
-the name of the primary (or only) network driver.
-
-@item int (*attach)(struct rtems_bsdnet_ifconfig *conf)
-The address of the driver @code{attach} function. The network
-initialization function calls this function to configure the driver and
-attach it to the network stack.
-The @code{bsp.h} include file usually defines RTEMS_BSP_NETWORK_DRIVER_ATTACH as
-the name of the attach function of the primary (or only) network driver.
-
-@item struct rtems_bsdnet_ifconfig *next
-A pointer to the network device configuration structure for the next network
-interface, or @code{NULL} if this is the configuration structure of the
-last network interface.
-
-@item char *ip_address
-The Internet address of the device,
-specified in `dotted decimal' (@code{129.128.4.2}) form, or @code{NULL}
-if the device configuration information is being obtained from a
-BOOTP server.
-
-@item char *ip_netmask
-The Internet inetwork mask of the device,
-specified in `dotted decimal' (@code{255.255.255.0}) form, or @code{NULL}
-if the device configuration information is being obtained from a
-BOOTP server.
-
-
-@item void *hardware_address
-The hardware address of the device, or @code{NULL} if the driver is
-to obtain the hardware address in some other way (usually by reading
-it from the device or from the bootstrap ROM).
-
-@item int ignore_broadcast
-Zero if the device is to accept broadcast packets, non-zero if the device
-is to ignore broadcast packets.
-
-@item int mtu
-The maximum transmission unit of the device, or zero if the driver
-is to choose a default value (typically 1500 for Ethernet devices).
-
-@item int rbuf_count
-The number of receive buffers to use, or zero if the driver is to
-choose a default value
-
-@item int xbuf_count
-The number of transmit buffers to use, or zero if the driver is to
-choose a default value
-Keep in mind that some network devices may use 4 or more
-transmit descriptors for a single transmit buffer.
-
-@end table
-
-A complete network configuration specification can be as simple as the one
-shown in the following example.
-This configuration uses a single network interface, gets
-network configuration information
-from a BOOTP server, and uses the default values for all driver
-parameters.
-
-@example
-static struct rtems_bsdnet_ifconfig netdriver_config = @{
- RTEMS_BSP_NETWORK_DRIVER_NAME,
- RTEMS_BSP_NETWORK_DRIVER_ATTACH
-@};
-struct rtems_bsdnet_config rtems_bsdnet_config = @{
- &netdriver_config,
- rtems_bsdnet_do_bootp,
-@};
-@end example
-
-
-@subsection Network initialization
-The networking tasks must be started before any
-network I/O operations can be performed. This is done by calling:
-@example
-rtems_bsdnet_initialize_network ();
-@end example
-
-This function is declared in @code{rtems/rtems_bsdnet.h}.
-
-
-
-@section Application code
-The RTEMS network package provides almost a complete set of BSD network
-services. The network functions work like their BSD counterparts
-with the following exceptions:
-
-@itemize @bullet
-@item A given socket can be read or written by only one task at a time.
-@item There is no @code{select} function.
-@item You must call @code{openlog} before calling any of the @code{syslog} functions.
-@item @b{Some of the network functions are not thread-safe.}
-For example the following functions return a pointer to a static
-buffer which remains valid only until the next call:
-
-@table @code
-@item gethostbyaddr
-@item gethostbyname
-@item inet_ntoa
-(@code{inet_ntop} is thread-safe, though).
-@end table
-@end itemize
-
-@subsection Network Statistics
-There are a number of functions to print statistics gathered by the network stack.
-These function are declared in @code{rtems/rtems_bsdnet.h}.
-@table @code
-@item rtems_bsdnet_show_if_stats
-Display statistics gathered by network interfaces.
-
-@item rtems_bsdnet_show_ip_stats
-Display IP packet statistics.
-
-@item rtems_bsdnet_show_icmp_stats
-Display ICMP packet statistics.
-
-@item rtems_bsdnet_show_tcp_stats
-Display TCP packet statistics.
-
-@item rtems_bsdnet_show_udp_stats
-Display UDP packet statistics.
-
-@item rtems_bsdnet_show_mbuf_stats
-Display mbuf statistics.
-
-@item rtems_bsdnet_show_inet_routes
-Display the routing table.
-
-@end table
diff --git a/doc/networking/networking.eps b/doc/networking/networking.eps
deleted file mode 100644
index 8aba78d55f..0000000000
--- a/doc/networking/networking.eps
+++ /dev/null
@@ -1,1343 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title:
-%%Creator: Diagram
-%%CreationDate: Tue Aug 18 16:41:45 1998
-%%For: eric
-%%DocumentFonts: (atend)
-%%Pages: 0 0
-%%BoundingBox: 0 0 487 549
-%%NXNextStepVersion: 3.0
-%%EndComments
-
-%%BeginProcSet: /usr/lib/NextStep/printPackage.ps 3.0
-%!
-% NeXT Printing Package
-% Version: 3.1
-% Copyright: 1988, NeXT, Inc.
-
-/__NXdef{1 index where{pop pop pop}{def}ifelse}bind def
-/__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def
-/UserObjects 10 array __NXdef
-/defineuserobject{
- exch dup 1 add dup UserObjects length gt{
- array dup 0 UserObjects putinterval
- /UserObjects exch def
- }{pop}ifelse UserObjects exch 3 -1 roll put
-}__NXbdef
-/undefineuserobject{UserObjects exch null put}__NXbdef
-/execuserobject{UserObjects exch get exec}__NXbdef
-/__NXRectPath{4 2 roll moveto 1 index 0 rlineto
-0 exch rlineto neg 0 rlineto closepath}__NXbdef
-/__NXProcessRectArgs{
- 1 index type /arraytype eq{
- exch 0 4 2 index length 1 sub{
- dup 3 add 1 exch{1 index exch get exch}for
- 5 1 roll 5 index exec
- }for pop pop
- }{exec}ifelse
-}__NXbdef
-/rectfill{gsave newpath {__NXRectPath fill} __NXProcessRectArgs grestore}__NXbdef
-/rectclip{newpath {__NXRectPath} __NXProcessRectArgs clip newpath}__NXbdef
-/rectstroke{
- gsave newpath dup type /arraytype eq{dup length 6 eq}{false}ifelse{
- {gsave __NXRectPath null concat stroke grestore}
- dup length array cvx copy dup 2 4 -1 roll put __NXProcessRectArgs
- }{{__NXRectPath stroke} __NXProcessRectArgs}ifelse grestore
-}__NXbdef
-/_NXLevel2 systemdict /languagelevel known {languagelevel 2 ge}{false}ifelse __NXdef
-/xyshow{
- 0 1 3 index length 1 sub{
- currentpoint 4 index 3 index 1 getinterval show
- 3 index 3 index 2 mul 1 add get add exch
- 3 index 3 index 2 mul get add exch moveto pop
- }for pop pop
-}__NXbdef
-/xshow{
- 0 1 3 index length 1 sub{
- currentpoint 4 index 3 index 1 getinterval show
- exch 3 index 3 index get add exch moveto pop
- }for pop pop
-}__NXbdef
-/yshow{
- 0 1 3 index length 1 sub{
- currentpoint 4 index 3 index 1 getinterval show
- 3 index 3 index get add moveto pop
- }for pop pop
-}__NXbdef
-/arct{arcto pop pop pop pop}__NXbdef
-/setbbox{pop pop pop pop}__NXbdef
-/ucache{}__NXbdef
-/ucachestatus{mark 0 0 0 0 0}__NXbdef
-/setucacheparams{cleartomark}__NXbdef
-/uappend{systemdict begin cvx exec end}__NXbdef
-/ueofill{gsave newpath uappend eofill grestore}__NXbdef
-/ufill{gsave newpath uappend fill grestore}__NXbdef
-/ustroke{
- gsave newpath dup length 6 eq
- {exch uappend concat}{uappend}ifelse
- stroke grestore
-}__NXbdef
-/__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse
-/ustrokepath{
- newpath dup length 6 eq{
- exch uappend __NXustrokepathMatrix currentmatrix exch concat
- strokepath setmatrix
- }{uappend strokepath}ifelse
-} __NXbdef
-/upath{
- [exch {/ucache cvx}if pathbbox /setbbox cvx
- {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx
-} __NXbdef
-/setstrokeadjust{pop}__NXbdef
-/currentstrokeadjust{false}__NXbdef
-/selectfont{exch findfont exch
-dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef
-/_NXCombineArrays{
- counttomark dup 2 add index dup length 3 -1 roll {
- 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch
- }repeat pop pop pop
-}__NXbdef
-/flushgraphics{}def
-/setwindowtype{pop pop}def
-/currentwindowtype{pop 0}def
-/setalpha{pop}def
-/currentalpha{1.0}def
-/hidecursor{}def
-/obscurecursor{}def
-/revealcursor{}def
-/setcursor{4 {pop}repeat}bind def
-/showcursor{}def
-/NextStepEncoding where not{
-/NextStepEncoding StandardEncoding 256 array copy def
-0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave
-/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
-/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute
-/Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright
-176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior
-204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave
-/aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute
-/ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth
-/ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute
-/ucircumflex 246/udieresis/yacute 252/thorn/ydieresis]
-{dup type /nametype eq
- {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse
-}forall pop
-/NextStepEncoding NextStepEncoding readonly def
-/_NXfstr 128 string dup 0 (_NX) putinterval def
-/_NXfindfont /findfont load def
-/findfont{
- % Because we can never let NextStepEncoding get into
- % SharedFontDirectory, we cannot reencode a font to NextStepEncoding
- % if we are in shared mode. So if currentshared is true,
- % we call the normal findfont and return that
- /currentshared where {pop currentshared} {false} ifelse
- {_NXfindfont}
- {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll
- getinterval cvn exch FontDirectory 2 index known
- {pop FontDirectory exch get}
- {_NXfindfont dup /Encoding get StandardEncoding eq
- { dup length dict exch
- {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall
- dup /Encoding NextStepEncoding put definefont
- }{exch pop} ifelse
- }ifelse
- }ifelse
-}bind def
-}{pop}ifelse
-/_NXImageString {/__NXImageString where{pop}{/__NXImageString 4000 string __NXdef}ifelse __NXImageString}__NXbdef
-/_NXDoImageOp{
- 3 dict begin /parr 5 array def 1 index{dup}{1}ifelse /chans exch def
- chans 2 add 2 roll parr 0 chans getinterval astore pop
- 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse
- 4 index mul /totbytes exch def pop exch pop
- gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore
- {0 1 chans 1 sub{parr exch get exec length totbytes exch sub /totbytes exch def}for totbytes 0 le{exit}if}loop end
-}__NXbdef
-/alphaimage{1 add _NXDoImageOp}def
-_NXLevel2{
- /NXCalibratedRGBColorSpace where{pop}{
- /NXCalibratedRGBColorSpace
- {mark /NXCalibratedRGB /ColorSpace findresource exch pop}stopped
- {cleartomark /NXCalibratedRGB[/CIEBasedABC 2 dict dup begin
- /MatrixLMN[.4124 .2126 .0193 .3576 .7152 .1192 .1805 .0722 .9505]def
- /WhitePoint[.9505 1 1.089] def end] /ColorSpace defineresource}if def}ifelse
- /nxsetrgbcolor{NXCalibratedRGBColorSpace setcolorspace setcolor}__NXbdef
- /nxsetgray{dup dup nxsetrgbcolor}__NXbdef
- /_NXCalibratedImage{exch{array astore dup length true}{false}ifelse
- 8 -1 roll{NXCalibratedRGBColorSpace setcolorspace}if
- 8 dict dup 9 1 roll begin /ImageType 1 def /MultipleDataSources exch def
- currentcolorspace 0 get /Indexed eq{pop /Decode[0 2 6 index exp 1 sub]def}
- {2 mul dup array /Decode exch def 1 sub 0 1 3 -1 roll{Decode exch dup 2 mod put}for}ifelse
- /DataSource exch def /ImageMatrix exch def
- /BitsPerComponent exch def /Height exch def /Width exch def end image}__NXbdef
-} {
- /setcmykcolor{
- 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll
- 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor}__NXbdef
- /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef
- /colorimage{2 copy 3 ne or{_NXDoImageOp}{4 index dup 8 ne exch 4 ne and{_NXDoImageOp}{
- pop pop save 6 1 roll 12 dict begin/Proc exch def/Res 0 string def
- /Alloc{2 index length mul 2 add dup 2 index load length gt{1.2 mul round cvi string def}{pop pop}ifelse}def
- 1 index 8 eq{/Unpack{.34 Alloc}def}{
- /Wid 4 index 3 mul def exch pop 8 exch/Str1 0 string def/Lim Wid def
- /Unpack{.67 Alloc/Str1 2 Alloc 0 exch Lim exch
- {dup -4 bitshift 17 mul Str1 exch 4 index exch put 15 and 17 mul Str1 exch 3 index 1 add exch put
- 2 sub dup 0 le{0 lt Wid exch{exch 1 sub exch}if}if exch 2 add exch
- }forall/Lim exch def Str1 exch 0 exch getinterval
- }def
- }ifelse
- /Ops[{.3 mul add 1}{.59 mul add 2}{.11 mul add round cvi Res exch 2 index exch put 1 add 0.0 0}]def/Val 0.0 def/Phase 0 def
- {0 Val Phase Proc/Res Unpack{exch Ops exch get exec}forall/Phase exch def/Val exch def Res exch 0 exch getinterval}
- image end restore}ifelse}ifelse
- }__NXbdef
- /nxsetrgbcolor{setrgbcolor}__NXbdef /nxsetgray{setgray}__NXbdef
- /setpattern{pop .5 setgray}__NXbdef
- /_NXCalibratedImage{dup 1 eq {pop pop image}{colorimage}ifelse pop}__NXbdef
-} ifelse
-/_NXSetCMYKOrRGB where{pop}{
- mark{systemdict /currentwindow get exec}stopped
- {{pop pop pop setcmykcolor}}{{nxsetrgbcolor pop pop pop pop}}ifelse /_NXSetCMYKOrRGB exch def cleartomark
-}ifelse
-%%EndProcSet
-
-gsave
- /__NXbasematrix matrix currentmatrix def
-grestore
-%%EndProlog
-%%BeginSetup
-%%EndSetup
-gsave
-0 0 488 549 rectclip
-[1 0 0 -1 -26.5 567] concat
-26.5 18 487 549 rectclip
-gsave
-36 306 306 261 rectclip
-0 nxsetgray
-1 setlinewidth
-[6] 1 setdash
-36.5 306.5 305 260 rectstroke
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-newpath
-systemdict
-begin
-58 418 166 472 setbbox
-68.800003 418 moveto
-155.200012 428.799988 10.8 -90 0 arc
-155.200012 461.199982 10.8 0 90 arc
-68.800003 461.199982 10.8 90 180 arc
-68.800003 428.799988 10.8 180 270 arc
-closepath
-end
-clip
-newpath
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-58 418 166 472 setbbox
-69.300003 418.5 moveto
-154.700012 429.299988 10.8 -90 0 arc
-154.700012 460.699982 10.8 0 90 arc
-69.300003 460.699982 10.8 90 180 arc
-69.300003 429.299988 10.8 180 270 arc
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-newpath
-systemdict
-begin
-58 418 166 472 setbbox
-69.300003 419 moveto
-154.700012 429.299988 10.3 -90 0 arc
-154.700012 460.699982 10.3 0 90 arc
-69.300003 460.699982 10.3 90 180 arc
-69.300003 429.299988 10.3 180 270 arc
-closepath
-end
-fill
-grestore
-1 nxsetgray
-gsave
-newpath
-systemdict
-begin
-54 414 162 468 setbbox
-65.300003 415 moveto
-150.700012 425.299988 10.3 -90 0 arc
-150.700012 456.699982 10.3 0 90 arc
-65.300003 456.699982 10.3 90 180 arc
-65.300003 425.299988 10.3 180 270 arc
-closepath
-end
-fill
-grestore
-gsave
-newpath
-systemdict
-begin
-54 414 162 468 setbbox
-64.800003 414 moveto
-151.200012 424.799988 10.8 -90 0 arc
-151.200012 457.199982 10.8 0 90 arc
-64.800003 457.199982 10.8 90 180 arc
-64.800003 424.799988 10.8 180 270 arc
-closepath
-end
-clip
-newpath
-0 nxsetgray
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-54 414 162 468 setbbox
-65.300003 414.5 moveto
-150.700012 425.299988 10.8 -90 0 arc
-150.700012 456.699982 10.8 0 90 arc
-65.300003 456.699982 10.8 90 180 arc
-65.300003 425.299988 10.8 180 270 arc
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-/Helvetica findfont 12 scalefont [1 0 0 -1 0 0] makefont
-8
-exch
-defineuserobject
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-84 430 moveto (Interface) show
-85 445 moveto (Receive) show
-84 460 moveto (Daemon) show
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-newpath
-systemdict
-begin
-193 418 301 472 setbbox
-203.800003 418 moveto
-290.200012 428.799988 10.8 -90 0 arc
-290.200012 461.199982 10.8 0 90 arc
-203.800003 461.199982 10.8 90 180 arc
-203.800003 428.799988 10.8 180 270 arc
-closepath
-end
-clip
-newpath
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-193 418 301 472 setbbox
-204.300003 418.5 moveto
-289.700012 429.299988 10.8 -90 0 arc
-289.700012 460.699982 10.8 0 90 arc
-204.300003 460.699982 10.8 90 180 arc
-204.300003 429.299988 10.8 180 270 arc
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-newpath
-systemdict
-begin
-193 418 301 472 setbbox
-204.300003 419 moveto
-289.700012 429.299988 10.3 -90 0 arc
-289.700012 460.699982 10.3 0 90 arc
-204.300003 460.699982 10.3 90 180 arc
-204.300003 429.299988 10.3 180 270 arc
-closepath
-end
-fill
-grestore
-1 nxsetgray
-gsave
-newpath
-systemdict
-begin
-189 414 297 468 setbbox
-200.300003 415 moveto
-285.700012 425.299988 10.3 -90 0 arc
-285.700012 456.699982 10.3 0 90 arc
-200.300003 456.699982 10.3 90 180 arc
-200.300003 425.299988 10.3 180 270 arc
-closepath
-end
-fill
-grestore
-gsave
-newpath
-systemdict
-begin
-189 414 297 468 setbbox
-199.800003 414 moveto
-286.200012 424.799988 10.8 -90 0 arc
-286.200012 457.199982 10.8 0 90 arc
-199.800003 457.199982 10.8 90 180 arc
-199.800003 424.799988 10.8 180 270 arc
-closepath
-end
-clip
-newpath
-0 nxsetgray
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-189 414 297 468 setbbox
-200.300003 414.5 moveto
-285.700012 425.299988 10.8 -90 0 arc
-285.700012 456.699982 10.8 0 90 arc
-200.300003 456.699982 10.8 90 180 arc
-200.300003 425.299988 10.8 180 270 arc
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-219 430 moveto (Interface) show
-219 445 moveto (Transmit) show
-219 460 moveto (Daemon) show
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-newpath
-systemdict
-begin
-184 328 310 382 setbbox
-184 328 moveto
-100.800003 0 rlineto
-25.200001 54 rlineto
--100.800003 0 rlineto
-closepath
-end
-clip
-newpath
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-184.5 328.5 309.5 381.5 setbbox
-184.5 328.5 moveto
-100 0 rlineto
-25 53 rlineto
--100 0 rlineto
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-newpath
-systemdict
-begin
-185 329 309 381 setbbox
-185 329 moveto
-99.199997 0 rlineto
-24.799999 52 rlineto
--99.199997 0 rlineto
-closepath
-end
-fill
-grestore
-1 nxsetgray
-gsave
-newpath
-systemdict
-begin
-181 325 305 377 setbbox
-181 325 moveto
-99.199997 0 rlineto
-24.799999 52 rlineto
--99.199997 0 rlineto
-closepath
-end
-fill
-grestore
-gsave
-newpath
-systemdict
-begin
-180 324 306 378 setbbox
-180 324 moveto
-100.800003 0 rlineto
-25.200001 54 rlineto
--100.800003 0 rlineto
-closepath
-end
-clip
-newpath
-0 nxsetgray
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-180.5 324.5 305.5 377.5 setbbox
-180.5 324.5 moveto
-100 0 rlineto
-25 53 rlineto
--100 0 rlineto
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-219 340.5 moveto (Interface) show
-224 355.5 moveto (Output) show
-224 370.5 moveto (Queue) show
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-193 184 108 54 rectclip
-1 setlinewidth
-193.5 184.5 107 53 rectstroke
-grestore
-194 185 106 52 rectfill
-1 nxsetgray
-190 181 106 52 rectfill
-gsave
-189 180 108 54 rectclip
-0 nxsetgray
-1 setlinewidth
-189.5 180.5 107 53 rectstroke
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-220 204 moveto (Network) show
-228 219 moveto (Code) show
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-gsave
-newpath
-systemdict
-begin
-242.999969 234 243.000031 316.299988 setbbox
-243.000031 234 moveto
-242.999969 316.299988 lineto
-end
-stroke
-grestore
-0 setlinejoin
-gsave
-[0 1 -1 0 567 81.000031] concat
-gsave
-newpath
-systemdict
-begin
-233.799973 319.5 242.999969 328.5 setbbox
-242.999969 324 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-gsave
-newpath
-systemdict
-begin
-242.999985 378 243.000031 406.299988 setbbox
-243.000031 378 moveto
-242.999985 406.299988 lineto
-end
-stroke
-grestore
-0 setlinejoin
-gsave
-[0 1 -1 0 657 171.000031] concat
-gsave
-newpath
-systemdict
-begin
-233.799973 409.5 242.999969 418.5 setbbox
-242.999969 414 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-newpath
-systemdict
-begin
-193 22 301 76 setbbox
-203.800003 22 moveto
-290.200012 32.799999 10.8 -90 0 arc
-290.200012 65.199997 10.8 0 90 arc
-203.800003 65.199997 10.8 90 180 arc
-203.800003 32.799999 10.8 180 270 arc
-closepath
-end
-clip
-newpath
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-193 22 301 76 setbbox
-204.300003 22.5 moveto
-289.700012 33.299999 10.8 -90 0 arc
-289.700012 64.699997 10.8 0 90 arc
-204.300003 64.699997 10.8 90 180 arc
-204.300003 33.299999 10.8 180 270 arc
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-newpath
-systemdict
-begin
-193 22 301 76 setbbox
-204.300003 23 moveto
-289.700012 33.299999 10.3 -90 0 arc
-289.700012 64.699997 10.3 0 90 arc
-204.300003 64.699997 10.3 90 180 arc
-204.300003 33.299999 10.3 180 270 arc
-closepath
-end
-fill
-grestore
-1 nxsetgray
-gsave
-newpath
-systemdict
-begin
-189 18 297 72 setbbox
-200.300003 19 moveto
-285.700012 29.299999 10.3 -90 0 arc
-285.700012 60.699997 10.3 0 90 arc
-200.300003 60.699997 10.3 90 180 arc
-200.300003 29.299999 10.3 180 270 arc
-closepath
-end
-fill
-grestore
-gsave
-newpath
-systemdict
-begin
-189 18 297 72 setbbox
-199.800003 18 moveto
-286.200012 28.799999 10.8 -90 0 arc
-286.200012 61.200001 10.8 0 90 arc
-199.800003 61.200001 10.8 90 180 arc
-199.800003 28.799999 10.8 180 270 arc
-closepath
-end
-clip
-newpath
-0 nxsetgray
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-189 18 297 72 setbbox
-200.300003 18.5 moveto
-285.700012 29.299999 10.8 -90 0 arc
-285.700012 60.699997 10.8 0 90 arc
-200.300003 60.699997 10.8 90 180 arc
-200.300003 29.299999 10.8 180 270 arc
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-229 34 moveto (User) show
-213 49 moveto (Application) show
-229 64 moveto (Task) show
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-newpath
-systemdict
-begin
-346 121 472 175 setbbox
-346 121 moveto
-100.800003 0 rlineto
-25.200001 54 rlineto
--100.800003 0 rlineto
-closepath
-end
-clip
-newpath
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-346.5 121.5 471.5 174.5 setbbox
-346.5 121.5 moveto
-100 0 rlineto
-25 53 rlineto
--100 0 rlineto
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-newpath
-systemdict
-begin
-347 122 471 174 setbbox
-347 122 moveto
-99.199997 0 rlineto
-24.799999 52 rlineto
--99.199997 0 rlineto
-closepath
-end
-fill
-grestore
-1 nxsetgray
-gsave
-newpath
-systemdict
-begin
-343 118 467 170 setbbox
-343 118 moveto
-99.199997 0 rlineto
-24.799999 52 rlineto
--99.199997 0 rlineto
-closepath
-end
-fill
-grestore
-gsave
-newpath
-systemdict
-begin
-342 117 468 171 setbbox
-342 117 moveto
-100.800003 0 rlineto
-25.200001 54 rlineto
--100.800003 0 rlineto
-closepath
-end
-clip
-newpath
-0 nxsetgray
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-342.5 117.5 467.5 170.5 setbbox
-342.5 117.5 moveto
-100 0 rlineto
-25 53 rlineto
--100 0 rlineto
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-386 133.5 moveto (Socket) show
-382 148.5 moveto (Receive) show
-384 163.5 moveto ( Queue) show
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-newpath
-systemdict
-begin
-373 418 481 472 setbbox
-383.799988 418 moveto
-470.199982 428.799988 10.8 -90 0 arc
-470.199982 461.199982 10.8 0 90 arc
-383.799988 461.199982 10.8 90 180 arc
-383.799988 428.799988 10.8 180 270 arc
-closepath
-end
-clip
-newpath
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-373 418 481 472 setbbox
-384.299988 418.5 moveto
-469.699982 429.299988 10.8 -90 0 arc
-469.699982 460.699982 10.8 0 90 arc
-384.299988 460.699982 10.8 90 180 arc
-384.299988 429.299988 10.8 180 270 arc
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-newpath
-systemdict
-begin
-373 418 481 472 setbbox
-384.299988 419 moveto
-469.699982 429.299988 10.3 -90 0 arc
-469.699982 460.699982 10.3 0 90 arc
-384.299988 460.699982 10.3 90 180 arc
-384.299988 429.299988 10.3 180 270 arc
-closepath
-end
-fill
-grestore
-1 nxsetgray
-gsave
-newpath
-systemdict
-begin
-369 414 477 468 setbbox
-380.299988 415 moveto
-465.699982 425.299988 10.3 -90 0 arc
-465.699982 456.699982 10.3 0 90 arc
-380.299988 456.699982 10.3 90 180 arc
-380.299988 425.299988 10.3 180 270 arc
-closepath
-end
-fill
-grestore
-gsave
-newpath
-systemdict
-begin
-369 414 477 468 setbbox
-379.799988 414 moveto
-466.199982 424.799988 10.8 -90 0 arc
-466.199982 457.199982 10.8 0 90 arc
-379.799988 457.199982 10.8 90 180 arc
-379.799988 424.799988 10.8 180 270 arc
-closepath
-end
-clip
-newpath
-0 nxsetgray
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-369 414 477 468 setbbox
-380.299988 414.5 moveto
-465.699982 425.299988 10.8 -90 0 arc
-465.699982 456.699982 10.8 0 90 arc
-380.299988 456.699982 10.8 90 180 arc
-380.299988 425.299988 10.8 180 270 arc
-closepath
-end
-stroke
-grestore
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-400 437.5 moveto (Network) show
-399 452.5 moveto (Daemon) show
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-67 499 90 45 rectclip
-1 setlinewidth
-67.5 499.5 89 44 rectstroke
-grestore
-68 500 88 43 rectfill
-1 nxsetgray
-64 496 88 43 rectfill
-gsave
-63 495 90 45 rectclip
-0 nxsetgray
-1 setlinewidth
-63.5 495.5 89 44 rectstroke
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-86 508 moveto (Receive) show
-85 523 moveto (Interrupt) show
-gsave
-66 496 84 43 rectclip
-86 538 moveto (Handler) show
-grestore
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-202 499 90 45 rectclip
-1 setlinewidth
-202.5 499.5 89 44 rectstroke
-grestore
-203 500 88 43 rectfill
-1 nxsetgray
-199 496 88 43 rectfill
-gsave
-198 495 90 45 rectclip
-0 nxsetgray
-1 setlinewidth
-198.5 495.5 89 44 rectstroke
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-219 508 moveto (Transmit) show
-220 523 moveto (Interrupt) show
-gsave
-201 496 84 43 rectclip
-221 538 moveto (Handler) show
-grestore
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-[1 6] 1 setdash
-gsave
-newpath
-systemdict
-begin
-108.000023 475.700012 108.000031 495 setbbox
-108.000023 495 moveto
-108.000031 475.700012 lineto
-end
-stroke
-grestore
-[] 0 setdash
-0 setlinejoin
-gsave
-[0 -1 1 0 -359.999969 576] concat
-gsave
-newpath
-systemdict
-begin
-98.800034 463.5 108.000031 472.5 setbbox
-108.000031 468 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-[1 6] 1 setdash
-gsave
-newpath
-systemdict
-begin
-243.000015 475.700012 243.000031 495 setbbox
-243.000015 495 moveto
-243.000031 475.700012 lineto
-end
-stroke
-grestore
-[] 0 setdash
-0 setlinejoin
-gsave
-[0 -1 1 0 -224.999969 711] concat
-gsave
-newpath
-systemdict
-begin
-233.800034 463.5 243.000031 472.5 setbbox
-243.000031 468 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-[6] 1 setdash
-gsave
-newpath
-systemdict
-begin
-27 90 513 90 setbbox
-27 90 moveto
-513 90 lineto
-end
-stroke
-grestore
-[] 0 setdash
-0 setlinejoin
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-gsave
-newpath
-systemdict
-begin
-304.700012 45 405.000031 117 setbbox
-405.000031 117 moveto
-405 45 lineto
-304.700012 45 lineto
-end
-stroke
-grestore
-0 setlinejoin
-gsave
-[-1 0 0 -1 594 90] concat
-gsave
-newpath
-systemdict
-begin
-287.799988 40.5 297 49.5 setbbox
-297 45 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-gsave
-newpath
-systemdict
-begin
-297 178.699997 405.000031 207 setbbox
-297 207 moveto
-315 207 lineto
-405 207 lineto
-405.000031 178.699997 lineto
-end
-stroke
-grestore
-0 setlinejoin
-gsave
-[0 -1 1 0 234.000031 576] concat
-gsave
-newpath
-systemdict
-begin
-395.800018 166.5 405.000031 175.5 setbbox
-405.000031 171 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-0.333338 nxsetgray
-gsave
-0.333338 nxsetgray
-newpath
-systemdict
-begin
-400 247 472 301 setbbox
-472 295.600006 moveto
-0 -43.200001 rlineto
-472 249.419205 455.872009 247 436 247 curveto
-416.127991 247 400 249.419205 400 252.399994 curveto
-0 43.200001 rlineto
-400 298.580811 416.127991 301 436 301 curveto
-455.872009 301 472 298.580811 472 295.600006 curveto
-closepath
-end
-clip
-newpath
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-400.5 247.5 471.5 300.5 setbbox
-471.5 295.200012 moveto
-0 -42.400002 rlineto
-471.5 249.874405 455.596008 247.5 436 247.5 curveto
-416.403992 247.5 400.5 249.874405 400.5 252.800003 curveto
-0 42.400002 rlineto
-400.5 298.12558 416.403992 300.5 436 300.5 curveto
-455.596008 300.5 471.5 298.12558 471.5 295.199982 curveto
-closepath
-end
-stroke
-grestore
-gsave
-newpath
-systemdict
-begin
-400.5 247.5 471.5 300.5 setbbox
-471.5 252.800003 moveto
-471.5 255.725601 455.596008 258.100006 436 258.100006 curveto
-416.403992 258.100006 400.5 255.725601 400.5 252.800003 curveto
-end
-stroke
-grestore
-grestore
-gsave
-newpath
-systemdict
-begin
-401 248 471 300 setbbox
-471 294.799988 moveto
-0 -41.599998 rlineto
-471 250.329605 455.320007 248 436 248 curveto
-416.679993 248 401 250.329605 401 253.199997 curveto
-0 41.599998 rlineto
-401 297.67041 416.679993 300 436 300 curveto
-455.320007 300 471 297.67041 471 294.800018 curveto
-closepath
-end
-fill
-grestore
-1 nxsetgray
-gsave
-newpath
-systemdict
-begin
-397 244 467 296 setbbox
-467 290.799988 moveto
-0 -41.599998 rlineto
-467 246.329605 451.320007 244 432 244 curveto
-412.679993 244 397 246.329605 397 249.199997 curveto
-0 41.599998 rlineto
-397 293.67041 412.679993 296 432 296 curveto
-451.320007 296 467 293.67041 467 290.800018 curveto
-closepath
-end
-fill
-grestore
-gsave
-newpath
-systemdict
-begin
-396 243 468 297 setbbox
-468 291.600006 moveto
-0 -43.200001 rlineto
-468 245.419205 451.872009 243 432 243 curveto
-412.127991 243 396 245.419205 396 248.399994 curveto
-0 43.200001 rlineto
-396 294.580811 412.127991 297 432 297 curveto
-451.872009 297 468 294.580811 468 291.600006 curveto
-closepath
-end
-clip
-newpath
-0 nxsetgray
-1 setlinewidth
-gsave
-newpath
-systemdict
-begin
-396.5 243.5 467.5 296.5 setbbox
-467.5 291.200012 moveto
-0 -42.400002 rlineto
-467.5 245.874405 451.596008 243.5 432 243.5 curveto
-412.403992 243.5 396.5 245.874405 396.5 248.800003 curveto
-0 42.400002 rlineto
-396.5 294.12558 412.403992 296.5 432 296.5 curveto
-451.596008 296.5 467.5 294.12558 467.5 291.199982 curveto
-closepath
-end
-stroke
-grestore
-gsave
-newpath
-systemdict
-begin
-396.5 243.5 467.5 296.5 setbbox
-467.5 248.800003 moveto
-467.5 251.725601 451.596008 254.100006 432 254.100006 curveto
-412.403992 254.100006 396.5 251.725601 396.5 248.800003 curveto
-end
-stroke
-grestore
-grestore
-gsave
-8 execuserobject setfont
-0 nxsetgray
-8 execuserobject setfont
-0 nxsetgray
-411 266 moveto (Routing) show
-416 281 moveto (Table) show
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-gsave
-newpath
-systemdict
-begin
-304.304871 227.434952 388.695129 255.565048 setbbox
-304.304871 227.434952 moveto
-388.695129 255.565048 lineto
-end
-stroke
-grestore
-0 setlinejoin
-gsave
-[-0.948683 -0.316228 0.316228 -0.948683 507.607697 532.373413] concat
-gsave
-newpath
-systemdict
-begin
-287.799988 220.5 297 229.5 setbbox
-297 225 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-gsave
-[0.948683 0.316228 -0.316228 0.948683 101.908165 -111.986488] concat
-gsave
-newpath
-systemdict
-begin
-386.799988 253.5 396 262.5 setbbox
-396 258 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-gsave
-newpath
-systemdict
-begin
-242.999969 72 243.000031 172.300003 setbbox
-243.000031 72 moveto
-242.999969 172.300003 lineto
-end
-stroke
-grestore
-0 setlinejoin
-gsave
-[0 1 -1 0 422.999969 -62.999969] concat
-gsave
-newpath
-systemdict
-begin
-233.799973 175.5 242.999969 184.5 setbbox
-242.999969 180 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-0 nxsetgray
-1 setlinewidth
-2 setlinejoin
-gsave
-newpath
-systemdict
-begin
-108 207 181.300003 414 setbbox
-108.000031 414 moveto
-108 207 lineto
-181.300003 207 lineto
-end
-stroke
-grestore
-0 setlinejoin
-gsave
-[1 0 0 1 0 0] concat
-gsave
-newpath
-systemdict
-begin
-179.800003 202.5 189 211.5 setbbox
-189 207 moveto
--9.2 4.5 rlineto
-1.5 -4.5 rlineto
--1.5 -4.5 rlineto
-closepath
-end
-fill
-grestore
-grestore
-grestore
-%%Trailer
-%%DocumentFonts: Helvetica
diff --git a/doc/networking/networking.gif b/doc/networking/networking.gif
deleted file mode 100644
index b2ede8048f..0000000000
--- a/doc/networking/networking.gif
+++ /dev/null
Binary files differ
diff --git a/doc/networking/networking.texi b/doc/networking/networking.texi
deleted file mode 100644
index cefac1b00d..0000000000
--- a/doc/networking/networking.texi
+++ /dev/null
@@ -1,107 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename networking
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the network Supplement
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Network Supplement:
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Network Supplement
-
-@setchapternewpage odd
-@settitle RTEMS Network Supplement
-@titlepage
-@finalout
-
-@title RTEMS Network Supplement
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include networktasks.texi
-@include driver.texi
-@include networkapp.texi
-@include testing.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top networking
-
-This is the online version of the RTEMS Network Supplement.
-
-@menu
-* Preface::
-* Network Task Structure and Data Flow::
-* Writing RTEMS Network Device Drivers::
-* Using Networking in an RTEMS Application::
-* Testing the Driver::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, Throughput, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@c @contents
-@bye
-
diff --git a/doc/networking/networktasks.t b/doc/networking/networktasks.t
deleted file mode 100644
index 61b9fa68e1..0000000000
--- a/doc/networking/networktasks.t
+++ /dev/null
@@ -1,62 +0,0 @@
-@c
-@c Written by Eric Norum
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Network Task Structure and Data Flow
-
-A schematic diagram of the tasks and message @b{mbuf} queues in a
-simple RTEMS networking application is shown in the following
-figure:
-
-@ifset use-ascii
-@example
-@group
-NO ASCII VERSION OF THE TASKING FIGURE IS AVAILABLE
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@c for now use the ascii version
-@example
-@group
-@c why does this not work?
-@c @image{networking}
-NO TEX VERSION OF THE TASKING FIGURE IS AVAILABLE
-@end group
-@end example
-@end ifset
-
-@ifset use-html
-@html
-<IMG SRC="networking.gif" ALIGN=CENTER
- ALT="Network Task Structure and Data Flow">
-@end html
-@end ifset
-
-
-The transmit task for each network interface is normally blocked waiting
-for a packet to arrive in the transmit queue. Once a packet arrives, the
-transmit task may block waiting for an event from the transmit interrupt
-handler. The transmit interrupt handler sends an RTEMS event to the transmit
-task to indicate that transmit hardware resources have become available.
-
-The receive task for each network interface is normally blocked waiting
-for an event from the receive interrupt handler. When this event is received
-the receive task reads the packet and forwards it to the network stack
-for subsequent processing by the network task.
-
-The network task processes incoming packets and takes care of
-timed operations such as handling TCP timeouts and
-aging and removing routing table entries.
-
-The `Network code' contains routines which may run in the context of
-the user application tasks, the interface receive task or the network task.
-A network semaphore ensures that
-the data structures manipulated by the network code remain consistent.
diff --git a/doc/networking/preface.texi b/doc/networking/preface.texi
deleted file mode 100644
index 7909bb6868..0000000000
--- a/doc/networking/preface.texi
+++ /dev/null
@@ -1,57 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, Network Task Structure and Data Flow, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-This document describes the RTEMS specific parts of the FreeBSD TCP/IP
-stack. Much of this documentation was written by Eric Norum
-@ifset use-html
-(@href{eric@@skatter.usask.ca,,,mailto:eric@@skatter.usask.ca})
-@end ifset
-@ifclear use-html
-(eric@@skatter.usask.ca)
-@end ifclear
-of the Saskatchewan Accelerator Laboratory
-who also ported the FreeBSD TCP/IP stack to RTEMS.
-
-The following is a list of resources which should be useful in trying
-to understand Ethernet:
-
-@itemize @bullet
-
-@item @cite{Charles Spurgeon's Ethernet Web Site}
-
-"This site provides extensive information about Ethernet
-(IEEE 802.3) local area network (LAN) technology. Including
-the original 10 Megabit per second (Mbps) system, the 100 Mbps
-Fast Ethernet system (802.3u), and the Gigabit Ethernet system (802.3z)."
-The URL is:
-@ifset use-html
-(@href{http://wwwhost.ots.utexas.edu/ethernet/index.html,,,http://wwwhost.ots.utexas.edu/ethernet/index.html})
-@end ifset
-@ifclear use-html
-(http://wwwhost.ots.utexas.edu/ethernet/index.html)
-@end ifclear
-
-@item @cite{TCP/IP Illustrated, Volume 1 : The Protocols} by
-by W. Richard Stevens (ISBN: 0201633469)
-
-This book provides detailed introduction to TCP/IP and includes diagnostic
-programs which are publicly available.
-
-@item @cite{TCP/IP Illustrated : The Implementation} by W. Richard
-Stevens and Gary Wright (ISBN: 020163354X)
-
-This book focuses on implementation issues regarding TCP/IP. The
-treat for RTEMS users is that the implementation covered is the BSD
-stack.
-
-@end itemize
diff --git a/doc/networking/testing.t b/doc/networking/testing.t
deleted file mode 100644
index af1460ad2d..0000000000
--- a/doc/networking/testing.t
+++ /dev/null
@@ -1,175 +0,0 @@
-@c
-@c Written by Eric Norum
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-
-@chapter Testing the Driver
-
-@section Preliminary Setup
-
-The network used to test the driver should include at least:
-
-@itemize @bullet
-
-@item The hardware on which the driver is to run.
-It makes testing much easier if you can run a debugger to control
-the operation of the target machine.
-
-@item An Ethernet network analyzer or a workstation with an
-`Ethernet snoop' program such as @code{ethersnoop} or
-@code{tcpdump}.
-
-@item A workstation.
-
-@end itemize
-
-During early debug, you should consider putting the target, workstation,
-and snooper on a small network by themselves. This offers a few
-advantages:
-
-@itemize @bullet
-
-@item There is less traffic to look at on the snooper and for the target
-to process while bringing the driver up.
-
-@item Any serious errors will impact only your small network not a building
-or campus network. You want to avoid causing any unnecessary problems.
-
-@item Test traffic is easier to repeatably generate.
-
-@item Performance measurements are not impacted by other systems on
-the network.
-
-@end itemize
-
-@section Driver basic operation
-
-The network demonstration program @code{netdemo} may be used for these tests.
-
-@itemize @bullet
-
-@item Edit @code{networkconfig.h} to reflect the values for your network.
-
-@item Start with @code{RTEMS_USE_BOOTP} not defined.
-
-@item Edit @code{networkconfig.h} to configure the driver
-with an
-explicit Ethernet and Internet address and with reception of
-broadcast packets disabled:
-
-Verify that the program continues to run once the driver has been attached.
-
-@item Issue a @samp{u} command to send UDP
-packets to the `discard' port.
-Verify that the packets appear on the network.
-
-@item Issue a @samp{s} command to print the network and driver statistics.
-
-@item On a workstation, add a static route to the target system.
-
-@item On that same workstation try to `ping' the target system.
-Verify that the ICMP echo request and reply packets appear on the net.
-
-@item Remove the static route to the target system.
-Modify @code{networkconfig.h} to attach the driver
-with reception of broadcast packets enabled.
-Try to `ping' the target system again.
-Verify that ARP request/reply and ICMP echo request/reply packets appear
-on the net.
-
-@item Issue a @samp{t} command to send TCP
-packets to the `discard' port.
-Verify that the packets appear on the network.
-
-@item Issue a @samp{s} command to print the network and driver statistics.
-
-@item Verify that you can telnet to ports 24742
-and 24743 on the target system from one or more
-workstations on your network.
-
-@end itemize
-
-@section BOOTP operation
-
-Set up a BOOTP server on the network.
-Set define @code{RTEMS USE_BOOT} in @code{networkconfig.h}.
-Run the @code{netdemo} test program.
-Verify that the target system configures itself from the BOOTP server and
-that all the above tests succeed.
-
-@section Stress Tests
-
-Once the driver passes the tests described in the previous section it should
-be subjected to conditions which exercise it more
-thoroughly and which test its error handling routines.
-
-@subsection Giant packets
-
-@itemize @bullet
-@item Recompile the driver with @code{MAXIMUM_FRAME_SIZE} set to
-a smaller value, say 514.
-
-@item `Ping' the driver from another workstation and verify
-that frames larger than 514 bytes are correctly rejected.
-
-@item Recompile the driver with @code{MAXIMUM_FRAME_SIZE} restored to 1518.
-@end itemize
-
-@subsection Resource Exhaustion
-
-@itemize @bullet
-@item Edit @code{networkconfig.h}
-so that the driver is configured with just two receive and transmit descriptors.
-
-@item Compile and run the @code{netdemo} program.
-
-@item Verify that the program operates properly and that you can
-still telnet to both the ports.
-
-@item Display the driver statistics (Console `@code{s}' command or telnet
-`control-G' character) and verify that:
-
-@enumerate
-
-@item The number of transmit interrupts is non-zero.
-This indicates that all transmit descriptors have been in use at some time.
-
-@item The number of missed packets is non-zero.
-This indicates that all receive descriptors have been in use at some time.
-
-@end enumerate
-
-@end itemize
-
-@subsection Cable Faults
-
-@itemize @bullet
-@item Run the @code{netdemo} program.
-
-@item Issue a `@code{u}' console command to make the target machine transmit
-a bunch of UDP packets.
-
-@item While the packets are being transmitted, disconnect and reconnect the
-network cable.
-
-@item Display the network statistics and verify that the driver has
-detected the loss of carrier.
-
-@item Verify that you can still telnet to both ports on the target machine.
-
-@end itemize
-
-@subsection Throughput
-
-Run the @code{ttcp} network benchmark program.
-Transfer large amounts of data (100's of megabytes) to and from the target
-system.
-
-
-
diff --git a/doc/new_chapters/Makefile b/doc/new_chapters/Makefile
deleted file mode 100644
index 90d078621d..0000000000
--- a/doc/new_chapters/Makefile
+++ /dev/null
@@ -1,172 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=posix_users_new
-DISTRIBUTION_LEVEL=public
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi
-
-GENERATED_FILES= \
- adminiface.texi cancel.texi clock.texi cond.texi confspace.texi \
- cspecific.texi device.texi dumpcontrol.texi eventlog.texi files.texi \
- io.texi key.texi memorymgmt.texi message.texi mutex.texi procenv.texi \
- process.texi sched.texi semaphores.texi signal.texi systemdb.texi \
- thread.texi
-
-FILES= posix_users.texi preface.texi \
- $(COMMON_FILES) $(GENERATED_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs $(FILES) $(PROJECT)
-# cp $(PROJECT) $(PROJECT)-* $(INFO_INSTALL)
- cp $(PROJECT) $(INFO_INSTALL)
-
-$(PROJECT): $(FILES)
- $(MAKEINFO) posix_users.texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) posix_users.texi
- mv posix_users.dvi $(PROJECT).dvi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- -cd .. ; gmake headers
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- posix_users.texi
-
-
-clean:
- rm -f *.o $(PROG) *.txt core *.html
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-* _* $(GENERATED_FILES)
-
-process.texi: process.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-procenv.texi: procenv.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-files.texi: files.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-thread.texi: thread.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-signal.texi: signal.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-mutex.texi: mutex.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-cond.texi: cond.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-key.texi: key.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-clock.texi: clock.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-sched.texi: sched.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-io.texi: io.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-device.texi: device.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-cspecific.texi: cspecific.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-semaphores.texi: semaphores.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-memorymgmt.texi: memorymgmt.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-message.texi: message.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-cancel.texi: cancel.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-eventlog.texi: eventlog.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-dumpcontrol.texi: dumpcontrol.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-confspace.texi: confspace.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-adminiface.texi: adminiface.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
-systemdb.texi: systemdb.t Makefile
- $(BMENU) -p "" \
- -u "Top" \
- -n "" ${*}.t
-
diff --git a/doc/new_chapters/STATUS b/doc/new_chapters/STATUS
deleted file mode 100644
index f7103dc99e..0000000000
--- a/doc/new_chapters/STATUS
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# $Id$
-#
-
-Each of the chapters is individually generated with no attempt to link
-the chapters together into a long hypertext chain.
-
diff --git a/doc/new_chapters/adminiface.t b/doc/new_chapters/adminiface.t
deleted file mode 100644
index c38b551e96..0000000000
--- a/doc/new_chapters/adminiface.t
+++ /dev/null
@@ -1,129 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Administration Interface Manager
-
-@section Introduction
-
-The administration interface manager provides a portable
-interface for some system administrative functions.
-The capabilities in this manager are defined in the POSIX
-1003.1h/D3 proposed standard titled @b{Services for Reliable,
-Available, and Serviceable Systems}.
-
-The directives provided by the administration interface manager are:
-
-@itemize @bullet
-@item @code{admin_shutdown} - Shutdown the system
-@end itemize
-
-@section Background
-
-@subsection admin_args Structure
-
-@example
-put structure here
-@end example
-
-@table @b
-@item admin_type
-This field ...
-
-@table @b
-@item ADMIN_AUTOBOOT
-The default, causing the system to reboot in its usual fashion. The
-@code{admin_data} field points to an implementation defined string
-that specifies the system image to reboot.
-
-@item ADMIN_HALT
-The system is simply halted; no reboot takes place.
-
-@item ADMIN_FAST
-The system does no send SIGTERM to active processes before halting.
-
-@item ADMIN_IMMEDIATE
-The system does not perform any of the normal shutdown procedures.
-
-@item ADMIN_ALTSYSTEM
-The system reboots using the @code{admin_data} string as a specification
-of the system to be booted.
-
-@item ADMIN_ALTCONFIG
-The system reboots using the @code{admin_data} string as a specification
-of the initial implicit configuration space.
-
-@item ADMIN_SYSDUMP
-Dump kernal memory before rebooting.
-
-@item ADMIN_INIT
-An option allowing the specification of an alternate initial program
-to be run when the system reboots.
-
-@end table
-
-@item admin_data
-This field ...
-
-@end table
-
-@section Operations
-
-@subsection Shutting Down the System
-
-@section Directives
-
-This section details the administration interface manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection admin_shutdown - Shutdown the system
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <admin.h>
-
-int admin_shutdown(
- struct admin_args *args[],
- size_t nargs
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-An invalid argument was passed to the function call.
-
-@item EPERM
-The caller does not have appropriate permission for shutting down the
-system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{admin_shutdown} function restarts the system. The
-@code{args} argument specifies alternate or optional behavior
-for the @code{admin_shutdown} function. The @code{admin_type}
-member of each element of the @code{args} array specifies the
-optional behavior to be performed. There are some @code{admin_types}
-values that may provoke unspecified behavior. The @code{nargs}
-argument specifies the length of the @code{args} array.
-
-@subheading NOTES:
-
-The @code{_POSIX_ADMIN} feature flag is defined to indicate
-this service is available.
diff --git a/doc/new_chapters/base.t b/doc/new_chapters/base.t
deleted file mode 100644
index e258f87f80..0000000000
--- a/doc/new_chapters/base.t
+++ /dev/null
@@ -1,62 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Mutex Manager
-
-@section Introduction
-
-The mutex manager ...
-
-The directives provided by the mutex manager are:
-
-@itemize @bullet
-@item @code{sigaddset} -
-@item @code{sigdelset} -
-@item @code{sigfillset} -
-@item @code{sigismember} -
-@item @code{sigemptyset} -
-@item @code{sigaction} -
-@item @code{pthread_kill} -
-@item @code{pthread_sigmask} -
-@item @code{kill} -
-@item @code{sigwait} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the mutex manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection sigaddset
-
-@subheading CALLING SEQUENCE:
-
-@example
-int sigaddset(
- sigset_t *set,
- int signo
-);
-@end example
-
-@subheading STATUS CODES:
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/cancel.t b/doc/new_chapters/cancel.t
deleted file mode 100644
index e71d70c6df..0000000000
--- a/doc/new_chapters/cancel.t
+++ /dev/null
@@ -1,175 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Thread Cancellation Manager
-
-@section Introduction
-
-The
-thread cancellation manager is ...
-
-The directives provided by the thread cancellation manager are:
-
-@itemize @bullet
-@item @code{pthread_cancel} -
-@item @code{pthread_setcancelstate} -
-@item @code{pthread_setcanceltype} -
-@item @code{pthread_testcancel} -
-@item @code{pthread_cleanup_push} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the thread cancellation manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection pthread_cancel -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int pthread_cancel(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_setcancelstate -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int pthread_setcancelstate(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_setcanceltype -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int pthread_setcanceltype(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_testcancel -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int pthread_testcancel(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_cleanup_push -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int pthread_cleanup_push(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/clock.t b/doc/new_chapters/clock.t
deleted file mode 100644
index 7c05acd671..0000000000
--- a/doc/new_chapters/clock.t
+++ /dev/null
@@ -1,274 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Clock Manager
-
-@section Introduction
-
-The clock manager ...
-
-The directives provided by the clock manager are:
-
-@itemize @bullet
-@item @code{clock_gettime} -
-@item @code{clock_settime} -
-@item @code{clock_getres} -
-@item @code{sleep} - Delay Process Execution
-@item @code{nanosleep} -
-@item @code{gettimeofday} - Get the Time of Day
-@item @code{time} - Get time in seconds
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the clock manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@subsection clock_gettime -
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int clock_gettime(
- clockid_t clock_id,
- struct timespec *tp
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The tp pointer parameter is invalid.
-
-@item EINVAL
-The clock_id specified is invalid.
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection clock_settime -
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int clock_settime(
- clockid_t clock_id,
- const struct timespec *tp
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The tp pointer parameter is invalid.
-
-@item EINVAL
-The clock_id specified is invalid.
-
-@item EINVAL
-The contents of the tp structure are invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection clock_getres -
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int clock_getres(
- clockid_t clock_id,
- struct timespec *res
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The res pointer parameter is invalid.
-
-@item EINVAL
-The clock_id specified is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If res is NULL, then the resolution is not returned.
-
-@page
-@subsection sleep - Delay Process Execution
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-unsigned int sleep(
- unsigned int seconds
-);
-@end example
-
-@subheading STATUS CODES:
-
-This routine returns the number of unslept seconds.
-
-@subheading DESCRIPTION:
-
-The @code{sleep()} function delays the calling thread by the specified
-number of @code{seconds}.
-
-@subheading NOTES:
-
-This call is interruptible by a signal.
-
-@page
-@subsection nanosleep -
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int nanosleep(
- const struct timespec *rqtp,
- struct timespec *rmtp
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINTR
-The routine was interrupted by a signal.
-
-@item EAGAIN
-The requested sleep period specified negative seconds or nanoseconds.
-
-@item EINVAL
-The requested sleep period specified an invalid number for the nanoseconds
-field.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This call is interruptible by a signal.
-
-@page
-@subsection gettimeofday - Get the Time of Day
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sys/time.h>
-#include <unistd.h>
-
-int gettimeofday(
- struct timeval *tp,
- struct timezone *tzp
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets @code{errno} as appropriate.
-
-@table @b
-@item EPERM
-@code{settimeofdat} is called by someone other than the superuser.
-
-@item EINVAL
-Timezone (or something else) is invalid.
-
-@item EFAULT
-One of @code{tv} or @code{tz} pointed outside your accessible address
-space
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine returns the current time of day in the @code{tp} structure.
-
-@subheading NOTES:
-
-Currently, the timezone information is not supported. The @code{tzp}
-argument is ignored.
-
-@page
-@subsection time - Get time in seconds
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int time(
- time_t *tloc
-);
-@end example
-
-@subheading STATUS CODES:
-
-This routine returns the number of seconds since the Epoch.
-
-@subheading DESCRIPTION:
-
-@code{time} returns the time since 00:00:00 GMT, January 1, 1970,
-measured in seconds
-
-If @code{tloc} in non null, the return value is also stored in the
-memory pointed to by @code{t}.
-
-@subheading NOTES:
-
-NONE
-
diff --git a/doc/new_chapters/cond.t b/doc/new_chapters/cond.t
deleted file mode 100644
index 4c381a6864..0000000000
--- a/doc/new_chapters/cond.t
+++ /dev/null
@@ -1,323 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Condition Variable Manager
-
-@section Introduction
-
-The condition variable manager ...
-
-The directives provided by the condition variable manager are:
-
-@itemize @bullet
-@item @code{pthread_condattr_init} -
-@item @code{pthread_condattr_destroy} -
-@item @code{pthread_condattr_setpshared} -
-@item @code{pthread_condattr_getpshared} -
-@item @code{pthread_cond_init} -
-@item @code{pthread_cond_destroy} -
-@item @code{pthread_cond_signal} -
-@item @code{pthread_cond_broadcast} -
-@item @code{pthread_cond_wait} -
-@item @code{pthread_cond_timedwait} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the condition variable manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection pthread_condattr_init
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_condattr_init(
- pthread_condattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item ENOMEM
-Insufficient memory is available to initialize the condition variable
-attributes object.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_condattr_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_condattr_destroy(
- pthread_condattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute object specified is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_condattr_setpshared
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_condattr_setpshared(
- pthread_condattr_t *attr,
- int pshared
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_condattr_getpshared
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_condattr_getpshared(
- const pthread_condattr_t *attr,
- int *pshared
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
-@page
-@subsection pthread_cond_init
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_init(
- pthread_cond_t *cond,
- const pthread_condattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EAGAIN
-The system lacked a resource other than memory necessary to create the
-initialize the condition variable object.
-
-@item ENOMEM
-Insufficient memory is available to initialize the condition variable object.
-
-@item EBUSY
-The specified condition variable has already been initialized.
-
-@item EINVAL
-The specified attribute value is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_cond_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_destroy(
- pthread_cond_t *cond
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable is invalid.
-
-@item EBUSY
-The specified condition variable is currently in use.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_cond_signal
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_signal(
- pthread_cond_t *cond
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable is not valid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine should not be invoked from a handler from an asynchronous signal
-handler or an interrupt service routine.
-
-@page
-@subsection pthread_cond_broadcast
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_broadcast(
- pthread_cond_t *cond
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable is not valid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine should not be invoked from a handler from an asynchronous signal
-handler or an interrupt service routine.
-
-@page
-@subsection pthread_cond_wait
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_wait(
- pthread_cond_t *cond,
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable or mutex is not initialized OR different
-mutexes were specified for concurrent pthread_cond_wait() and
-pthread_cond_timedwait() operations on the same condition variable OR
-the mutex was not owned by the current thread at the time of the call.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_cond_timedwait
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_timedwait(
- pthread_cond_t *cond,
- pthread_mutex_t *mutex,
- const struct timespec *abstime
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable or mutex is not initialized OR different
-mutexes were specified for concurrent pthread_cond_wait() and
-pthread_cond_timedwait() operations on the same condition variable OR
-the mutex was not owned by the current thread at the time of the call.
-
-@item ETIMEDOUT
-The specified time has elapsed without the condition variable being
-satisfied.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/confspace.t b/doc/new_chapters/confspace.t
deleted file mode 100644
index 262d32687c..0000000000
--- a/doc/new_chapters/confspace.t
+++ /dev/null
@@ -1,1351 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Configuration Space Manager
-
-@section Introduction
-
-The configuration space manager provides a portable
-interface for manipulating configuration data.
-The capabilities in this manager were defined in the POSIX
-1003.1h/D3 proposed standard titled @b{Services for Reliable,
-Available, and Serviceable Systems}.
-
-The directives provided by the configuration space manager are:
-
-@itemize @bullet
-@item @code{cfg_mount} - Mount a Configuration Space
-@item @code{cfg_unmount} - Unmount a Configuration Space
-@item @code{cfg_mknod} - Create a Configuration Node
-@item @code{cfg_get} - Get Configuration Node Value
-@item @code{cfg_set} - Set Configuration Node Value
-@item @code{cfg_link} - Create a Configuration Link
-@item @code{cfg_unlink} - Remove a Configuration Link
-@item @code{cfg_open} - Open a Configuration Space
-@item @code{cfg_read} - Read a Configuration Space
-@item @code{cfg_children} - Get Node Entries
-@item @code{cfg_mark} - Set Configuration Space Option
-@item @code{cfg_readdir} - Reads a directory
-@item @code{cfg_umask} - Sets a file creation mask
-@item @code{cfg_chmod} - Changes file mode
-@item @code{cfg_chown} - Changes the owner and/or group of a file
-@end itemize
-
-@section Background
-
-@subsection Configuration Nodes
-
-@subsection Configuration Space
-
-@subsection Format of a Configuration Space File
-
-@section Operations
-
-@subsection Mount and Unmounting
-
-@subsection Creating a Configuration Node
-
-@subsection Removing a Configuration Node
-
-@subsection Manipulating a Configuration Node
-
-@subsection Traversing a Configuration Space
-
-@section Directives
-
-This section details the configuration space manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection cfg_mount - Mount a Configuration Space
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_mount(
- const char *file,
- const char *cfgpath,
- log_facility_t notification,
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_mount()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EPERM
-The caller does not have the appropriate privilege.
-
-@item EACCES
-Search permission is denied for a component of the path prefix.
-
-@item EEXIST
-The file specified by the @code{file} argument does not exist
-
-@item ENAMETOOLONG
-A component of a pathname exceeded @code{NAME_MAX} characters,
-or an entire path name exceed @code{PATH_MAX} characters while
-@code{_POSIX_NO_TRUNC} is in effect.
-
-@item ENOENT
-A component of @code{cfgpath} does not exist.
-
-@item ENOTDIR
-A component of the @code{file} path prefix is not a directory.
-
-@item EBUSY
-The configuration space defined by @code{file} is already mounted.
-
-@item EINVAL
-The notification argument specifies an invalid log facility.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_mount()} function maps a configuration space defined
-by the file identified by the the @code{file} argument. The
-distinguished node of the mapped configuration space is
-mounted in the active space at the point identified by the
-@code{cfgpath} configuration pathname.
-
-The @code{notification} argument specifies how changes to the
-mapped configuration space are communicated to the application.
-If the @code{notification} argument is NULL, no notification will be
-be performed for the mapped configuration space. If the Event
-Logging option is defined, the notification argument defines the
-facility to which changes in the mapped configuration space are
-logged. Otherwise, the @code{notification} argument specifies
-an implementation defined method of notifying the application
-of changes to the mapped configuration space.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_unmount - Unmount a Configuration Space
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_unmount(
- const char *cfgpath
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_umount()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EPERM
-The caller does not have the appropriate privileges.
-
-@item EACCES
-Search permission is denied for a component of the path prefix.
-
-@item ENOENT
-A component of @code{cfgpath} does not exist.
-
-@item ENAMETOOLONG
-A component of a pathname exceeded @code{NAME_MAX} characters,
-or an entire path name exceed @code{PATH_MAX} characters while
-@code{_POSIX_NO_TRUNC} is in effect.
-
-@item EINVAL
-The requested node is not the distinguished node of a mounted
-configuration space.
-
-@item EBUSY
-One or more processes has an open configuration traversal
-stream for the configuration space whose distinguished node is
-referenced by the cfgpath argument.
-
-@item ELOOP
-A node appears more than once in the path specified by the
-@code{cfgpath} argument
-
-@item ELOOP
-More than @code{SYMLOOP_MAX} symbolic links were encountered during
-resolution of the cfgpath argument
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_umount()} function unmaps the configuration space whose
-distinguished node is mapped in the active space at the location defined
-by @code{cfgpath} configuration pathname. All system resources
-allocated for this configuration space should be deallocated.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_mknod - Create a Configuration Node
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_mknod(
- const char *cfgpath,
- mode_t mode,
- cfg_type_t type
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_mknod()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item ENAMETOOLONG
-A component of a pathname exceeded @code{NAME_MAX} characters,
-or an entire path name exceed @code{PATH_MAX} characters while
-@code{_POSIX_NO_TRUNC} is in effect.
-
-@item ENOENT
-A component of the path prefix does not exist.
-
-@item EACCES
-Search permission is denied for a component of the path prefix.
-
-
-@item EPERM
-The calling process does not have the appropriate privilege.
-
-@item EEXIST
-The named node exists.
-
-@item EINVAL
-The value of @code{mode} is invalid.
-
-@item EINVAL
-The value of @code{type} is invalid.
-
-@item ELOOP
-A node appears more than once in the path specified by the
-@code{cfg_path} argument
-
-@item ELOOP
-More than @code{SYMLOOP_MAX} symbolic links were encountered during
-resolution of the @code{cfgpath} argument.
-
-@item EROFS
-The named @code{node} resides on a read-only configuration space.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_mknod()} function creates a new node in the configuration
-space which contains the pathname prefix of @code{cfgpath}. The node
-name is defined by the pathname suffix of @code{cfgpath}. The node
-permissions are specified by the value of @code{mode}. The node type
-is specified by the value of @code{type}.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_get - Get Configuration Node Value
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_get(
- const char *cfgpath
- cfg_value_t *value
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_get()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item ENAMETOOLONG
-A component of a pathname exceeded @code{NAME_MAX} characters,
-or an entire path name exceed @code{PATH_MAX} characters while
-@code{_POSIX_NO_TRUNC} is in effect.
-
-@item ENOENT
-A component of @code{cfgpath} does not exist.
-
-@item EACCES
-Search permission is denied for a component of the path prefix.
-
-@item EPERM
-The calling process does not have the appropriate privileges.
-
-@item ELOOP
-A node appears more than once in the path specified by the
-@code{cfgpath} argument
-
-@item ELOOP
-More than @code{SYMLOOP_MAX} symbolic links were encountered during
-resolution of the @code{cfgpath} argument.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_get()} function stores the value attribute of the
-configuration node identified by @code{cfgpath}, into the buffer
-described by the @code{value} pointer.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_set - Set Configuration Node Value
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_set(
- const char *cfgpath
- cfg_value_t *value
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_set()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item ENAMETOOLONG
-A component of a pathname exceeded @code{NAME_MAX} characters,
-or an entire path name exceed @code{PATH_MAX} characters while
-@code{_POSIX_NO_TRUNC} is in effect.
-
-@item ENOENT
-A component of @code{cfgpath} does not exist
-
-@item EACCES
-Search permission is denied for a component of the path prefix.
-
-@item EPERM
-The calling process does not have the appropriate privilege.
-
-@item ELOOP
-A node appears more than once in the path specified by the
-@code{cfgpath} argument.
-
-@item ELOOP
-More than @code{SYMLOOP_MAX} symbolic links were encountered during
-resolution of the cfgpath argument.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_set()} function stores the value specified by the
-@code{value} argument in the configuration node defined by the
-@code{cfgpath} argument.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_link - Create a Configuration Link
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_link(
- const char *src
- const char *dest
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_link()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item ENAMETOOLONG
-A component of a pathname exceeded @code{NAME_MAX} characters,
-or an entire path name exceed @code{PATH_MAX} characters while
-@code{_POSIX_NO_TRUNC} is in effect.
-
-@item ENOENT
-A component of either path prefix does not exist.
-
-@item EACCES
-A component of either path prefix denies search permission.
-
-@item EACCES
-The requested link requires writing in a node with a mode that
-denies write permission.
-
-@item ENOENT
-The node named by @code{src} does not exist.
-
-@item EEXIST
-The node named by @code{dest} does exist.
-
-@item EPERM
-The calling process does not have the appropriate privilege to
-modify the node indicated by the @code{src} argument.
-
-@item EXDEV
-The link named by @code{dest} and the node named by @code{src} are from different
-configuration spaces.
-
-@item ENOSPC
-The node in which the entry for the new link is being placed
-cannot be extended because there is no space left on the
-configuration space containing the node.
-
-@item EIO
-An I/O error occurred while reading from or writing to the
-configuration space to make the link entry.
-
-@item EROFS
-The requested link requires writing in a node on a read-only
-configuration space.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{src} and @code{dest} arguments point to pathnames which
-name existing nodes. The @code{cfg_link()} function atomically creates
-a link between specified nodes, and increment by one the link count
-of the node specified by the @code{src} argument.
-
-If the @code{cfg_link()} function fails, no link is created, and the
-link count of the node remains unchanged by this function call.
-
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_unlink - Remove a Configuration Link
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_unlink(
- const char *cfgpath
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_unlink()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item ENAMETOOLONG
-A component of a pathname exceeded @code{NAME_MAX} characters,
-or an entire path name exceed @code{PATH_MAX} characters.
-
-@item EACCES
-Search permission is denied on the node containing the link to
-be removed.
-
-@item EACCES
-Write permission is denied on the node containing the link to
-be removed.
-
-@item ENOENT
-A component of @code{cfgpath} does not exist.
-
-@item EPERM
-The calling process does not have the appropriate privilege to
-modify the node indicated by the path prefix of the @code{cfgpath}
-argument.
-
-@item EBUSY
-The node to be unlinked is the distinguished node of a mounted
-configuration space.
-
-@item EIO
-An I/O error occurred while deleting the link entry or deallocating
-the node.
-
-@item EROFS
-The named node resides in a read-only configuration space.
-
-@item ELOOP
-A node appears more than once in the path specified by the
-@code{cfgpath} argument.
-
-@item ELOOP
-More than @code{SYMLOOP_MAX} symbolic links were encountered during
-resolution of the cfgpath argument.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_unlink()} function removes the link between the node
-specified by the @code{cfgpath} path prefix and the parent node
-specified by @code{cfgpath}, and decrements the link count
-of the @code{cfgpath} node.
-
-When the link count of the node becomes zero, the space occupied
-by the node is freed and the node is no longer be accessible.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_open - Open a Configuration Space
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_open(
- const char *pathnames[],
- int options,
- int (*compar)(const CFGENT **f1, const CFGENT **f2),
- CFG **cfgstream
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_open()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EACCES
-Search permission is denied for any component of a pathname.
-
-@item ELOOP
-A loop exists in symbolic links encountered during resolution
-of a pathname.
-
-@item ENAMETOOLONG
-The length of a pathname exceeds @code{PATH_MAX}, or a pathname
-component is longer than @code{NAME_MAX} while @code{_POSIX_NO_TRUNC}
-
-@item ENOENT
-The pathname argument is an empty string or the named node
-does not exist.
-
-@item EINVAL
-Either both or neither of @code{CFG_LOGICAL} and @code{CFG_PHYSICAL} are
-specified by the @code{options} argument
-
-@item ENOMEM
-Not enough memory is available to create the necessary structures.
-
-@item ELOOP
-More than @code{SYMLOOP_MAX} symbolic links were encountered during
-resolution of the @code{pathnames} argument.
-
-@item ENAMETOOLONG
-As a result of encountering a symbolic link in resolution of the
-pathname specified by the @code{pathnames} argument, the length of
-the substituted pathname string exceeded @code{PATH_MAX}.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_open()} function opens a configuration traversal stream
-rooted in the configuration nodes name by the @code{pathnames} argument.
-It stores a pointer to a CFG object that represents that stream at
-the location identified the @code{cfgstream} pointer. The @code{pathnames}
-argument is an array of character pointers to NULL-terminated strings.
-The last member of this array is a NULL pointer.
-
-The value of @code{options} is the bitwise inclusive OR of values from the
-following lists. Applications supply exactly one of the first two values
-below in @code{options}.
-
-@table @b
-
-@item CFG_LOGICAL
-When symbolic links referencing existing nodes are
-encountered during the traversal, the @code{cfg_info}
-field of the returned CFGENT structure describes the
-target node pointed to by the link instead of the
-link itself, unless the target node does not exist.
-If the target node has children, the pre-order return,
-followed by the return of structures referencing all of
-its descendants, followed by a post-order return, is done.
-
-@item CFG_PHYSICAL
-When symbolic links are encountered during the traversal,
-the @code{cfg_info} field is used to describe the symbolic
-link.
-
-@end table
-
-
-Any combination of the remaining flags can be specified in the value of
-@code{options}
-
-@table @b
-
-@item CFG_COMFOLLOW
-When symbolic links referencing existing nodes are
-specified in the @code{pathnames} argument, the
-@code{cfg_info} field of the returned CFGENT structure
-describes the target node pointed to by the link
-instead of the link itself, unless the target node does
-not exist. If the target node has children, the
-pre-order return, followed by the return of structures
-referencing all its descendants, followed by a post-order
-return, is done.
-
-@item CFG_XDEV
-The configuration space functions do not return a
-CFGENT structure for any node in a different configuration
-space than the configuration space of the nodes identified
-by the CFGENT structures for the @code{pathnames} argument.
-
-@end table
-
-The @code{cfg_open()} argument @code{compar} is either a NULL or point
-to a function that is called with two pointers to pointers to CFGENT
-structures that returns less than, equal to , or greater than zero if
-the node referenced by the first argument is considered to be respectively
-less than, equal to, or greater than the node referenced by the second.
-The CFGENT structure fields provided to the comparison routine is as
-described with the exception that the contents of the @code{cfg_path} and
-@code{cfg_pathlen} fields are unspecified.
-
-This comparison routine is used to determine the order in which nodes in
-directories encountered during the traversal are returned, and the order
-of traversal when more than one node is specified in the @code{pathnames}
-argument to @code{cfg_open()}. If a comparison routine is specified, the
-order of traversal is from the least to the greatest. If the @code{compar}
-argument is NULL, the order of traversal shall is listed in the
-@code{pathnames} argument.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_read - Read a Configuration Space
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_read(
- CFG *cfgp,
- CFGENT **node
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_read()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EACCES
-Search permission is denied for any component of a pathname.
-
-@item EBADF
-The @code{cfgp} argument does not refer to an open configuration
-space.
-
-@item ELOOP
-A loop exists in symbolic links encountered during resolution
-of a pathname.
-
-@item ENOENT
-A named @code{node} does not exist.
-
-@item ENOMEM
-Not enough memory is available to create the necessary structures.
-
-@item ELOOP
-More than @code{SYMLOOP_MAX} symbolic links were encountered during
-resolution of the cfgpath argument.
-
-@item ENAMETOOLONG
-As a result of encountering a symbolic link in resolution of the
-pathname specified by the pathnames argument, the length of the
-substituted pathname string exceeded @code{PATH_MATH}.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_read()} function returns a pointer to a CFGENT structure
-representing a node in the configuration space to which @code{cfgp}
-refers. The returned pointer is stored at the location indicated
-by the @code{node} argument.
-
-The child nodes of each node in the configuration tree is returned
-by @code{cfg_read()}. If a comparison routine was specified to the
-@code{cfg_open()} function, the order of return of the child nodes is
-as specified by the @code{compar} routine, from least to greatest.
-Otherwise, the order of return is unspecified.
-
-Structures referencing nodes with children is returned by the
-function @code{cfg_read()} at least twice [unless the application
-specifies otherwise with @code{cfg_mark()}]-once immediately before
-the structures representing their descendants, are returned
-(pre-order), and once immediately after structures representing all
-of their descendants, if any, are returned (post-order). The
-CFGENT structure returned in post-order (with the exception of the
-@code{cfg_info} field) is identical to that returned in pre-order.
-Structures referencing nodes of other types is returned at least
-once.
-
-The fields of the CFGENT structure contains the following
-information:
-
-@table @b
-
-@item cfg_parent
-A pointer to the structure returned by the
-@code{cfg_read()} function for the node that contains
-the entry for the current node. A @code{cfg_parent}
-structure is provided for the node(s) specified by
-the @code{pathnames} argument to the @code{cfg_open()}
-function, but the contents of other than its
-@code{cfg_number}, @code{cfg_pointer}, @code{cfg_parent},
-and @code{cfg_parent}, and @code{cfg_level} fields are
-unspecified. Its @code{cfg_link} field is unspecified.
-
-@item cfg_link
-Upon return from the @code{cfg_children()} function, the
-@code{cfg_link} field points to the next CFGENT structure
-in a NULL-terminated linked list of CFGENT structures.
-Otherwise, the content of the @code{cfg_link} field is
-unspecified.
-
-@item cfg_cycle
-If the structure being returned by @code{cfg_read()}
-represents a node that appears in the @code{cfg_parent}
-linked list tree, the @code{cfg_cycle} field shall point
-to the structure representing that entry from the
-@code{cfg_parent} linked list. Otherwise the content of
-the @code{cfg_cycle} field is unspecified.
-
-@item cfg_number
-The @code{cfg_number} field is provided for use by the
-application program. It is initialized to zero for
-each new node returned by the @code{cfg_read()} function,
-but is not further modified by the configuration space
-routines.
-
-@item cfg_pointer
-The @code{cfg_pointer} field is provided for use by the
-application program. It is initialized to NULL for
-each new node returned by the @code{cfg_read()} function,
-but is not further modified by the configuration
-space routines.
-
-@item cfg_path
-A pathname for the node including and relative to the
-argument supplied to the @code{cfg_open()} routine for this
-configuration space. This pathname may be longer than
-@code{PATH_MAX} bytes. This pathname is NULL-terminated.
-
-@item cfg_name
-The nodename of the node.
-
-@item cfg_pathlen
-The length of the string pointed at by the @code{cfg_path}
-field when returned by @code{cfg_read()}.
-
-@item cfg_namelen
-The length of the string pointed at by the @code{cfg_name}
-field.
-
-@item cfg_level
-The depth of the current entry in the configuration space.
-The @code{cfg_level} field of the @code{cfg_parent}
-structure for each of the node(s) specified in the
-@code{pathnames} argument to the @code{cfg_open()} function
-is set to 0, and this number is incremented for each
-node level descendant.
-
-@item cfg_info
-This field contains one of the values listed below. If
-an object can have more than one info value, the first
-appropriate value listed below is returned.
-
-@table @b
-
-@item CFG_D
-The structure represents a node with children in
-pre-order.
-
-@item CFG_DC
-The structure represents a node that is a parent
-of the node most recently returned by @code{cfg_read()}.
-The @code{cfg_cycle} field references the structure
-previously returned by @code{cfg_read} that is the
-same as the returned structure.
-
-@item CFG_DEFAULT
-The structure represents a node that is not
-represented by one of the other node types
-
-@item CFG_DNR
-The structure represents a node, not of type symlink,
-that is unreadable. The variable @code{cfg_errno}
-is set to the appropriate value.
-
-@item CFG_DP
-The structure represents a node with children in
-post-order. This value occurs only if CFG_D
-has previously been returned for this entry.
-
-@item CFG_ERR
-The structure represents a node for which an error has
-occurred. The variable @code{cfg_errno} is set to the
-appropriate value.
-
-@item CFG_F
-The structure represents a node without children.
-
-@item CFG_SL
-The structure represents a node of type symbolic link.
-
-@item CFG_SLNONET
-The structure represents a node of type symbolic link
-with a target node for which node characteristic
-information cannot be obtained.
-
-@end table
-
-@end table
-
-Structures returned by @code{cfg_read()} with a @code{cfg_info} field equal
-to CFG_D is accessible until a subsequent call, on the same
-configuration traversal stream, to @code{cfg_close()}, or to @code{cfg_read()}
-after they have been returned by the @code{cfg_read} function in
-post-order. Structures returned by @code{cfg_read()} with an
-@code{cfg_info} field not equal to CFG_D is accessible until a subsequent
-call, on the same configuration traversal stream, to @code{cfg_close()}
-or @code{cfg_read()}.
-
-The content of the @code{cfg_path} field is specified only for the
-structure most recently returned by @code{cfg_read()}.
-
-The specified fields in structures in the list representing nodes for
-which structures have previously been returned by @code{cfg_children()},
-is identical to those returned by @code{cfg_children()}, except that
-the contents of the @code{cfg_path} and @code{cfg_pathlen} fields are
-unspecified.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_children - Get Node Entries
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_children(
- CFG *cfgp,
- int options,
- CFGENT **children
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_children()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EACCES
-Search permission is denied for any component of a pathname
-
-@item EBADF
-The @code{cfgp} argument does not refer to an open configuration space.
-
-@item ELOOP
-A loop exists in symbolic links encountered during resolution of
-a pathname.
-
-@item ENAMETOOLONG
-The length of a pathname exceeds @code{PATH_MAX}, or a pathname
-component is longer than @code{NAME_MAX} while @code{_POSIX_NO_TRUNC} is
-in effect.
-
-@item EINVAL
-The specified value of the @code{options} argument is invalid.
-
-@item ENOENT
-The named node does not exist.
-
-@item ENOMEM
-Not enough memory is available to create the necessary structures.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The first @code{cfg_children()} call after a @code{cfg_read()} returns
-information about the first node without children under the node
-returned by @code{cfg_read()}. Subsequent calls to @code{cfg_children()}
-without the intervening @code{cfg_read()} shall return information
-about the remaining nodes without children under that same node.
-
-If @code{cfg_read()} has not yet been called for the configuration
-traversal stream represented by @code{cfgp}, @code{cfg_children()}
-returns a pointer to the first entry in a list of the nodes
-represented by the @code{pathnames} argument to @code{cfg_open()}.
-
-In either case, the list is NULL-terminated, ordered by the
-user-specified comparison function, if any, and linked through the
-@code{cfg_link} field.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_mark - Set Configuration Space Options
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_mark(
- CFG *cfgp,
- CFGENT *f,
- int options
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_mark()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EINVAL
-The specified combination of the @code{cfgp} and @code{f} arguments is not
-supported by the implementation.
-
-@item EINVAL
-The specified value of the @code{options} argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_mark()} function modifies the subsequent behavior of
-the @code{cfg} functions with regard to the node referenced by the structure
-pointed to by the argument @code{f} or the configuration space referenced
-by the structure pointed to by the argument @code{cfgp}.
-
-Exactly one of the @code{f} argument and the @code{cfgp} argument is NULL.
-
-The value of the @code{options} argument is exactly one of the flags
-specified in the following list:
-
-@table @b
-
-@item CFG_AGAIN
-If the @code{cfgp} argument is non-NULL, or the @code{f}
-argument is NULL, or the structure referenced by @code{f}
-is not the one most recently returned by @code{cfg_read()},
-@code{cfg_mark()} returns an error. Otherwise, the next
-call to the @code{cfg_read()} function returns the structure
-referenced by @code{f} with the @code{cfg_info} field
-reinitialized. Subsequent behavior of the @code{cfg}
-functions are based on the reinitialized value of
-@code{cfg_info}.
-
-@item CFG_SKIP
-If the @code{cfgp} argument is non-NULL, or the @code{f}
-argument is NULL, or the structure referenced by @code{f}
-is not one of those specified as accessible, or the structure
-referenced by @code{f} is not for a node of type pre-order
-node, @code{cfg_mark()} returns an error. Otherwise, no
-more structures for the node referenced by @code{f} or its
-descendants are returned by the @code{cfg_read()} function.
-
-@item CFG_FOLLOW
-If the @code{cfgp} argument is non-NULL, or the @code{f}
-argument is NULL, or the structure referenced by @code{f}
-is not one of those specified as accessible, or the structure
-referenced by @code{f} is not for a node of type symbolic link,
-@code{cfg_mark()} returns an error. Otherwise, the next
-call to the @code{cfg_read()} function returns the structure
-referenced by @code{f} with the @code{cfg_info} field reset
-to reflect the target of the symbolic link instead of the
-symbolic link itself. If the target of the link is node with
-children, the pre-order return, followed by the return of
-structures referencing all of its descendants, followed by a
-post-order return, shall be done.
-
-@end table
-
-If the target of the symbolic link does not exist, the fields
-of the structure by @code{cfg_read()} shall be unmodified, except
-that the @code{cfg_info} field shall be reset to @code{CFG_SLNONE}.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_close - Close a Configuration Space
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <cfg.h>
-
-int cfg_close(
- CFG *cfgp
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_close()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EBADF
-The @code{cfgp} argument does not refer to an open configuration space
-traversal stream.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_close()} function closes a configuration space transversal
-stream represented by the CFG structure pointed at by the @code{cfgp}
-argument. All system resources allocated for this configuration space
-traversal stream should be deallocated. Upon return, the value of
-@code{cfgp} need not point to an accessible object of type CFG.
-
-@subheading NOTES:
-
-The @code{_POSIX_CFG} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection cfg_readdir - Reads a directory
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <dirent.h>
-
-struct dirent *cfg_readdir(
- DIR *dirp
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{cfg_readdir()} function returns a pointer to a structure @code{dirent}
-representing the next directory entry from the directory stream pointed to
-by @code{dirp}. On end-of-file, NULL is returned.
-
-The @code{cfg_readdir()} function may (or may not) return entries for . or .. Your
-program should tolerate reading dot and dot-dot but not require them.
-
-The data pointed to be @code{cfg_readdir()} may be overwritten by another call to
-@code{readdir()} for the same directory stream. It will not be overwritten by
-a call for another directory.
-
-@subheading NOTES:
-
-If @code{ptr} is not a pointer returned by @code{malloc()}, @code{calloc()}, or
-@code{realloc()} or has been deallocated with @code{free()} or @code{realloc()},
-the results are not portable and are probably disastrous.
-
-This function is not defined in the POSIX specification. It is an extension
-provided by this implementation.
-
-@page
-@subsection cfg_umask - Sets a file creation mask.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-mode_t cfg_umask(
- mode_t cmask
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@subheading DESCRIPTION:
-
-The @code{cfg_umask()} function sets the process node creation mask to @code{cmask}.
-The file creation mask is used during @code{open()}, @code{creat()}, @code{mkdir()},
-@code{mkfifo()} calls to turn off permission bits in the @code{mode} argument.
-Bit positions that are set in @code{cmask} are cleared in the mode of the
-created file.
-
-The file creation mask is inherited across @code{fork()} and @code{exec()} calls.
-This makes it possible to alter the default permission bits of created files.
-
-@subheading NOTES: None
-
-The @code{cmask} argument should have only permission bits set. All other
-bits should be zero.
-
-@page
-@subsection cfg_chmod - Changes file mode.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int cfg_chmod(
- const char *path,
- mode_t mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_chmod()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
-effect.
-@item ENOENT
-A file or directory does not exist.
-@item ENOTDIR
-A component of the specified pathname was not a directory when a directory
-was expected.
-@item EPERM
-Operation is not permitted. Process does not have the appropriate priviledges
-or permissions to perform the requested operations.
-@item EROFS
-Read-only file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-Set the file permission bits, the set user ID bit, and the set group ID bit
-for the file named by @code{path} to @code{mode}. If the effective user ID
-does not match the owner of the node and the calling process does not have
-the appropriate privileges, @code{cfg_chmod()} returns -1 and sets @code{errno} to
-@code{EPERM}.
-
-@subheading NOTES:
-
-@page
-@subsection cfg_chown - Changes the owner and/or group of a file.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <unistd.h>
-
-int cfg_chown(
- const char *path,
- uid_t owner,
- gid_t group
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{cfg_chown()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix
-@item EINVAL
-Invalid argument
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
-effect.
-@item ENOENT
-A file or directory does not exist.
-@item ENOTDIR
-A component of the specified pathname was not a directory when a directory
-was expected.
-@item EPERM
-Operation is not permitted. Process does not have the appropriate priviledges
-or permissions to perform the requested operations.
-@item EROFS
-Read-only file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The user ID and group ID of the file named by @code{path} are set to
-@code{owner} and @code{path}, respectively.
-
-For regular files, the set group ID (S_ISGID) and set user ID (S_ISUID)
-bits are cleared.
-
-Some systems consider it a security violation to allow the owner of a file to
-be changed, If users are billed for disk space usage, loaning a file to
-another user could result in incorrect billing. The @code{cfg_chown()} function
-may be restricted to privileged users for some or all files. The group ID can
-still be changed to one of the supplementary group IDs.
-
-@subheading NOTES:
-
-This function may be restricted for some file. The @code{pathconf} function
-can be used to test the _PC_CHOWN_RESTRICTED flag.
-
-
diff --git a/doc/new_chapters/cspecific.t b/doc/new_chapters/cspecific.t
deleted file mode 100644
index 5e2de31617..0000000000
--- a/doc/new_chapters/cspecific.t
+++ /dev/null
@@ -1,623 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Language-Specific Services for the C Programming Language Manager
-
-@section Introduction
-
-The
-language-specific services for the C programming language manager is ...
-
-The directives provided by the language-specific services for the C programming language manager are:
-
-@itemize @bullet
-@item @code{setlocale} -
-@item @code{fileno} -
-@item @code{fdopen} -
-@item @code{flcokfile} -
-@item @code{ftrylockfile} -
-@item @code{funlockfile} -
-@item @code{getc_unlocked} -
-@item @code{getchar_unlocked} -
-@item @code{putc_unlocked} -
-@item @code{putchar_unlocked} -
-@item @code{setjmp} -
-@item @code{longjmp} -
-@item @code{sigsetjmp} -
-@item @code{siglongjmp} -
-@item @code{tzset} -
-@item @code{strtok_r} -
-@item @code{asctime_r} -
-@item @code{ctime_r} -
-@item @code{gmtime_r} -
-@item @code{localtime_r} -
-@item @code{rand_r} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the language-specific services for the C programming language manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection setlocale -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int setlocale(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection fileno -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int fileno(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection fdopen -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int fdopen(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection flcokfile -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int flcokfile(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection ftrylockfile -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int ftrylockfile(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection funlockfile -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int funlockfile(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getc_unlocked -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getc_unlocked(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getchar_unlocked -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getchar_unlocked(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection putc_unlocked -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int putc_unlocked(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection putchar_unlocked -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int putchar_unlocked(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection setjmp -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int setjmp(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection longjmp -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int longjmp(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sigsetjmp -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sigsetjmp(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection siglongjmp -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int siglongjmp(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection tzset -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int tzset(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection strtok_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int strtok_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection asctime_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int asctime_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection ctime_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int ctime_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection gmtime_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int gmtime_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection localtime_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int localtime_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection rand_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int rand_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/device.t b/doc/new_chapters/device.t
deleted file mode 100644
index 05ef101fec..0000000000
--- a/doc/new_chapters/device.t
+++ /dev/null
@@ -1,465 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Device- and Class- Specific Functions Manager
-
-@section Introduction
-
-The device- and class- specific functions manager is ...
-
-The directives provided by the device- and class- specific functions
-manager are:
-
-@itemize @bullet
-@item @code{cfgetispeed} - Reads terminal input baud rate
-@item @code{cfgetospeed} - Reads terminal output baud rate
-@item @code{cfsetispeed} - Sets terminal input baud rate
-@item @code{cfsetospeed} - Set terminal output baud rate
-@item @code{tcgetattr} - Gets terminal attributes
-@item @code{tcsetattr} - Set terminal attributes
-@item @code{tcsendbreak} - Sends a break to a terminal
-@item @code{tcdrain} - Waits for all output to be transmitted to the terminal
-@item @code{tcflush} - Discards terminal data
-@item @code{tcflow} - Suspends/restarts terminal output
-@item @code{tcgetpgrp} - Gets foreground process group ID
-@item @code{tcsetpgrp} - Sets foreground process group ID
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the device- and class- specific functions manager's
-directives. A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection cfgetispeed - Reads terminal input baud rate
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <termios.h>
-
-int cfgetispeed(
- const struct termios *p
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-The @code{cfgetispeed()} function returns a code for baud rate.
-
-@subheading DESCRIPTION:
-
-The @code{cfsetispeed()} function stores a code for the terminal speed
-stored in a struct termios. The codes are defined in @code{<termios.h>}
-by the macros BO, B50, B75, B110, B134, B150, B200, B300, B600, B1200,
-B1800, B2400, B4800, B9600, B19200, and B38400.
-
-The @code{cfsetispeed()} function does not do anything to the hardware.
-It merely stores a value for use by @code{tcsetattr()}.
-
-@subheading NOTES:
-
-Baud rates are defined by symbols, such as B110, B1200, B2400. The actual
-number returned for any given speed may change from system to system.
-
-@page
-@subsection cfgetospeed - Reads terminal output baud rate
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <termios.h>
-
-int cfgetospeed(
- const struct termios *p
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-The @code{cfgetospeed()} function returns the termios code for the baud rate.
-
-@subheading DESCRIPTION:
-
-The @code{cfgetospeed()} function returns a code for the terminal speed
-stored in a @code{struct termios}. The codes are defined in @code{<termios.h>}
-by the macros BO, B50, B75, B110, B134, B150, B200, B300, B600, B1200, B1800,
-B2400, B4800, B9600, B19200, and B38400.
-
-The @code{cfgetospeed()} function does not do anything to the hardware.
-It merely returns the value stored by a previous call to @code{tcgetattr()}.
-
-@subheading NOTES:
-
-Baud rates are defined by symbols, such as B110, B1200, B2400. The actual
-number returned for any given speed may change from system to system.
-
-@page
-@subsection cfsetispeed - Sets terminal input baud rate
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <termios.h>
-
-int cfsetispeed(
- struct termios *p,
- speed_t speed
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-The @code{cfsetispeed()} function returns a zero when successful and
-returns -1 when an error occurs.
-
-@subheading DESCRIPTION:
-
-The @code{cfsetispeed()} function stores a code for the terminal speed
-stored in a struct termios. The codes are defined in @code{<termios.h>}
-by the macros B0, B50, B75, B110, B134, B150, B200, B300, B600, B1200,
-B1800, B2400, B4800, B9600, B19200, and B38400.
-
-@subheading NOTES:
-
-This function merely stores a value in the @code{termios} structure. It
-does not change the terminal speed until a @code{tcsetattr()} is done.
-It does not detect impossible terminal speeds.
-
-@page
-@subsection cfsetospeed - Sets terminal output baud rate
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <termios.h>
-
-int cfsetospeed(
- struct termios *p,
- speed_t speed
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-The @code{cfsetospeed()} function returns a zero when successful and
-returns -1 when an error occurs.
-
-
-@subheading DESCRIPTION:
-
-The @code{cfsetospeed()} function stores a code for the terminal speed stored
-in a struct @code{termios}. The codes are defiined in @code{<termios.h>} by the
-macros B0, B50, B75, B110, B134, B150, B200, B300, B600, B1200, B1800, B2400,
-B4800, B9600, B19200, and B38400.
-
-The @code{cfsetospeed()} function does not do anything to the hardware. It
-merely stores a value for use by @code{tcsetattr()}.
-
-@subheading NOTES:
-
-This function merely stores a value in the @code{termios} structure.
-It does not change the terminal speed until a @code{tcsetattr()} is done.
-It does not detect impossible terminal speeds.
-
-@page
-@subsection tcgetattr - Gets terminal attributes
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <termios.h>
-#include <unistd.h>
-
-int tcgetattr(
- int fildes,
- struct termios *p
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor
-
-@item ENOOTY
-Terminal control function attempted for a file that is not a terminal.
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{tcgetattr()} gets the parameters associated with the terminal
-referred to by @code{fildes} and stores them into the @code{termios()}
-structure pointed to by @code{termios_p}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection tcsetattr - Set terminal attributes
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <termios.h>
-#include <unistd.h>
-
-int tcsetattr(
- int fildes,
- int options,
- const struct termios *tp
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection tcsendbreak - Sends a break to a terminal
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int tcsendbreak(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection tcdrain - Waits for all output to be transmitted to the terminal.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <termios.h>
-#include <unistd.h>
-
-int tcdrain(
- int fildes
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor
-
-@item EINTR
-Function was interrupted by a signal
-
-@item ENOTTY
-Terminal control function attempted for a file that is not a terminal.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{tcdrain()} function waits until all output written to
-@code{fildes} has been transmitted.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection tcflush - Discards terminal data
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int tcflush(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection tcflow - Suspends/restarts terminal output.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int tcflow(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection tcgetpgrp - Gets foreground process group ID
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int tcgetpgrp(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection tcsetpgrp - Sets foreground process group ID
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int tcsetpgrp(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-
diff --git a/doc/new_chapters/dumpcontrol.t b/doc/new_chapters/dumpcontrol.t
deleted file mode 100644
index 915f33c012..0000000000
--- a/doc/new_chapters/dumpcontrol.t
+++ /dev/null
@@ -1,98 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Process Dump Control Manager
-
-@section Introduction
-
-The process dump control manager provides a portable
-interface for changing the path to which a process dump
-is written. The capabilities in this manager were defined in
-the POSIX 1003.1h/D3 proposed standard titled @b{Services for Reliable,
-Available, and Serviceable Systems}.
-
-The directives provided by the process dump control manager are:
-
-@itemize @bullet
-@item @code{dump_setpath} - Dump File Control
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the process dump control manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection dump_setpath - Dump File Control
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <dump.h>
-
-int dump_setpath(
- const char *path
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACESS
-Search permission is denied for a component of the path prefix,
-or write permission is denied on the directory containing the
-file.
-
-@item ENAMETOOLONG
-The length of the argument exceeds @code{PATH_MAX} or a pathname
-component is longer than @code{NAME_MAX} while @code{_POSIX_NO_TRUNC}
-is in effect.
-
-@item ENOENT
-The path argument points to an empty string.
-
-@item ENOTDIR
-A component of the path prefix is not a directory.
-
-@item EROFS
-The directory entry specified resides on a read-only file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{dump_setpath()} function defines the pathname where process
-dumps are written. The pathname pointed to by @code{path} defines
-where a process dump file is written if the calling process
-terminates with a dump file. The @code{path} argument does not
-name a directory.
-
-If the @code{path} argument is NULL, the system does not write a
-process dump file if the calling process terminates with a dump
-file. If the @code{dump_setpath} function fails, the pathname for
-writing process dumps does not change.
-
-@subheading NOTES:
-
-The @code{_POSIX_DUMP} feature flag is defined to indicate
-this service is available.
diff --git a/doc/new_chapters/eventlog.t b/doc/new_chapters/eventlog.t
deleted file mode 100644
index d50a35bf7c..0000000000
--- a/doc/new_chapters/eventlog.t
+++ /dev/null
@@ -1,1265 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Event Logging Manager
-
-@section Introduction
-
-The event logging manager provides a portable method for logging
-system and application events and subsequent processing of those
-events. The capabilities in this manager were defined in the POSIX
-1003.1h/D3 proposed standard titled @b{Services for Reliable,
-Available, and Serviceable Systems}.
-
-The directives provided by the event logging manager are:
-
-@itemize @bullet
-@item @code{log_create} - Create a log file
-@item @code{log_sys_create} - Create a system log file
-@item @code{log_write} - Write to the system Log
-@item @code{log_write_any} - Write to any log file
-@item @code{log_write_entry} - Write entry to any log file
-@item @code{log_open} - Open a log file
-@item @code{log_read} - Read from a log file
-@item @code{log_notify} - Notify Process of writes to the system log
-@item @code{log_close} - Close log descriptor
-@item @code{log_seek} - Reposition log file offset
-@item @code{log_severity_before} - Compare event record severities
-@item @code{log_facilityemptyset} - Manipulate log facility sets
-@item @code{log_facilityfillset} - Manipulate log facility sets
-@item @code{log_facilityaddset} - Manipulate log facility sets
-@item @code{log_facilitydelset} - Manipulate log facility sets
-@item @code{log_facilityismember} - Manipulate log facility sets
-@item @code{log_facilityisvalid} - Manipulate log facility sets
-@end itemize
-
-@section Background
-
-@subsection Log Files and Events
-
-The operating system uses a special log file named @code{syslog}.
-This log file is called the system log and is automatically created and
-tracked by the operating system. The system log is written with
-the @code{log_write()} function. An alternative log file may be written
-using the @code{log_write_any()} function. It is possible to use @code{log_read()}
-to query the system log and and write the records to a non-system log file
-using @code{log_write_entry()} to produce a filtered version of the
-system log. For example you could produce a log of all disk controller
-faults that have occurred.
-
-A non-system log may be a special log file created by an application to
-describe application faults, or a subset of the system log created
-by the application.
-
-
-
-@subsection Facilities
-
-A facility is an identification code for a subsystem, device, or
-other object about which information is being written to
-a log file.
-
-A facility set is a collection of facilities.
-
-@subsection Severity
-
-Severity is a rating of the error that is being logged.
-
-@subsection Queries
-
-
-The facility identifier and the event severity are the basis for
-subsequent log query. A log query is used as a filter to
-obtain a subset of a given log file. The log file may be configured
-to send out an event.
-
-@section Operations
-
-@subsection Creating and Writing a non-System Log
-
-The following code fragment create a non-System log file at /temp/.
-A real filename previously read entry and buffer @code{log_buf} of size
-@code{readsize} are written into the log. See the discussion on opening
-and reading a log for how the entry is created.
-
-@example
-#include <evlog.h>
- :
- logd_t *outlog = NULL;
- char *path = "/temp/";
-
- log_create( outlog, path );
- :
- log_write_entry( outlog, &entry, log_buf, readsize );
-
-@end example
-
-@subsection Reading a Log
-
-Discuss opening and reading from a log.
-
-@example
- build a query
- log_open
- log_read loop
-@end example
-
-@section Directives
-
-This section details the event logging manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection log_write - Write to the system Log
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_write(
- const log_facility_t facility,
- const int event_id,
- const log_severity_t severity,
- const void *buf,
- const size_t len
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_write()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item E2BIG
-This error indicates an inconsistency in the implementation.
-Report this as a bug.
-
-@item EINVAL
-The @code{facility} argument is not a valid log facility.
-
-@item EINVAL
-The @code{severity} argument exceeds @code{LOG_SEVERITY_MAX}.
-
-@item EINVAL
-The @code{len} argument exceeds @code{LOG_MAXIUM_BUFFER_SIZE}.
-
-@item EINVAL
-The @code{len} argument was non-zero and @code{buf} is @code{NULL}.
-
-@item ENOSPC
-The device which contains the log file has run out of space.
-
-@item EIO
-An I/O error occurred in writing to the log file.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_write} function writes an event record to the
-system log file. The event record written consists of the
-event attributes specified by the @code{facility}, @code{event_id},
-and @code{severity} arguments as well as the data identified by the
-@code{buf} and @code{len} arguments. The fields of the event record
-structure to be written are filled in as follows:
-
-@table @b
-@item log_recid
-This is set to a monotonically increasing log record id
-maintained by the system for this individual log file.
-
-@item log_size
-This is set to the value of the @code{len} argument.
-
-@item log_event_id
-This is set to the value of the @code{event_id} argument.
-
-@item log_facility
-This is set to the value of the @code{facility} argument.
-
-@item log_severity
-This is set to the value of the @code{severity} argument.
-
-@item log_uid
-This is set to the value returned by @code{geteuid()}.
-
-@item log_gid
-This is set to the value returned by @code{getegid()}.
-
-@item log_pid
-This is set to the value returned by @code{getpid()}.
-
-@item log_pgrp
-This is set to the value returned by @code{getpgrp()}.
-
-@item log_time
-This is set to the value returned by @code{clock_gettime()} for the
-@code{CLOCK_REALTIME clock} source.
-
-@end table
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-This implementation can not return the @code{EPERM} error.
-
-@page
-@subsection log_write_any - Write to the any log file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_write_any(
- const logd_t logdes,
- const log_facility_t facility,
- const int event_id,
- const log_severity_t severity,
- const void *buf,
- const size_t len
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_write_any()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item E2BIG
-This error indicates an inconsistency in the implementation.
-Report this as a bug.
-
-@item EBADF
-The @code{logdes} argument is not a valid log descriptor.
-
-@item EINVAL
-The @code{facility} argument is not a valid log facility.
-
-@item EINVAL
-The @code{severity} argument exceeds @code{LOG_SEVERITY_MAX}.
-
-@item EINVAL
-The @code{len} argument exceeds @code{LOG_MAXIMUM_BUFFER_SIZE}.
-
-@item EINVAL
-The @code{len} argument was non-zero and @code{buf} is @code{NULL}.
-
-@item ENOSPC
-The device which contains the log file has run out of space.
-
-@item EIO
-An I/O error occurred in writing to the log file.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_write_any()} function writes an event record to the log file
-specified by @code{logdes}. The event record written consists of the
-event attributes specified by the @code{facility}, @code{event_id},
-and @code{severity} arguments as well as the data identified by the
-@code{buf} and @code{len} arguments. The fields of the event record
-structure to be written are filled in as follows:
-
-@table @b
-@item log_recid
-This is set to a monotonically increasing log record id
-maintained by the system for this individual log file.
-
-@item log_size
-This is set to the value of the @code{len} argument.
-
-@item log_event_id
-This is set to the value of the @code{event_id} argument.
-
-@item log_facility
-This is set to the value of the @code{facility} argument.
-
-@item log_severity
-This is set to the value of the @code{severity} argument.
-
-@item log_uid
-This is set to the value returned by @code{geteuid()}.
-
-@item log_gid
-This is set to the value returned by @code{getegid()}.
-
-@item log_pid
-This is set to the value returned by @code{getpid()}.
-
-@item log_pgrp
-This is set to the value returned by @code{getpgrp()}.
-
-@item log_time
-This is set to the value returned by @code{clock_gettime()} for the
-@code{CLOCK_REALTIME} clock source.
-
-@end table
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-This implementation can not return the @code{EPERM} error.
-
-This function is not defined in the POSIX specification. It is
-an extension provided by this implementation.
-
-@page
-@subsection log_write_entry - Write entry to any log file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_write_entry(
- const logd_t logdes,
- struct log_entry *entry,
- const void *buf,
- const size_t len
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_write_entry()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item E2BIG
-This error indicates an inconsistency in the implementation.
-Report this as a bug.
-
-@item EBADF
-The @code{logdes} argument is not a valid log descriptor.
-
-@item EFAULT
-The @code{entry} argument is not a valid pointer to a log entry.
-
-@item EINVAL
-The @code{facility} field in @code{entry} is not a valid log facility.
-
-@item EINVAL
-The @code{severity} field in @code{entry} exceeds @code{LOG_SEVERITY_MAX}.
-
-@item EINVAL
-The @code{len} argument exceeds @code{LOG_MAXIMUM_BUFFER_SIZE}.
-
-@item EINVAL
-The @code{len} argument was non-zero and @code{buf} is NULL.
-
-@item ENOSPC
-The device which contains the log file has run out of space.
-
-@item EIO
-An I/O error occurred in writing to the log file.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_write_entry()} function writes an event record
-specified by the @code{entry}, @code{buf}, and @code{len} arguments.
-Most of the fields of the event record pointed to by @code{entry}
-are left intact. The following fields are filled in as follows:
-
-@table @b
-@item log_recid
-This is set to a monotonically increasing log record id
-maintained by the system for this individual log file.
-
-@item log_size
-This is set to the value of the @code{len} argument.
-
-@end table
-
-This allows existing log entries from one log file to be written to
-another log file without destroying the logged information.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-This implementation can not return the @code{EPERM} error.
-
-This function is not defined in the POSIX specification. It is
-an extension provided by this implementation.
-
-@page
-@subsection log_open - Open a log file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_open(
- logd_t *logdes,
- const char *path,
- const log_query_t *query
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_open()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EACCES
-Search permission is denied on a component of the @code{path} prefix,
-or the log file exists and read permission is denied.
-
-@item EINTR
-A signal interrupted the call to @code{log_open()}.
-
-@item EINVAL
-The log_severity field of the query argument exceeds
-@code{LOG_SEVERITY_MAX}.
-
-@item EINVAL
-The @code{path} argument referred to a file that was not a log file.
-
-@item EMFILE
-Too many log file descriptors are currently in use by this
-process.
-
-@item ENAMETOOLONG
-The length of the path string exceeds @code{PATH_MAX}, or a pathname
-component is longer than @code{NAME_MAX} while @code{_POSIX_NO_TRUNC} is
-in effect.
-
-@item ENFILE
-Too many files are currently open in the system.
-
-@item ENOENT
-The file specified by the @code{path} argument does not exist.
-
-@item ENOTDIR
-A component of the @code{path} prefix is not a directory.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_open()} function establishes the connection between a
-log file and a log file descriptor. It creates an open log file
-descriptor that refers to this query stream on the specified log file
-The log file descriptor is used by the other log functions to refer
-to that log query stream. The @code{path} argument points to a
-pathname for a log file. A @code{path} argument of @code{NULL} specifies
-the current system log file.
-
-The @code{query} argument is not @code{NULL}, then it points to a log query
-specification that is used to filter the records in the log file on
-subsequent @code{log_read()} operations. This restricts the set of
-event records read using the returned log file descriptor to those
-which match the query. A query match occurs for a given record when
-that record's facility is a member of the query's facility set and
-the record's severity is greater than or equal to the severity specified
-in the query.
-
-If the value of the @code{query} argument is @code{NULL}, no query filter
-shall be applied.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-POSIX specifies that @code{EINVAL} will be returned if the
-@code{log_facilities} field of the @code{query} argument is not
-a valid facility set. In this implementation, this condition
-can never occur.
-
-Many error codes that POSIX specifies to be returned by @code{log_open()}
-should actually be detected by @code{open()} and passed back by the
-@code{log_open()} implementation. In this implementation, @code{EACCESS},
-@code{EMFILE}, @code{ENAMETOOLONG}, @code{ENFILE}, @code{ENOENT},
-and @code{ENOTDIR} are detected in this manner.
-
-@page
-@subsection log_read - Read from a log file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_read(
- const logd_t logdes,
- struct log_entry *entry,
- void *log_buf,
- const size_t log_len,
- const size_t *log_sizeread
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_read()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item E2BIG
-This error indicates an inconsistency in the implementation.
-Report this as a bug.
-
-@item EBADF
-The @code{logdes} argument is not a valid log file descriptor.
-
-@item EFAULT
-The @code{entry} argument is not a valid pointer to a log entry structure.
-
-@item EFAULT
-The @code{log_sizeread} argument is not a valid pointer to a size_t.
-
-@item EBUSY
-No data available. There are no unread event records remaining
-in this log file.
-
-@item EINTR
-A signal interrupted the call to @code{log_read()}.
-
-@item EIO
-An I/O error occurred in reading from the event log.
-
-@item EINVAL
-The matching event record has data associated with it and
-@code{log_buf} was not a valid pointer.
-
-@item EINVAL
-The matching event record has data associated with it which is
-longer than @code{log_len}.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_read()} function reads the @code{log_entry}
-structure and up to @code{log_len} bytes of data from the next
-event record of the log file associated with the open log file
-descriptor @code{logdes}. The event record read is placed
-into the @code{log_entry} structure pointed to by
-@code{entry} and any data into the buffer pointed to by @code{log_buf}.
-The log record ID of the returned event record is be stored in the
-@code{log_recid} member of the @code{log_entry} structure for the event
-record.
-
-If the query attribute of the open log file description associated with
-the @code{logdes} is set, the event record read will match that query.
-
-If the @code{log_read()} is successful the call stores the actual length
-of the data associated with the event record into the location specified by
-@code{log_sizeread}. This number will be less than or equal to
-@code{log_len}.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-When @code{EINVAL} is returned, then no data is returned although the
-event record is returned. This is an extension to the POSIX specification.
-
-The POSIX specification specifically allows @code{log_read()} to write
-greater than @code{log_len} bytes into @code{log_buf}. This is highly
-undesirable and this implementation will NOT do this.
-
-@page
-@subsection log_notify - Notify Process of writes to the system log.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_notify(
- const logd_t logdes,
- const struct sigevent *notification
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_notify()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EBADF
-The logdes argument is not a valid log file descriptor.
-
-@item EINVAL
-The notification argument specifies an invalid signal.
-
-@item EINVAL
-The process has requested a notify on a log that will not be
-written to.
-
-@item ENOSYS
-The function @code{log_notify()} is not supported by this implementation.
-
-@end table
-
-@subheading DESCRIPTION:
-
-If the argument @code{notification} is not @code{NULL} this function registers
-the calling process to be notified of event records received by the system
-log, which match the query parameters associated with the open log descriptor
-specified by @code{logdes}. The notification specified by the
-@code{notification} argument shall be sent to the process when an event
-record received by the system log is matched by the query attribute of the
-open log file description associated with the @code{logdes} log file
-descriptor. If the calling process has already registered a notification
-for the @code{logdes} log file descriptor, the new notification shall
-replace the existing notification registration.
-
-If the @code{notification} argument is @code{NULL} and the calling process is
-currently registered to be notified for the @code{logdes} log file
-descriptor, the existing registration shall be removed.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection log_close - Close log descriptor
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_close(
- const logd_t logdes
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_close()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EBADF
-The logdes argument is not a valid log file descriptor.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_close()} function deallocates the open log file descriptor
-indicated by @code{log_des}.
-
-When all log file descriptors associated with an open log file description
-have been closed, the open log file description is freed.
-
-If the link count of the log file is zero, when all log file descriptors
-have been closed, the space occupied by the log file is freed and the
-log file shall no longer be accessible.
-
-If the process has successfully registered a notification request for the
-log file descriptor, the registration is removed.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection log_seek - Reposition log file offset
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_seek(
- const logd_t logdes,
- log_recid_t log_recid
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_seek()} returns a value of zero
-and an unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EBADF
-The @code{logdes} argument is not a valid log file descriptor.
-@item EINVAL
-The @code{log_recid} argument is not a valid record id.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_seek()} function sets the log file offset of the open
-log description associated with the @code{logdes} log file descriptor
-to the event record in the log file identified by @code{log_recid}.
-The @code{log_recid} argument is either the record id of a valid event
-record or one of the following values, as defined in the header file
-@code{<evlog.h>:}
-
-@table @b
-@item LOG_SEEK_START
-Set log file position to point at the first event
-record in the log file.
-
-@item LOG_SEEK_END
-Set log file position to point after the last event
-record in the log file.
-
-@end table
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-This implementation can not return EINTR.
-
-This implementation can not return EINVAL to indicate that
-the @code{log_recid} argument is not a valid record id.
-
-@page
-@subsection log_severity_before - Compare event record severities
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_severity_before(
- log_severity_t s1,
- log_severity_t s2
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item 0
-The severity of @code{s1} is less than that of @code{s2}.
-
-@item 1
-The severity of @code{s1} is greater than or equal that of @code{s2}.
-
-@item EINVAL
-The value of either s1 or s2 exceeds @code{LOG_SEVERITY_MAX}.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_severity_before()} function compares the severity order
-of the @code{s1} and @code{s2} arguments. If @code{s1} is of
-severity greater than or equal to that of @code{s2}, then this
-function returns 1. Otherwise, it returns 0.
-
-If either @code{s1} or @code{s2} specify invalid severity values, the
-return value of @code{log_severity_before()} is unspecified.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-The POSIX specification of the return value for this function is ambiguous.
-If EINVAL is equal to 1 in an implementation, then the application
-can not distinguish between greater than and an error condition.
-
-@page
-@subsection log_facilityemptyset - Manipulate log facility sets
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_facilityemptyset(
- log_facility_set_t *set
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_facilityemptyset()} returns a value of zero
-and a unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EFAULT
-The @code{set} argument is an invalid pointer.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_facilityemptyset()} function initializes the facility
-set pointed to by the argument @code{set}, such that all facilities
-are excluded.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-Applications shall call either @code{log_facilityemptyset()} or
-@code{log_facilityfillset()} at least once for each object of type
-@code{log_facilityset_t} prior to any other use of that object. If
-such an object is not initialized in this way, but is nonetheless
-supplied as an argument to any of the @code{log_facilityaddset()},
-@code{logfacilitydelset()}, @code{log_facilityismember()} or
-@code{log_open()} functions, the results are undefined.
-
-@page
-@subsection log_facilityfillset - Manipulate log facility sets
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_facilityfillset(
- log_facility_set_t *set
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_facilityfillset()} returns a value of zero
-and a unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EFAULT
-The @code{set} argument is an invalid pointer.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_facilityfillset()} function initializes the facility
-set pointed to by the argument @code{set}, such that all facilities
-are included.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-Applications shall call either @code{log_facilityemptyset()} or
-@code{log_facilityfillset()} at least once for each object of type
-@code{log_facilityset_t} prior to any other use of that object. If
-such an object is not initialized in this way, but is nonetheless
-supplied as an argument to any of the @code{log_facilityaddset()},
-@code{logfacilitydelset()}, @code{log_facilityismember()} or
-@code{log_open()} functions, the results are undefined.
-
-@page
-@subsection log_facilityaddset - Manipulate log facility sets
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_facilityaddset(
- log_facility_set_t *set,
- log_facility_t facilityno
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_facilityaddset()} returns a value of zero
-and a unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EFAULT
-The @code{set} argument is an invalid pointer.
-
-@item EINVAL
-The @code{facilityno} argument is not a valid facility.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_facilityaddset()} function adds the individual
-facility specified by the value of the argument @code{facilityno}
-to the facility set pointed to by the argument @code{set}.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-Applications shall call either @code{log_facilityemptyset()} or
-@code{log_facilityfillset()} at least once for each object of type
-@code{log_facilityset_t} prior to any other use of that object. If
-such an object is not initialized in this way, but is nonetheless
-supplied as an argument to any of the @code{log_facilityaddset()},
-@code{logfacilitydelset()}, @code{log_facilityismember()} or
-@code{log_open()} functions, the results are undefined.
-
-@page
-@subsection log_facilitydelset - Manipulate log facility sets
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_facilitydelset(
- log_facility_set_t *set,
- log_facility_t facilityno
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_facilitydelset()} returns a value of zero
-and a unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EFAULT
-The @code{set} argument is an invalid pointer.
-
-@item EINVAL
-The @code{facilityno} argument is not a valid facility.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_facilitydelset()} function deletes the individual
-facility specified by the value of the argument @code{facilityno}
-from the facility set pointed to by the argument @code{set}.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-Applications shall call either @code{log_facilityemptyset()} or
-@code{log_facilityfillset()} at least once for each object of type
-@code{log_facilityset_t} prior to any other use of that object. If
-such an object is not initialized in this way, but is nonetheless
-supplied as an argument to any of the @code{log_facilityaddset()},
-@code{logfacilitydelset()}, @code{log_facilityismember()} or
-@code{log_open()} functions, the results are undefined.
-
-@page
-@subsection log_facilityismember - Manipulate log facility sets
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_facilityismember(
- const log_facility_set_t *set,
- log_facility_t facilityno,
- const int *member
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_facilityismember()} returns a value
-of zero and a unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EFAULT
-The @code{set} or @code{member} argument is an invalid pointer.
-
-@item EINVAL
-The @code{facilityno} argument is not a valid facility.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_facilityismember()} function tests whether the facility
-specified by the value of the argument @code{facilityno} is a member
-of the set pointed to by the argument @code{set}. Upon successful
-completion, the @code{log_facilityismember()} function either returns
-a value of one to the location specified by @code{member} if the
-specified facility is a member of the specified set or value of
-zero to the location specified by @code{member} if the specified
-facility is not a member of the specified set.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-Applications shall call either @code{log_facilityemptyset()} or
-@code{log_facilityfillset()} at least once for each object of type
-@code{log_facilityset_t} prior to any other use of that object. If
-such an object is not initialized in this way, but is nonetheless
-supplied as an argument to any of the @code{log_facilityaddset()},
-@code{logfacilitydelset()}, @code{log_facilityismember()} or
-@code{log_open()} functions, the results are undefined.
-
-@page
-@subsection log_facilityisvalid - Manipulate log facility sets
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_facilityisvalid(
- log_facility_t facilityno
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A return value of zero indicates that the @code{facilityno} is valid and
-a return value other than zero represents an @code{errno}.
-
-@table @b
-@item EFAULT
-The @code{set} or @code{member} argument is an invalid pointer.
-
-@item EINVAL
-The @code{facilityno} argument is not a valid facility.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{log_facilityisvalid()} function tests whether the facility
-specified by the value of the argument @code{facilityno} is a valid
-facility number. Upon successful completion, the
-the @code{log_facilityisvalid()} function either returns a value of
-0 if the specified facility is a valid facility or value of EINVAL
-if the specified facility is not a valid facility.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-Applications shall call either @code{log_facilityemptyset()} or
-@code{log_facilityfillset()} at least once for each object of type
-@code{log_facilityset_t} prior to any other use of that object. If
-such an object is not initialized in this way, but is nonetheless
-supplied as an argument to any of the @code{log_facilityaddset()},
-@code{logfacilitydelset()}, @code{log_facilityismember()} or
-@code{log_open()} functions, the results are undefined.
-
-@page
-@subsection log_create - Creates a log file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_create(
- logd_t *ld,
- const char *path,
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_create()} returns a value
-of zero and a unsuccessful call returns the @code{errno}.
-
-@table @b
-
-@item EEXIST
-The @code{path} already exists and O_CREAT and O_EXCL were used.
-
-@item EISDIR
-The @code{path} refers to a directory and the access requested involved
-writing.
-
-@item ETXTBSY
-The @code{path} refers to an executable image which is currently being
-executed and write access was requested.
-
-@item EFAULT
-The @code{path} points outside your accessible address space.
-
-@item EACCES
-The requested access to the file is not allowed, or one of the
-directories in @code{path} did not allow search (execute) permission.
-
-@item ENAMETOOLONG
-The @code{path} was too long.
-
-@item ENOENT
-A directory component in @code{path} does not exist or is a dangling symbolic
-link.
-
-@item ENOTDIR
-A component used as a directory in @code{path} is not, in fact, a directory.
-
-@item EMFILE
-The process already has the maximum number of files open.
-
-@item ENFILE
-The limit on the total number of files open on the system has been reached.
-
-@item ENOMEM
-Insufficient kernel memory was available.
-
-@item EROFS
-The @code{path} refers to a file on a read-only filesystem and write access
-was requested.
-
-@item ELOOP
-The @code{path} contains a reference to a circular symbolic link, ie a
-symbolic link whose expansion contains a reference to itself.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function attempts to create a file associated with the @code{logdes}
-argument in the directory provided by the argument @code{path}.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
-
-@page
-@subsection log_sys_create - Creates a system log file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <evlog.h>
-
-int log_sys_create();
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{log_sys_create()} returns a value
-of zero and a unsuccessful call returns the @code{errno}.
-
-@table @b
-@item EEXIST
-The directory path to the system log already exist.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function will create a predefined system log directory path and
-system log file if they do not already exist.
-
-@subheading NOTES:
-
-The @code{_POSIX_LOGGING} feature flag is defined to indicate
-this service is available.
diff --git a/doc/new_chapters/files.t b/doc/new_chapters/files.t
deleted file mode 100644
index 121c70c6c1..0000000000
--- a/doc/new_chapters/files.t
+++ /dev/null
@@ -1,1959 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Files and Directories Manager
-
-@section Introduction
-
-The files and directories manager is ...
-
-The directives provided by the files and directories manager are:
-
-@itemize @bullet
-@item @code{opendir} - Open a Directory
-@item @code{readdir} - Reads a directory
-@item @code{rewinddir} - Resets the @code{readdir()} pointer
-@item @code{scandir} - Scan a directory for matching entries
-@item @code{telldir} - Return current location in directory stream
-@item @code{closedir} - Ends directory read operation
-@item @code{getdents} - Get directory entries
-@item @code{chdir} - Changes the current working directory
-@item @code{getcwd} - Gets current working directory
-@item @code{open} - Opens a file
-@item @code{creat} - Create a new file or rewrite an existing one
-@item @code{umask} - Sets a file creation mask
-@item @code{link} - Creates a link to a file
-@item @code{mkdir} - Makes a directory
-@item @code{mkfifo} - Makes a FIFO special file
-@item @code{unlink} - Removes a directory entry
-@item @code{rmdir} - Delete a directory
-@item @code{rename} - Renames a file
-@item @code{stat} - Gets information about a file.
-@item @code{fstat} - Gets file status
-@item @code{access} - Check user's permissions for a file.
-@item @code{chmod} - Changes file mode
-@item @code{fchmod} - Changes permissions of a file
-@item @code{chown} - Changes the owner and/ or group of a file
-@item @code{utime} - Change access and/or modification times of an inode
-@item @code{ftruncate} - Truncate a file to a specified length
-@item @code{truncate} - Truncate a file to a specified length
-@item @code{pathconf} - Gets configuration values for files
-@item @code{fpathconf} - Get configuration values for files
-@item @code{mknod} - Create a directory
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the files and directories manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection opendir - Open a Directory
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <dirent.h>
-
-int opendir(
- const char *dirname
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission was denied on a component of the path
-prefix of @code{dirname}, or read permission is denied
-
-@item EMFILE
-Too many file descriptors in use by process
-
-@item ENFILE
-Too many files are currently open in the system.
-
-@item ENOENT
-Directory does not exist, or @code{name} is an empty string.
-
-@item ENOMEM
-Insufficient memory to complete the operation.
-
-@item ENOTDIR
-@code{name} is not a directory.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine opens a directory stream corresponding to the
-directory specified by the @code{dirname} argument. The
-directory stream is positioned at the first entry.
-
-@subheading NOTES:
-
-The routine is implemented in Cygnus newlib.
-
-@page
-@subsection readdir - Reads a directory
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <dirent.h>
-
-int readdir(
- DIR *dirp
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{readdir()} function returns a pointer to a structure @code{dirent}
-representing the next directory entry from the directory stream pointed to
-by @code{dirp}. On end-of-file, NULL is returned.
-
-The @code{readdir()} function may (or may not) return entries for . or .. Your
-program should tolerate reading dot and dot-dot but not require them.
-
-The data pointed to be @code{readdir()} may be overwritten by another call to
-@code{readdir()} for the same directory stream. It will not be overwritten by
-a call for another directory.
-
-@subheading NOTES:
-
-If @code{ptr} is not a pointer returned by @code{malloc()}, @code{calloc()}, or
-@code{realloc()} or has been deallocated with @code{free()} or
-@code{realloc()}, the results are not portable and are probably disastrous.
-
-The routine is implemented in Cygnus newlib.
-
-@page
-@subsection rewinddir - Resets the readdir() pointer
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <dirent.h>
-
-void rewinddir(
- DIR *dirp
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-No value is returned.
-
-@subheading DESCRIPTION:
-
-The @code{rewinddir()} function resets the position associated with
-the directory stream pointed to by @code{dirp}. It also causes the
-directory stream to refer to the current state of the directory.
-
-@subheading NOTES:
-
-NONE
-
-If @code{dirp} is not a pointer by @code{opendir()}, the results are
-undefined.
-
-The routine is implemented in Cygnus newlib.
-
-@page
-@subsection scandir - Scan a directory for matching entries
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <dirent.h>
-
-int scandir(
- const char *dir,
- struct direct ***namelist,
- int (*select)(const struct dirent *),
- int (*compar)(const struct dirent **, const struct dirent **)
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOMEM
-Insufficient memory to complete the operation.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{scandir()} function scans the directory @code{dir}, calling
-@code{select()} on each directory entry. Entries for which @code{select()}
-returns non-zero are stored in strings allocated via @code{malloc()},
-sorted using @code{qsort()} with the comparison function @code{compar()},
-and collected in array @code{namelist} which is allocated via @code{malloc()}.
-If @code{select} is NULL, all entries are selected.
-
-@subheading NOTES:
-
-The routine is implemented in Cygnus newlib.
-
-@page
-@subsection telldir - Return current location in directory stream
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <dirent.h>
-
-off_t telldir(
- DIR *dir
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid directory stream descriptor @code{dir}.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{telldir()} function returns the current location associated with the
-directory stream @code{dir}.
-
-@subheading NOTES:
-
-The routine is implemented in Cygnus newlib.
-
-@page
-@subsection closedir - Ends directory read operation
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <dirent.h>
-
-int closedir(
- DIR *dirp
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor
-
-@end table
-
-@subheading DESCRIPTION:
-
-The directory stream associated with @code{dirp} is closed.
-The value in @code{dirp} may not be usable after a call to
-@code{closedir()}.
-
-@subheading NOTES:
-
-NONE
-
-The argument to @code{closedir()} must be a pointer returned by
-@code{opendir()}. If it is not, the results are not portable and
-most likely unpleasant.
-
-The routine is implemented in Cygnus newlib.
-
-@page
-@subsection chdir - Changes the current working directory
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int chdir(
- const char *path
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix.
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is
-in effect.
-
-@item ENOENT
-A file or directory does not exist.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when directory
-was expected.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{chdir()} function causes the directory named by @code{path} to
-become the current working directory; that is, the starting point for
-searches of pathnames not beginning with a slash.
-
-If @code{chdir()} detects an error, the current working directory is not
-changed.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection getcwd - Gets current working directory
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int getcwd( void );
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument
-
-@item ERANGE
-Result is too large
-
-@item EACCES
-Search permission is denied for a directory in a file's path prefix.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{getcwd()} function copies the absolute pathname of the current
-working directory to the character array pointed to by @code{buf}. The
-@code{size} argument is the number of bytes available in @code{buf}
-
-@subheading NOTES:
-
-There is no way to determine the maximum string length that @code{fetcwd()}
-may need to return. Applications should tolerate getting @code{ERANGE}
-and allocate a larger buffer.
-
-It is possible for @code{getcwd()} to return EACCES if, say, @code{login}
-puts the process into a directory without read access.
-
-The 1988 standard uses @code{int} instead of @code{size_t} for the second
-parameter.
-
-@page
-@subsection open - Opens a file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-int open(
- const char *path,
- int oflag,
- mode_t mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EACCES
-Search permission is denied for a directory in a file's path prefix.
-
-@item EEXIST
-The named file already exists.
-
-@item EINTR
-Function was interrupted by a signal.
-
-@item EISDIR
-Attempt to open a directory for writing or to rename a file to be a
-directory.
-
-@item EMFILE
-Too many file descriptors are in use by this process.
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
-effect.
-
-@item ENFILE
-Too many files are currently open in the system.
-
-@item ENOENT
-A file or directory does not exist.
-
-@item ENOSPC
-No space left on disk.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when a directory
-was expected.
-
-@item ENXIO
-No such device. This error may also occur when a device is not ready, for
-example, a tape drive is off-line.
-
-@item EROFS
-Read-only file system.
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{open} function establishes a connection between a file and a file
-descriptor. The file descriptor is a small integer that is used by I/O
-functions to reference the file. The @code{path} argument points to the
-pathname for the file.
-
-The @code{oflag} argument is the bitwise inclusive OR of the values of
-symbolic constants. The programmer must specify exactly one of the following
-three symbols:
-
-@table @b
-@item O_RDONLY
-Open for reading only.
-
-@item O_WRONLY
-Open for writing only.
-
-@item O_RDWR
-Open for reading and writing.
-
-@end table
-
-Any combination of the following symbols may also be used.
-
-@table @b
-@item O_APPEND
-Set the file offset to the end-of-file prior to each write.
-
-@item O_CREAT
-If the file does not exist, allow it to be created. This flag indicates
-that the @code{mode} argument is present in the call to @code{open}.
-
-@item O_EXCL
-This flag may be used only if O_CREAT is also set. It causes the call
-to @code{open} to fail if the file already exists.
-
-@item O_NOCTTY
-If @code{path} identifies a terminal, this flag prevents that teminal from
-becoming the controlling terminal for thi9s process. See Chapter 8 for a
-description of terminal I/O.
-
-@item O_NONBLOCK
-Do no wait for the device or file to be ready or available. After the file
-is open, the @code{read} and @code{write} calls return immediately. If the
-process would be delayed in the read or write opermation, -1 is returned and
-@code{errno} is set to @code{EAGAIN} instead of blocking the caller.
-
-@item O_TRUNC
-This flag should be used only on ordinary files opened for writing. It
-causes the file to be tuncated to zero length..
-
-@end table
-
-Upon successful completion, @code{open} returns a non-negative file
-descriptor.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection creat - Create a new file or rewrite an existing one
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-int creat(
- const char *path,
- mode_t mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EEXIST
-@code{path} already exists and O_CREAT and O_EXCL were used.
-
-@item EISDIR
-@code{path} refers to a directory and the access requested involved
-writing
-
-@item ETXTBSY
-@code{path} refers to an executable image which is currently being
-executed and write access was requested
-
-@item EFAULT
-@code{path} points outside your accessible address space
-
-@item EACCES
-The requested access to the file is not allowed, or one of the
-directories in @code{path} did not allow search (execute) permission.
-
-@item ENAMETOOLONG
-@code{path} was too long.
-
-@item ENOENT
-A directory component in @code{path} does not exist or is a dangling
-symbolic link.
-
-@item ENOTDIR
-A component used as a directory in @code{path} is not, in fact, a
-directory.
-
-@item EMFILE
-The process alreadyh has the maximum number of files open.
-
-@item ENFILE
-The limit on the total number of files open on the system has been
-reached.
-
-@item ENOMEM
-Insufficient kernel memory was available.
-
-@item EROFS
-@code{path} refers to a file on a read-only filesystem and write access
-was requested
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{creat} attempts to create a file and return a file descriptor for
-use in read, write, etc.
-
-@subheading NOTES:
-
-NONE
-
-The routine is implemented in Cygnus newlib.
-
-@page
-@subsection umask - Sets a file creation mask.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-mode_t umask(
- mode_t cmask
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@subheading DESCRIPTION:
-
-The @code{umask()} function sets the process file creation mask to @code{cmask}.
-The file creation mask is used during @code{open()}, @code{creat()}, @code{mkdir()},
-@code{mkfifo()} calls to turn off permission bits in the @code{mode} argument.
-Bit positions that are set in @code{cmask} are cleared in the mode of the
-created file.
-
-@subheading NOTES:
-
-NONE
-
-The @code{cmask} argument should have only permission bits set. All other
-bits should be zero.
-
-In a system which supports multiple processes, the file creation mask is inherited
-across @code{fork()} and @code{exec()} calls. This makes it possible to alter the
-default permission bits of created files. RTEMS does not support multiple processes
-so this behavior is not possible.
-
-@page
-@subsection link - Creates a link to a file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int link(
- const char *existing,
- const char *new
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EACCES
-Search permission is denied for a directory in a file's path prefix
-
-@item EEXIST
-The named file already exists.
-
-@item EMLINK
-The number of links would exceed @code{LINK_MAX}.
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
-effect.
-
-@item ENOENT
-A file or directory does not exist.
-@item ENOSPC
-No space left on disk.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when a directory
-was expected.
-
-@item EPERM
-Operation is not permitted. Process does not have the appropriate priviledges
-or permissions to perform the requested operations.
-
-@item EROFS
-Read-only file system.
-
-@item EXDEV
-Attempt to link a file to another file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{link()} function atomically creates a new link for an existing file
-and increments the link count for the file.
-
-If the @code{link()} function fails, no directories are modified.
-
-The @code{existing} argument should not be a directory.
-
-The caller may (or may not) need permission to access the existing file.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection mkdir - Makes a directory
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int mkdir(
- const char *path,
- mode_t mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix
-
-@item EEXIST
-The name file already exist.
-
-@item EMLINK
-The number of links would exceed LINK_MAX
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
-effect.
-
-@item ENOENT
-A file or directory does not exist.
-
-@item ENOSPC
-No space left on disk.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when a directory
-was expected.
-
-@item EROFS
-Read-only file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{mkdir()} function creates a new diectory named @code{path}. The
-permission bits (modified by the file creation mask) are set from @code{mode}.
-The owner and group IDs for the directory are set from the effective user ID
-and group ID.
-
-The new directory may (or may not) contain entries for.. and .. but is otherwise
-empty.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection mkfifo - Makes a FIFO special file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-
-int mkfifo(
- const char *path,
- mode_t mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix
-
-@item EEXIST
-The named file already exists.
-
-@item ENOENT
-A file or directory does not exist.
-
-@item ENOSPC
-No space left on disk.
-
-@item ENOTDIR
-A component of the specified @code{path} was not a directory when a directory
-was expected.
-
-@item EROFS
-Read-only file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{mkfifo()} function creates a new FIFO special file named @code{path}.
-The permission bits (modified by the file creation mask) are set from
-@code{mode}. The owner and group IDs for the FIFO are set from the efective
-user ID and group ID.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection unlink - Removes a directory entry
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int unlink(
- const char path
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix
-
-@item EBUSY
-The directory is in use.
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
-effect.
-
-@item ENOENT
-A file or directory does not exist.
-
-@item ENOTDIR
-A component of the specified @code{path} was not a directory when a directory
-was expected.
-
-@item EPERM
-Operation is not permitted. Process does not have the appropriate priviledges
-or permissions to perform the requested operations.
-
-@item EROFS
-Read-only file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{unlink} function removes the link named by @code{path} and decrements the
-link count of the file referenced by the link. When the link count goes to zero
-and no process has the file open, the space occupied by the file is freed and the
-file is no longer accessible.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection rmdir - Delete a directory
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int rmdir(
- const char *pathname
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EPERM
-The filesystem containing @code{pathname} does not support the removal
-of directories.
-
-@item EFAULT
-@code{pathname} points ouside your accessible address space.
-
-@item EACCES
-Write access to the directory containing @code{pathname} was not
-allowed for the process's effective uid, or one of the directories in
-@code{pathname} did not allow search (execute) permission.
-
-@item EPERM
-The directory containing @code{pathname} has the stickybit (S_ISVTX)
-set and the process's effective uid is neither the uid of the file to
-be delected nor that of the director containing it.
-
-@item ENAMETOOLONG
-@code{pathname} was too long.
-
-@item ENOENT
-A dirctory component in @code{pathname} does not exist or is a
-dangling symbolic link.
-
-@item ENOTDIR
-@code{pathname}, or a component used as a directory in @code{pathname},
-is not, in fact, a directory.
-
-@item ENOTEMPTY
-@code{pathname} contains entries other than . and .. .
-
-@item EBUSY
-@code{pathname} is the current working directory or root directory of
-some process
-
-@item EBUSY
-@code{pathname} is the current directory or root directory of some
-process.
-
-@item ENOMEM
-Insufficient kernel memory was available
-
-@item EROGS
-@code{pathname} refers to a file on a read-only filesystem.
-
-@item ELOOP
-@code{pathname} contains a reference to a circular symbolic link
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{rmdir} deletes a directory, which must be empty
-
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection rename - Renames a file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int rename(
- const char *old,
- const char *new
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix.
-
-@item EBUSY
-The directory is in use.
-
-@item EEXIST
-The named file already exists.
-
-@item EINVAL
-Invalid argument.
-
-@item EISDIR
-Attempt to open a directory for writing or to rename a file to be a
-directory.
-
-@item EMLINK
-The number of links would exceed LINK_MAX.
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is
-in effect.
-
-@item ENOENT
-A file or directory does no exist.
-
-@item ENOSPC
-No space left on disk.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when a
-directory was expected.
-
-@item ENOTEMPTY
-Attempt to delete or rename a non-empty directory.
-
-@item EROFS
-Read-only file system
-
-@item EXDEV
-Attempt to link a file to another file system.
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{rename()} function causes the file known bo @code{old} to
-now be known as @code{new}.
-
-Ordinary files may be renamed to ordinary files, and directories may be
-renamed to directories; however, files cannot be converted using
-@code{rename()}. The @code{new} pathname may not contain a path prefix
-of @code{old}.
-
-@subheading NOTES:
-
-If a file already exists by the name @code{new}, it is removed. The
-@code{rename()} function is atomic. If the @code{rename()} detects an
-error, no files are removed. This guarantees that the
-@code{rename("x", "x")} does not remove @code{x}.
-
-You may not rename dot or dot-dot.
-
-The routine is implemented in Cygnus newlib using @code{link()} and
-@code{unlink()}.
-
-@page
-@subsection stat - Gets information about a file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int stat(
- const char *path,
- struct stat *buf
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix.
-
-@item EBADF
-Invalid file descriptor.
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is
-in effect.
-
-@item ENOENT
-A file or directory does not exist.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when a
-directory was expected.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{path} argument points to a pathname for a file. Read, write, or
-execute permission for the file is not required, but all directories listed
-in @code{path} must be searchable. The @code{stat()} function obtains
-information about the named file and writes it to the area pointed to by
-@code{buf}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection fstat - Gets file status
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int fstat(
- int fildes,
- struct stat *buf
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{fstat()} function obtains information about the file
-associated with @code{fildes} and writes it to the area pointed
-to by the @code{buf} argument.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection access - Check user's permissions for a file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int access(
- const char *pathname,
- int mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-The requested access would be denied, either to the file itself or
-one of the directories in @code{pathname}.
-
-@item EFAULT
-@code{pathname} points outside your accessible address space.
-
-@item EINVAL
-@code{Mode} was incorrectly specified.
-
-@item ENAMETOOLONG
-@code{pathname} is too long.
-
-@item ENOENT
-A directory component in @code{pathname} would have been accessible but
-does not exist or was a dangling symbolic link.
-
-@item ENOTDIR
-A component used as a directory in @code{pathname} is not, in fact,
-a directory.
-
-@item ENOMEM
-Insufficient kernel memory was available.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{Access} checks whether the process would be allowed to read, write or
-test for existence of the file (or other file system object) whose name is
-@code{pathname}. If @code{pathname} is a symbolic link permissions of the
-file referred by this symbolic link are tested.
-
-@code{Mode} is a mask consisting of one or more of R_OK, W_OK, X_OK and F_OK.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection chmod - Changes file mode.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int chmod(
- const char *path,
- mode_t mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
-effect.
-
-@item ENOENT
-A file or directory does not exist.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when a directory
-was expected.
-
-@item EPERM
-Operation is not permitted. Process does not have the appropriate priviledges
-or permissions to perform the requested operations.
-
-@item EROFS
-Read-only file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-Set the file permission bits, the set user ID bit, and the set group ID bit
-for the file named by @code{path} to @code{mode}. If the effective user ID
-does not match the owner of the file and the calling process does not have
-the appropriate privileges, @code{chmod()} returns -1 and sets @code{errno} to
-@code{EPERM}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection fchmod - Changes permissions of a file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/stat.h>
-
-int fchmod(
- int fildes,
- mode_t mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix.
-
-@item EBADF
-The descriptor is not valid.
-
-@item EFAULT
-@code{path} points outside your accessible address space.
-
-@item EIO
-A low-level I/o error occurred while modifying the inode.
-
-@item ELOOP
-@code{path} contains a circular reference
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is
-in effect.
-
-@item ENOENT
-A file or directory does no exist.
-
-@item ENOMEM
-Insufficient kernel memory was avaliable.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when a
-directory was expected.
-
-@item EPERM
-The effective UID does not match the owner of the file, and is not
-zero
-
-@item EROFS
-Read-only file system
-@end table
-
-@subheading DESCRIPTION:
-
-The mode of the file given by @code{path} or referenced by
-@code{filedes} is changed.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection getdents - Get directory entries
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-#include <linux/dirent.h>
-#include <linux/unistd.h>
-
-long getdents(
- int dd_fd,
- char *dd_buf,
- int dd_len
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-A successful call to @code{getdents} returns th the number of bytes read.
-On end of directory, 0 is returned. When an error occurs, -1 is returned,
-and @code{errno} is set appropriately.
-
-@table @b
-@item EBADF
-Invalid file descriptor @code{fd}.
-
-@item EFAULT
-Argument points outside the calling process's address space.
-
-@item EINVAL
-Result buffer is too small.
-
-@item ENOENT
-No such directory.
-
-@item ENOTDIR
-File descriptor does not refer to a directory.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{getdents} reads several @code{dirent} structures from the directory
-pointed by @code{fd} into the memory area pointed to by @code{dirp}. The
-parameter @code{count} is the size of the memory area.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection chown - Changes the owner and/or group of a file.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <unistd.h>
-
-int chown(
- const char *path,
- uid_t owner,
- gid_t group
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Search permission is denied for a directory in a file's path prefix
-
-@item EINVAL
-Invalid argument
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
-effect.
-
-@item ENOENT
-A file or directory does not exist.
-
-@item ENOTDIR
-A component of the specified pathname was not a directory when a directory
-was expected.
-
-@item EPERM
-Operation is not permitted. Process does not have the appropriate priviledges
-or permissions to perform the requested operations.
-
-@item EROFS
-Read-only file system.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The user ID and group ID of the file named by @code{path} are set to
-@code{owner} and @code{path}, respectively.
-
-For regular files, the set group ID (S_ISGID) and set user ID (S_ISUID)
-bits are cleared.
-
-Some systems consider it a security violation to allow the owner of a file to
-be changed, If users are billed for disk space usage, loaning a file to
-another user could result in incorrect billing. The @code{chown()} function
-may be restricted to privileged users for some or all files. The group ID can
-still be changed to one of the supplementary group IDs.
-
-@subheading NOTES:
-
-This function may be restricted for some file. The @code{pathconf} function
-can be used to test the @code{_PC_CHOWN_RESTRICTED} flag.
-
-
-
-@page
-@subsection utime - Change access and/or modification times of an inode
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-
-int utime(
- const char *filename,
- struct utimbuf *buf
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCES
-Permission to write the file is denied
-
-@item ENOENT
-@code{Filename} does not exist
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{Utime} changes the access and modification times of the inode
-specified by @code{filename} to the @code{actime} and @code{modtime}
-fields of @code{buf} respectively. If @code{buf} is NULL, then the
-access and modification times of the file are set to the current time.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection ftruncate - truncate a file to a specified length
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int ftrunctate(
- int fd,
- size_t length
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOTDIR
-A component of the path prefix is not a directory.
-
-@item EINVAL
-The pathname contains a character with the high-order bit set.
-
-@item ENAMETOOLONG
-A component of a pathname exceeded 255 characters, or an entire
-path name exceeded 1023 characters.
-
-@item ENOENT
-The named file does not exist.
-
-@item EACCES
-The named file is not writable by the user.
-
-@item EACCES
-Search permission is denied for a component of the path prefix.
-
-@item ELOOP
-Too many symbolic links were encountered in translating the
-pathname
-
-@item EISDIR
-The named file is a directory.
-
-@item EROFS
-The named file resides on a read-only file system
-
-@item ETXTBSY
-The file is a pure procedure (shared text) file that is being
-executed
-
-@item EIO
-An I/O error occurred updating the inode.
-
-@item EFAULT
-@code{Path} points outside the process's allocated address space.
-
-@item EBADF
-The @code{fd} is not a valid descriptor.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{truncate()} causes the file named by @code{path} or referenced by
-@code{fd} to be truncated to at most @code{length} bytes in size. If the
-file previously was larger than this size, the extra data is lost. With
-@code{ftruncate()}, the file must be open for writing.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection truncate - truncate a file to a specified length
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int trunctate(
- const char *path,
- size_t length
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOTDIR
-A component of the path prefix is not a directory.
-
-@item EINVAL
-The pathname contains a character with the high-order bit set.
-
-@item ENAMETOOLONG
-A component of a pathname exceeded 255 characters, or an entire
-path name exceeded 1023 characters.
-
-@item ENOENT
-The named file does not exist.
-
-@item EACCES
-The named file is not writable by the user.
-
-@item EACCES
-Search permission is denied for a component of the path prefix.
-
-@item ELOOP
-Too many symbolic links were encountered in translating the
-pathname
-
-@item EISDIR
-The named file is a directory.
-
-@item EROFS
-The named file resides on a read-only file system
-
-@item ETXTBSY
-The file is a pure procedure (shared text) file that is being
-executed
-
-@item EIO
-An I/O error occurred updating the inode.
-
-@item EFAULT
-@code{Path} points outside the process's allocated address space.
-
-@item EBADF
-The @code{fd} is not a valid descriptor.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{truncate()} causes the file named by @code{path} or referenced by
-@code{fd} to be truncated to at most @code{length} bytes in size. If the
-file previously was larger than this size, the extra data is lost. With
-@code{ftruncate()}, the file must be open for writing.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection pathconf - Gets configuration values for files
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int pathconf(
- const char *path,
- int name
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument
-
-@item EACCES
-Permission to write the file is denied
-
-@item ENAMETOOLONG
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC
-is in effect.
-
-@item ENOENT
-A file or directory does not exist
-
-@item ENOTDIR
-A component of the specified @code{path} was not a directory whan a
-directory was expected.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{pathconf()} gets a value for the configuration option @code{name}
-for the open file descriptor @code{filedes}.
-
-The possible values for @code{name} are:
-
-@table @b
-@item _PC_LINK_MAX
-returns the maximum number of links to the file. If @code{filedes} or
-@code{path} refer to a directory, then the value applies to the whole
-directory. The corresponding macro is @code{_POSIX_LINK_MAX}.
-
-@item _PC_MAX_CANON
-returns the maximum length of a formatted input line, where @code{filedes}
-or @code{path} must refer to a terminal. The corresponding macro is
-@code{_POSIX_MAX_CANON}.
-
-@item _PC_MAX_INPUT
-returns the maximum length of an input line, where @code{filedes} or
-@code{path} must refer to a terminal. The corresponding macro is
-@code{_POSIX_MAX_INPUT}.
-
-@item _PC_NAME_MAX
-returns the maximum length of a filename in the directory @code{path} or
-@code{filedes}. The process is allowed to create. The corresponding macro
-is @code{_POSIX_NAME_MAX}.
-
-@item _PC_PATH_MAX
-returns the maximum length of a relative pathname when @code{path} or
-@code{filedes} is the current working directory. The corresponding macro
-is @code{_POSIX_PATH_MAX}.
-
-@item _PC_PIPE_BUF
-returns the size of the pipe buffer, where @code{filedes} must refer to a
-pipe or FIFO and @code{path} must refer to a FIFO. The corresponding macro
-is @code{_POSIX_PIPE_BUF}.
-
-@item _PC_CHOWN_RESTRICTED
-returns nonzero if the chown(2) call may not be used on this file. If
-@code{filedes} or @code{path} refer to a directory, then this applies to all
-files in that directory. The corresponding macro is
-@code{_POSIX_CHOWN_RESTRICTED}.
-
-@end table
-
-@subheading NOTES:
-
-Files with name lengths longer than the value returned for @code{name} equal
-@code{_PC_NAME_MAX} may exist in the given directory.
-
-@page
-@subsection fpathconf - Gets configuration values for files
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int fpathconf(
- int filedes,
- int name
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument
-
-@item EACCES
-Permission to write the file is denied
-@item ENAMETOOLONG
-
-Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC
-is in effect.
-
-@item ENOENT
-A file or directory does not exist
-
-@item ENOTDIR
-A component of the specified @code{path} was not a directory whan a
-directory was expected.
-
-@end table
-
-
-@subheading DESCRIPTION:
-
-@code{pathconf()} gets a value for the configuration option @code{name}
-for the open file descriptor @code{filedes}.
-
-The possible values for name are:
-
-@table @b
-@item _PC_LINK_MAX
-returns the maximum number of links to the file. If @code{filedes} or
-@code{path} refer to a directory, then the value applies to the whole
-directory. The corresponding macro is _POSIX_LINK_MAX.
-
-@item _PC_MAX_CANON
-returns the maximum length of a formatted input line, where @code{filedes}
-or @code{path} must refer to a terminal. The corresponding macro is
-@code{_POSIX_MAX_CANON}.
-
-@item _PC_MAX_INPUT
-returns the maximum length of an input line, where @code{filedes} or
-@code{path} must refer to a terminal. The corresponding macro is
-@code{_POSIX_MAX_INPUT}.
-
-@item _PC_NAME_MAX
-returns the maximum length of a filename in the directory @code{path} or
-@code{filedes}. The process is allowed to create. The corresponding macro
-is @code{_POSIX_NAME_MAX}.
-
-@item _PC_PATH_MAX
-returns the maximum length of a relative pathname when @code{path} or
-@code{filedes} is the current working directory. The corresponding macro
-is @code{_POSIX_PATH_MAX}.
-
-@item _PC_PIPE_BUF
-returns the size of the pipe buffer, where @code{filedes} must refer to a
-pipe or FIFO and @code{path} must refer to a FIFO. The corresponding macro
-is @code{_POSIX_PIPE_BUF}.
-
-@item _PC_CHOWN_RESTRICTED
-returns nonzero if the @code{chown()} call may not be used on this file. If
-@code{filedes} or @code{path} refer to a directory, then this applies to all
-files in that directory. The corresponding macro is
-@code{_POSIX_CHOWN_RESTRICTED}.
-
-@end table
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection mknod - create a directory
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-long mknod(
- const char *pathname,
- mode_t mode,
- dev_t dev
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@code{mknod} returns zero on success, or -1 if an error occurred (in which case,
-errno is set appropriately).
-
-@table @b
-@item ENAMETOOLONG
-@code{pathname} was too long.
-
-@item ENOENT
-A directory component in @code{pathname} does not exist or is a dangling symbolic
-link.
-
-@item ENOTDIR
-A component used in the directory @code{pathname} is not, in fact, a directory.
-
-@item ENOMEM
-Insufficient kernel memory was available
-
-@item EROFS
-@code{pathname} refers to a file on a read-only filesystem.
-
-@item ELOOP
-@code{pathname} contains a reference to a circular symbolic link, ie a symbolic
-link whose expansion contains a reference to itself.
-
-@item ENOSPC
-The device containing @code{pathname} has no room for the new node.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{mknod} attempts to create a filesystem node (file, device special file or
-named pipe) named @code{pathname}, specified by @code{mode} and @code{dev}.
-
-@code{mode} specifies both the permissions to use and the type of node to be created.
-
-It should be a combination (using bitwise OR) of one of the file types listed
-below and the permissions for the new node.
-
-The permissions are modified by the process's @code{umask} in the usual way: the
-permissions of the created node are @code{(mode & ~umask)}.
-
-The file type should be one of @code{S_IFREG}, @code{S_IFCHR}, @code{S_IFBLK} and
-@code{S_IFIFO} to specify a normal file (which will be created empty), character
-special file, block special file or FIFO (named pipe), respectively, or zero, which
-will create a normal file.
-
-If the file type is @code{S_IFCHR} or @code{S_IFBLK} then @code{dev} specifies the major
-and minor numbers of the newly created device special file; otherwise it is ignored.
-
-The newly created node will be owned by the effective uid of the process. If the
-directory containing the node has the set group id bit set, or if the filesystem
-is mounted with BSD group semantics, the new node will inherit the group ownership
-from its parent directory; otherwise it will be owned by the effective gid of the
-process.
-
-
-@subheading NOTES:
-
-NONE
diff --git a/doc/new_chapters/gen_section b/doc/new_chapters/gen_section
deleted file mode 100644
index d3b8bde58f..0000000000
--- a/doc/new_chapters/gen_section
+++ /dev/null
@@ -1,212 +0,0 @@
-#
-# This shell script generates the starting template for a manager chapter.
-#
-
-
-# Set this based on which chapter you want to generate a template for.
-chapter=$1
-
-case ${chapter} in
- process)
- CHAPTER_CAPS="Process Creation and Execution"
- CHAPTER_LOWER="process creation and execution"
- ROUTINES="fork execl execv execle execve execlp execvp pthread_atfork \
- wait waitpid _exit"
- ;;
- procenv)
- CHAPTER_CAPS="Process Environment"
- CHAPTER_LOWER="process environment"
- ROUTINES="getpid getppid getuid geteuid getgid getegid setuid setgid \
- getgroups getlogin getlogin_r getpgrp setsid setpgid uname times \
- getenv ctermid ttyname ttyname_r isatty sysconf "
- ;;
- files)
- CHAPTER_CAPS="Files and Directories"
- CHAPTER_LOWER="files and directories"
- ROUTINES="opendir readdir readdir_r rewinddir closedir \
- chdir getcwd open creat umask link mkdir mkfifo unlink \
- rmdir rename stat fstat access chmod fchmod chown \
- utime ftrunctate pathconf fpathconf"
- ;;
- io)
- CHAPTER_CAPS="Input and Output Primitives"
- CHAPTER_LOWER="input and output primitives"
- ROUTINES="pipe dup dup2 close read write fcntl lseek fsynch fdatasynch \
- aio_read aio_write lio_listio aio_error aio_return aio_cancel \
- aio_suspend aio_fsync"
- ;;
- device)
- CHAPTER_CAPS="Device- and Class- Specific Functions"
- CHAPTER_LOWER="device- and class- specific functions"
- ROUTINES="cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcgetattr \
- tcsetattr tcsendbreak tcdrain tcflush tcflow tcgetpgrp tcsetpgrp"
- ;;
- cspecific)
- CHAPTER_CAPS="Language-Specific Services for the C Programming Language"
- CHAPTER_LOWER="language-specific services for the C programming language"
- ROUTINES="setlocale fileno fdopen flcokfile ftrylockfile funlockfile \
- getc_unlocked getchar_unlocked putc_unlocked putchar_unlocked \
- setjmp longjmp sigsetjmp siglongjmp tzset strtok_r asctime_r \
- ctime_r gmtime_r localtime_r rand_r"
- ;;
- systemdb)
- CHAPTER_CAPS="System Databases"
- CHAPTER_LOWER="system databases"
- ROUTINES="getgrgid getgrgid_r getgrnam getgrnam_r getpwuid getpwuid_r \
- getpwnam getpwnam_r"
- ;;
- semaphores)
- CHAPTER_CAPS="Semaphores"
- CHAPTER_LOWER="semaphore"
- ROUTINES="sem_init sem_destroy sem_open sem_close sem_unlink sem_wait \
- sem_trywait sem_post sem_getvalue"
- ;;
- memorymgmt)
- CHAPTER_CAPS="Memory Management"
- CHAPTER_LOWER="memory management"
- ROUTINES="mlockall munlockall mlock munlock mmap munmap mprotect \
- msync shm_open shm_unlink"
- ;;
- message)
- CHAPTER_CAPS="Message Passing"
- CHAPTER_LOWER="message passing"
- ROUTINES="mq_open mq_close mq_unlink mq_send mq_receive mq_notify \
- mq_setattr mq_getattr"
- ;;
- cancel)
- CHAPTER_CAPS="Thread Cancellation"
- CHAPTER_LOWER="thread cancellation"
- ROUTINES="pthread_cancel pthread_setcancelstate pthread_setcanceltype \
- pthread_testcancel pthread_cleanup_push"
- ;;
- eventlog)
- CHAPTER_CAPS="Event Logging"
- CHAPTER_LOWER="event logging"
- ROUTINES="log_write log_open log_read log_notify log_close log_seek \
- log_severity_before log_facilityemptyset log_facilityfillset \
- log_facilityaddset log_facilitydelset log_facilityismember"
- ;;
- dumpcontrol)
- CHAPTER_CAPS="Process Dump Control"
- CHAPTER_LOWER="process dump control"
- ROUTINES="dump_setpath"
- ;;
- confspace)
- CHAPTER_CAPS="Configuration Space"
- CHAPTER_LOWER="configuration space"
- ROUTINES="cfg_mount cfg_unmount cfg_mknod cfg_get cfg_set cfg_link \
- cfg_unlink cfg_open cfg_read cfg_children cfg_mark cfg_close"
- ;;
- adminiface)
- CHAPTER_CAPS="Administration Interface"
- CHAPTER_LOWER="administration interface"
- ROUTINES="admin_shutdown"
- ;;
- # XXX this is not all of the C Library Stuff
- libc_ctype)
- CHAPTER_CAPS="C Library Character Handling"
- CHAPTER_LOWER="character handling"
- ROUTINES="isalnum isalpha iscntrl isdigit isgraph islower isprint \
- ispunct isspace isupper isxdigit tolower toupper"
- ;;
- libc_math)
- CHAPTER_CAPS="C Math Library"
- CHAPTER_LOWER="math library"
- ROUTINES="acos asis atan atan2 cos sin tan cosh sinh tanh exp frexp ldexp
- log log10 modf pow sqrt ceil fabs floor fmod"
- ;;
- libc_io)
- CHAPTER_CAPS="C Library IO"
- CHAPTER_LOWER="C Library IO"
- ROUTINES="clearerr fclose feof ferror fflush fgetc fgets fopen fputc \
- fputs fread freopen fseek ftell fwrite getc getchar gets perror \
- printf fprintf sprintf putc putchar puts remove rename rewind \
- scanf fscanf sscanf setbuf tempfile tmpnam ungetc"
- ;;
- libc_string)
- CHAPTER_CAPS="C Library String Handling"
- CHAPTER_LOWER="string handling"
- ROUTINES="strcpy strncpy strcat strncat strcmp strncmp strchr strcspn \
- strpbrk strrchr strspn strstr strtok stlen"
- ;;
- *)
- echo "Unknown chapter name"
- exit 1
- ;;
-esac
-
-if [ "x${CHAPTER_CAPS}" = "x" -o "x${CHAPTER_LOWER}" = "x" \
- -o "x${ROUTINES}" = "x" ] ; then
- echo "initialization problem"
- exit 1
-fi
-
-echo "@c"
-echo "@c COPYRIGHT (c) 1988-1998."
-echo "@c On-Line Applications Research Corporation (OAR)."
-echo "@c All rights reserved. "
-echo "@c"
-echo "@c \$Id\$"
-echo "@c"
-echo ""
-echo "@chapter ${CHAPTER_CAPS}" Manager
-echo ""
-echo "@section Introduction"
-echo ""
-echo "The "
-echo "${CHAPTER_LOWER} manager is ..."
-echo ""
-echo "The directives provided by the ${CHAPTER_LOWER} manager are:"
-echo ""
-echo "@itemize @bullet"
-
-for routine in ${ROUTINES}
-do
- echo "@item @code{${routine}} - "
-done
-echo "@end itemize"
-
-echo ""
-echo "@section Background"
-echo ""
-echo "@section Operations"
-echo ""
-echo "@section Directives"
-echo ""
-echo "This section details the ${CHAPTER_LOWER} manager's directives."
-echo "A subsection is dedicated to each of this manager's directives"
-echo "and describes the calling sequence, related constants, usage,"
-echo "and status codes."
-echo ""
-
-for routine in ${ROUTINES}
-do
- echo "@page"
- echo "@subsection ${routine} - "
- echo ""
- echo "@subheading CALLING SEQUENCE:"
- echo ""
- echo "@ifset is-C"
- echo "@example"
- echo "int ${routine}("
- echo ");"
- echo "@end example"
- echo "@end ifset"
- echo ""
- echo "@ifset is-Ada"
- echo "@end ifset"
- echo ""
- echo "@subheading STATUS CODES:"
- echo ""
- echo "@table @b"
- echo "@item E"
- echo "The"
- echo ""
- echo "@end table"
- echo ""
- echo "@subheading DESCRIPTION:"
- echo ""
- echo "@subheading NOTES:"
- echo ""
-done
-
diff --git a/doc/new_chapters/io.t b/doc/new_chapters/io.t
deleted file mode 100644
index 17ff64e772..0000000000
--- a/doc/new_chapters/io.t
+++ /dev/null
@@ -1,1085 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Input and Output Primitives Manager
-
-@section Introduction
-
-The input and output primitives manager is ...
-
-The directives provided by the input and output primitives manager are:
-
-@itemize @bullet
-@item @code{pipe} - YYY
-@item @code{dup} - Duplicates an open file descriptor
-@item @code{dup2} - Duplicates an open file descriptor
-@item @code{close} - Closes a file
-@item @code{read} - Reads from a file
-@item @code{write} - Writes to a file
-@item @code{fcntl} - Manipulates an open file descriptor
-@item @code{lseek} - Reposition read/write file offset
-@item @code{fsync} - Synchronize a file's complete in-core state with that on disk
-@item @code{fdatasync} - synchronize a file's in-core data with that on disk
-@item @code{mount} - Mount a file system
-@item @code{umount} - Unmount file systems
-@item @code{aio_read} - YYY
-@item @code{aio_write} - YYY
-@item @code{lio_listio} - YYY
-@item @code{aio_error} - YYY
-@item @code{aio_return} - YYY
-@item @code{aio_cancel} - YYY
-@item @code{aio_suspend} - YYY
-@item @code{aio_fsync} - YYY
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the input and output primitives manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection pipe -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int pipe(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection dup - Duplicates an open file descriptor
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int dup(
- int fildes
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor.
-
-@item EINTR
-Function was interrupted by a signal.
-
-@item EMFILE
-The process already has the maximum number of file descriptors open
-and tried to open a new one.
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{dup} function returns the lowest numbered available file
-descriptor. This new desciptor refers to the same open file as the
-original descriptor and shares any locks.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection dup2 - Duplicates an open file descriptor
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int dup2(
- int fildes,
- int fildes2
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor.
-
-@item EINTR
-Function was interrupted by a signal.
-
-@item EMFILE
-The process already has the maximum number of file descriptors open
-and tried to open a new one.
-@end table
-
-@subheading DESCRIPTION:
-
-@code{Dup2} creates a copy of the file descriptor @code{oldfd}.
-
-The old and new descriptors may be used interchangeably. They share locks, file
-position pointers and flags; for example, if the file position is modified by using
-@code{lseek} on one of the descriptors, the position is also changed for the other.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection close - Closes a file.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int close(
- int fildes
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-Invalid file descriptor
-
-@item EINTR
-Function was interrupted by a signal.
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{close()} function deallocates the file descriptor named by
-@code{fildes} and makes it available for reuse. All outstanding
-record locks owned by this process for the file are unlocked.
-
-@subheading NOTES:
-
-A signal can interrupt the @code{close()} function. In that case,
-@code{close()} returns -1 with @code{errno} set to EINTR. The file
-may or may not be closed.
-
-@page
-@subsection read - Reads from a file.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int read(
- int fildes,
- void *buf,
- unsigned int nbyte
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets @code{errno} to one of
-the following:
-
-@table @b
-@item EAGAIN
-The O_NONBLOCK flag is set for a file descriptor and the process
-would be delayed in the I/O operation.
-
-@item EBADF
-Invalid file descriptor
-
-@item EINTR
-Function was interrupted by a signal.
-
-@item EIO
-Input or output error
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{read()} function reads @code{nbyte} bytes from the file
-associated with @code{fildes} into the buffer pointed to by @code{buf}.
-
-The @code{read()} function returns the number of bytes actually read
-and placed in the buffer. This will be less than @code{nbyte} if:
-
-@itemize @bullet
-
-@item The number of bytes left in the file is less than @code{nbyte}.
-
-@item The @code{read()} request was interrupted by a signal.
-
-@item The file is a pipe or FIFO or special file with less than @code{nbytes}
-immediately available for reading.
-
-@end itemize
-
-When attempting to read from any empty pipe or FIFO:
-
-
-@itemize @bullet
-
-@item If no process has the pipe open for writing, zero is returned to
-indicate end-of-file.
-
-@item If some process has the pipe open for writing and O_NONBLOCK is set,
--1 is returned and @code{errno} is set to EAGAIN.
-
-@item If some process has the pipe open for writing and O_NONBLOCK is clear,
-@code{read()} waits for some data to be written or the pipe to be closed.
-
-@end itemize
-
-
-When attempting to read from a file other than a pipe or FIFO and no data
-is available.
-
-@itemize @bullet
-
-@item If O_NONBLOCK is set, -1 is returned and @code{errno} is set to EAGAIN.
-
-@item If O_NONBLOCK is clear, @code{read()} waits for some data to become
-available.
-
-@item The O_NONBLOCK flag is ignored if data is available.
-
-@end itemize
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection write - Writes to a file
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <unistd.h>
-
-int write(
- int fildes,
- const void *buf,
- unsigned int nbytes
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EAGAIN
-The O_NONBLOCK flag is set for a file descriptor and the process
-would be delayed in the I/O operation.
-
-@item EBADF
-Invalid file descriptor
-
-@item EFBIG
-An attempt was made to write to a file that exceeds the maximum file
-size
-
-@item EINTR
-The function was interrupted by a signal.
-
-@item EIO
-Input or output error.
-
-@item ENOSPC
-No space left on disk.
-
-@item EPIPE
-Attempt to write to a pope or FIFO with no reader.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{write()} function writes @code{nbyte} from the array pointed
-to by @code{buf} into the file associated with @code{fildes}.
-
-If @code{nybte} is zero and the file is a regular file, the @code{write()}
-function returns zero and has no other effect. If @code{nbyte} is zero
-and the file is a special file, te results are not portable.
-
-The @code{write()} function returns the number of bytes written. This
-number will be less than @code{nbytes} if there is an error. It will never
-be greater than @code{nbytes}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection fcntl - Manipulates an open file descriptor
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-int fcntl(
- int fildes,
- int cmd
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EACCESS
-Search permission is denied for a direcotry in a file's path
-prefix.
-
-@item EAGAIN
-The O_NONBLOCK flag is set for a file descriptor and the process
-would be delayed in the I/O operation.
-
-@item EBADF
-Invalid file descriptor
-
-@item EDEADLK
-An @code{fcntl} with function F_SETLKW would cause a deadlock.
-
-@item EINTR
-The functioin was interrupted by a signal.
-
-@item EINVAL
-Invalid argument
-
-@item EMFILE
-Too many file descriptor or in use by the process.
-
-@item ENOLCK
-No locks available
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{fcntl()} performs one of various miscellaneous operations on
-@code{fd}. The operation in question is determined by @code{cmd}:
-
-@table @b
-
-@item F_DUPFD
-Makes @code{arg} be a copy of @code{fd}, closing @code{fd} first if necessary.
-
-The same functionality can be more easily achieved by using @code{dup2()}.
-
-The old and new descriptors may be used interchangeably. They share locks,
-file position pointers and flags; for example, if the file position is
-modified by using @code{lseek()} on one of the descriptors, the position is
-also changed for the other.
-
-The two descriptors do not share the close-on-exec flag, however. The
-close-on-exec flag of the copy is off, meaning that it will be closed on
-exec.
-
-On success, the new descriptor is returned.
-
-@item F_GETFD
-Read the close-on-exec flag. If the low-order bit is 0, the file will
-remain open across exec, otherwise it will be closed.
-
-@item F_SETFD
-Set the close-on-exec flag to the value specified by @code{arg} (only the least
-significant bit is used).
-
-@item F_GETFL
-Read the descriptor's flags (all flags (as set by open()) are returned).
-
-@item F_SETFL
-Set the descriptor's flags to the value specified by @code{arg}. Only
-@code{O_APPEND} and @code{O_NONBLOCK} may be set.
-
-The flags are shared between copies (made with @code{dup()} etc.) of the same
-file descriptor.
-
-The flags and their semantics are described in @code{open()}.
-
-@item F_GETLK, F_SETLK and F_SETLKW
-Manage discretionary file locks. The third argument @code{arg} is a pointer to a
-struct flock (that may be overwritten by this call).
-
-@item F_GETLK
-Return the flock structure that prevents us from obtaining the lock, or set the
-@code{l_type} field of the lock to @code{F_UNLCK} if there is no obstruction.
-
-@item F_SETLK
-The lock is set (when @code{l_type} is @code{F_RDLCK} or @code{F_WRLCK}) or
-cleared (when it is @code{F_UNLCK}. If lock is held by someone else, this
-call returns -1 and sets @code{errno} to EACCES or EAGAIN.
-
-@item F_SETLKW
-Like @code{F_SETLK}, but instead of returning an error we wait for the lock to
-be released.
-
-@item F_GETOWN
-Get the process ID (or process group) of the owner of a socket.
-
-Process groups are returned as negative values.
-
-@item F_SETOWN
-Set the process or process group that owns a socket.
-
-For these commands, ownership means receiving @code{SIGIO} or @code{SIGURG}
-signals.
-
-Process groups are specified using negative values.
-
-@end table
-
-@subheading NOTES:
-
-The errors returned by @code{dup2} are different from those returned by
-@code{F_DUPFD}.
-
-@page
-@subsection lseek - Reposition read/write file offset
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <unistd.h>
-
-int lseek(
- int fildes,
- off_t offset,
- int whence
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EBADF
-@code{Fildes} is not an open file descriptor.
-
-@item ESPIPE
-@code{Fildes} is associated with a pipe, socket or FIFO.
-
-@item EINVAL
-@code{Whence} is not a proper value.
-
-@end table
-
-@subheading DESCRIPTION:
-
-The @code{lseek} function repositions the offset of the file descriptor
-@code{fildes} to the argument offset according to the directive whence.
-The argument @code{fildes} must be an open file descriptor. @code{Lseek}
-repositions the file pointer fildes as follows:
-
-@itemize @bullet
-
-@item
-If @code{whence} is SEEK_SET, the offset is set to @code{offset} bytes.
-
-@item
-If @code{whence} is SEEK_CUR, the offset is set to its current location
-plus offset bytes.
-
-@item
-If @code{whence} is SEEK_END, the offset is set to the size of the
-file plus @code{offset} bytes.
-
-@end itemize
-
-The @code{lseek} function allows the file offset to be set beyond the end
-of the existing end-of-file of the file. If data is later written at this
-point, subsequent reads of the data in the gap return bytes of zeros
-(until data is actually written into the gap).
-
-Some devices are incapable of seeking. The value of the pointer associated
-with such a device is undefined.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection fsync - Synchronize a file's complete in-core state with that on disk
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int fsync(
- int fd
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-On success, zero is returned. On error, -1 is returned, and @code{errno}
-is set appropriately.
-
-@table @b
-@item EBADF
-@code{fd} is not a valid descriptor open for writing
-
-@item EINVAL
-@code{fd} is bound to a special file which does not support support synchronization
-
-@item EROFS
-@code{fd} is bound to a special file which does not support support synchronization
-
-@item EIO
-An error occurred during synchronization
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{fsync} copies all in-core parts of a file to disk.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection fdatasync - synchronize a file's in-core data with that on disk.
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int fdatasync(
- int fd
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-On success, zero is returned. On error, -1 is returned, and @code{errno} is
-set appropriately.
-
-@table @b
-@item EBADF
-@code{fd} is not a valid file descriptor open for writing.
-
-@item EINVAL
-@code{fd} is bound to a special file which does not support synchronization.
-
-@item EIO
-An error occurred during synchronization.
-
-@item EROFS
-@code{fd} is bound to a special file which dows not support synchronization.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{fdatasync} flushes all data buffers of a file to disk (before the system call
-returns). It resembles @code{fsync} but is not required to update the metadata such
-as access time.
-
-Applications that access databases or log files often write a tiny data fragment
-(e.g., one line in a log file) and then call @code{fsync} immediately in order to
-ensure that the written data is physically stored on the harddisk. Unfortunately,
-fsync will always initiate two write operations: one for the newly written data and
-another one in order to update the modification time stored in the inode. If the
-modification time is not a part of the transaction concept @code{fdatasync} can be
-used to avoid unnecessary inode disk write operations.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection mount - Mount a file system
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/mount.h>
-#include <linux/fs.h>
-
-int mount(
- const char *specialfile,
- const char * dir,
- const char * filesystemtype,
- unsigned long rwflag,
- const void * data
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EPERM
-The user is not the super-user.
-
-@item ENODEV
-@code{filesystemtype} not configured in the kernel.
-
-@item ENOTBLK
-@code{specialfile} is not a block device (if a device was required).
-
-@item EBUSY
-@code{specialfile} is already mounted. Or, it cannot be remounted
-read-only, because it still holds files open for writing. Or, it
-cannot be mounted on @code{dir} because @code{dir} is still busy
-(it is the working directory of some task, the mount point of another
-device, has open files, etc.).
-
-@item EINVAL
-@code{specialfile} had an invalid superblock. Or, a remount was
-attempted, while @code{specialfile} was not already mounted on @code{dir}.
-Or, an umount was attempted, while @code{dir} was not a mount point.
-
-@item EFAULT
-One of the pointer arguments points outside the user address space.
-
-@item ENOMEM
-The kernel could not allocate a free page to copy filenames or data into.
-
-@item ENAMETOOLONG
-A pathname was longer than MAXPATHLEN.
-
-@item ENOTDIR
-A pathname was empty or had a nonexistent component.
-
-@item EACCES
-A component of a path was not searchable. Or, mounting a read-only
-filesystem was attempted without giving the MS_RDONLY flag. Or, the
-block device @code{specialfile} is located on a filesystem mounted with
-the MS_NODEV option.
-
-@item ENXIO
-The major number of the block device @code{specialfile} is out of
-range.
-
-@item EMFILE
-(In case no block device is required:) Table of dummy devices is full.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{Mount} attaches the filesystem specified by @code{specialfile}
-(which is often a device name) to the directory specified by @code{dir}.
-
-Only the super-user may mount filesystems.
-
-The @code{filesystemtype} argument may take one of the values listed in
-/proc/filesystems (link "minix", "ext2", "msdos", "proc", "nfs",
-"iso9660" etc.).
-
-The @code{rwflag} argument has the magic number 0xCOED in the top 16 bits,
-and various mount flags in the low order 16 bits. If the magic number is
-absent, then the last two arguments are not used.
-
-The @code{data} argument is interpreted by the different file systems.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection umount - Umount file systems
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/mount.h>
-#include <linux/fs.h>
-
-int umount(
- const char *specialfile
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item EPERM
-The user is not the super-user.
-
-@item ENODEV
-@code{Filesystemtype} not configured in the kernel.
-
-@item ENOTBLK
-@code{Specialfile} is not a block device (if a device was required).
-
-@item EBUSY
-@code{Specialfile} is already mounted. Or, it cannot be remounted
-read-only, because it still holds files open for writing. Or, it
-cannot be mounted on @code{dir} because @code{dir} is still busy
-(it is the working directory of some task, the mount point of another
-device, has open files, etc.).
-
-@item EINVAL
-@code{specialfile} had an invalid superblock. Or, a remount was
-attempted, while @code{specialfile} was not already mounted on @code{dir}.
-Or, an umount was attempted, while @code{dir} was not a mount point.
-
-@item EFAULT
-One of the pointer arguments points outside the user address space.
-
-@item ENOMEM
-The kernel could not allocate a free page to copy filenames or data into.
-
-@item ENAMETOOLONG
-A pathname was longer than MAXPATHLEN.
-
-@item ENOTDIR
-A pathname was empty or had a nonexistent component.
-
-@item EACCES
-A component of a path was not searchable. Or, mounting a read-only
-filesystem was attempted without giving the MS_RDONLY flag. Or, the
-block device @code{specialfile} is located on a filesystem mounted with
-the MS_NODEV option.
-
-@item ENXIO
-The major number of the block device @code{specialfile} is out of
-range.
-
-@item EMFILE
-(In case no block device is required:) Table of dummy devices is full.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@code{Umount} removes the attachment of the filesystem specified
-by @code{specialfile} or @code{dir}.
-
-Only the super-user may umount filesystems.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection aio_read -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int aio_read(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection aio_write -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int aio_write(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection lio_listio -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int lio_listio(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection aio_error -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int aio_error(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection aio_return -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int aio_return(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection aio_cancel -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int aio_cancel(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection aio_suspend -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int aio_suspend(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
-
-@page
-@subsection aio_fsync -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int aio_fsync(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine is not currently supported by RTEMS but could be
-in a future version.
diff --git a/doc/new_chapters/key.t b/doc/new_chapters/key.t
deleted file mode 100644
index 58e34bb259..0000000000
--- a/doc/new_chapters/key.t
+++ /dev/null
@@ -1,140 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Key Manager
-
-@section Introduction
-
-The key manager ...
-
-The directives provided by the key manager are:
-
-@itemize @bullet
-@item @code{pthread_key_create} -
-@item @code{pthread_key_delete} -
-@item @code{pthread_setspecific} -
-@item @code{pthread_getspecific} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the key manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection pthread_key_create
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_key_create(
- pthread_key_t *key,
- void (*destructor)( void * )
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EAGAIN
-There were not enough resources available to create another key.
-
-@item ENOMEM
-Insufficient memory exists to create the key.
-
-@end table
-
-@page
-@subsection pthread_key_delete
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_key_delete(
- pthread_key_t key,
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The key was invalid
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_setspecific
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_setspecific(
- pthread_key_t key,
- const void *value
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified key is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_getspecific
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-void *pthread_getspecific(
- pthread_key_t key
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item NULL
-There is no thread-specific data associated with the specified key.
-
-@item non-NULL
-The data associated with the specified key.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/memorymgmt.t b/doc/new_chapters/memorymgmt.t
deleted file mode 100644
index 1aeaeb56a6..0000000000
--- a/doc/new_chapters/memorymgmt.t
+++ /dev/null
@@ -1,315 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Management Manager
-
-@section Introduction
-
-The
-memory management manager is ...
-
-The directives provided by the memory management manager are:
-
-@itemize @bullet
-@item @code{mlockall} -
-@item @code{munlockall} -
-@item @code{mlock} -
-@item @code{munlock} -
-@item @code{mmap} -
-@item @code{munmap} -
-@item @code{mprotect} -
-@item @code{msync} -
-@item @code{shm_open} -
-@item @code{shm_unlink} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the memory management manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection mlockall -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mlockall(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection munlockall -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int munlockall(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mlock -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mlock(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection munlock -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int munlock(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mmap -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mmap(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection munmap -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int munmap(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mprotect -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mprotect(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection msync -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int msync(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection shm_open -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int shm_open(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection shm_unlink -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int shm_unlink(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/message.t b/doc/new_chapters/message.t
deleted file mode 100644
index d4b85ab788..0000000000
--- a/doc/new_chapters/message.t
+++ /dev/null
@@ -1,259 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Message Passing Manager
-
-@section Introduction
-
-The
-message passing manager is ...
-
-The directives provided by the message passing manager are:
-
-@itemize @bullet
-@item @code{mq_open} -
-@item @code{mq_close} -
-@item @code{mq_unlink} -
-@item @code{mq_send} -
-@item @code{mq_receive} -
-@item @code{mq_notify} -
-@item @code{mq_setattr} -
-@item @code{mq_getattr} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the message passing manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection mq_open -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mq_open(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mq_close -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mq_close(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mq_unlink -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mq_unlink(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mq_send -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mq_send(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mq_receive -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mq_receive(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mq_notify -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mq_notify(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mq_setattr -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mq_setattr(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection mq_getattr -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int mq_getattr(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/mutex.t b/doc/new_chapters/mutex.t
deleted file mode 100644
index d158e07dc9..0000000000
--- a/doc/new_chapters/mutex.t
+++ /dev/null
@@ -1,555 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Mutex Manager
-
-@section Introduction
-
-The mutex manager ...
-
-The directives provided by the mutex manager are:
-
-@itemize @bullet
-@item @code{pthread_mutexattr_init} -
-@item @code{pthread_mutexattr_destroy} -
-@item @code{pthread_mutexattr_setprotocol} -
-@item @code{pthread_mutexattr_getprotocol} -
-@item @code{pthread_mutexattr_setprioceiling} -
-@item @code{pthread_mutexattr_getprioceiling} -
-@item @code{pthread_mutexattr_setpshared} -
-@item @code{pthread_mutexattr_getpshared} -
-@item @code{pthread_mutex_init} -
-@item @code{pthread_mutex_destroy} -
-@item @code{pthread_mutex_lock} -
-@item @code{pthread_mutex_trylock} -
-@item @code{pthread_mutex_timedlock} -
-@item @code{pthread_mutex_unlock} -
-@item @code{pthread_mutex_setprioceiling} -
-@item @code{pthread_mutex_getprioceiling} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the mutex manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection pthread_mutexattr_init
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_init(
- pthread_mutexattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutexattr_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_destroy(
- pthread_mutexattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutexattr_setprotocol
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_setprotocol(
- pthread_mutexattr_t *attr,
- int protocol
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The protocol argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutexattr_getprotocol
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_getprotocol(
- pthread_mutexattr_t *attr,
- int *protocol
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The protocol pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutexattr_setprioceiling
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_setprioceiling(
- pthread_mutexattr_t *attr,
- int prioceiling
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The prioceiling argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutexattr_getprioceiling
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_getprioceiling(
- const pthread_mutexattr_t *attr,
- int *prioceiling
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The prioceiling pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutexattr_setpshared
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_setpshared(
- pthread_mutexattr_t *attr,
- int pshared
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The pshared argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutexattr_getpshared
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_getpshared(
- const pthread_mutexattr_t *attr,
- int *pshared
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The pshared pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutex_init
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_init(
- pthread_mutex_t *mutex,
- const pthread_mutexattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified protocol is invalid.
-
-@item EAGAIN
-The system lacked the necessary resources to initialize another mutex.
-
-@item ENOMEM
-Insufficient memory exists to initialize the mutex.
-
-@item EBUSY
-Attempted to reinialize the object reference by mutex, a previously
-initialized, but not yet destroyed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutex_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_destroy(
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@item EBUSY
-Attempted to destroy the object reference by mutex, while it is locked or
-referenced by another thread.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutex_lock
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_lock(
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@item EINVAL
-The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
-priority of the calling thread is higher than the current priority
-ceiling.
-
-@item EDEADLK
-The current thread already owns the mutex.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutex_trylock
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_trylock(
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@item EINVAL
-The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
-priority of the calling thread is higher than the current priority
-ceiling.
-
-@item EDEADLK
-The current thread already owns the mutex.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutex_timedlock
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-#include <time.h>
-
-int pthread_mutex_timedlock(
- pthread_mutex_t *mutex,
- const struct timespec *timeout
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@item EINVAL
-The nanoseconds field of timeout is invalid.
-
-@item EINVAL
-The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
-priority of the calling thread is higher than the current priority
-ceiling.
-
-@item EDEADLK
-The current thread already owns the mutex.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
-@page
-@subsection pthread_mutex_unlock
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_unlock(
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutex_setprioceiling
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_setprioceiling(
- pthread_mutex_t *mutex,
- int prioceiling,
- int *oldceiling
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The oldceiling pointer parameter is invalid.
-
-@item EINVAL
-The prioceiling parameter is an invalid priority.
-
-@item EINVAL
-The specified mutex is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_mutex_getprioceiling
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_getprioceiling(
- pthread_mutex_t *mutex,
- int *prioceiling
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The prioceiling pointer parameter is invalid.
-
-@item EINVAL
-The specified mutex is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/posix_users.texi b/doc/new_chapters/posix_users.texi
deleted file mode 100644
index 3fe66ed75c..0000000000
--- a/doc/new_chapters/posix_users.texi
+++ /dev/null
@@ -1,165 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename posix_users_new
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the C User's Guide
-@c
-
-@c Joel's Questions
-@c
-@c 1. Why does paragraphindent only impact makeinfo?
-@c 2. Why does paragraphindent show up in HTML?
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Posix API User's Guide: (posix_users). Posix API User's Guide Plan
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c variable substitution info:
-@c
-@c Note: At the moment we do not document the Ada interface but by building
-@c in the infrastructure Florist support should be simple to add.
-@set is-C
-@clear is-Ada
-@set LANGUAGE C
-@set STRUCTURE structure
-@set ROUTINE function
-@set OR |
-@set RPREFIX RTEMS_
-@set DIRPREFIX rtems_
-@c the language is @value{LANGUAGE}
-@c NOTE: don't use underscore in the name
-@c
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS POSIX API User's Guide
-
-@setchapternewpage odd
-@settitle RTEMS POSIX API User's Guide
-@titlepage
-@finalout
-
-@title RTEMS POSIX API User's Guide
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include process.texi
-@include signal.texi
-@include procenv.texi
-@include files.texi
-@include io.texi
-@include device.texi
-@include cspecific.texi
-@include systemdb.texi
-@include semaphores.texi
-@include mutex.texi
-@include cond.texi
-@include memorymgmt.texi
-@include sched.texi
-@include clock.texi
-@include message.texi
-@include thread.texi
-@include key.texi
-@include cancel.texi
-@include eventlog.texi
-@include dumpcontrol.texi
-@include confspace.texi
-@include adminiface.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top posix_users_new
-
-This is the online version of the RTEMS POSIX API User's Guide
-
-@menu
-* Preface::
-* Process Creation and Execution Manager::
-* Signal Manager::
-* Process Environment Manager::
-* Files and Directories Manager::
-* Input and Output Primitives Manager::
-* Device- and Class- Specific Functions Manager::
-* Language-Specific Services for the C Programming Language Manager::
-* System Databases Manager::
-* Semaphores Manager::
-* Mutex Manager::
-* Condition Variable Manager::
-* Memory Management Manager::
-* Scheduler Manager::
-* Clock Manager::
-* Message Passing Manager::
-* Thread Manager::
-* Key Manager::
-* Thread Cancellation Manager::
-* Event Logging Manager::
-* Process Dump Control Manager::
-* Configuration Space Manager::
-* Administration Interface Manager::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, , Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/new_chapters/preface.texi b/doc/new_chapters/preface.texi
deleted file mode 100644
index 83e85dfafa..0000000000
--- a/doc/new_chapters/preface.texi
+++ /dev/null
@@ -1,34 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, , Top, Top
-@end ifinfo
-@unnumbered Preface
-
-This is the User's Guide for the POSIX API support
-provided in RTEMS.
-
-The functionality described in this document is based
-on the following standards:
-
-@itemize @bullet
-
-@item POSIX 1003.1b-1993.
-
-@item POSIX 1003.1h/D3.
-
-@end itemize
-
-Much of the POSIX API standard is actually implemented in the
-Cygnus Newlib ANSI C Library. Please refer to documentation on
-Newlib for more information on what it supplies.
-
-At this point, this is just beginning to become what it
-ultimately should be.
-
diff --git a/doc/new_chapters/procenv.t b/doc/new_chapters/procenv.t
deleted file mode 100644
index 9f51ba8cf4..0000000000
--- a/doc/new_chapters/procenv.t
+++ /dev/null
@@ -1,654 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Process Environment Manager
-
-@section Introduction
-
-The
-process environment manager is ...
-
-The directives provided by the process environment manager are:
-
-@itemize @bullet
-@item @code{getpid} -
-@item @code{getppid} -
-@item @code{getuid} -
-@item @code{geteuid} -
-@item @code{getgid} -
-@item @code{getegid} -
-@item @code{setuid} -
-@item @code{setgid} -
-@item @code{getgroups} -
-@item @code{getlogin} -
-@item @code{getlogin_r} -
-@item @code{getpgrp} -
-@item @code{setsid} -
-@item @code{setpgid} -
-@item @code{uname} -
-@item @code{times} - Get process times
-@item @code{getenv} -
-@item @code{ctermid} -
-@item @code{ttyname} -
-@item @code{ttyname_r} -
-@item @code{isatty} -
-@item @code{sysconf} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the process environment manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection getpid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getpid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getppid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getppid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getuid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getuid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection geteuid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int geteuid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getgid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getgid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getegid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getegid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection setuid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int setuid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection setgid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int setgid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getgroups -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getgroups(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getlogin -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getlogin(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getlogin_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getlogin_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getpgrp -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getpgrp(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection setsid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int setsid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection setpgid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int setpgid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection uname -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int uname(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection times - Get process times
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sys/time.h>
-
-clock_t times(
- struct tms *buf
-);
-@end example
-
-@subheading STATUS CODES:
-
-This routine returns the process times
-
-@subheading DESCRIPTION:
-
-@code{times} stores the current process times in @code{buf}.
-
-@code{struct tms} is as defined in @code{/usr/include/sys/times.h}
-
-@code{times} returns the number of clock ticks that have elapsed
-since the systm has been up.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection getenv -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getenv(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection ctermid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int ctermid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection ttyname -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int ttyname(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection ttyname_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int ttyname_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection isatty -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int isatty(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sysconf -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sysconf(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/process.t b/doc/new_chapters/process.t
deleted file mode 100644
index 7b5bece910..0000000000
--- a/doc/new_chapters/process.t
+++ /dev/null
@@ -1,414 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Process Creation and Execution Manager
-
-@section Introduction
-
-The process creation and execution manager is ...
-
-The directives provided by the process creation and execution manager are:
-
-@itemize @bullet
-@item @code{fork} - Create a Process
-@item @code{execl} - Execute a File
-@item @code{execv} - Execute a File
-@item @code{execle} - Execute a File
-@item @code{execve} - Execute a File
-@item @code{execlp} - Execute a File
-@item @code{execvp} - Execute a File
-@item @code{pthread_atfork} - Register Fork Handlers
-@item @code{wait} - Wait for Process Termination
-@item @code{waitpid} - Wait for Process Termination
-@item @code{_exit} - Terminate a Process
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the process creation and execution manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection fork - Create a Process
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-
-int fork( void );
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection execl - Execute a File
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int execl(
- const char *path,
- const char *arg,
- ...
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection execv - Execute a File
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int execv(
- const char *path,
- char const *argv[],
- ...
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection execle - Execute a File
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int execle(
- const char *path,
- const char *arg,
- ...
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection execve - Execute a File
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int execve(
- const char *path,
- char *const argv[],
- char *const envp[]
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection execlp - Execute a File
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int execlp(
- const char *file,
- const char *arg,
- ...
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection execvp - Execute a File
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int execvp(
- const char *file,
- char *const argv[]
- ...
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection pthread_atfork - Register Fork Handlers
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-
-int pthread_atfork(
- void (*prepare)(void),
- void (*parent)(void),
- void (*child)(void)
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection wait - Wait for Process Termination
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-#include <sys/types.h>
-#include <sys/wait.h>
-
-int wait(
- int *stat_loc
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection waitpid - Wait for Process Termination
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int wait(
- pid_t pid,
- int *stat_loc,
- int options
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item ENOSYS
-This routine is not supported by RTEMS.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This routine is not supported by RTEMS.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection _exit - Terminate a Process
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-void _exit(
- int status
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-The @code{_exit()} function terminates the calling process.
-
-@subheading NOTES:
-
-In RTEMS, a process is equivalent to the entire application on a single
-processor. Invoking this service terminates the application.
diff --git a/doc/new_chapters/sched.t b/doc/new_chapters/sched.t
deleted file mode 100644
index be12a9c264..0000000000
--- a/doc/new_chapters/sched.t
+++ /dev/null
@@ -1,175 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Scheduler Manager
-
-@section Introduction
-
-The scheduler manager ...
-
-The directives provided by the scheduler manager are:
-
-@itemize @bullet
-@item @code{sched_get_priority_min} -
-@item @code{sched_get_priority_max} -
-@item @code{sched_rr_get_interval} -
-@item @code{sched_yield} -
-@end itemize
-
-@section Background
-
-@subsection Priority
-
-In the RTEMS implementation of the POSIX API, the priorities range from
-the low priority of sched_get_priority_min() to the highest priority of
-sched_get_priority_max(). Numerically higher values represent higher
-priorities.
-
-@subsection Scheduling Policies
-
-The following scheduling policies are available:
-
-@table @b
-@item SCHED_FIFO
-Priority-based, preemptive scheduling with no timeslicing. This is equivalent
-to what is called "manual round-robin" scheduling.
-
-@item SCHED_RR
-Priority-based, preemptive scheduling with timeslicing. Time quantums are
-maintained on a per-thread basis and are not reset at each context switch.
-Thus, a thread which is preempted and subsequently resumes execution will
-attempt to complete the unused portion of its time quantum.
-
-@item SCHED_OTHER
-Priority-based, preemptive scheduling with timeslicing. Time quantums are
-maintained on a per-thread basis and are reset at each context switch.
-
-@item SCHED_SPORADIC
-Priority-based, preemptive scheduling utilizing three additional parameters:
-budget, replenishment period, and low priority. Under this policy, the
-thread is allowed to execute for "budget" amount of time before its priority
-is lowered to "low priority". At the end of each replenishment period,
-the thread resumes its initial priority and has its budget replenished.
-
-@end table
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the scheduler manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection sched_get_priority_min
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sched.h>
-
-int sched_get_priority_min(
- int policy
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The indicated policy is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sched_get_priority_max
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sched.h>
-
-int sched_get_priority_max(
- int policy
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The indicated policy is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sched_rr_get_interval
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sched.h>
-
-int sched_rr_get_interval(
- pid_t pid,
- struct timespec *interval
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item ESRCH
-The indicated process id is invalid.
-
-@item EINVAL
-The specified interval pointer parameter is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sched_yield
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sched.h>
-
-int sched_yield( void );
-@end example
-
-@subheading STATUS CODES:
-
-This routine always returns zero to indicate success.
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/semaphores.t b/doc/new_chapters/semaphores.t
deleted file mode 100644
index e3fa6b2cd1..0000000000
--- a/doc/new_chapters/semaphores.t
+++ /dev/null
@@ -1,287 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Semaphores Manager
-
-@section Introduction
-
-The
-semaphore manager is ...
-
-The directives provided by the semaphore manager are:
-
-@itemize @bullet
-@item @code{sem_init} -
-@item @code{sem_destroy} -
-@item @code{sem_open} -
-@item @code{sem_close} -
-@item @code{sem_unlink} -
-@item @code{sem_wait} -
-@item @code{sem_trywait} -
-@item @code{sem_post} -
-@item @code{sem_getvalue} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the semaphore manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection sem_init -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_init(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sem_destroy -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_destroy(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sem_open -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_open(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sem_close -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_close(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sem_unlink -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_unlink(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sem_wait -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_wait(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sem_trywait -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_trywait(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sem_post -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_post(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection sem_getvalue -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int sem_getvalue(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/signal.t b/doc/new_chapters/signal.t
deleted file mode 100644
index 38e096c403..0000000000
--- a/doc/new_chapters/signal.t
+++ /dev/null
@@ -1,726 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Signal Manager
-
-@section Introduction
-
-The signal manager ...
-
-The directives provided by the signal manager are:
-
-@itemize @bullet
-@item @code{sigaddset} - Add a Signal to a Signal Set
-@item @code{sigdelset} - Delete a Signal from a Signal Set
-@item @code{sigfillset} - Fill a Signal Set
-@item @code{sigismember} - Is Signal a Member of a Signal Set
-@item @code{sigemptyset} - Empty a Signal Set
-@item @code{sigaction} - Examine and Change Signal Action
-@item @code{pthread_kill} - Send a Signal to a Thread
-@item @code{sigprocmask} - Examine and Change Process Blocked Signals
-@item @code{pthread_sigmask} - Examine and Change Thread Blocked Signals
-@item @code{kill} - Send a Signal to a Process
-@item @code{sigpending} - Examine Pending Signals
-@item @code{sigsuspend} - Wait for a Signal
-@item @code{pause} - Suspend Process Execution
-@item @code{sigwait} - Synchronously Accept a Signal
-@item @code{sigwaitinfo} - Synchronously Accept a Signal
-@item @code{sigtimedwait} - Synchronously Accept a Signal with Timeout
-@item @code{sigqueue} - Queue a Signal to a Process
-@item @code{alarm} - Schedule Alarm
-@end itemize
-
-@section Background
-
-@subsection Signal Delivery
-
-Signals directed at a thread are delivered to the specified thread.
-
-Signals directed at a process are delivered to a thread which is selected
-based on the following algorithm:
-
-@enumerate
-@item If the action for this signal is currently @code{SIG_IGN},
-then the signal is simply ignored.
-
-@item If the currently executing thread has the signal unblocked, then
-the signal is delivered to it.
-
-@item If any threads are currently blocked waiting for this signal
-(@code{sigwait()}), then the signal is delivered to the highest priority
-thread waiting for this signal.
-
-@item If any other threads are willing to accept delivery of the signal, then
-the signal is delivered to the highest priority thread of this set. In the
-event, multiple threads of the same priority are willing to accept this
-signal, then priority is given first to ready threads, then to threads
-blocked on calls which may be interrupted, and finally to threads blocked
-on non-interruptible calls.
-
-@item In the event the signal still can not be delivered, then it is left
-pending. The first thread to unblock the signal (@code{sigprocmask()} or
-@code{pthread_sigprocmask()}) or to wait for this signal
-(@code{sigwait()}) will be the recipient of the signal.
-
-@end enumerate
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the signal manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection sigaddset - Add a Signal to a Signal Set
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigaddset(
- sigset_t *set,
- int signo
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function adds the @code{signo} to the specified signal @code{set}.
-
-@subheading NOTES:
-
-@page
-@subsection sigdelset - Delete a Signal from a Signal Set
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigdelset(
- sigset_t *set,
- int signo
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function deletes the @code{signo} to the specified signal @code{set}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigfillset - Fill a Signal Set
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigfillset(
- sigset_t *set
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function fills the specified signal @code{set} such that all
-signals are set.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigismember - Is Signal a Member of a Signal Set
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigismember(
- const sigset_t *set,
- int signo
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function returns returns 1 if @code{signo} is a member of @code{set}
-and 0 otherwise.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigemptyset - Empty a Signal Set
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigemptyset(
- sigset_t *set
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function fills the specified signal @code{set} such that all
-signals are cleared.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigaction - Examine and Change Signal Action
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigaction(
- int sig,
- const struct sigaction *act,
- struct sigaction *oact
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@item ENOTSUP
-Realtime Signals Extension option not supported.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function is used to change the action taken by a process on
-receipt of the specfic signal @code{sig}. The new action is
-specified by @code{act} and the previous action is returned
-via @code{oact}.
-
-@subheading NOTES:
-
-The signal number cannot be SIGKILL.
-
-@page
-@subsection pthread_kill - Send a Signal to a Thread
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int pthread_kill(
- pthread_t thread,
- int sig
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item ESRCH
-The thread indicated by the parameter thread is invalid.
-
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This functions sends the specified signal @code{sig} to @code{thread}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigprocmask - Examine and Change Process Blocked Signals
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigprocmask(
- int how,
- const sigset_t *set,
- sigset_t *oset
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function is used to alter the set of currently blocked signals
-on a process wide basis. A blocked signal will not be received by the
-process. The behavior of this function is dependent on the value of
-@code{how} which may be one of the following:
-
-@table @code
-
-@item SIG_BLOCK
-The set of blocked signals is set to the union of @code{set} and
-those signals currently blocked.
-
-@item SIG_UNBLOCK
-The signals specific in @code{set} are removed from the currently
-blocked set.
-
-@item SIG_SETMASK
-The set of currently blocked signals is set to @code{set}.
-
-@end table
-
-If @code{oset} is not @code{NULL}, then the set of blocked signals
-prior to this call is returned in @code{oset}.
-
-@subheading NOTES:
-
-It is not an error to unblock a signal which is not blocked.
-
-@page
-@subsection pthread_sigmask - Examine and Change Thread Blocked Signals
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int pthread_sigmask(
- int how,
- const sigset_t *set,
- sigset_t *oset
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function is used to alter the set of currently blocked signals
-for the calling thread. A blocked signal will not be received by the
-process. The behavior of this function is dependent on the value of
-@code{how} which may be one of the following:
-
-@table @code
-@item SIG_BLOCK
-The set of blocked signals is set to the union of @code{set} and
-those signals currently blocked.
-
-@item SIG_UNBLOCK
-The signals specific in @code{set} are removed from the currently
-blocked set.
-
-@item SIG_SETMASK
-The set of currently blocked signals is set to @code{set}.
-
-@end table
-
-If @code{oset} is not @code{NULL}, then the set of blocked signals
-prior to this call is returned in @code{oset}.
-
-@subheading NOTES:
-
-It is not an error to unblock a signal which is not blocked.
-
-
-@page
-@subsection kill - Send a Signal to a Process
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sys/types.h>
-#include <signal.h>
-
-int kill(
- pid_t pid,
- int sig
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@item EPERM
-Process does not have permission to send the signal to any receiving process.
-
-@item ESRCH
-The process indicated by the parameter pid is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function sends the signal @code{sig} to the process @code{pid}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigpending - Examine Pending Signals
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigpending(
- const sigset_t *set
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets @code{errno} to one of
-the following:
-
-@table @b
-
-@item EFAULT
-Invalid address for set.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function allows the caller to examine the set of currently pending
-signals. A pending signal is one which has been raised but is currently
-blocked. The set of pending signals is returned in @code{set}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigsuspend - Wait for a Signal
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigsuspend(
- const sigset_t *sigmask
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets @code{errno} to one of
-the following:
-
-@table @b
-
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function temporarily replaces the signal mask for the process
-with that specified by @code{sigmask} and blocks the calling thread
-until the signal is raised.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection pause - Suspend Process Execution
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int pause( void );
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets @code{errno} to one of
-the following:
-
-@table @b
-
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function causes the calling thread to be blocked until the signal
-is received.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigwait - Synchronously Accept a Signal
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigwait(
- const sigset_t *set,
- int *sig
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function selects a pending signal based on the set specified in
-@code{set}, atomically clears it from the set of pending signals, and
-returns the signal number for that signal in @code{sig}.
-
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigwaitinfo - Synchronously Accept a Signal
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigwaitinfo(
- const sigset_t *set,
- siginfo_t *info
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function selects a pending signal based on the set specified in
-@code{set}, atomically clears it from the set of pending signals, and
-returns information about that signal in @code{info}.
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection sigtimedwait - Synchronously Accept a Signal with Timeout
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigtimedwait(
- const sigset_t *set,
- siginfo_t *info,
- const struct timespec *timeout
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EAGAIN
-Timed out while waiting for the specified signal set.
-
-@item EINVAL
-Nanoseconds field of the timeout argument is invalid.
-
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function selects a pending signal based on the set specified in
-@code{set}, atomically clears it from the set of pending signals, and
-returns information about that signal in @code{info}. The calling thread
-will block up to @code{timeout} waiting for the signal to arrive.
-
-@subheading NOTES:
-
-If @code{timeout} is NULL, then the calling thread will wait forever for
-the specified signal set.
-
-@page
-@subsection sigqueue - Queue a Signal to a Process
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigqueue(
- pid_t pid,
- int signo,
- const union sigval value
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EAGAIN
-No resources available to queue the signal. The process has already
-queued SIGQUEUE_MAX signals that are still pending at the receiver
-or the systemwide resource limit has been exceeded.
-
-@item EINVAL
-The value of the signo argument is an invalid or unsupported signal
-number.
-
-@item EPERM
-The process does not have the appropriate privilege to send the signal
-to the receiving process.
-
-@item ESRCH
-The process pid does not exist.
-
-@end table
-
-@subheading DESCRIPTION:
-
-This function sends the signal specified by @code{signo} to the
-process @code{pid}
-
-@subheading NOTES:
-
-NONE
-
-@page
-@subsection alarm - Schedule Alarm
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-unsigned int alarm(
- unsigned int seconds
-);
-@end example
-
-@subheading STATUS CODES:
-
-This call always succeeds.
-
-@subheading DESCRIPTION:
-
-If there was a previous @code{alarm()} request with time remaining,
-then this routine returns the number of seconds until that outstanding
-alarm would have fired. If no previous @code{alarm()} request was
-outstanding, then zero is returned.
-
-@subheading NOTES:
-
-NONE
diff --git a/doc/new_chapters/systemdb.t b/doc/new_chapters/systemdb.t
deleted file mode 100644
index af3a54a09c..0000000000
--- a/doc/new_chapters/systemdb.t
+++ /dev/null
@@ -1,259 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter System Databases Manager
-
-@section Introduction
-
-The
-system databases manager is ...
-
-The directives provided by the system databases manager are:
-
-@itemize @bullet
-@item @code{getgrgid} -
-@item @code{getgrgid_r} -
-@item @code{getgrnam} -
-@item @code{getgrnam_r} -
-@item @code{getpwuid} -
-@item @code{getpwuid_r} -
-@item @code{getpwnam} -
-@item @code{getpwnam_r} -
-@end itemize
-
-@section Background
-
-There is currently no text in this section.
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the system databases manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection getgrgid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getgrgid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getgrgid_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getgrgid_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getgrnam -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getgrnam(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getgrnam_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getgrnam_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getpwuid -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getpwuid(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getpwuid_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getpwuid_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getpwnam -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getpwnam(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection getpwnam_r -
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-int getpwnam_r(
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@table @b
-@item E
-The
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/new_chapters/thread.t b/doc/new_chapters/thread.t
deleted file mode 100644
index 6ef29eb1bf..0000000000
--- a/doc/new_chapters/thread.t
+++ /dev/null
@@ -1,892 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Thread Manager
-
-@section Introduction
-
-The thread manager ...
-
-The directives provided by the thread manager are:
-
-@itemize @bullet
-@item @code{pthread_attr_init} -
-@item @code{pthread_attr_destroy} -
-@item @code{pthread_attr_setdetachstate} -
-@item @code{pthread_attr_getdetachstate} -
-@item @code{pthread_attr_setstacksize} -
-@item @code{pthread_attr_getstacksize} -
-@item @code{pthread_attr_setstackaddr} -
-@item @code{pthread_attr_getstackaddr} -
-@item @code{pthread_attr_setscope} -
-@item @code{pthread_attr_getscope} -
-@item @code{pthread_attr_setinheritsched} -
-@item @code{pthread_attr_getinheritsched} -
-@item @code{pthread_attr_setschedpolicy} -
-@item @code{pthread_attr_getschedpolicy} -
-@item @code{pthread_attr_setschedparam} -
-@item @code{pthread_attr_getschedparam} -
-@item @code{pthread_create} -
-@item @code{pthread_exit} -
-@item @code{pthread_detach} -
-@item @code{pthread_join} -
-@item @code{pthread_self} -
-@item @code{pthread_equal} -
-@item @code{pthread_once} -
-@item @code{pthread_setschedparam} -
-@item @code{pthread_getschedparam} -
-@end itemize
-
-@section Background
-
-@subsection Thread Attributes
-
-Thread attributes are utilized only at thread creation time.
-
-@table @b
-@item stack address
-is the address of the optionally user specified stack area for this thread.
-If this value is NULL, then RTEMS allocates the memory for the thread stack
-from the RTEMS Workspace Area. Otherwise, this is the user specified
-address for the memory to be used for the thread's stack. Each thread must
-have a distinct stack area. Each processor family has different alignment
-rules which should be followed.
-
-@item stack size
-is the minimum desired size for this thread's stack area.
-If the size of this area as specified by the stack size attribute
-is smaller than the minimum for this processor family and the stack
-is not user specified, then RTEMS will automatically allocate a
-stack of the minimum size for this processor family.
-
-@item contention scope
-specifies the scheduling contention scope. RTEMS only supports the
-PTHREAD_SCOPE_PROCESS scheduling contention scope.
-
-@item scheduling inheritance
-specifies whether a user specified or the scheduling policy and
-parameters of the currently executing thread are to be used. When
-this is PTHREAD_INHERIT_SCHED, then the scheduling policy and
-parameters of the currently executing thread are inherited by
-the newly created thread.
-
-@item scheduling policy and parameters
-specify the manner in which the thread will contend for the processor.
-The scheduling parameters are interpreted based on the specified policy.
-All policies utilize the thread priority parameter.
-
-@end table
-
-@section Operations
-
-There is currently no text in this section.
-
-@section Directives
-
-This section details the thread manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection pthread_attr_init
-
-@subheading CALLING SEQUENCE:
-
-
-@example
-#include <pthread.h>
-
-int pthread_attr_init(
- pthread_attr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_destroy(
- pthread_attr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_setdetachstate
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setdetachstate(
- pthread_attr_t *attr,
- int detachstate
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The detachstate argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_getdetachstate
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getdetachstate(
- const pthread_attr_t *attr,
- int *detachstate
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The detatchstate pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_setstacksize
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setstacksize(
- pthread_attr_t *attr,
- size_t stacksize
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If the specified stacksize is below the minimum required for this CPU, then
-the stacksize will be set to the minimum for this CPU.
-
-@page
-@subsection pthread_attr_getstacksize
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getstacksize(
- const pthread_attr_t *attr,
- size_t *stacksize
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The stacksize pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_setstackaddr
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setstackaddr(
- pthread_attr_t *attr,
- void *stackaddr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_getstackaddr
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getstackaddr(
- const pthread_attr_t *attr,
- void **stackaddr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The stackaddr pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_setscope
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setscope(
- pthread_attr_t *attr,
- int contentionscope
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The contention scope specified is not valid.
-
-@item ENOTSUP
-The contention scope specified (PTHREAD_SCOPE_SYSTEM) is not supported.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_getscope
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getscope(
- const pthread_attr_t *attr,
- int *contentionscope
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The contentionscope pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_setinheritsched
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setinheritsched(
- pthread_attr_t *attr,
- int inheritsched
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified scheduler inheritance argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_getinheritsched
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getinheritsched(
- const pthread_attr_t *attr,
- int *inheritsched
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The inheritsched pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_setschedpolicy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setschedpolicy(
- pthread_attr_t *attr,
- int policy
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item ENOTSUP
-The specified scheduler policy argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_getschedpolicy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getschedpolicy(
- const pthread_attr_t *attr,
- int *policy
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified scheduler policy argument pointer is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_setschedparam
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setschedparam(
- pthread_attr_t *attr,
- const struct sched_param param
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified scheduler parameter argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_attr_getschedparam
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getschedparam(
- const pthread_attr_t *attr,
- struct sched_param *param
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified scheduler parameter argument pointer is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_create
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_create(
- pthread_t *thread,
- const pthread_attr_t *attr,
- void (*start_routine)( void * ),
- void *arg
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The user specified a stack address and the size of the area was not
-large enough to meet this processor's minimum stack requirements.
-
-@item EINVAL
-The specified scheduler inheritance policy was invalid.
-
-@item ENOTSUP
-The specified contention scope was PTHREAD_SCOPE_PROCESS.
-
-@item EINVAL
-The specified thread priority was invalid.
-
-@item EINVAL
-The specified scheduling policy was invalid.
-
-@item EINVAL
-The scheduling policy was SCHED_SPORADIC and the specified replenishment
-period is less than the initial budget.
-
-@item EINVAL
-The scheduling policy was SCHED_SPORADIC and the specified low priority
-is invalid.
-
-@item EAGAIN
-The system lacked the necessary resources to create another thread, or the
-self imposed limit on the total number of threads in a process
-PTHREAD_THREAD_MAX would be exceeded.
-
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_exit
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-void pthread_exit(
- void *status
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item NONE
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_detach
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_detach(
- pthread_t thread
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item ESRCH
-The thread specified is invalid.
-
-@item EINVAL
-The thread specified is not a joinable thread.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If any threads have previously joined with the specified thread, then they
-will remain joined with that thread. Any subsequent calls to pthread_join
-on the specified thread will fail.
-
-@page
-@subsection pthread_join
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_join(
- pthread_t thread,
- void **value_ptr
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item ESRCH
-The thread specified is invalid.
-
-@item EINVAL
-The thread specified is not a joinable thread.
-
-@item EDEADLK
-A deadlock was detected or thread is the calling thread.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If any threads have previously joined with the specified thread, then they
-will remain joined with that thread. Any subsequent calls to pthread_join
-on the specified thread will fail.
-
-If value_ptr is NULL, then no value is returned.
-
-@page
-@subsection pthread_self
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-pthread_t pthread_self( void );
-@end example
-
-@subheading STATUS CODES:
-
-This routine returns the id of the calling thread.
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_equal
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_equal(
- pthread_t t1,
- pthread_t t2
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item zero
-The thread ids are not equal.
-
-@item non-zero
-The thread ids are equal.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-The behavior is undefined if the thread IDs are not valid.
-
-@page
-@subsection pthread_once
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-pthread_once_t once_control = PTHREAD_ONCE_INIT;
-
-int pthread_once(
- pthread_once_t *once_control,
- void (*init_routine)(void)
-);
-@end example
-
-@subheading STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_setschedparam
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_setschedparam(
- pthread_t thread,
- int policy,
- struct sched_param *param
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The scheduling parameters indicated by the parameter param is invalid.
-
-@item EINVAL
-The value specified by policy is invalid.
-
-@item EINVAL
-The scheduling policy was SCHED_SPORADIC and the specified replenishment
-period is less than the initial budget.
-
-@item EINVAL
-The scheduling policy was SCHED_SPORADIC and the specified low priority
-is invalid.
-
-@item ESRCH
-The thread indicated was invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@subsection pthread_getschedparam
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_getschedparam(
- pthread_t thread,
- int *policy,
- struct sched_param *param
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The policy pointer argument is invalid.
-
-@item EINVAL
-The scheduling parameters pointer argument is invalid.
-
-@item ESRCH
-The thread indicated by the parameter thread is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/oaronly.jpg b/doc/oaronly.jpg
deleted file mode 100644
index c87c151404..0000000000
--- a/doc/oaronly.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/posix1003.1/Makefile b/doc/posix1003.1/Makefile
deleted file mode 100644
index 3337910981..0000000000
--- a/doc/posix1003.1/Makefile
+++ /dev/null
@@ -1,160 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=posix1003_1
-DISTRIBUTION_LEVEL=partners
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi ../common/setup.texi
-
-GENERATED_FILES=ch01.texi ch02.texi ch03.texi ch04.texi ch05.texi \
- ch06.texi ch07.texi ch08.texi ch09.texi ch10.texi \
- ch11.texi ch12.texi ch13.texi ch14.texi ch15.texi \
- ch16.texi ch17.texi ch18.texi ch19.t ch19.texi
-
-FILES= $(PROJECT).texi \
- preface.texi $(GENERATED_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs $(PROJECT)
- #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL)
- cp $(PROJECT) $(INFO_INSTALL)
-
-$(PROJECT): $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-# run texi2dvi twice to generate the xref's properly.
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) -v $(PROJECT).texi
- texi2dvi $(PROJECT).texi
-
-ch01.texi: ch01.t
- $(BMENU) -c -p "Preface" \
- -u "Top" \
- -n "Terminology and General Requirements" ${*}.t
-
-ch02.texi: ch02.t
- $(BMENU) -c -p "Conformance" \
- -u "Top" \
- -n "Process Primitives" ${*}.t
-
-ch03.texi: ch03.t
- $(BMENU) -c -p "Execution-Time Symbolic Constants for Portability Specifications" \
- -u "Top" \
- -n "Process Environment" ${*}.t
-
-ch04.texi: ch04.t
- $(BMENU) -c -p "Delay Process Execution" \
- -u "Top" \
- -n "Files and Directories" ${*}.t
-
-ch05.texi: ch05.t
- $(BMENU) -c -p "Get Configurable System Variables" \
- -u "Top" \
- -n "Input and Output Primitives" ${*}.t
-
-ch06.texi: ch06.t
- $(BMENU) -c -p "Get Configurable Pathname Variables" \
- -u "Top" \
- -n "Device- and Class-Specific Functions" ${*}.t
-
-ch07.texi: ch07.t
- $(BMENU) -c -p " Asynchronous File Synchronization" \
- -u "Top" \
- -n "Language-Specific Services for the C Programming Language" ${*}.t
-
-ch08.texi: ch08.t
- $(BMENU) -c -p "Set Foreground Process Group ID" \
- -u "Top" \
- -n "System Databases" ${*}.t
-
-ch09.texi: ch09.t
- $(BMENU) -c -p "Pseudo-Random Sequence Generation Functions" \
- -u "Top" \
- -n "Data Interchange Format" ${*}.t
-
-ch10.texi: ch10.t
- $(BMENU) -c -p "User Database Access" \
- -u "Top" \
- -n "Synchronization" ${*}.t
-
-ch11.texi: ch11.t
- $(BMENU) -c -p "Multiple Volumes" \
- -u "Top" \
- -n "Memory Management" ${*}.t
-
-ch12.texi: ch12.t
- $(BMENU) -c -p "Waiting on a Condition" \
- -u "Top" \
- -n "Execution Scheduling" ${*}.t
-
-ch13.texi: ch13.t
- $(BMENU) -c -p "Remove a Shared Memory Object" \
- -u "Top" \
- -n "Clocks and Timers" ${*}.t
-
-ch14.texi: ch14.t
- $(BMENU) -c -p "Change the Priority Ceiling of a Mutex" \
- -u "Top" \
- -n "Message Passing" ${*}.t
-
-ch15.texi: ch15.t
- $(BMENU) -c -p "High Resolution Sleep" \
- -u "Top" \
- -n "Thread Management" ${*}.t
-
-ch16.texi: ch16.t
- $(BMENU) -c -p "Get Message Queue Attributes" \
- -u "Top" \
- -n "Thread-Specific Data" ${*}.t
-
-ch17.texi: ch17.t
- $(BMENU) -c -p "Dynamic Package Initialization" \
- -u "Top" \
- -n "Thread Cancellation" ${*}.t
-
-ch18.texi: ch18.t
- $(BMENU) -c -p "Thread-Specific Data Key Deletion" \
- -u "Top" \
- -n "Compliance Summary" ${*}.t
-
-ch19.t: ch01.t ch02.t ch03.t ch04.t ch05.t ch06.t ch07.t ch08.t ch09.t \
- ch10.t ch11.t ch12.t ch13.t ch14.t ch15.t ch16.t ch17.t ch18.t \
- summarize
- ./summarize >ch19.t
-
-ch19.texi: ch19.t
- $(BMENU) -c -p "List of Cancellation Points" \
- -u "Top" \
- -n "Command and Variable Index" ${*}.t
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES)
- rm -f *.fixed _*
-
diff --git a/doc/posix1003.1/ch01.t b/doc/posix1003.1/ch01.t
deleted file mode 100644
index c65a3e64f1..0000000000
--- a/doc/posix1003.1/ch01.t
+++ /dev/null
@@ -1,40 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter General
-
-@section Scope
-
-@section Normative References
-
-@section Conformance
-
-@example
-NGROUPS_MAX, Feature Flag,
-_POSIX_ASYNCHRONOUS_IO, Feature Flag,
-_POSIX_CHOWN_RESTRICTED, Feature Flag,
-_POSIX_FSYNC, Feature Flag,
-_POSIX_JOB_CONTROL, Feature Flag,
-_POSIX_MAPPED_FILES, Feature Flag,
-_POSIX_MEMLOCK, Feature Flag,
-_POSIX_MEMLOCK_RANGE, Feature Flag,
-_POSIX_MEMORY_PROTECTION, Feature Flag,
-_POSIX_MESSAGE_PASSING, Feature Flag,
-_POSIX_PRIORITIZED_IO, Feature Flag,
-_POSIX_PRIORITY_SCHEDULING, Feature Flag,
-_POSIX_REALTIME_SIGNALS, Feature Flag,
-_POSIX_SEMAPHORES, Feature Flag,
-_POSIX_SHARED_MEMORY_OBJECTS, Feature Flag,
-_POSIX_SYNCHRONIZED_IO, Feature Flag,
-_POSIX_TIMERS, Feature Flag,
-_POSIX_THREAD_PRIO_INHERIT, Feature Flag,
-_POSIX_THREAD_PRIORITY_SCHEDULING, Feature Flag,
-_POSIX_THREADS, Feature Flag,
-_POSIX_THREAD_SAFE_FUNCTIONS, Feature Flag,
-@end example
-
diff --git a/doc/posix1003.1/ch02.t b/doc/posix1003.1/ch02.t
deleted file mode 100644
index d2b2765c22..0000000000
--- a/doc/posix1003.1/ch02.t
+++ /dev/null
@@ -1,279 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Terminology and General Requirements
-
-@section Conventions
-
-@section Definitions
-
-@section General Concepts
-
-@section Error Numbers
-
-@example
-E2BIG, Constant, Implemented
-EACCES, Constant, Implemented
-EAGAIN, Constant, Implemented
-EBADF, Constant, Implemented
-EBADMSG, Constant, Implemented
-EBUSY, Constant, Implemented
-ECANCELED, Constant, Unimplemented
-ECHILD, Constant, Implemented
-EDEADLK, Constant, Implemented
-EDOM, Constant, Implemented
-EEXIST, Constant, Implemented
-EFAULT, Constant, Implemented
-EFBIG, Constant, Implemented
-EINPROGRESS, Constant, Implemented
-EINTR, Constant, Implemented
-EINVAL, Constant, Implemented
-EIO, Constant, Implemented
-EISDIR, Constant, Implemented
-EMFILE, Constant, Implemented
-EMLINK, Constant, Implemented
-EMSGSIZE, Constant, Implemented
-ENAMETOOLONG, Constant, Implemented
-ENFILE, Constant, Implemented
-ENODEV, Constant, Implemented
-ENOENT, Constant, Implemented
-ENOEXEC, Constant, Implemented
-ENOLCK, Constant, Implemented
-ENOMEM, Constant, Implemented
-ENOSPC, Constant, Implemented
-ENOSYS, Constant, Implemented
-ENOTDIR, Constant, Implemented
-ENOTEMPTY, Constant, Implemented
-ENOTSUP, Constant, Implemented
-ENOTTY, Constant, Implemented
-ENXIO, Constant, Implemented
-EPERM, Constant, Implemented
-EPIPE, Constant, Implemented
-ERANGE, Constant, Implemented
-EROFS, Constant, Implemented
-ESPIPE, Constant, Implemented
-ESRCH, Constant, Implemented
-ETIMEDOUT, Constant, Implemented
-EXDEV, Constant, Implemented
-@end example
-
-@section Primitive System Types
-
-@example
-dev_t, Type, Implemented
-gid_t, Type, Implemented
-ino_t, Type, Implemented
-mode_t, Type, Implemented
-nlink_t, Type, Implemented
-off_t, Type, Implemented
-pid_t, Type, Implemented
-pthread_t, Type, Implemented
-pthread_attr_t, Type, Implemented
-pthread_mutex_t, Type, Implemented
-pthread_mutex_attr_t, Type, Implemented
-pthread_cond_t, Type, Implemented
-pthread_cond_attr_t, Type, Implemented
-pthread_key_t, Type, Implemented
-pthread_once_t, Type, Implemented
-size_t, Type, Implemented
-ssize_t, Type, Implemented
-time_t, Type, Implemented
-uid_t, Type, Implemented
-@end example
-
-NOTE: time_t is not listed in this section but is used by many functions.
-
-@section Environment Description
-
-@section C Language Definitions
-
-@subsection Symbols From the C Standard
-
-@example
-NULL, Constant, Implemented
-@end example
-
-@subsection POSIX.1 Symbols
-
-@example
-_POSIX_C_SOURCE, Feature Flag,
-@end example
-
-@section Numerical Limits
-
-@section C Language Limits
-
-@example
-CHAR_BIT, Constant, Implemented
-CHAR_MAX, Constant, Implemented
-CHAR_MIN, Constant, Implemented
-INT_MAX, Constant, Implemented
-INT_MIN, Constant, Implemented
-LONG_MAX, Constant, Implemented
-LONG_MIN, Constant, Implemented
-MB_LEN_MAX, Constant, Implemented
-SCHAR_MAX, Constant, Implemented
-SCHAR_MIN, Constant, Implemented
-SHRT_MAX, Constant, Implemented
-SHRT_MIN, Constant, Implemented
-UCHAR_MAX, Constant, Implemented
-UINT_MAX, Constant, Implemented
-ULONG_MAX, Constant, Implemented
-USHRT_MAX, Constant, Implemented
-@end example
-
-NOTE: These are implemented in GCC's limits.h file.
-
-@subsection Minimum Values
-
-@example
-_POSIX_AIO_LISTIO_MAX, Constant, Implemented
-_POSIX_AIO_MAX, Constant, Implemented
-_POSIX_ARG_MAX, Constant, Implemented
-_POSIX_CHILD_MAX, Constant, Implemented
-_POSIX_DELAYTIMER_MAX, Constant, Implemented
-_POSIX_LINK_MAX, Constant, Implemented
-_POSIX_LOGIN_NAME_MAX, Constant, Implemented
-_POSIX_MAX_CANON, Constant, Implemented
-_POSIX_MAX_INPUT, Constant, Implemented
-_POSIX_MQ_OPEN_MAX, Constant, Implemented
-_POSIX_MQ_PRIO_MAX, Constant, Implemented
-_POSIX_NAME_MAX, Constant, Implemented
-_POSIX_NGROUPS_MAX, Constant, Implemented
-_POSIX_OPEN_MAX, Constant, Implemented
-_POSIX_PATH_MAX, Constant, Implemented
-_POSIX_PIPE_BUF, Constant, Implemented
-_POSIX_RTSIG_MAX, Constant, Implemented
-_POSIX_SEM_NSEMS_MAX, Constant, Implemented
-_POSIX_SEM_VALUE_MAX, Constant, Implemented
-_POSIX_SIGQUEUE_MAX, Constant, Implemented
-_POSIX_SSIZE_MAX, Constant, Implemented
-_POSIX_STREAM_MAX, Constant, Implemented
-_POSIX_THREAD_DESTRUCTOR_ITERATIONS, Constant, Implemented
-_POSIX_THREAD_KEYS_MAX, Constant, Implemented
-_POSIX_THREAD_THREADS_MAX, Constant, Implemented
-_POSIX_TTY_NAME_MAX, Constant, Implemented
-_POSIX_TIME_MAX, Constant, Unimplemented
-_POSIX_TZNAME_MAX, Constant, Implemented
-@end example
-
-@subsection Run-Time Increasable Values
-
-@example
-_POSIX_NGROUPS_MAX, Constant, Implemented
-@end example
-
-@subsection Run-Time Invariant Values (Possible Indeterminate)
-
-@example
-AIO_LISTIO_MAX, Constant, Implemented
-AIO_MAX, Constant, Implemented
-AIO_PRIO_DELTA_MAX, Constant, Implemented
-ARG_MAX, Constant, Implemented
-CHILD_MAX, Constant, Implemented
-DELAYTIMER_MAX, Constant, Implemented
-LOGIN_NAME_MAX, Constant, Implemented
-MQ_OPEN_MAX, Constant, Implemented
-OPEN_MAX, Constant, Implemented
-PAGESIZE, Constant, Implemented
-PTHREAD_DESTRUCTOR_ITERATIONS, Constant, Implemented
-PTHREAD_KEYS_MAX, Constant, Implemented
-PTHREAD_STACK_MIN, Constant, Implemented
-PTHJREAD_THREADS_MAX, Constant, Implemented
-RTSIG_MAX, Constant, Implemented
-SEM_NSEMS_MAX, Constant, Implemented
-SEM_VALUE_MAX, Constant, Implemented
-SIGQUEUE_MAX, Constant, Implemented
-STREAM_MAX, Constant, Implemented
-TIMER_MAX, Constant, Implemented
-TTY_NAME_MAX, Constant, Implemented
-TZNAME_MAX, Constant, Implemented
-@end example
-
-@subsection Pathname Variable Values
-
-@example
-LINK_MAX, Constant, Implemented
-MAX_CANON, Constant, Implemented
-MAX_INPUT, Constant, Implemented
-NAME_MAX, Constant, Implemented
-PATH_MAX, Constant, Implemented
-PIPE_BUF, Constant, Implemented
-@end example
-
-@subsection Invariant Values
-
-@example
-SSIZE_MAX, Constant, Implemented
-@end example
-
-@subsection Maximum Values
-
-@example
-_POSIX_CLOCKRES_MIN, Constant, Implemented
-@end example
-
-@section Symbolic Constants
-
-@subsection Symbolic Constants for the access Function
-
-@example
-R_OK, Constant, Implemented
-W_OK, Constant, Implemented
-X_OK, Constant, Implemented
-F_OK, Constant, Implemented
-@end example
-
-@subsection Symbolic Constants for the lseek Function
-
-@example
-SEEK_SET, Constant, Implemented
-SEEK_CUR, Constant, Implemented
-SEEK_END, Constant, Implemented
-@end example
-
-@subsection Compile-Time Symbolic Constants for Portability Specifications
-
-@example
-_POSIX_ASYNCHRONOUS_IO, Feature Flag,
-_POSIX_FSYNC, Feature Flag,
-_POSIX_JOB_CONTROL, Feature Flag,
-_POSIX_MAPPED_FILES, Feature Flag,
-_POSIX_MEMLOCK, Feature Flag,
-_POSIX_MEMLOCK_RANGE, Feature Flag,
-_POSIX_MEMORY_PROTECTION, Feature Flag,
-_POSIX_MESSAGE_PASSING, Feature Flag,
-_POSIX_PRIORITIZED_IO, Feature Flag,
-_POSIX_PRIORITY_SCHEDULING, Feature Flag,
-_POSIX_REALTIME_SIGNALS, Feature Flag,
-_POSIX_SAVED_IDS, Feature Flag,
-_POSIX_SEMAPHORES, Feature Flag,
-_POSIX_SHARED_MEMORY_OBJECTS, Feature Flag,
-_POSIX_SYNCHRONIZED_IO, Feature Flag,
-_POSIX_THREADS, Feature Flag,
-_POSIX_THREAD_ATTR_STACKADDR, Feature Flag,
-_POSIX_THREAD_ATTR_STACKSIZE, Feature Flag,
-_POSIX_THREAD_PRIORITY_SCHEDULING, Feature Flag,
-_POSIX_THREAD_PRIO_INHERIT, Feature Flag,
-_POSIX_THREAD_PRIO_CEILING, Feature Flag,
-_POSIX_THREAD_PROCESS_SHARED, Feature Flag,
-_POSIX_THREAD_SAFE_FUNCTIONS, Feature Flag,
-_POSIX_TIMERS, Feature Flag,
-_POSIX_VERSION, Feature Flag,
-@end example
-
-@subsection Execution-Time Symbolic Constants for Portability Specifications
-
-@example
-_POSIX_ASYNC_IO, Feature Flag,
-_POSIX_CHOWN_RESTRICTED, Feature Flag,
-_POSIX_NO_TRUNC, Feature Flag,
-_POSIX_PRIO_IO, Feature Flag,
-_POSIX_SYNC_IO, Feature Flag,
-_POSIX_VDISABLE, Feature Flag,
-@end example
diff --git a/doc/posix1003.1/ch03.t b/doc/posix1003.1/ch03.t
deleted file mode 100644
index fc82426dcf..0000000000
--- a/doc/posix1003.1/ch03.t
+++ /dev/null
@@ -1,203 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Process Primitives
-
-@section Process Creation and Execution
-
-@subsection Process Creation
-
-@example
-fork(), Function, Unimplementable
-@end example
-
-
-@subsection Execute a File
-
-@example
-execl(), Function, Unimplementable, Requires Processes
-execv(), Function, Unimplementable, Requires Processes
-execle(), Function, Unimplementable, Requires Processes
-execve(), Function, Unimplementable, Requires Processes
-execlp(), Function, Unimplementable, Requires Processes
-execvp(), Function, Unimplementable, Requires Processes
-@end example
-
-@subsection Register Fork Handlers
-
-@example
-pthread_atfork(), Function, Unimplementable, Requires Processes
-@end example
-
-@section Process Termination
-
-@subsection Wait for Process Termination
-
-@example
-wait(), Function, Unimplementable, Requires Processes
-waitpid(), Function, Unimplementable, Requires Processes
-WNOHANG, Constant, Unimplementable, Requires Processes
-WUNTRACED, Constant, Unimplementable, Requires Processes
-WIFEXITED(), Function, Unimplementable, Requires Processes
-WEXITSTATUS(), Function, Unimplementable, Requires Processes
-WIFSIGNALED(), Function, Unimplementable, Requires Processes
-WTERMSIG(), Function, Unimplementable, Requires Processes
-WIFSTOPPED(), Function, Unimplementable, Requires Processes
-WSTOPSIG(), Function, Unimplementable, Requires Processes
-@end example
-
-@subsection Terminate a Process
-
-@example
-_exit(), Function, Unimplemented
-@end example
-
-@section Signals
-
-@subsection Signal Concepts
-
-@subsubsection Signal Names
-
-@example
-sigset_t, Type, Implemented
-SIG_DFL, Constant, Implemented
-SIG_IGN, Constant, Implemented
-SIG_ERR, Constant, Implemented
-SIGABRT, Constant, Implemented
-SIGALRM, Constant, Implemented
-SIGFPE, Constant, Implemented
-SIGHUP, Constant, Implemented
-SIGILL, Constant, Implemented
-SIGINT, Constant, Implemented
-SIGKILL, Constant, Implemented
-SIGPIPE, Constant, Implemented
-SIGQUIT, Constant, Implemented
-SIGSEGV, Constant, Implemented
-SIGTERM, Constant, Implemented
-SIGUSR1, Constant, Implemented
-SIGUSR2, Constant, Implemented
-SIGCHLD, Constant, Unimplemented
-SIGCONT, Constant, Unimplemented
-SIGSTOP, Constant, Unimplemented
-SIGTSTP, Constant, Unimplemented
-SIGTTIN, Constant, Unimplemented
-SIGTTOU, Constant, Unimplemented
-SIGBUS, Constant, Implemented
-SIGRTMIN, Constant, Implemented
-SIGRTMAX, Constant, Implemented
-@end example
-
-NOTE: SIG_ERR is technically an extension to the C Library which is
-not documented anywhere else according to the index.
-@subsubsection Signal Generation and Delivery
-
-@example
-struct sigevent, Type, Implemented
-union sigval, Type, Implemented
-SIGEV_NONE, Constant, Implemented
-SIGEV_SIGNAL, Constant, Implemented
-SIGEV_THREAD, Constant, Implemented
-@end example
-
-@subsubsection Signal Actions
-
-@example
-siginfo_t, Type, Implemented
-SI_USER, Constant, Implemented
-SI_QUEUE, Constant, Implemented
-SI_TIMER, Constant, Implemented
-SI_ASYNCIO, Constant, Implemented
-SI_MESGQ, Constant, Implemented
-@end example
-
-@subsection Send a Signal to a Process
-
-@example
-kill(), Function, Implemented
-@end example
-
-@subsection Manipulate Signal Sets
-
-@example
-sigemptyset(), Function, Implemented
-sigfillset(), Function, Implemented
-sigaddset(), Function, Implemented
-sigdelset(), Function, Implemented
-sigismember(), Function, Implemented
-@end example
-
-@subsection Examine and Change Signal Action
-
-@example
-sigaction(), Function, Implemented
-sigaction, Type, Implemented
-SA_NOCLDSTOP, Constant, Implemented
-SA_SIGINFO, Constant, Implemented
-@end example
-
-@subsection Examine and Change Blocked Signals
-
-@example
-pthread_sigmask(), Function, Implemented
-sigprocmask(), Function, Implemented
-SIG_BLOCK, Constant, Implemented
-SIG_UNBLOCK, Constant, Implemented
-SIG_SETMASK, Constant, Implemented
-@end example
-
-@subsection Examine Pending Signals
-
-@example
-sigpending(), Function, Implemented
-@end example
-
-@subsection Wait for a Signal
-
-@example
-sigsuspend(), Function, Implemented
-@end example
-
-@subsection Synchronously Accept a Signal
-
-@example
-sigwait(), Function, Implemented
-sigwaitinfo(), Function, Implemented
-sigtimedwait(), Function, Implemented
-@end example
-
-@subsection Queue a Signal to a Process
-
-@example
-sigqueue(), Function, Implemented
-@end example
-
-@subsection Send a Signal to a Thread
-
-@example
-pthread_kill(), Function, Implemented
-@end example
-
-@section Timer Operations
-
-@subsection Schedule Alarm
-
-@example
-alarm(), Function, Implemented
-@end example
-
-@subsection Suspend Process Execution
-
-@example
-pause(), Function, Implemented
-@end example
-
-@subsection Delay Process Execution
-
-@example
-sleep(), Function, Implemented
-@end example
diff --git a/doc/posix1003.1/ch04.t b/doc/posix1003.1/ch04.t
deleted file mode 100644
index bc635551b3..0000000000
--- a/doc/posix1003.1/ch04.t
+++ /dev/null
@@ -1,181 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Process Environment
-
-@section Process Identification
-
-@subsection Get Process and Parent Process IDs
-
-@example
-getpid(), Function, Dummy Implementation
-getppid(), Function, Dummy Implementation
-@end example
-
-@section User Identification
-
-@subsection Get Real User Effective User Real Group and Effective Group IDs
-
-@example
-getuid(), Function, Dummy Implementation
-geteuid(), Function, Dummy Implementation
-getgid(), Function, Dummy Implementation
-getegid(), Function, Dummy Implementation
-@end example
-
-@subsection Set User and Group IDs
-
-@example
-setuid(), Function, Dummy Implementation
-setgid(), Function, Dummy Implementation
-@end example
-
-@subsection Get Supplementary Group IDs
-
-@example
-getgroups(), Function, Dummy Implementation
-@end example
-
-@subsection Get User Name
-
-@example
-getlogin(), Function, Dummy Implementation
-getlogin_r(), Function, Dummy Implementation
-@end example
-
-@section Process Groups
-
-@subsection Get Process Group ID
-
-@example
-getpgrp(), Function, Dummy Implementation
-@end example
-
-@subsection Create Session and Set Process Group ID
-
-@example
-setsid(), Function, Dummy Implementation
-@end example
-
-@subsection Set Process Group ID for Job Control
-
-@example
-setpgid(), Function, Dummy Implementation
-@end example
-
-@section System Identification
-
-@subsection Get System Name
-
-@example
-struct utsname, Type, Untested Implementation
-uname(), Function, Untested Implementation
-@end example
-
-@section Time
-
-@subsection Get System Time
-
-@example
-time(), Function, Implemented
-@end example
-
-@subsection Get Process Times
-
-@example
-struct tms, Type, Implemented
-times(), Function, Implemented
-@end example
-
-NOTE: @code{times} always returns 0 for tms_stime, tms_cutime, and
-tms_cstime fields of the @code{struct tms} returned.
-
-@section Environment Variables
-
-@subsection Environment Access
-
-@example
-getenv(), Function, Implemented
-@end example
-
-@section Terminal Identification
-
-@subsection Generate Terminal Pathname
-
-@example
-ctermid(), Function, Unimplemented
-@end example
-
-@subsection Determine Terminal Device Name
-
-@example
-ttyname(), Function, Untested Implementation, assumes directory services
-ttyname_r(), Function, Unimplemented
-isatty(), Function, Partial Implementation
-@end example
-
-@section Configurable System Variables
-
-@subsection Get Configurable System Variables
-
-@example
-sysconf(), Function, Not Implemented
-_SC_AIO_LISTIO_MAX, Constant, Implemented
-_SC_AIO_MAX, Constant, Implemented
-_SC_AIO_PRIO_DELTA_MAX, Constant, Implemented
-_SC_ARG_MAX, Constant, Implemented
-_SC_CHILD_MAX, Constant, Implemented
-_SC_CLK_TCK, Constant, Implemented
-CLK_TCK, Constant, Implemented
-_SC_DELAYTIMER_MAX, Constant, Implemented
-_SC_GETGR_R_SIZE_MAX, Constant, Implemented
-_SC_GETPW_R_SIZE_MAX, Constant, Implemented
-_SC_LOGIN_NAME_MAX, Constant, Implemented
-_SC_MQ_OPEN_MAX, Constant, Implemented
-_SC_MQ_PRIO_MAX, Constant, Implemented
-_SC_NGROUPS_MAX, Constant, Implemented
-_SC_OPEN_MAX, Constant, Implemented
-_SC_PAGESIZE, Constant, Implemented
-_SC_RTSIG_MAX, Constant, Implemented
-_SC_SEM_NSEMS_MAX, Constant, Implemented
-_SC_SEM_VALUE_MAX, Constant, Implemented
-_SC_SIGQUEUE_MAX, Constant, Implemented
-_SC_STREAM_MAX, Constant, Implemented
-_SC_THREAD_DESTRUCTOR_ITERATIONS, Constant, Implemented
-_SC_THREAD_KEYS_MAX, Constant, Implemented
-_SC_THREAD_STACK_MIN, Constant, Implemented
-_SC_THREAD_THREADS_MAX, Constant, Implemented
-_SC_TIMER_MAX, Constant, Implemented
-_SC_TTY_NAME_MAX, Constant, Implemented
-_SC_TZNAME_MAX, Constant, Implemented
-_SC_ASYNCHRONOUS_IO, Constant, Implemented
-_SC_FSYNC, Constant, Implemented
-_SC_JOB_CONROL, Constant, Implemented
-_SC_MAPPED_FILES, Constant, Implemented
-_SC_MEMLOCK, Constant, Implemented
-_SC_MEMLOCK_RANGE, Constant, Implemented
-_SC_MEMORY_PROTECTION, Constant, Implemented
-_SC_MESSAGE_PASSING, Constant, Implemented
-_SC_PRIORITIZED_IO, Constant, Implemented
-_SC_PRIORITY_SCHEDULING, Constant, Unimplemented
-_SC_REALTIME_SIGNALS, Constant, Implemented
-_SC_SAVED_IDS, Constant, Implemented
-_SC_SEMAPHORES, Constant, Implemented
-_SC_SHARED_MEMORY_OBJECTS, Constant, Implemented
-_SC_SYNCHRONIZED_IO, Constant, Implemented
-_SC_TIMERS, Constant, Implemented
-_SC_THREADS, Constant, Implemented
-_SC_THREAD_ATTR_STACKADDR, Constant, Implemented
-_SC_THREAD_ATTR_STACKSIZE, Constant, Implemented
-_SC_THREAD_PRIORITY_SCHEDULING, Constant, Implemented
-_SC_THREAD_PRIO_INHERIT, Constant, Implemented
-_SC_THREAD_PRIO_PROTECT, Constant, Unimplemented
-_SC_THREAD_PROCESS_SHARED, Constant, Implemented
-_SC_THREAD_SAFE_FUNCTIONS, Constant, Implemented
-_SC_VERSION, Constant, Implemented
-@end example
diff --git a/doc/posix1003.1/ch05.t b/doc/posix1003.1/ch05.t
deleted file mode 100644
index 42996e9744..0000000000
--- a/doc/posix1003.1/ch05.t
+++ /dev/null
@@ -1,220 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Files and Directories
-
-@section Directories
-
-@subsection Format of Directory Entries
-
-@subsection Directory Operations
-
-@example
-struct dirent, Type, Implemented
-opendir(), Function, Implemented
-readdir(), Function, Implemented
-readdir_r(), Function, Implemented
-rewinddir(), Function, Implemented
-closedir(), Function, Implemented
-@end example
-
-@section Working Directory
-
-@subsection Change Current Working Directory
-
-@example
-chdir(), Function, Implemented
-@end example
-
-@subsection Get Working Directory Pathname
-
-@example
-getcwd(), Function, Untested Implementation, assumes directory services
-@end example
-
-@section General File Creation
-
-@subsection Open a File
-
-@example
-open(), Function, Implemented
-O_RDONLY, Constant, Implemented
-O_WRONLY, Constant, Implemented
-O_RDWR, Constant, Implemented
-O_APPEND, Constant, Implemented
-O_CREAT, Constant, Implemented
-O_DSYNC, Constant, Unimplemented
-O_EXCL, Constant, Implemented
-O_NOCTTY, Constant, Implemented
-O_NONBLOCK, Constant, Implemented
-O_RSYNC, Constant, Unimplemented
-O_SYNC, Constant, Implemented
-O_TRUNC, Constant, Implemented
-@end example
-
-NOTE: In the newlib fcntl.h, O_SYNC is defined only if _POSIX_SOURCE is
-not defined. This seems wrong.
-
-@subsection Create a New File or Rewrite an Existing One
-
-@example
-creat(), Function, Implemented
-@end example
-
-@subsection Set File Creation Mask
-
-@example
-umask(), Function, Implemented
-@end example
-
-@subsection Link to a File
-
-@example
-link(), Function, Implemented
-@end example
-
-@section Special File Creation
-
-@subsection Make a Directory
-
-@example
-mkdir(), Function, Implemented
-@end example
-
-@subsection Make a FIFO Special File
-
-@example
-mkfifo(), Function, Untested Implementation
-@end example
-
-@section File Removal
-
-@subsection Remove Directory Entries
-
-@example
-unlink(), Function, Implemented
-@end example
-
-@subsection Remove a Directory
-
-@example
-rmdir(), Function, Implemented
-@end example
-
-@subsection Rename a File
-
-@example
-rename(), Function, Implemented
-@end example
-
-@section File Characteristics
-
-@subsection File Characteristics Header and Data Structure
-
-@example
-struct stat, Type, Implemented
-@end example
-
-@subsubsection <sys/stat.h> File Types
-
-@example
-S_ISBLK(), Function, Implemented
-S_ISCHR(), Function, Implemented
-S_ISDIR(), Function, Implemented
-S_ISFIFO(), Function, Implemented
-S_ISREG(), Function, Implemented
-S_TYPEISMQ(), Function, Unimplemented
-S_TYPEISSEM(), Function, Unimplemented
-S_TYPEISSHM(), Function, Unimplemented
-@end example
-
-@subsubsection <sys/stat.h> File Modes
-
-@example
-S_IRWXU, Constant, Implemented
-S_IRUSR, Constant, Implemented
-S_IWUSR, Constant, Implemented
-S_IXUSR, Constant, Implemented
-S_IRWXG, Constant, Implemented
-S_IRGRP, Constant, Implemented
-S_IWGRP, Constant, Implemented
-S_IXGRP, Constant, Implemented
-S_IRWXO, Constant, Implemented
-S_IROTH, Constant, Implemented
-S_IWOTH, Constant, Implemented
-S_IXOTH, Constant, Implemented
-S_ISUID, Constant, Implemented
-S_ISGID, Constant, Implemented
-@end example
-
-@subsubsection <sys/stat.h> Time Entries
-
-@subsection Get File Status
-
-@example
-stat(), Function, Implemented
-fstat(), Function, Implemented
-@end example
-
-@subsection Check File Accessibility
-
-@example
-access(), Function, Implemented
-@end example
-
-@subsection Change File Modes
-
-@example
-chmod(), Function, Implemented
-fchmod(), Function, Implemented
-@end example
-
-@subsection Change Owner and Group of a File
-
-@example
-chown(), Function, Implemented
-@end example
-
-@subsection Set File Access and Modification Times
-
-@example
-struct utimbuf, Type, Implemented
-utime(), Function, Dummy Implementation
-@end example
-
-@subsection Truncate a File to a Specified Length
-
-@example
-ftruncate(), Function, Implemented
-@end example
-
-@section Configurable Pathname Variable
-
-@subsection Get Configurable Pathname Variables
-
-@example
-pathconf(), Function, Implemented
-fpathconf(), Function, Implemented
-_PC_LINK_MAX, Constant, Implemented
-_PC_MAX_CANON, Constant, Implemented
-_PC_MAX_INPUT, Constant, Implemented
-_PC_MAX_INPUT, Constant, Implemented
-_PC_NAME_MAX, Constant, Implemented
-_PC_PATH_MAX, Constant, Implemented
-_PC_PIPE_BUF, Constant, Implemented
-_PC_ASYNC_IO, Constant, Implemented
-_PC_CHOWN_RESTRICTED, Constant, Implemented
-_PC_NO_TRUNC, Constant, Implemented
-_PC_PRIO_IO, Constant, Implemented
-_PC_SYNC_IO, Constant, Implemented
-_PC_VDISABLE, Constant, Implemented
-@end example
-
-NOTE: The newlib unistd.h and sys/unistd.h are installed and the
-include search patch is used to get the right one. There are
-conflicts between the newlib unistd.h and RTEMS' version.
diff --git a/doc/posix1003.1/ch06.t b/doc/posix1003.1/ch06.t
deleted file mode 100644
index 5861886a8e..0000000000
--- a/doc/posix1003.1/ch06.t
+++ /dev/null
@@ -1,173 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Input and Output Primitives
-
-@section Pipes
-
-@subsection Create an Inter-Process Channel
-
-@example
-pipe(), Function, Dummy Implementation
-@end example
-
-@section File Descriptor Manipulation
-
-@subsection Duplicate an Open File Descriptor
-
-@example
-dup(), Function, Implemented
-dup2(), Function, Untested Iimplementation
-@end example
-
-@section File Descriptor Deassignment
-
-@subsection Close a File
-
-@example
-close(), Function, Implemented
-@end example
-
-@section Input and Output
-
-@subsection Read from a File
-
-@example
-read(), Function, Implemented
-@end example
-
-@subsection Write to a File
-
-@example
-write(), Function, Implemented
-@end example
-
-@section Control Operations on Files
-
-@subsection Data Definitions for File Control Operations
-
-@subsection File Control
-
-@example
-struct flock, Type, Unimplemented
-fcntl(), Function, Implemented
-F_DUPFD, Constant, Implemented
-F_GETFD, Constant, Implemented
-F_GETLK, Constant, Implemented
-F_SETFD, Constant, Implemented
-F_GETFL, Constant, Implemented
-F_SETFL, Constant, Implemented
-F_SETLK, Constant, Implemented
-F_SETLKW, Constant, Implemented
-FD_CLOEXEC, Constant, Implemented
-F_RDLCK, Constant, Implemented
-F_UNLCK, Constant, Implemented
-F_WRLCK, Constant, Implemented
-O_ACCMODE, Constant, Implemented
-@end example
-
-NOTE: A number of constants are used by both @code{open} and @code{fcntl}.
-@code{O_CREAT}, @code{O_EXCL}, @code{O_NOCTTY}, @code{O_TRUNC},
-@code{O_APPEND}, @code{O_DSYNC}, @code{O_NONBLOCK}, @code{O_RSYNC},
-@code{O_SYNC}, @code{O_RDONLY}, @code{O_RDWR}, and @code{O_WRONLY}
-are also included in another section. @xref{Open a File}.
-
-@subsection Reposition Read/Write File Offset
-
-@example
-lseek(), Function, Partial Implementation
-SEEK_SET, Constant, Implemented
-SEEK_CUR, Constant, Implemented
-SEEK_END, Constant, Implemented
-@end example
-
-@section File Synchronization
-
-@subsection Synchronize the State of a File
-
-@example
-fsync(), Function, Implemented
-@end example
-
-@subsection Synchronize the Data of a File
-
-@example
-fdatasync(), Function, Implemented
-@end example
-
-@section Asynchronous Input and Output
-
-@subsection Data Definitions for Asynchronous Input and Output
-
-@subsubsection Asynchronous I/O Control Block
-
-@example
-struct aiocb, Type, Untested Implementation
-@end example
-
-@subsubsection Asynchronous I/O Manifest Constants
-
-@example
-AIO_CANCELED, Constant, Implemented
-AIO_NOTCANCELED, Constant, Implemented
-AIO_ALLDONE, Constant, Implemented
-LIO_WAIT, Constant, Implemented
-LIO_NOWAIT, Constant, Implemented
-LIO_READ, Constant, Implemented
-LIO_WRITE, Constant, Implemented
-LIO_NOP, Constant, Implemented
-@end example
-
-@subsection Asynchronous Read
-
-@example
-aio_read(), Function, Dummy Implementation
-@end example
-
-@subsection Asynchronous Write
-
-@example
-aio_write(), Function, Dummy Implementation
-@end example
-
-@subsection List Directed I/O
-
-@example
-lio_listio(), Function, Dummy Implementation
-@end example
-
-@subsection Retrieve Error Status of Asynchronous I/O Operation
-
-@example
-aio_error(), Function, Dummy Implementation
-@end example
-
-@subsection Retrieve Return Status of Asynchronous I/O Operation
-
-@example
-aio_return(), Function, Dummy Implementation
-@end example
-
-@subsection Cancel Asynchronous I/O Request
-
-@example
-aio_cancel(), Function, Dummy Implementation
-@end example
-
-@subsection Wait for Asynchronous I/O Request
-
-@example
-aio_suspend(), Function, Dummy Implementation
-@end example
-
-@subsection Asynchronous File Synchronization
-
-@example
-aio_fsync(), Function, Dummy Implementation
-@end example
-
diff --git a/doc/posix1003.1/ch07.t b/doc/posix1003.1/ch07.t
deleted file mode 100644
index 69bbc50a7d..0000000000
--- a/doc/posix1003.1/ch07.t
+++ /dev/null
@@ -1,207 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Device- and Class-Specific Functions
-
-@section General Terminal Interface
-
-@subsection Interface Characteristics
-
-@subsubsection Opening a Terminal Device File
-
-@subsubsection Process Groups (TTY)
-
-@subsubsection The Controlling Terminal
-
-@subsubsection Terminal Access Control
-
-@subsubsection Input Processing and Reading Data
-
-@subsubsection Canonical Mode Input Processing
-
-@subsubsection Noncanonical Mode Input Processing
-
-@lowersections
-
-@subsubsection Case A - MIN > 0 and TIME > 0
-
-@subsubsection Case B - MIN > 0 and TIME = 0
-
-@subsubsection Case C - MIN = 0 and TIME > 0
-
-@subsubsection Case D - MIN = 0 and TIME = 0
-
-@raisesections
-
-@subsubsection Writing Data and Output Processing
-
-@subsubsection Special Characters
-
-@example
-INTR, Constant, Unimplemented
-QUIT, Constant, Unimplemented
-ERASE, Constant, Implemented
-KILL, Constant, Implemented
-EOF, Constant, Implemented
-NL, Constant, Unimplemented
-EOL, Constant, Unimplemented
-SUSP, Constant, Unimplemented
-STOP, Constant, Unimplemented
-START, Constant, Unimplemented
-CR, Constant, Unimplemented
-@end example
-
-@subsubsection Modem Disconnect
-
-@subsubsection Closing a Terminal Device File
-
-@subsection Parameters That Can Be Set
-
-@subsubsection termios Structure
-
-@example
-tcflag_t, Type, Implemented
-cc_t, Type, Implemented
-struct termios, Type, Partial Implementation
-@end example
-
-@subsubsection Input Modes
-
-@example
-BRKINT, Constant, Implemented
-ICRNL, Constant, Implemented
-IGNBREAK, Constant, Unimplemented
-IGNCR, Constant, Implemented
-IGNPAR, Constant, Implemented
-INLCR, Constant, Implemented
-INPCK, Constant, Implemented
-ISTRIP, Constant, Implemented
-IXOFF, Constant, Implemented
-IXON, Constant, Implemented
-PARMRK, Constant, Implemented
-@end example
-
-@subsubsection Output Modes
-
-@example
-OPOST, Constant, Implemented
-@end example
-
-@subsubsection Control Modes
-
-@example
-CLOCAL, Constant, Implemented
-CREAD, Constant, Implemented
-CSIZE, Constant, Implemented
-CS5, Constant, Implemented
-CS6, Constant, Implemented
-CS7, Constant, Implemented
-CS8, Constant, Implemented
-CSTOPB, Constant, Implemented
-HUPCL, Constant, Implemented
-PARENB, Constant, Implemented
-PARODD, Constant, Implemented
-@end example
-
-@subsubsection Local Modes
-
-@example
-ECHO, Constant, Implemented
-ECHOE, Constant, Implemented
-ECHOK, Constant, Implemented
-ECHONL, Constant, Implemented
-ICANON, Constant, Implemented
-IEXTEN, Constant, Implemented
-ISIG, Constant, Implemented
-NOFLSH, Constant, Implemented
-TOSTOP, Constant, Implemented
-@end example
-
-@subsubsection Special Control Characters
-
-@example
-VEOF, Constant, Implemented
-VEOL, Constant, Implemented
-VERASE, Constant, Implemented
-VINTR, Constant, Implemented
-VKILL, Constant, Implemented
-VQUIT, Constant, Implemented
-VSUSP, Constant, Implemented
-VSTART, Constant, Implemented
-VSTOP, Constant, Implemented
-VMIN, Constant, Implemented
-VTIME, Constant, Implemented
-@end example
-
-@subsection Baud Rate Values
-
-@example
-B0, Constant, Implemented
-B50, Constant, Implemented
-B75, Constant, Implemented
-B110, Constant, Implemented
-B134, Constant, Implemented
-B150, Constant, Implemented
-B200, Constant, Implemented
-B300, Constant, Implemented
-B600, Constant, Implemented
-B1200, Constant, Implemented
-B1800, Constant, Implemented
-B2400, Constant, Implemented
-B4800, Constant, Implemented
-B9600, Constant, Implemented
-B19200, Constant, Implemented
-B38400, Constant, Implemented
-@end example
-
-@subsubsection Baud Rate Functions
-
-@example
-cfgetospeed(), Function, Implemented
-cfsetospeed(), Function, Implemented
-cfgetispeed(), Function, Implemented
-cfsetispeed(), Function, Implemented
-TCIFLUSH, Constant, Implemented
-TCOFLUSH, Constant, Implemented
-TCIOFLUSH, Constant, Implemented
-TCOOFF, Constant, Implemented
-TCOON, Constant, Implemented
-TCIOOFF, Constant, Implemented
-TCIOON, Constant, Implemented
-@end example
-
-@section General Terminal Interface Control Functions
-
-@subsection Get and Set State
-
-@example
-tcgetattr(), Function, Implemented
-tcsetattr(), Function, Implemented
-@end example
-
-@subsection Line Control Functions
-
-@example
-tcsendbreak(), Function, Unimplemented
-tcdrain(), Function, Implemented
-tcflush(), Function, Unimplemented
-tcflow(), Function, Unimplemented
-@end example
-
-@subsection Get Foreground Process Group ID
-
-@example
-tcgetprgrp(), Function, Unimplementable
-@end example
-
-@subsection Set Foreground Process Group ID
-
-@example
-tcsetprgrp(), Function, Unimplementable
-@end example
-
diff --git a/doc/posix1003.1/ch08.t b/doc/posix1003.1/ch08.t
deleted file mode 100644
index 35a81c0161..0000000000
--- a/doc/posix1003.1/ch08.t
+++ /dev/null
@@ -1,288 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Language-Specific Services for the C Programming Language
-
-@section Referenced C Language Routines
-
-ANSI C Section 4.2 --- Diagnostics
-
-@example
-assert(), Function, Implemented
-@end example
-
-ANSI C Section 4.3 --- Character Handling
-
-@example
-isalnum(), Function, Implemented
-isalpha(), Function, Implemented
-iscntrl(), Function, Implemented
-isdigit(), Function, Implemented
-isgraph(), Function, Implemented
-islower(), Function, Implemented
-isprint(), Function, Implemented
-ispunct(), Function, Implemented
-isspace(), Function, Implemented
-isupper(), Function, Implemented
-isxdigit(), Function, Implemented
-tolower(), Function, Implemented
-toupper(), Function, Implemented
-@end example
-
-ANSI C Section 4.4 --- Localization
-
-@example
-setlocale(), Function, Partial Implementation
-@end example
-
-ANSI C Section 4.5 --- Mathematics
-
-@example
-acos(), Function, Implemented
-asin(), Function, Implemented
-atan(), Function, Implemented
-atan2(), Function, Implemented
-cos(), Function, Implemented
-sin(), Function, Implemented
-tan(), Function, Implemented
-cosh(), Function, Implemented
-sinh(), Function, Implemented
-tanh(), Function, Implemented
-exp(), Function, Implemented
-frexp(), Function, Implemented
-ldexp(), Function, Implemented
-log(), Function, Implemented
-log10(), Function, Implemented
-modf(), Function, Implemented
-pow(), Function, Implemented
-sqrt(), Function, Implemented
-ceil(), Function, Implemented
-fabs(), Function, Implemented
-floor(), Function, Implemented
-fmod(), Function, Implemented
-@end example
-
-ANSI C Section 4.6 --- Non-Local Jumps
-
-@example
-setjmp(), Function, Implemented
-longjmp(), Function, Implemented
-@end example
-
-ANSI C Section 4.9 --- Input/Output
-
-@example
-FILE, Type, Implemented
-clearerr(), Function, Implemented
-fclose(), Function, Implemented
-feof(), Function, Implemented
-ferror(), Function, Implemented
-fflush(), Function, Implemented
-fgetc(), Function, Implemented
-fgets(), Function, Implemented
-fopen(), Function, Implemented
-fputc(), Function, Implemented
-fputs(), Function, Implemented
-fread(), Function, Implemented
-freopen(), Function, Implemented
-fseek(), Function, Implemented
-ftell(), Function, Implemented
-fwrite(), Function, Implemented
-getc(), Function, Implemented
-getchar(), Function, Implemented
-gets(), Function, Implemented
-perror(), Function, Implemented
-printf(), Function, Implemented
-fprintf(), Function, Implemented
-sprintf(), Function, Implemented
-putc(), Function, Implemented
-putchar(), Function, Implemented
-puts(), Function, Implemented
-remove(), Function, Implemented
-rewind(), Function, Implemented
-scanf(), Function, Implemented
-fscanf(), Function, Implemented
-sscanf(), Function, Implemented
-setbuf(), Function, Implemented
-tmpfile(), Function, Implemented
-tmpnam(), Function, Implemented
-ungetc(), Function, Implemented
-@end example
-
-NOTE: @code{rename} is also included in another section. @ref{Rename a File}.
-
-ANSI C Section 4.10 --- General Utilities
-
-@example
-abs(), Function, Implemented
-atof(), Function, Implemented
-atoi(), Function, Implemented
-atol(), Function, Implemented
-rand(), Function, Implemented
-srand(), Function, Implemented
-calloc(), Function, Implemented
-free(), Function, Implemented
-malloc(), Function, Implemented
-realloc(), Function, Implemented
-abort(), Function, Implemented
-exit(), Function, Implemented
-bsearch(), Function, Implemented
-qsort(), Function, Implemented
-@end example
-
-NOTE: @code{getenv} is also included in another section.
-@ref{Environment Access}.
-
-ANSI C Section 4.11 --- String Handling
-
-@example
-strcpy(), Function, Implemented
-strncpy(), Function, Implemented
-strcat(), Function, Implemented
-strncat(), Function, Implemented
-strcmp(), Function, Implemented
-strncmp(), Function, Implemented
-strchr(), Function, Implemented
-strcspn(), Function, Implemented
-strpbrk(), Function, Implemented
-strrchr(), Function, Implemented
-strspn(), Function, Implemented
-strstr(), Function, Implemented
-strtok(), Function, Implemented
-strlen(), Function, Implemented
-@end example
-
-ANSI C Section 4.12 --- Date and Time Handling
-
-@example
-asctime(), Function, Implemented
-ctime(), Function, Implemented
-gmtime(), Function, Implemented
-localtime(), Function, Implemented
-mktime(), Function, Implemented
-strftime(), Function, Implemented
-@end example
-
-NOTE: RTEMS has no notion of time zones.
-
-NOTE: @code{time} is also included in another section.
-@ref{Get System Time}.
-
-From Surrounding Text
-
-@example
-EXIT_SUCCESS, Constant, Implemented
-EXIT_FAILURE, Constant, Implemented
-@end example
-
-
-@subsection Extensions to Time Functions
-
-@subsection Extensions to setlocale Function
-
-@example
-LC_CTYPE, Constant, Implemented
-LC_COLLATE, Constant, Implemented
-LC_TIME, Constant, Implemented
-LC_NUMERIC, Constant, Implemented
-LC_MONETARY, Constant, Implemented
-LC_ALL, Constant, Implemented
-@end example
-
-@section C Language Input/Output Functions
-
-@subsection Map a Stream Pointer to a File Descriptor
-
-@example
-fileno(), Function, Implemented
-STDIN_FILENO, Constant, Implemented
-STDOUT_FILENO, Constant, Implemented
-STDERR_FILENO, Constant, Implemented
-@end example
-
-@subsection Open a Stream on a File Descriptor
-
-@example
-fdopen(), Function, Implemented
-@end example
-
-@subsection Interactions of Other FILE-Type C Functions
-
-@subsection Operations on Files - the remove Function
-
-@subsection Temporary File Name - the tmpnam Function
-
-@subsection Stdio Locking Functions
-
-@example
-flockfile(), Function, Unimplemented
-ftrylockfile(), Function, Unimplemented
-funlockfile(), Function, Unimplemented
-@end example
-
-@subsection Stdio With Explicit Client Locking
-
-@example
-getc_unlocked(), Function, Unimplemented
-getchar_unlocked(), Function, Unimplemented
-putc_unlocked(), Function, Unimplemented
-putchar_unlocked(), Function, Unimplemented
-@end example
-
-@section Other C Language Functions
-
-@subsection Nonlocal Jumps
-
-@example
-sigjmp_buf, Type, Unimplemented
-sigsetjmp(), Function, Unimplemented
-siglongjmp(), Function, Unimplemented
-@end example
-
-@subsection Set Time Zone
-
-@example
-tzset(), Function, Unimplemented
-@end example
-
-@subsection Find String Token
-
-@example
-strtok_r(), Function, Implemented
-@end example
-
-@subsection ASCII Time Representation
-
-@example
-asctime_r(), Function, Implemented
-@end example
-
-@subsection Current Time Representation
-
-@example
-ctime_r(), Function, Implemented
-@end example
-
-@subsection Coordinated Universal Time
-
-@example
-gmtime_r(), Function, Implemented
-@end example
-
-@subsection Local Time
-
-@example
-localtime_r(), Function, Implemented
-@end example
-
-@subsection Pseudo-Random Sequence Generation Functions
-
-@example
-rand_r(), Function, Implemented
-@end example
-
diff --git a/doc/posix1003.1/ch09.t b/doc/posix1003.1/ch09.t
deleted file mode 100644
index e299db252b..0000000000
--- a/doc/posix1003.1/ch09.t
+++ /dev/null
@@ -1,34 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter System Databases
-
-@section System Databases Section
-
-@section Database Access
-
-@subsection Group Database Access
-
-@example
-struct group, Type, Untested Implementation
-getgrgid(), Function, Unimplemented
-getgrgid_r(), Function, Unimplemented
-getgrname(), Function, Unimplemented
-getgrnam_r(), Function, Unimplemented
-@end example
-
-@subsection User Database Access
-
-@example
-struct passwd, Type, Untested Implementation
-getpwuid(), Function, Untested Implemented, assumes /etc/passwd exists
-getpwuid_r(), Function, Unimplemented
-getpwnam(), Function, Untested Implemented, assumes /etc/passwd exists
-getpwnam_r(), Function, Unimplemented
-@end example
-
diff --git a/doc/posix1003.1/ch10.t b/doc/posix1003.1/ch10.t
deleted file mode 100644
index ced40c63a2..0000000000
--- a/doc/posix1003.1/ch10.t
+++ /dev/null
@@ -1,68 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Data Interchange Format
-
-@section Archive/Interchange File Format
-
-@subsection Extended tar Format
-
-@example
-tar format, Type, Unimplemented
-TMAGIC, Constant, Unimplemented
-TMAGLEN, Constant, Unimplemented
-TVERSION, Constant, Unimplemented
-TVERSLEN, Constant, Unimplemented
-REGTYPE, Constant, Unimplemented
-AREGTYPE, Constant, Unimplemented
-LNKTYPE, Constant, Unimplemented
-SYMTYPE, Constant, Unimplemented
-CHRTYPE, Constant, Unimplemented
-BLKTYPE, Constant, Unimplemented
-DIRTYPE, Constant, Unimplemented
-FIFOTYPE, Constant, Unimplemented
-CONTTYPE, Constant, Unimplemented
-TSUID, Constant, Unimplemented
-TSGID, Constant, Unimplemented
-TSVTX, Constant, Unimplemented
-TUREAD, Constant, Unimplemented
-TUWRITE, Constant, Unimplemented
-TUEXEC, Constant, Unimplemented
-TGREAD, Constant, Unimplemented
-TGWRITE, Constant, Unimplemented
-TGEXEC, Constant, Unimplemented
-TOREAD, Constant, Unimplemented
-TOWRITE, Constant, Unimplemented
-TOEXEC, Constant, Unimplemented
-@end example
-
-NOTE: Requires <tar.h> which is not in newlib.
-
-@subsection Extended cpio Format
-
-@example
-cpio format, Type, Unimplemented
-C_IRUSER, Constant, Unimplemented
-C_IWUSER, Constant, Unimplemented
-C_IXUSER, Constant, Unimplemented
-C_IRGRP, Constant, Unimplemented
-C_IWGRP, Constant, Unimplemented
-C_IXGRP, Constant, Unimplemented
-C_IROTH, Constant, Unimplemented
-C_IWOTH, Constant, Unimplemented
-C_IXOTH, Constant, Unimplemented
-C_ISUID, Constant, Unimplemented
-C_ISGID, Constant, Unimplemented
-C_ISVTX, Constant, Unimplemented
-@end example
-
-NOTE: POSIX does not require a header file or structure. RedHat Linux
-5.0 does not have a <cpio.h> although Solaris 2.6 does.
-
-@subsection Multiple Volumes
-
diff --git a/doc/posix1003.1/ch11.t b/doc/posix1003.1/ch11.t
deleted file mode 100644
index 972d063cfe..0000000000
--- a/doc/posix1003.1/ch11.t
+++ /dev/null
@@ -1,130 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Synchronization
-
-@section Semaphore Characteristics
-
-@example
-sem_t, Type, Untested Implementation
-@end example
-
-@section Semaphore Functions
-
-@subsection Initialize an Unnamed Semaphore
-
-@example
-sem_init(), Function, Untested Implementation
-SEM_FAILED, Constant, Unimplemented
-@end example
-
-@subsection Destroy an Unnamed Semaphore
-
-@example
-sem_destroy(), Function, Untested Implementation
-@end example
-
-@subsection Initialize/Open a Named Semaphore
-
-@example
-sem_open(), Function, Untested Implementation
-@end example
-
-@subsection Close a Named Semaphore
-
-@example
-sem_close(), Function, Untested Implementation
-@end example
-
-@subsection Remove a Named Semaphore
-
-@example
-sem_unlink(), Function, Untested Implementation
-@end example
-
-@subsection Lock a Semaphore
-
-@example
-sem_wait(), Function, Untested Implementation
-sem_trywait(), Function, Untested Implementation
-@end example
-
-@subsection Unlock a Semaphore
-
-@example
-sem_post(), Function, Untested Implementation
-@end example
-
-@subsection Get the Value of a Semaphore
-
-@example
-sem_getvalue(), Function, Untested Implementation
-@end example
-
-@section Mutexes
-
-@subsection Mutex Initialization Attributes
-
-@example
-pthread_mutexattr_init(), Function, Implemented
-pthread_mutexattr_destroy(), Function, Implemented
-pthread_mutexattr_getpshared(), Function, Implemented
-pthread_mutexattr_setpshared(), Function, Implemented
-PTHREAD_PROCESS_SHARED, Constant, Implemented
-PTHREAD_PROCESS_PRIVATE, Constant, Implemented
-@end example
-
-@subsection Initializing and Destroying a Mutex
-
-@example
-pthread_mutex_init(), Function, Implemented
-pthread_mutex_destroy(), Function, Implemented
-PTHREAD_MUTEX_INITIALIZER, Constant, Implemented
-@end example
-
-@subsection Locking and Unlocking a Mutex
-
-@example
-pthread_mutex_lock(), Function, Implemented
-pthread_mutex_trylock(), Function, Implemented
-pthread_mutex_unlock(), Function, Implemented
-@end example
-
-@section Condition Variables
-
-@subsection Condition Variable Initialization Attributes
-
-@example
-pthread_condattr_init(), Function, Implemented
-pthread_condattr_destroy(), Function, Implemented
-pthread_condattr_getpshared(), Function, Implemented
-pthread_condattr_setpshared(), Function, Implemented
-@end example
-
-@subsection Initialization and Destroying Condition Variables
-
-@example
-pthread_cond_init(), Function, Implemented
-pthread_cond_destroy(), Function, Implemented
-PTHREAD_COND_INITIALIZER, Constant, Implemented
-@end example
-
-@subsection Broadcasting and Signaling a Condition
-
-@example
-pthread_cond_signal(), Function, Implemented
-pthread_cond_broadcast(), Function, Implemented
-@end example
-
-@subsection Waiting on a Condition
-
-@example
-pthread_cond_wait(), Function, Implemented
-pthread_cond_timedwait(), Function, Implemented
-@end example
-
diff --git a/doc/posix1003.1/ch12.t b/doc/posix1003.1/ch12.t
deleted file mode 100644
index 7e7aded583..0000000000
--- a/doc/posix1003.1/ch12.t
+++ /dev/null
@@ -1,77 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Management
-
-@section Memory Locking Functions
-
-@subsection Lock/Unlock the Address Space of a Process
-
-@example
-mlockall(), Function, Unimplemented
-munlockall(), Function, Unimplemented
-MCL_CURRENT, Constant, Unimplemented
-MCL_FUTURE, Constant, Unimplemented
-@end example
-
-@subsection Lock/Unlock a Rand of Process Address Space
-
-@example
-mlock(), Function, Unimplemented
-munlock(), Function, Unimplemented
-@end example
-
-@section Memory Mapping Functions
-
-@subsection Map Process Addresses to a Memory Object
-
-@example
-mmap(), Function, Unimplemented
-PROT_READ, Constant, Unimplemented
-PROT_WRITE, Constant, Unimplemented
-PROT_EXEC, Constant, Unimplemented
-PROT_NONE, Constant, Unimplemented
-MAP_SHARED, Constant, Unimplemented
-MAP_PRIVATE, Constant, Unimplemented
-MAP_FIXED, Constant, Unimplemented
-@end example
-
-@subsection Unmap Previously Mapped Addresses
-
-@example
-munmap(), Function, Unimplemented
-@end example
-
-@subsection Change Memory Protection
-
-@example
-mprotect(), Function, Unimplemented
-@end example
-
-@subsection Memory Object Synchronization
-
-@example
-msync(), Function, Unimplemented, Unimplemented
-MS_ASYNC, Constant, Unimplemented
-MS_SYNC, Constant, Unimplemented
-MS_INVALIDATE, Constant, Unimplemented
-@end example
-
-@section Shared Memory Functions
-
-@subsection Open a Shared Memory Object
-
-@example
-shm_open(), Function, Unimplemented
-@end example
-
-@subsection Remove a Shared Memory Object
-
-@example
-shm_unlink(), Function, Unimplemented
-@end example
diff --git a/doc/posix1003.1/ch13.t b/doc/posix1003.1/ch13.t
deleted file mode 100644
index 398db8e2f4..0000000000
--- a/doc/posix1003.1/ch13.t
+++ /dev/null
@@ -1,132 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Execution Scheduling
-
-@section Scheduling Parameters
-
-@example
-struct sched_param, Type, Implemented
-@end example
-
-@section Scheduling Policies
-
-@example
-SCHED_FIFO, Constant, Implemented
-SCHED_RR, Constant, Implemented
-SCHED_OTHER, Constant, Implemented
-@end example
-
-NOTE: RTEMS adds SCHED_SPORADIC.
-
-@subsection SCHED_FIFO
-
-@subsection SCHED_RR
-
-@subsection SCHED_OTHER
-
-@section Process Scheduling Functions
-
-@subsection Set Scheduling Parameters
-
-@example
-sched_setparam(), Function, Dummy Implementation
-@end example
-
-@subsection Get Scheduling Parameters
-
-@example
-sched_getparam(), Function, Dummy Implementation
-@end example
-
-@subsection Set Scheduling Policy and Scheduling Parameters
-
-@example
-sched_setscheduler(), Function, Dummy Implementation
-@end example
-
-@subsection Get Scheduling Policy
-
-@example
-sched_getscheduler(), Function, Dummy Implementation
-@end example
-
-@subsection Yield Processor
-
-@example
-sched_yield(), Function, Implemented
-@end example
-
-@subsection Get Scheduling Parameter Limits
-
-@example
-sched_get_priority_max(), Function, Implemented
-sched_get_priority_min(), Function, Implemented
-sched_get_priority_rr_get_interval(), Function, Implemented
-@end example
-
-@section Thread Scheduling
-
-@subsection Thread Scheduling Attributes
-
-@example
-PTHREAD_SCOPE_PROCESS, Constant, Implemented
-PTHREAD_SCOPE_SYSTEM, Constant, Implemented
-@end example
-
-@subsection Scheduling Contention Scope
-
-@subsection Scheduling Allocation Domain
-
-@subsection Scheduling Documentation
-
-@section Thread Scheduling Functions
-
-@subsection Thread Creation Scheduling Attributes
-
-@example
-pthread_attr_setscope(), Function, Implemented
-pthread_attr_getscope(), Function, Implemented
-pthread_attr_setinheritsched(), Function, Implemented
-pthread_attr_getinheritsched(), Function, Implemented
-pthread_attr_setschedpolicy(), Function, Implemented
-pthread_attr_getschedpolicy(), Function, Implemented
-pthread_attr_setschedparam(), Function, Implemented
-pthread_attr_getschedparam(), Function, Implemented
-PTHREAD_INHERIT_SCHED, Constant, Implemented
-PTHREAD_EXPLICIT_SCHED, Constant, Implemented
-@end example
-
-@subsection Dynamic Thread Scheduling Parameters Access
-
-@example
-pthread_setschedparam(), Function, Implemented
-pthread_getschedparam(), Function, Implemented
-@end example
-
-@section Synchronization Scheduling
-
-@subsection Mutex Initialization Scheduling Attributes
-
-@example
-pthread_mutexattr_setprotocol(), Function, Implemented
-pthread_mutexattr_getprotocol(), Function, Implemented
-pthread_mutexattr_setprioceiling(), Function, Implemented
-pthread_mutexattr_getprioceiling(), Function, Implemented
-PTHREAD_PRIO_NONE, Constant, Implemented
-PTHREAD_PRIO_INHERIT, Constant, Implemented
-PTHREAD_PRIO_PROTECT, Constant, Implemented
-@end example
-
-@subsection Change the Priority Ceiling of a Mutex
-
-@example
-pthread_mutex_setprioceiling(), Function, Implemented
-pthread_mutex_getprioceiling(), Function, Implemented
-@end example
-
diff --git a/doc/posix1003.1/ch14.t b/doc/posix1003.1/ch14.t
deleted file mode 100644
index 25de89cbf9..0000000000
--- a/doc/posix1003.1/ch14.t
+++ /dev/null
@@ -1,71 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Clocks and Timers
-
-@section Data Definitions for Clocks and Timers
-
-@subsection Time Value Specification Structures
-
-@example
-struct timespec, Type, Implemented
-struct itimerspec, Type, Implemented
-@end example
-
-@subsection Timer Event Notification Control Block
-
-@subsection Type Definitions
-
-@example
-clockid_t, Type, Implemented
-timerid_t, Type, Implemented
-@end example
-
-@subsection Timer Event Notification Manifest Constants
-
-@example
-CLOCK_REALTIME, Constant, Implemented
-TIMER_ABSTIME, Constant, Implemented
-@end example
-
-@section Clock and Timer Functions
-
-@subsection Clocks
-
-@example
-clock_settime(), Function, Partial Implementation
-clock_gettime(), Function, Partial Implementation
-clock_getres(), Function, Implemented
-@end example
-
-@subsection Create a Per-Process Timer
-
-@example
-timer_create(), Function, Dummy Implementation
-@end example
-
-@subsection Delete a Per-Process Timer
-
-@example
-timer_delete(), Function, Dummy Implementation
-@end example
-
-@subsection Per-Process Timers
-
-@example
-timer_settime(), Function, Dummy Implementation
-timer_gettime(), Function, Dummy Implementation
-timer_getoverrun(), Function, Dummy Implementation
-@end example
-
-@subsection High Resolution Sleep
-
-@example
-nanosleep(), Function, Implemented
-@end example
-
diff --git a/doc/posix1003.1/ch15.t b/doc/posix1003.1/ch15.t
deleted file mode 100644
index 297b4b2cf7..0000000000
--- a/doc/posix1003.1/ch15.t
+++ /dev/null
@@ -1,69 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Message Passing
-
-@section Data Definitions for Message Queues
-
-@subsection Data Structures
-
-@example
-mqd_t, Type, Untested Implementation
-struct mq_attr, Type, Untested Implementation
-@end example
-
-@section Message Passing Functions
-
-@subsection Open a Message Queue
-
-@example
-mq_open(), Function, Untested Implementation
-@end example
-
-@subsection Close a Message Queue
-
-@example
-mq_close(), Function, Untested Implementation
-@end example
-
-@subsection Remove a Message Queue
-
-@example
-mq_unlink(), Function, Untested Implementation
-@end example
-
-@subsection Send a Message to a Message Queue
-
-@example
-mq_send(), Function, Untested Implementation
-@end example
-
-@subsection Receive a Message From a Message Queue
-
-@example
-mq_receive(), Function, Untested Implementation
-@end example
-
-@subsection Notify Process That a Message is Available on a Queue
-
-@example
-mq_notify(), Function, Untested Implementation
-@end example
-
-@subsection Set Message Queue Attributes
-
-@example
-mq_setattr(), Function, Untested Implementation
-@end example
-
-@subsection Get Message Queue Attributes
-
-@example
-mq_getattr(), Function, Untested Implementation
-@end example
-
diff --git a/doc/posix1003.1/ch16.t b/doc/posix1003.1/ch16.t
deleted file mode 100644
index f9ba73599e..0000000000
--- a/doc/posix1003.1/ch16.t
+++ /dev/null
@@ -1,72 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Thread Management
-
-@section Threads
-
-@section Thread Functions
-
-@subsection Thread Creation Attributes
-
-@example
-pthread_attr_init(), Function, Implemented
-pthread_attr_destroy(), Function, Implemented
-pthread_attr_setstacksize(), Function, Implemented
-pthread_attr_getstacksize(), Function, Implemented
-pthread_attr_setstackaddr(), Function, Implemented
-pthread_attr_getstackaddr(), Function, Implemented
-pthread_attr_setdetachstate(), Function, Implemented
-pthread_attr_getdetachstate(), Function, Implemented
-PTHREAD_CREATE_JOINABLE, Constant, Implemented
-PTHREAD_CREATE_DETACHED, Constant, Implemented
-@end example
-
-@subsection Thread Creation
-
-@example
-pthread_create(), Function, Implemented
-@end example
-
-@subsection Wait for Thread Termination
-
-@example
-pthread_join(), Function, Implemented
-@end example
-
-@subsection Detaching a Thread
-
-@example
-pthread_detach(), Function, Implemented
-@end example
-
-@subsection Thread Termination
-
-@example
-pthread_exit(), Function, Implemented
-@end example
-
-@subsection Get Thread ID
-
-@example
-pthread_self(), Function, Implemented
-@end example
-
-@subsection Compare Thread IDs
-
-@example
-pthread_equal(), Function, Implemented
-@end example
-
-@subsection Dynamic Package Initialization
-
-@example
-pthread_once(), Function, Implemented
-PTHREAD_ONCE_INIT, Constant, Implemented
-@end example
-
diff --git a/doc/posix1003.1/ch17.t b/doc/posix1003.1/ch17.t
deleted file mode 100644
index f58ba18520..0000000000
--- a/doc/posix1003.1/ch17.t
+++ /dev/null
@@ -1,31 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Thread-Specific Data
-
-@section Thread-Specific Data Functions
-
-@subsection Thread-Specific Data Key Creation
-
-@example
-pthread_key_create(), Function, Implemented
-@end example
-
-@subsection Thread-Specific Data Management
-
-@example
-pthread_key_setspecific(), Function, Implemented
-pthread_key_getspecific(), Function, Implemented
-@end example
-
-@subsection Thread-Specific Data Key Deletion
-
-@example
-pthread_key_delete(), Function, Implemented
-@end example
-
diff --git a/doc/posix1003.1/ch18.t b/doc/posix1003.1/ch18.t
deleted file mode 100644
index 42e703dbcc..0000000000
--- a/doc/posix1003.1/ch18.t
+++ /dev/null
@@ -1,66 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Thread Cancellation
-
-@section Thread Cancellation Overview
-
-@subsection Cancelability States
-
-@example
-PTHREAD_CANCEL_DISABLE, Constant, Implemented
-PTHREAD_CANCEL_ENABLE, Constant, Implemented
-PTHREAD_CANCEL_ASYNCHRONOUS, Constant, Implemented
-PTHREAD_CANCEL_DEFERRED, Constant, Implemented
-@end example
-
-@subsection Cancellation Points
-
-@subsection Thread Cancellation Cleanup Handlers
-
-@example
-PTHREAD_CANCELED, Constant, Unimplemented
-@end example
-
-@subsection Async-Cancel Safety
-
-@section Thread Cancellation Functions
-
-@subsection Canceling Execution of a Thread
-
-@example
-pthread_cancel(), Function, Implemented
-@end example
-
-@subsection Setting Cancelability State
-
-@example
-pthread_setcancelstate(), Function, Implemented
-pthread_setcanceltype(), Function, Implemented
-pthread_testcancel(), Function, Implemented
-@end example
-
-@subsection Establishing Cancellation Handlers
-
-@example
-pthread_cleanup_push(), Function, Implemented
-pthread_cleanup_pop(), Function, Implemented
-@end example
-
-@section Language-Independent Cancellation Functionality
-
-@subsection Requesting Cancellation
-
-@subsection Associating Cleanup Code With Scopes
-
-@subsection Controlling Cancellation Within Scopes
-
-@subsection Defined Cancellation Sequence
-
-@subsection List of Cancellation Points
-
diff --git a/doc/posix1003.1/posix1003_1.texi b/doc/posix1003.1/posix1003_1.texi
deleted file mode 100644
index 57e07365a4..0000000000
--- a/doc/posix1003.1/posix1003_1.texi
+++ /dev/null
@@ -1,138 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename posix1003_1
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the POSIX 1003.1 Compliance Guide
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS POSIX 1003.1 Compliance Guide (posix1003_1):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS POSIX 1003.1 Compliance Guide
-
-@setchapternewpage odd
-@settitle RTEMS POSIX 1003.1 Compliance Guide
-@titlepage
-@finalout
-
-@title RTEMS POSIX 1003.1 Compliance Guide
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include ch01.texi
-@include ch02.texi
-@include ch03.texi
-@include ch04.texi
-@include ch05.texi
-@include ch06.texi
-@include ch07.texi
-@include ch08.texi
-@include ch09.texi
-@include ch10.texi
-@include ch11.texi
-@include ch12.texi
-@include ch13.texi
-@include ch14.texi
-@include ch15.texi
-@include ch16.texi
-@include ch17.texi
-@include ch18.texi
-@include ch19.texi
-
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top posix1003_1
-
-This is the online version of the RTEMS POSIX 1003.1 Compliance Guide.
-
-@menu
-* Preface::
-* General::
-* Terminology and General Requirements::
-* Process Primitives::
-* Process Environment::
-* Files and Directories::
-* Input and Output Primitives::
-* Device- and Class-Specific Functions::
-* Language-Specific Services for the C Programming Language::
-* System Databases::
-* Data Interchange Format::
-* Synchronization::
-* Memory Management::
-* Execution Scheduling::
-* Clocks and Timers::
-* Message Passing::
-* Thread Management::
-* Thread-Specific Data::
-* Thread Cancellation::
-* Compliance Summary::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, Overall Summary, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/posix1003.1/preface.texi b/doc/posix1003.1/preface.texi
deleted file mode 100644
index f14a9b58a6..0000000000
--- a/doc/posix1003.1/preface.texi
+++ /dev/null
@@ -1,20 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, General, Top, Top
-@end ifinfo
-
-@unnumbered Preface
-
-This document lists the functions, constant, macros, feature flags,
-and types defined in the POSIX 1003.1 standard. Each section in
-this document corresponds to a section in the 1003.1 standard
-and the implementation status of the items required by the standard
-are listed.
-
diff --git a/doc/posix1003.1/summarize b/doc/posix1003.1/summarize
deleted file mode 100755
index fc8631894a..0000000000
--- a/doc/posix1003.1/summarize
+++ /dev/null
@@ -1,199 +0,0 @@
-#! /bin/sh
-#
-# Generate the summary chapter
-#
-# $Id$
-#
-
-echo "@c"
-echo "@c DO NOT EDIT -- AUTOMATICALLY GENERATED!!!"
-echo "@c"
-echo
-echo "@chapter Compliance Summary"
-echo
-
-wc2()
-{
- pattern=$1
- shift
- grep "${pattern}" $* | wc -l
-}
-
-wc3()
-{
- pattern=$1
- filter=$2
- shift ; shift
- grep "${pattern}" $* | grep "${filter}" | wc -l
-}
-
-# adds the numbers passed on the command line
-addit()
-{
- sumx=0
- for x in $*
- do
- sumx=`expr $sumx + $x`
- done
- echo $sumx
-}
-
-summarize_chapter()
-{
- echo
- if [ $# -eq 1 ] ; then
- grep "^@chapter" $1 | \
- sed -e "s/^.chapter/@section/" \
- -e "s/$/ Chapter/"
- else
- echo "@section Overall Summary"
- fi
-
- echo
-
- # functions
-
- functions_total=`wc2 "()" $*`
- functions_implemented=` wc3 "()" "Implemented" $*`
- functions_unimplemented=` wc3 "()" "Unimplemented" $*`
- functions_unmplementable=`wc3 "()" "Unimplementable" $*`
- functions_partial=` wc3 "()" "Partial Implementation" $*`
- functions_dummy=` wc3 "()" "Dummy Implementation" $*`
- functions_untested=` wc3 "()" "Untested Implementation" $*`
-
- functions_sum=`addit ${functions_implemented} \
- ${functions_unimplemented} ${functions_unmplementable} \
- ${functions_partial} ${functions_dummy} \
- ${functions_untested}`
-
- # data types
-
- datatypes_total=`wc2 "Type," $*`
- datatypes_implemented=` wc3 "Type," "Implemented" $*`
- datatypes_unimplemented=` wc3 "Type," "Unimplemented" $*`
- datatypes_unmplementable=`wc3 "Type," "Unimplementable" $*`
- datatypes_partial=` wc3 "Type," "Partial Implementation" $*`
- datatypes_dummy=` wc3 "Type," "Dummy Implementation" $*`
- datatypes_untested=` wc3 "Type," "Untested Implementation" $*`
-
- datatypes_sum=`addit ${datatypes_implemented} \
- ${datatypes_unimplemented} ${datatypes_unmplementable} \
- ${datatypes_partial} ${datatypes_dummy} \
- ${datatypes_untested}`
-
- # feature flags
-
- features_total=`wc2 "Feature Flag," $*`
- features_implemented=` wc3 "Feature Flag," "Implemented" $*`
- features_unimplemented=` wc3 "Feature Flag," "Unimplemented" $*`
- features_unmplementable=`wc3 "Feature Flag," "Unimplementable" $*`
- features_partial=` wc3 "Feature Flag," "Partial Implementation" $*`
- features_dummy=` wc3 "Feature Flag," "Dummy Implementation" $*`
- features_untested=` wc3 "Feature Flag," "Untested Implementation" $*`
-
- features_sum=`addit ${features_implemented} \
- ${features_unimplemented} ${features_unmplementable} \
- ${features_partial} ${features_dummy} \
- ${features_untested}`
-
- # constants
-
- constants_total=`wc2 "Constant," $*`
- constants_implemented=` wc3 "Constant," "Implemented" $*`
- constants_unimplemented=` wc3 "Constant," "Unimplemented" $*`
- constants_unmplementable=`wc3 "Constant," "Unimplementable" $*`
- constants_partial=` wc3 "Constant," "Partial Implementation" $*`
- constants_dummy=` wc3 "Constant," "Dummy Implementation" $*`
- constants_untested=` wc3 "Constant," "Untested Implementation" $*`
-
- constants_sum=`addit ${constants_implemented} \
- ${constants_unimplemented} ${constants_unmplementable} \
- ${constants_partial} ${constants_dummy} \
- ${constants_untested}`
-
- # Now print the reports
-
- echo "@example"
- echo "Functions:"
- echo " Total Number : ${functions_total}"
- echo " Implemented : ${functions_implemented}"
- echo " Unimplemented : ${functions_unimplemented}"
- echo " Unimplementable : ${functions_unmplementable}"
- echo " Partial : ${functions_partial}"
- echo " Dummy : ${functions_dummy}"
- echo " Untested : ${functions_untested}"
- echo "@end example"
- echo
- if [ ${functions_sum} -ne ${functions_total} ] ; then
- echo "@sp 1"
- echo "@center @b{FUNCTION COUNTS DO NOT ADD UP!!}"
- echo "@sp 1"
- fi
-
- echo "@example"
- echo "Data Types:"
- echo " Total Number : ${datatypes_total}"
- echo " Implemented : ${datatypes_implemented}"
- echo " Unimplemented : ${datatypes_unimplemented}"
- echo " Unimplementable : ${datatypes_unmplementable}"
- echo " Partial : ${datatypes_partial}"
- echo " Dummy : ${datatypes_dummy}"
- echo " Untested : ${datatypes_untested}"
- echo "@end example"
- echo
- if [ ${datatypes_sum} -ne ${datatypes_total} ] ; then
- echo "@sp 1"
- echo "@center @b{DATA TYPE COUNTS DO NOT ADD UP!!}"
- echo "@sp 1"
- fi
-
- echo "@example"
- echo "Feature Flags:"
- echo " Total Number : ${features_total}"
- echo " Implemented : ${features_implemented}"
- echo " Unimplemented : ${features_unimplemented}"
- echo " Unimplementable : ${features_unmplementable}"
- echo " Partial : ${features_partial}"
- echo " Dummy : ${features_dummy}"
- echo " Untested : ${features_untested}"
- echo "@end example"
- echo
- if [ ${features_sum} -ne ${features_total} ] ; then
- echo "@sp 1"
- echo "@center @b{FEATURE FLAG COUNTS DO NOT ADD UP!!}"
- echo "@sp 1"
- fi
-
- echo "@example"
- echo "Constants:"
- echo " Total Number : ${constants_total}"
- echo " Implemented : ${constants_implemented}"
- echo " Unimplemented : ${constants_unimplemented}"
- echo " Unimplementable : ${constants_unmplementable}"
- echo " Partial : ${constants_partial}"
- echo " Dummy : ${constants_dummy}"
- echo " Untested : ${constants_untested}"
- echo "@end example"
- echo
- if [ ${constants_sum} -ne ${constants_total} ] ; then
- echo "@sp 1"
- echo "@center @b{CONSTANT COUNTS DO NOT ADD UP!!}"
- echo "@sp 1"
- fi
-}
-
-chapters="ch01.t ch02.t ch03.t ch04.t ch05.t ch06.t ch07.t ch08.t \
- ch09.t ch10.t ch11.t ch12.t ch13.t ch14.t ch15.t ch16.t ch17.t ch18.t"
-
-# go through the chapters one at a time
-for chapter in ${chapters}
-do
- summarize_chapter $chapter
- echo "@page"
-done
-
-# now generate the overall summary
-summarize_chapter ${chapters}
-
-
-
diff --git a/doc/posix_users/Makefile b/doc/posix_users/Makefile
deleted file mode 100644
index fe57b61ea4..0000000000
--- a/doc/posix_users/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=posix_users
-DISTRIBUTION_LEVEL=public
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi
-
-FILES= clock.texi cond.texi key.texi mutex.texi $(PROJECT).texi preface.texi \
- sched.texi signal.texi thread.texi $(COMMON_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs $(PROJECT)
- cp $(PROJECT) $(PROJECT)-* $(INFO_INSTALL)
- #cp $(PROJECT) $(INFO_INSTALL)
-
-posix_users: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- -cd .. ; gmake headers
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-
-clean:
- rm -f *.o $(PROG) *.txt core *.html
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-* _*
-
diff --git a/doc/posix_users/base.texi b/doc/posix_users/base.texi
deleted file mode 100644
index 34d1e75af2..0000000000
--- a/doc/posix_users/base.texi
+++ /dev/null
@@ -1,98 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Mutex Manager, Mutex Manager Introduction, Preface, Top
-@end ifinfo
-@chapter Mutex Manager
-@ifinfo
-@menu
-* Mutex Manager Introduction::
-* Mutex Manager Background::
-* Mutex Manager Operations::
-* Mutex Manager Directives::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Mutex Manager Introduction, Mutex Manager Background, Mutex Manager, Mutex Manager
-@end ifinfo
-@section Introduction
-
-The mutex manager ...
-
-The directives provided by the mutex manager are:
-
-@itemize @bullet
-@item @code{sigaddset} -
-@item @code{sigdelset} -
-@item @code{sigfillset} -
-@item @code{sigismember} -
-@item @code{sigemptyset} -
-@item @code{sigaction} -
-@item @code{pthread_kill} -
-@item @code{pthread_sigmask} -
-@item @code{kill} -
-@item @code{sigwait} -
-@end itemize
-
-@ifinfo
-@node Mutex Manager Background, Mutex Manager Operations, Mutex Manager Introduction, Mutex Manager
-@end ifinfo
-@section Background
-
-@ifinfo
-@node Mutex Manager Operations, Mutex Manager Directives, Mutex Manager Background, Mutex Manager
-@end ifinfo
-@section Operations
-
-@ifinfo
-@node Mutex Manager Directives, sigaddset, Mutex Manager Operations, Mutex Manager
-@end ifinfo
-@section Directives
-@ifinfo
-@menu
-* sigaddset::
-* sigdelset::
-* sigfillset::
-* sigismember::
-* sigemptyset::
-* sigaction::
-* pthread_kill::
-* pthread_sigmask::
-* kill::
-* sigwait::
-@end menu
-@end ifinfo
-
-This section details the mutex manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@ifinfo
-@node sigaddset, sigdelset, Mutex Manager Directives, Mutex Manager Directives
-@end ifinfo
-@subsection sigaddset
-
-@subheading CALLING SEQUENCE:
-
-@example
-int sigaddset(
- sigset_t *set,
- int signo
-);
-@end example
-
-@subheading STATUS CODES:
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/posix_users/clock.texi b/doc/posix_users/clock.texi
deleted file mode 100644
index d2f7e1e492..0000000000
--- a/doc/posix_users/clock.texi
+++ /dev/null
@@ -1,264 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Clock Manager, Clock Manager Introduction, pthread_getspecific, Top
-@end ifinfo
-@chapter Clock Manager
-@ifinfo
-@menu
-* Clock Manager Introduction::
-* Clock Manager Background::
-* Clock Manager Operations::
-* Clock Manager Directives::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Clock Manager Introduction, Clock Manager Background, Clock Manager, Clock Manager
-@end ifinfo
-@section Introduction
-
-The clock manager ...
-
-The directives provided by the clock manager are:
-
-@itemize @bullet
-@item @code{clock_gettime} -
-@item @code{clock_settime} -
-@item @code{clock_getres} -
-@item @code{nanosleep} -
-@item @code{time} -
-@end itemize
-
-@ifinfo
-@node Clock Manager Background, Clock Manager Operations, Clock Manager Introduction, Clock Manager
-@end ifinfo
-@section Background
-
-@ifinfo
-@node Clock Manager Operations, Clock Manager Directives, Clock Manager Background, Clock Manager
-@end ifinfo
-@section Operations
-
-@ifinfo
-@node Clock Manager Directives, clock_gettime, Clock Manager Operations, Clock Manager
-@end ifinfo
-@section Directives
-@ifinfo
-@menu
-* clock_gettime::
-* clock_settime::
-* clock_getres::
-* sleep::
-* nanosleep::
-* time::
-@end menu
-@end ifinfo
-
-This section details the clock manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@ifinfo
-@node clock_gettime, clock_settime, Clock Manager Directives, Clock Manager Directives
-@end ifinfo
-@subsection clock_gettime
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int clock_gettime(
- clockid_t clock_id,
- struct timespec *tp
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The tp pointer parameter is invalid.
-
-@item EINVAL
-The clock_id specified is invalid.
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node clock_settime, clock_getres, clock_gettime, Clock Manager Directives
-@end ifinfo
-@subsection clock_settime
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int clock_settime(
- clockid_t clock_id,
- const struct timespec *tp
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The tp pointer parameter is invalid.
-
-@item EINVAL
-The clock_id specified is invalid.
-
-@item EINVAL
-The contents of the tp structure are invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node clock_getres, sleep, clock_settime, Clock Manager Directives
-@end ifinfo
-@subsection clock_getres
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int clock_getres(
- clockid_t clock_id,
- struct timespec *res
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The res pointer parameter is invalid.
-
-@item EINVAL
-The clock_id specified is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If res is NULL, then the resolution is not returned.
-
-@page
-@ifinfo
-@node sleep, nanosleep, clock_getres, Clock Manager Directives
-@end ifinfo
-@subsection sleep
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-unsigned int sleep(
- unsigned int seconds
-);
-@end example
-
-@subheading STATUS CODES:
-
-This routine returns the number of unslept seconds.
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This call is interruptible by a signal.
-
-@page
-@ifinfo
-@node nanosleep, time, sleep, Clock Manager Directives
-@end ifinfo
-@subsection nanosleep
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int nanosleep(
- const struct timespec *rqtp,
- struct timespec *rmtp
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINTR
-The routine was interrupted by a signal.
-
-@item EAGAIN
-The requested sleep period specified negative seconds or nanoseconds.
-
-@item EINVAL
-The requested sleep period specified an invalid number for the nanoseconds
-field.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This call is interruptible by a signal.
-
-@page
-@ifinfo
-@node time, Scheduler Manager, nanosleep, Clock Manager Directives
-@end ifinfo
-@subsection nanosleep
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <time.h>
-
-int time(
- time_t *tloc
-);
-@end example
-
-@subheading STATUS CODES:
-
-This routine returns the number of seconds since the Epoch.
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/posix_users/cond.texi b/doc/posix_users/cond.texi
deleted file mode 100644
index e9c8abf460..0000000000
--- a/doc/posix_users/cond.texi
+++ /dev/null
@@ -1,386 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Condition Variable Manager, Condition Variable Manager Introduction, pthread_mutex_getprioceiling, Top
-@end ifinfo
-@chapter Condition Variable Manager
-@ifinfo
-@menu
-* Condition Variable Manager Introduction::
-* Condition Variable Manager Background::
-* Condition Variable Manager Operations::
-* Condition Variable Manager Directives::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Condition Variable Manager Introduction, Condition Variable Manager Background, Condition Variable Manager, Condition Variable Manager
-@end ifinfo
-@section Introduction
-
-The condition variable manager ...
-
-The directives provided by the condition variable manager are:
-
-@itemize @bullet
-@item @code{pthread_condattr_init} -
-@item @code{pthread_condattr_destroy} -
-@item @code{pthread_condattr_setpshared} -
-@item @code{pthread_condattr_getpshared} -
-@item @code{pthread_cond_init} -
-@item @code{pthread_cond_destroy} -
-@item @code{pthread_cond_signal} -
-@item @code{pthread_cond_broadcast} -
-@item @code{pthread_cond_wait} -
-@item @code{pthread_cond_timedwait} -
-@end itemize
-
-@ifinfo
-@node Condition Variable Manager Background, Condition Variable Manager Operations, Condition Variable Manager Introduction, Condition Variable Manager
-@end ifinfo
-@section Background
-
-@ifinfo
-@node Condition Variable Manager Operations, Condition Variable Manager Directives, Condition Variable Manager Background, Condition Variable Manager
-@end ifinfo
-@section Operations
-
-@ifinfo
-@node Condition Variable Manager Directives, pthread_condattr_init, Condition Variable Manager Operations, Condition Variable Manager
-@end ifinfo
-@section Directives
-@ifinfo
-@menu
-* pthread_condattr_init::
-* pthread_condattr_destroy::
-* pthread_condattr_setpshared::
-* pthread_condattr_getpshared::
-* pthread_cond_init::
-* pthread_cond_destroy::
-* pthread_cond_signal::
-* pthread_cond_broadcast::
-* pthread_cond_wait::
-* pthread_cond_timedwait::
-@end menu
-@end ifinfo
-
-This section details the condition variable manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@ifinfo
-@node pthread_condattr_init, pthread_condattr_destroy, Condition Variable Manager Directives, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_condattr_init
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_condattr_init(
- pthread_condattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item ENOMEM
-Insufficient memory is available to initialize the condition variable
-attributes object.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_condattr_destroy, pthread_condattr_setpshared, pthread_condattr_init, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_condattr_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_condattr_destroy(
- pthread_condattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute object specified is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_condattr_setpshared, pthread_condattr_getpshared, pthread_condattr_destroy, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_condattr_setpshared
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_condattr_setpshared(
- pthread_condattr_t *attr,
- int pshared
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_condattr_getpshared, pthread_cond_init, pthread_condattr_setpshared, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_condattr_getpshared
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_condattr_getpshared(
- const pthread_condattr_t *attr,
- int *pshared
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
-@page
-@ifinfo
-@node pthread_cond_init, pthread_cond_destroy, pthread_condattr_getpshared, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_cond_init
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_init(
- pthread_cond_t *cond,
- const pthread_condattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EAGAIN
-The system lacked a resource other than memory necessary to create the
-initialize the condition variable object.
-
-@item ENOMEM
-Insufficient memory is available to initialize the condition variable object.
-
-@item EBUSY
-The specified condition variable has already been initialized.
-
-@item EINVAL
-The specified attribute value is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_cond_destroy, pthread_cond_signal, pthread_cond_init, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_cond_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_destroy(
- pthread_cond_t *cond
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable is invalid.
-
-@item EBUSY
-The specified condition variable is currently in use.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_cond_signal, pthread_cond_broadcast, pthread_cond_destroy, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_cond_signal
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_signal(
- pthread_cond_t *cond
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable is not valid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine should not be invoked from a handler from an asynchronous signal
-handler or an interrupt service routine.
-
-@page
-@ifinfo
-@node pthread_cond_broadcast, pthread_cond_wait, pthread_cond_signal, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_cond_broadcast
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_broadcast(
- pthread_cond_t *cond
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable is not valid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-This routine should not be invoked from a handler from an asynchronous signal
-handler or an interrupt service routine.
-
-@page
-@ifinfo
-@node pthread_cond_wait, pthread_cond_timedwait, pthread_cond_broadcast, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_cond_wait
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_wait(
- pthread_cond_t *cond,
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable or mutex is not initialized OR different
-mutexes were specified for concurrent pthread_cond_wait() and
-pthread_cond_timedwait() operations on the same condition variable OR
-the mutex was not owned by the current thread at the time of the call.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_cond_timedwait, Key Manager, pthread_cond_wait, Condition Variable Manager Directives
-@end ifinfo
-@subsection pthread_cond_timedwait
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_cond_timedwait(
- pthread_cond_t *cond,
- pthread_mutex_t *mutex,
- const struct timespec *abstime
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified condition variable or mutex is not initialized OR different
-mutexes were specified for concurrent pthread_cond_wait() and
-pthread_cond_timedwait() operations on the same condition variable OR
-the mutex was not owned by the current thread at the time of the call.
-
-@item ETIMEDOUT
-The specified time has elapsed without the condition variable being
-satisfied.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/posix_users/key.texi b/doc/posix_users/key.texi
deleted file mode 100644
index 16196b6116..0000000000
--- a/doc/posix_users/key.texi
+++ /dev/null
@@ -1,179 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Key Manager, Key Manager Introduction, pthread_cond_timedwait, Top
-@end ifinfo
-@chapter Key Manager
-@ifinfo
-@menu
-* Key Manager Introduction::
-* Key Manager Background::
-* Key Manager Operations::
-* Key Manager Directives::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Key Manager Introduction, Key Manager Background, Key Manager, Key Manager
-@end ifinfo
-@section Introduction
-
-The key manager ...
-
-The directives provided by the key manager are:
-
-@itemize @bullet
-@item @code{pthread_key_create} -
-@item @code{pthread_key_delete} -
-@item @code{pthread_setspecific} -
-@item @code{pthread_getspecific} -
-@end itemize
-
-@ifinfo
-@node Key Manager Background, Key Manager Operations, Key Manager Introduction, Key Manager
-@end ifinfo
-@section Background
-
-@ifinfo
-@node Key Manager Operations, Key Manager Directives, Key Manager Background, Key Manager
-@end ifinfo
-@section Operations
-
-@ifinfo
-@node Key Manager Directives, pthread_key_create, Key Manager Operations, Key Manager
-@end ifinfo
-@section Directives
-@ifinfo
-@menu
-* pthread_key_create::
-* pthread_key_delete::
-* pthread_setspecific::
-* pthread_getspecific::
-@end menu
-@end ifinfo
-
-This section details the key manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@ifinfo
-@node pthread_key_create, pthread_key_delete, Key Manager Directives, Key Manager Directives
-@end ifinfo
-@subsection pthread_key_create
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_key_create(
- pthread_key_t *key,
- void (*destructor)( void * )
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EAGAIN
-There were not enough resources available to create another key.
-
-@item ENOMEM
-Insufficient memory exists to create the key.
-
-@end table
-
-@page
-@ifinfo
-@node pthread_key_delete, pthread_setspecific, pthread_key_create, Key Manager Directives
-@end ifinfo
-@subsection pthread_key_delete
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_key_delete(
- pthread_key_t key,
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The key was invalid
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_setspecific, pthread_getspecific, pthread_key_delete, Key Manager Directives
-@end ifinfo
-@subsection pthread_setspecific
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_setspecific(
- pthread_key_t key,
- const void *value
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The specified key is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_getspecific, Clock Manager, pthread_setspecific, Key Manager Directives
-@end ifinfo
-@subsection pthread_getspecific
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-void *pthread_getspecific(
- pthread_key_t key
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item NULL
-There is no thread-specific data associated with the specified key.
-
-@item non-NULL
-The data associated with the specified key.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/posix_users/mutex.texi b/doc/posix_users/mutex.texi
deleted file mode 100644
index 16cbe6467f..0000000000
--- a/doc/posix_users/mutex.texi
+++ /dev/null
@@ -1,642 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Mutex Manager, Mutex Manager Introduction, alarm, Top
-@end ifinfo
-@chapter Mutex Manager
-@ifinfo
-@menu
-* Mutex Manager Introduction::
-* Mutex Manager Background::
-* Mutex Manager Operations::
-* Mutex Manager Directives::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Mutex Manager Introduction, Mutex Manager Background, Mutex Manager, Mutex Manager
-@end ifinfo
-@section Introduction
-
-The mutex manager ...
-
-The directives provided by the mutex manager are:
-
-@itemize @bullet
-@item @code{pthread_mutexattr_init} -
-@item @code{pthread_mutexattr_destroy} -
-@item @code{pthread_mutexattr_setprotocol} -
-@item @code{pthread_mutexattr_getprotocol} -
-@item @code{pthread_mutexattr_setprioceiling} -
-@item @code{pthread_mutexattr_getprioceiling} -
-@item @code{pthread_mutexattr_setpshared} -
-@item @code{pthread_mutexattr_getpshared} -
-@item @code{pthread_mutex_init} -
-@item @code{pthread_mutex_destroy} -
-@item @code{pthread_mutex_lock} -
-@item @code{pthread_mutex_trylock} -
-@item @code{pthread_mutex_timedlock} -
-@item @code{pthread_mutex_unlock} -
-@item @code{pthread_mutex_setprioceiling} -
-@item @code{pthread_mutex_getprioceiling} -
-@end itemize
-
-@ifinfo
-@node Mutex Manager Background, Mutex Manager Operations, Mutex Manager Introduction, Mutex Manager
-@end ifinfo
-@section Background
-
-@ifinfo
-@node Mutex Manager Operations, Mutex Manager Directives, Mutex Manager Background, Mutex Manager
-@end ifinfo
-@section Operations
-
-@ifinfo
-@node Mutex Manager Directives, pthread_mutexattr_init, Mutex Manager Operations, Mutex Manager
-@end ifinfo
-@section Directives
-@ifinfo
-@menu
-* pthread_mutexattr_init::
-* pthread_mutexattr_destroy::
-* pthread_mutexattr_setprotocol::
-* pthread_mutexattr_getprotocol::
-* pthread_mutexattr_setprioceiling::
-* pthread_mutexattr_getprioceiling::
-* pthread_mutexattr_setpshared::
-* pthread_mutexattr_getpshared::
-* pthread_mutex_init::
-* pthread_mutex_destroy::
-* pthread_mutex_lock::
-* pthread_mutex_trylock::
-* pthread_mutex_timedlock::
-* pthread_mutex_unlock::
-* pthread_mutex_setprioceiling::
-* pthread_mutex_getprioceiling::
-@end menu
-@end ifinfo
-
-This section details the mutex manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@ifinfo
-@node pthread_mutexattr_init, pthread_mutexattr_destroy, Mutex Manager Directives, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutexattr_init
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_init(
- pthread_mutexattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutexattr_destroy, pthread_mutexattr_setprotocol, pthread_mutexattr_init, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutexattr_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_destroy(
- pthread_mutexattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutexattr_setprotocol, pthread_mutexattr_getprotocol, pthread_mutexattr_destroy, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutexattr_setprotocol
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_setprotocol(
- pthread_mutexattr_t *attr,
- int protocol
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The protocol argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutexattr_getprotocol, pthread_mutexattr_setprioceiling, pthread_mutexattr_setprotocol, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutexattr_getprotocol
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_getprotocol(
- pthread_mutexattr_t *attr,
- int *protocol
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The protocol pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling, pthread_mutexattr_getprotocol, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutexattr_setprioceiling
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_setprioceiling(
- pthread_mutexattr_t *attr,
- int prioceiling
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The prioceiling argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutexattr_getprioceiling, pthread_mutexattr_setpshared, pthread_mutexattr_setprioceiling, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutexattr_getprioceiling
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_getprioceiling(
- const pthread_mutexattr_t *attr,
- int *prioceiling
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The prioceiling pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutexattr_setpshared, pthread_mutexattr_getpshared, pthread_mutexattr_getprioceiling, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutexattr_setpshared
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_setpshared(
- pthread_mutexattr_t *attr,
- int pshared
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The pshared argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutexattr_getpshared, pthread_mutex_init, pthread_mutexattr_setpshared, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutexattr_getpshared
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutexattr_getpshared(
- const pthread_mutexattr_t *attr,
- int *pshared
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The pshared pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutex_init, pthread_mutex_destroy, pthread_mutexattr_getpshared, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutex_init
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_init(
- pthread_mutex_t *mutex,
- const pthread_mutexattr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified protocol is invalid.
-
-@item EAGAIN
-The system lacked the necessary resources to initialize another mutex.
-
-@item ENOMEM
-Insufficient memory exists to initialize the mutex.
-
-@item EBUSY
-Attempted to reinialize the object reference by mutex, a previously
-initialized, but not yet destroyed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutex_destroy, pthread_mutex_lock, pthread_mutex_init, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutex_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_destroy(
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@item EBUSY
-Attempted to destroy the object reference by mutex, while it is locked or
-referenced by another thread.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_destroy, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutex_lock
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_lock(
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@item EINVAL
-The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
-priority of the calling thread is higher than the current priority
-ceiling.
-
-@item EDEADLK
-The current thread already owns the mutex.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutex_trylock, pthread_mutex_timedlock, pthread_mutex_lock, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutex_trylock
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_trylock(
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@item EINVAL
-The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
-priority of the calling thread is higher than the current priority
-ceiling.
-
-@item EDEADLK
-The current thread already owns the mutex.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutex_timedlock, pthread_mutex_unlock, pthread_mutex_trylock, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutex_timedlock
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-#include <time.h>
-
-int pthread_mutex_timedlock(
- pthread_mutex_t *mutex,
- const struct timespec *timeout
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@item EINVAL
-The nanoseconds field of timeout is invalid.
-
-@item EINVAL
-The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
-priority of the calling thread is higher than the current priority
-ceiling.
-
-@item EDEADLK
-The current thread already owns the mutex.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
-@page
-@ifinfo
-@node pthread_mutex_unlock, pthread_mutex_setprioceiling, pthread_mutex_timedlock, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutex_unlock
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_unlock(
- pthread_mutex_t *mutex
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The specified mutex is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutex_setprioceiling, pthread_mutex_getprioceiling, pthread_mutex_unlock, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutex_setprioceiling
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_setprioceiling(
- pthread_mutex_t *mutex,
- int prioceiling,
- int *oldceiling
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The oldceiling pointer parameter is invalid.
-
-@item EINVAL
-The prioceiling parameter is an invalid priority.
-
-@item EINVAL
-The specified mutex is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_mutex_getprioceiling, Condition Variable Manager, pthread_mutex_setprioceiling, Mutex Manager Directives
-@end ifinfo
-@subsection pthread_mutex_getprioceiling
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_mutex_getprioceiling(
- pthread_mutex_t *mutex,
- int *prioceiling
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The prioceiling pointer parameter is invalid.
-
-@item EINVAL
-The specified mutex is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/posix_users/posix_users.texi b/doc/posix_users/posix_users.texi
deleted file mode 100644
index 7686b2cb40..0000000000
--- a/doc/posix_users/posix_users.texi
+++ /dev/null
@@ -1,126 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename posix_users
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the C User's Guide
-@c
-
-@c Joel's Questions
-@c
-@c 1. Why does paragraphindent only impact makeinfo?
-@c 2. Why does paragraphindent show up in HTML?
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Posix API User's Guide: (posix_users). Posix API User's Guide Plan
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c variable substitution info:
-@c
-@c @set LANGUAGE C
-@c the language is @value{LANGUAGE}
-@c NOTE: don't use underscore in the name
-@c
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS POSIX API User's Guide
-
-@setchapternewpage odd
-@settitle RTEMS POSIX API User's Guide
-@titlepage
-@finalout
-
-@title RTEMS POSIX API User's Guide
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include thread.texi
-@include signal.texi
-@include mutex.texi
-@include cond.texi
-@include key.texi
-@include clock.texi
-@include sched.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top posix_users
-
-This is the online version of the RTEMS POSIX API User's Guide
-
-@menu
-* Preface::
-* Thread Manager::
-* Signal Manager::
-* Mutex Manager::
-* Condition Variable Manager::
-* Key Manager::
-* Clock Manager::
-* Scheduler Manager::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, sched_yield, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/posix_users/preface.texi b/doc/posix_users/preface.texi
deleted file mode 100644
index bf1653109c..0000000000
--- a/doc/posix_users/preface.texi
+++ /dev/null
@@ -1,24 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, Thread Manager, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-This is the user's guide for the POSIX API support for RTEMS.
-
-We intend for this manual to only be a listing of the API. Please
-refer to the ISO/IEC 9945-1 @i{Information Technology -
-Portable Operating System Interface (POSIX) - Part 1: System
-Application Program Interface (API) [C Language]} for the specific
-functionality and behavior of the services.
-
-In addition, much of the POSIX API standard is actually implemented
-in the newlib ANSI C Library. Please refer to documentation on
-newlib for more information on what it supplies.
diff --git a/doc/posix_users/sched.texi b/doc/posix_users/sched.texi
deleted file mode 100644
index c37c24964d..0000000000
--- a/doc/posix_users/sched.texi
+++ /dev/null
@@ -1,228 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Scheduler Manager, Scheduler Manager Introduction, time, Top
-@end ifinfo
-@chapter Scheduler Manager
-@ifinfo
-@menu
-* Scheduler Manager Introduction::
-* Scheduler Manager Background::
-* Scheduler Manager Operations::
-* Scheduler Manager Directives::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Scheduler Manager Introduction, Scheduler Manager Background, Scheduler Manager, Scheduler Manager
-@end ifinfo
-@section Introduction
-
-The scheduler manager ...
-
-The directives provided by the scheduler manager are:
-
-@itemize @bullet
-@item @code{sched_get_priority_min} -
-@item @code{sched_get_priority_max} -
-@item @code{sched_rr_get_interval} -
-@item @code{sched_yield} -
-@end itemize
-
-@ifinfo
-@node Scheduler Manager Background, Priority, Scheduler Manager Introduction, Scheduler Manager
-@end ifinfo
-@section Background
-@ifinfo
-@menu
-* Priority::
-* Scheduling Policies::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Priority, Scheduling Policies, Scheduler Manager Background, Scheduler Manager Background
-@end ifinfo
-@subsection Priority
-
-In the RTEMS implementation of the POSIX API, the priorities range from
-the low priority of sched_get_priority_min() to the highest priority of
-sched_get_priority_max(). Numerically higher values represent higher
-priorities.
-
-@ifinfo
-@node Scheduling Policies, Scheduler Manager Operations, Priority, Scheduler Manager Background
-@end ifinfo
-@subsection Scheduling Policies
-
-The following scheduling policies are available:
-
-@table @b
-@item SCHED_FIFO
-Priority-based, preemptive scheduling with no timeslicing. This is equivalent
-to what is called "manual round-robin" scheduling.
-
-@item SCHED_RR
-Priority-based, preemptive scheduling with timeslicing. Time quantums are
-maintained on a per-thread basis and are not reset at each context switch.
-Thus, a thread which is preempted and subsequently resumes execution will
-attempt to complete the unused portion of its time quantum.
-
-@item SCHED_OTHER
-Priority-based, preemptive scheduling with timeslicing. Time quantums are
-maintained on a per-thread basis and are reset at each context switch.
-
-@item SCHED_SPORADIC
-Priority-based, preemptive scheduling utilizing three additional parameters:
-budget, replenishment period, and low priority. Under this policy, the
-thread is allowed to execute for "budget" amount of time before its priority
-is lowered to "low priority". At the end of each replenishment period,
-the thread resumes its initial priority and has its budget replenished.
-
-@end table
-
-@ifinfo
-@node Scheduler Manager Operations, Scheduler Manager Directives, Scheduling Policies, Scheduler Manager
-@end ifinfo
-@section Operations
-
-@ifinfo
-@node Scheduler Manager Directives, sched_get_priority_min, Scheduler Manager Operations, Scheduler Manager
-@end ifinfo
-@section Directives
-@ifinfo
-@menu
-* sched_get_priority_min::
-* sched_get_priority_max::
-* sched_rr_get_interval::
-* sched_yield::
-@end menu
-@end ifinfo
-
-This section details the scheduler manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@ifinfo
-@node sched_get_priority_min, sched_get_priority_max, Scheduler Manager Directives, Scheduler Manager Directives
-@end ifinfo
-@subsection sched_get_priority_min
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sched.h>
-
-int sched_get_priority_min(
- int policy
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The indicated policy is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sched_get_priority_max, sched_rr_get_interval, sched_get_priority_min, Scheduler Manager Directives
-@end ifinfo
-@subsection sched_get_priority_max
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sched.h>
-
-int sched_get_priority_max(
- int policy
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EINVAL
-The indicated policy is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sched_rr_get_interval, sched_yield, sched_get_priority_max, Scheduler Manager Directives
-@end ifinfo
-@subsection sched_rr_get_interval
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sched.h>
-
-int sched_rr_get_interval(
- pid_t pid,
- struct timespec *interval
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item ESRCH
-The indicated process id is invalid.
-
-@item EINVAL
-The specified interval pointer parameter is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sched_yield, Command and Variable Index, sched_rr_get_interval, Scheduler Manager Directives
-@end ifinfo
-@subsection sched_yield
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sched.h>
-
-int sched_yield( void );
-@end example
-
-@subheading STATUS CODES:
-
-This routine always returns zero to indicate success.
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/posix_users/signal.texi b/doc/posix_users/signal.texi
deleted file mode 100644
index 6d90b8cfff..0000000000
--- a/doc/posix_users/signal.texi
+++ /dev/null
@@ -1,691 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Signal Manager, Signal Manager Introduction, pthread_getschedparam, Top
-@end ifinfo
-@chapter Signal Manager
-@ifinfo
-@menu
-* Signal Manager Introduction::
-* Signal Manager Background::
-* Signal Manager Operations::
-* Signal Manager Directives::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Signal Manager Introduction, Signal Manager Background, Signal Manager, Signal Manager
-@end ifinfo
-@section Introduction
-
-The signal manager ...
-
-The directives provided by the signal manager are:
-
-@itemize @bullet
-@item @code{sigaddset} -
-@item @code{sigdelset} -
-@item @code{sigfillset} -
-@item @code{sigismember} -
-@item @code{sigemptyset} -
-@item @code{sigaction} -
-@item @code{pthread_kill} -
-@item @code{sigprocmask} -
-@item @code{pthread_sigmask} -
-@item @code{kill} -
-@item @code{sigpending} -
-@item @code{sigsuspend} -
-@item @code{pause} -
-@item @code{sigwait} -
-@item @code{sigwaitinfo} -
-@item @code{sigtimedwait} -
-@item @code{sigqueue} -
-@item @code{alarm} -
-@end itemize
-
-@ifinfo
-@node Signal Manager Background, Signal Delivery, Signal Manager Introduction, Signal Manager
-@end ifinfo
-@section Background
-@ifinfo
-@menu
-* Signal Delivery::
-@end menu
-@end ifinfo
-
-
-@ifinfo
-@node Signal Delivery, Signal Manager Operations, Signal Manager Background, Signal Manager Background
-@end ifinfo
-@subsection Signal Delivery
-
-Signals directed at a thread are delivered to the specified thread.
-
-Signals directed at a process are delivered to a thread which is selected
-based on the following algorithm:
-
-@enumerate
-@item If the action for this signal is currently SIG_IGN, then the signal
-is simply ignored.
-
-@item If the currently executing thread has the signal unblocked, then
-the signal is delivered to it.
-
-@item If any threads are currently blocked waiting for this signal
-(sigwait()), then the signal is delivered to the highest priority
-thread waiting for this signal.
-
-@item If any other threads are willing to accept delivery of the signal, then
-the signal is delivered to the highest priority thread of this set. In the
-event, multiple threads of the same priority are willing to accept this
-signal, then priority is given first to ready threads, then to threads
-blocked on calls which may be interrupted, and finally to threads blocked
-on non-interruptible calls.
-
-@item In the event the signal still can not be delivered, then it is left
-pending. The first thread to unblock the signal (sigprocmask() or
-pthread_sigprocmask()) or to wait for this signal (sigwait()) will be
-the recipient of the signal.
-
-@end enumerate
-
-@ifinfo
-@node Signal Manager Operations, Signal Manager Directives, Signal Delivery, Signal Manager
-@end ifinfo
-@section Operations
-
-@ifinfo
-@node Signal Manager Directives, sigaddset, Signal Manager Operations, Signal Manager
-@end ifinfo
-@section Directives
-@ifinfo
-@menu
-* sigaddset::
-* sigdelset::
-* sigfillset::
-* sigismember::
-* sigemptyset::
-* sigaction::
-* pthread_kill::
-* sigprocmask::
-* pthread_sigmask::
-* kill::
-* sigpending::
-* sigsuspend::
-* pause::
-* sigwait::
-* sigwaitinfo::
-* sigtimedwait::
-* sigqueue::
-* alarm::
-@end menu
-@end ifinfo
-
-This section details the signal manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@ifinfo
-@node sigaddset, sigdelset, Signal Manager Directives, Signal Manager Directives
-@end ifinfo
-@subsection sigaddset
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigaddset(
- sigset_t *set,
- int signo
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigdelset, sigfillset, sigaddset, Signal Manager Directives
-@end ifinfo
-@subsection sigdelset
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigdelset(
- sigset_t *set,
- int signo
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigfillset, sigismember, sigdelset, Signal Manager Directives
-@end ifinfo
-@subsection sigfillset
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigfillset(
- sigset_t *set
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigismember, sigemptyset, sigfillset, Signal Manager Directives
-@end ifinfo
-@subsection sigismember
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigismember(
- const sigset_t *set,
- int signo
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigemptyset, sigaction, sigismember, Signal Manager Directives
-@end ifinfo
-@subsection sigemptyset
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigemptyset(
- sigset_t *set
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigaction, pthread_kill, sigemptyset, Signal Manager Directives
-@end ifinfo
-@subsection sigaction
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigaction(
- int sig,
- const struct sigaction *act,
- struct sigaction *oact
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@item ENOTSUP
-Realtime Signals Extension option not supported.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-The signal number cannot be SIGKILL.
-@page
-@ifinfo
-@node pthread_kill, sigprocmask, sigaction, Signal Manager Directives
-@end ifinfo
-@subsection pthread_kill
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int pthread_kill(
- pthread_t thread,
- int sig
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item ESRCH
-The thread indicated by the parameter thread is invalid.
-
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigprocmask, pthread_sigmask, pthread_kill, Signal Manager Directives
-@end ifinfo
-@subsection sigprocmask
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigprocmask(
- int how,
- const sigset_t *set,
- sigset_t *oset
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
-@page
-@ifinfo
-@node pthread_sigmask, kill, sigprocmask, Signal Manager Directives
-@end ifinfo
-@subsection pthread_sigmask
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int pthread_sigmask(
- int how,
- const sigset_t *set,
- sigset_t *oset
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
-@page
-@ifinfo
-@node kill, sigpending, pthread_sigmask, Signal Manager Directives
-@end ifinfo
-@subsection kill
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <sys/types.h>
-#include <signal.h>
-
-int kill(
- pid_t pid,
- int sig
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@item EPERM
-Process does not have permission to send the signal to any receiving process.
-
-@item ESRCH
-The process indicated by the parameter pid is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
-@page
-@ifinfo
-@node sigpending, sigsuspend, kill, Signal Manager Directives
-@end ifinfo
-@subsection sigpending
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigpending(
- const sigset_t *set
-);
-@end example
-
-@subheading STATUS CODES:
-
-On error, this routine returns -1 and sets errno to one of the following:
-
-@table @b
-@item EFAULT
-Invalid address for set.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigsuspend, pause, sigpending, Signal Manager Directives
-@end ifinfo
-@subsection sigsuspend
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigsuspend(
- const sigset_t *sigmask
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-Returns -1 and sets errno.
-
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pause, sigwait, sigsuspend, Signal Manager Directives
-@end ifinfo
-@subsection pause
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int pause( void );
-@end example
-
-@subheading STATUS CODES:
-@table @b
-Returns -1 and sets errno.
-
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigwait, sigwaitinfo, pause, Signal Manager Directives
-@end ifinfo
-@subsection sigwait
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigwait(
- const sigset_t *set,
- int *sig
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-Invalid argument passed.
-
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigwaitinfo, sigtimedwait, sigwait, Signal Manager Directives
-@end ifinfo
-@subsection sigwaitinfo
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigwaitinfo(
- const sigset_t *set,
- siginfo_t *info
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node sigtimedwait, sigqueue, sigwaitinfo, Signal Manager Directives
-@end ifinfo
-@subsection sigtimedwait
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigtimedwait(
- const sigset_t *set,
- siginfo_t *info,
- const struct timespec *timeout
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EAGAIN
-Timed out while waiting for the specified signal set.
-
-@item EINVAL
-Nanoseconds field of the timeout argument is invalid.
-
-@item EINTR
-Signal interrupted this function.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If timeout is NULL, then the thread will wait forever for the specified
-signal set.
-
-@page
-@ifinfo
-@node sigqueue, alarm, sigtimedwait, Signal Manager Directives
-@end ifinfo
-@subsection sigqueue
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-int sigqueue(
- pid_t pid,
- int signo,
- const union sigval value
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EAGAIN
-No resources available to queue the signal. The process has already
-queued SIGQUEUE_MAX signals that are still pending at the receiver
-or the systemwide resource limit has been exceeded.
-
-@item EINVAL
-The value of the signo argument is an invalid or unsupported signal
-number.
-
-@item EPERM
-The process does not have the appropriate privilege to send the signal
-to the receiving process.
-
-@item ESRCH
-The process pid does not exist.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
-@page
-@ifinfo
-@node alarm, Mutex Manager, sigqueue, Signal Manager Directives
-@end ifinfo
-@subsection alarm
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <signal.h>
-
-unsigned int alarm(
- unsigned int seconds
-);
-@end example
-
-@subheading STATUS CODES:
-
-If there was a previous alarm() request with time remaining, then this routine
-returns the number of seconds until that outstanding alarm would have fired.
-If no previous alarm() request was outstanding, then zero is returned.
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-
diff --git a/doc/posix_users/thread.texi b/doc/posix_users/thread.texi
deleted file mode 100644
index bb223a37ed..0000000000
--- a/doc/posix_users/thread.texi
+++ /dev/null
@@ -1,1025 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Thread Manager, Thread Manager Introduction, Preface, Top
-@end ifinfo
-@chapter Thread Manager
-@ifinfo
-@menu
-* Thread Manager Introduction::
-* Thread Manager Background::
-* Thread Manager Operations::
-* Thread Manager Directives::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Thread Manager Introduction, Thread Manager Background, Thread Manager, Thread Manager
-@end ifinfo
-@section Introduction
-
-The thread manager ...
-
-The directives provided by the thread manager are:
-
-@itemize @bullet
-@item @code{pthread_attr_init} -
-@item @code{pthread_attr_destroy} -
-@item @code{pthread_attr_setdetachstate} -
-@item @code{pthread_attr_getdetachstate} -
-@item @code{pthread_attr_setstacksize} -
-@item @code{pthread_attr_getstacksize} -
-@item @code{pthread_attr_setstackaddr} -
-@item @code{pthread_attr_getstackaddr} -
-@item @code{pthread_attr_setscope} -
-@item @code{pthread_attr_getscope} -
-@item @code{pthread_attr_setinheritsched} -
-@item @code{pthread_attr_getinheritsched} -
-@item @code{pthread_attr_setschedpolicy} -
-@item @code{pthread_attr_getschedpolicy} -
-@item @code{pthread_attr_setschedparam} -
-@item @code{pthread_attr_getschedparam} -
-@item @code{pthread_create} -
-@item @code{pthread_exit} -
-@item @code{pthread_detach} -
-@item @code{pthread_join} -
-@item @code{pthread_self} -
-@item @code{pthread_equal} -
-@item @code{pthread_once} -
-@item @code{pthread_setschedparam} -
-@item @code{pthread_getschedparam} -
-@end itemize
-
-@ifinfo
-@node Thread Manager Background, Thread Attributes, Thread Manager Introduction, Thread Manager
-@end ifinfo
-@section Background
-@ifinfo
-@menu
-* Thread Attributes::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Thread Attributes, Thread Manager Operations, Thread Manager Background, Thread Manager Background
-@end ifinfo
-@subsection Thread Attributes
-
-Thread attributes are utilized only at thread creation time.
-
-@table @b
-@item stack address
-is the address of the optionally user specified stack area for this thread.
-If this value is NULL, then RTEMS allocates the memory for the thread stack
-from the RTEMS Workspace Area. Otherwise, this is the user specified
-address for the memory to be used for the thread's stack. Each thread must
-have a distinct stack area. Each processor family has different alignment
-rules which should be followed.
-
-@item stack size
-is the minimum desired size for this thread's stack area.
-If the size of this area as specified by the stack size attribute
-is smaller than the minimum for this processor family and the stack
-is not user specified, then RTEMS will automatically allocate a
-stack of the minimum size for this processor family.
-
-@item contention scope
-specifies the scheduling contention scope. RTEMS only supports the
-PTHREAD_SCOPE_PROCESS scheduling contention scope.
-
-@item scheduling inheritance
-specifies whether a user specified or the scheduling policy and
-parameters of the currently executing thread are to be used. When
-this is PTHREAD_INHERIT_SCHED, then the scheduling policy and
-parameters of the currently executing thread are inherited by
-the newly created thread.
-
-@item scheduling policy and parameters
-specify the manner in which the thread will contend for the processor.
-The scheduling parameters are interpreted based on the specified policy.
-All policies utilize the thread priority parameter.
-
-@end table
-
-@ifinfo
-@node Thread Manager Operations, Thread Manager Directives, Thread Attributes, Thread Manager
-@end ifinfo
-@section Operations
-
-@ifinfo
-@node Thread Manager Directives, pthread_attr_init, Thread Manager Operations, Thread Manager
-@end ifinfo
-@section Directives
-@ifinfo
-@menu
-* pthread_attr_init::
-* pthread_attr_destroy::
-* pthread_attr_setdetachstate::
-* pthread_attr_getdetachstate::
-* pthread_attr_setstacksize::
-* pthread_attr_getstacksize::
-* pthread_attr_setstackaddr::
-* pthread_attr_getstackaddr::
-* pthread_attr_setscope::
-* pthread_attr_getscope::
-* pthread_attr_setinheritsched::
-* pthread_attr_getinheritsched::
-* pthread_attr_setschedpolicy::
-* pthread_attr_getschedpolicy::
-* pthread_attr_setschedparam::
-* pthread_attr_getschedparam::
-* pthread_create::
-* pthread_exit::
-* pthread_detach::
-* pthread_join::
-* pthread_self::
-* pthread_equal::
-* pthread_once::
-* pthread_setschedparam::
-* pthread_getschedparam::
-@end menu
-@end ifinfo
-
-This section details the thread manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@ifinfo
-@node pthread_attr_init, pthread_attr_destroy, Thread Manager Directives, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_init
-
-@subheading CALLING SEQUENCE:
-
-
-@example
-#include <pthread.h>
-
-int pthread_attr_init(
- pthread_attr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_destroy, pthread_attr_setdetachstate, pthread_attr_init, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_destroy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_destroy(
- pthread_attr_t *attr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_setdetachstate, pthread_attr_getdetachstate, pthread_attr_destroy, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_setdetachstate
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setdetachstate(
- pthread_attr_t *attr,
- int detachstate
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The detachstate argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_getdetachstate, pthread_attr_setstacksize, pthread_attr_setdetachstate, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_getdetachstate
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getdetachstate(
- const pthread_attr_t *attr,
- int *detachstate
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The detatchstate pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_setstacksize, pthread_attr_getstacksize, pthread_attr_getdetachstate, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_setstacksize
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setstacksize(
- pthread_attr_t *attr,
- size_t stacksize
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If the specified stacksize is below the minimum required for this CPU, then
-the stacksize will be set to the minimum for this CPU.
-
-@page
-@ifinfo
-@node pthread_attr_getstacksize, pthread_attr_setstackaddr, pthread_attr_setstacksize, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_getstacksize
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getstacksize(
- const pthread_attr_t *attr,
- size_t *stacksize
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The stacksize pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_setstackaddr, pthread_attr_getstackaddr, pthread_attr_getstacksize, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_setstackaddr
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setstackaddr(
- pthread_attr_t *attr,
- void *stackaddr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_getstackaddr, pthread_attr_setscope, pthread_attr_setstackaddr, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_getstackaddr
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getstackaddr(
- const pthread_attr_t *attr,
- void **stackaddr
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The stackaddr pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_setscope, pthread_attr_getscope, pthread_attr_getstackaddr, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_setscope
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setscope(
- pthread_attr_t *attr,
- int contentionscope
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The contention scope specified is not valid.
-
-@item ENOTSUP
-The contention scope specified (PTHREAD_SCOPE_SYSTEM) is not supported.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_getscope, pthread_attr_setinheritsched, pthread_attr_setscope, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_getscope
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getscope(
- const pthread_attr_t *attr,
- int *contentionscope
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The contentionscope pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_setinheritsched, pthread_attr_getinheritsched, pthread_attr_getscope, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_setinheritsched
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setinheritsched(
- pthread_attr_t *attr,
- int inheritsched
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified scheduler inheritance argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_getinheritsched, pthread_attr_setschedpolicy, pthread_attr_setinheritsched, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_getinheritsched
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getinheritsched(
- const pthread_attr_t *attr,
- int *inheritsched
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The inheritsched pointer argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_setschedpolicy, pthread_attr_getschedpolicy, pthread_attr_getinheritsched, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_setschedpolicy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setschedpolicy(
- pthread_attr_t *attr,
- int policy
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item ENOTSUP
-The specified scheduler policy argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_getschedpolicy, pthread_attr_setschedparam, pthread_attr_setschedpolicy, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_getschedpolicy
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getschedpolicy(
- const pthread_attr_t *attr,
- int *policy
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified scheduler policy argument pointer is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_setschedparam, pthread_attr_getschedparam, pthread_attr_getschedpolicy, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_setschedparam
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_setschedparam(
- pthread_attr_t *attr,
- const struct sched_param param
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified scheduler parameter argument is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_attr_getschedparam, pthread_create, pthread_attr_setschedparam, Thread Manager Directives
-@end ifinfo
-@subsection pthread_attr_getschedparam
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_attr_getschedparam(
- const pthread_attr_t *attr,
- struct sched_param *param
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item EINVAL
-The attribute pointer argument is invalid.
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The specified scheduler parameter argument pointer is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_create, pthread_exit, pthread_attr_getschedparam, Thread Manager Directives
-@end ifinfo
-@subsection pthread_create
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_create(
- pthread_t *thread,
- const pthread_attr_t *attr,
- void (*start_routine)( void * ),
- void *arg
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-
-@item EINVAL
-The attribute set is not initialized.
-
-@item EINVAL
-The user specified a stack address and the size of the area was not
-large enough to meet this processor's minimum stack requirements.
-
-@item EINVAL
-The specified scheduler inheritance policy was invalid.
-
-@item ENOTSUP
-The specified contention scope was PTHREAD_SCOPE_PROCESS.
-
-@item EINVAL
-The specified thread priority was invalid.
-
-@item EINVAL
-The specified scheduling policy was invalid.
-
-@item EINVAL
-The scheduling policy was SCHED_SPORADIC and the specified replenishment
-period is less than the initial budget.
-
-@item EINVAL
-The scheduling policy was SCHED_SPORADIC and the specified low priority
-is invalid.
-
-@item EAGAIN
-The system lacked the necessary resources to create another thread, or the
-self imposed limit on the total number of threads in a process
-PTHREAD_THREAD_MAX would be exceeded.
-
-@item EINVAL
-Invalid argument passed.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_exit, pthread_detach, pthread_create, Thread Manager Directives
-@end ifinfo
-@subsection pthread_exit
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-void pthread_exit(
- void *status
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item NONE
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_detach, pthread_join, pthread_exit, Thread Manager Directives
-@end ifinfo
-@subsection pthread_detach
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_detach(
- pthread_t thread
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item ESRCH
-The thread specified is invalid.
-
-@item EINVAL
-The thread specified is not a joinable thread.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If any threads have previously joined with the specified thread, then they
-will remain joined with that thread. Any subsequent calls to pthread_join
-on the specified thread will fail.
-
-@page
-@ifinfo
-@node pthread_join, pthread_self, pthread_detach, Thread Manager Directives
-@end ifinfo
-@subsection pthread_join
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_join(
- pthread_t thread,
- void **value_ptr
-);
-@end example
-
-@subheading STATUS CODES:
-@table @b
-@item ESRCH
-The thread specified is invalid.
-
-@item EINVAL
-The thread specified is not a joinable thread.
-
-@item EDEADLK
-A deadlock was detected or thread is the calling thread.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-If any threads have previously joined with the specified thread, then they
-will remain joined with that thread. Any subsequent calls to pthread_join
-on the specified thread will fail.
-
-If value_ptr is NULL, then no value is returned.
-
-@page
-@ifinfo
-@node pthread_self, pthread_equal, pthread_join, Thread Manager Directives
-@end ifinfo
-@subsection pthread_self
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-pthread_t pthread_self( void );
-@end example
-
-@subheading STATUS CODES:
-
-This routine returns the id of the calling thread.
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_equal, pthread_once, pthread_self, Thread Manager Directives
-@end ifinfo
-@subsection pthread_equal
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_equal(
- pthread_t t1,
- pthread_t t2
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item zero
-The thread ids are not equal.
-
-@item non-zero
-The thread ids are equal.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-The behavior is undefined if the thread IDs are not valid.
-
-@page
-@ifinfo
-@node pthread_once, pthread_setschedparam, pthread_equal, Thread Manager Directives
-@end ifinfo
-@subsection pthread_once
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-pthread_once_t once_control = PTHREAD_ONCE_INIT;
-
-int pthread_once(
- pthread_once_t *once_control,
- void (*init_routine)(void)
-);
-@end example
-
-@subheading STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_setschedparam, pthread_getschedparam, pthread_once, Thread Manager Directives
-@end ifinfo
-@subsection pthread_setschedparam
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_setschedparam(
- pthread_t thread,
- int policy,
- struct sched_param *param
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The scheduling parameters indicated by the parameter param is invalid.
-
-@item EINVAL
-The value specified by policy is invalid.
-
-@item EINVAL
-The scheduling policy was SCHED_SPORADIC and the specified replenishment
-period is less than the initial budget.
-
-@item EINVAL
-The scheduling policy was SCHED_SPORADIC and the specified low priority
-is invalid.
-
-@item ESRCH
-The thread indicated was invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-@page
-@ifinfo
-@node pthread_getschedparam, Signal Manager, pthread_setschedparam, Thread Manager Directives
-@end ifinfo
-@subsection pthread_getschedparam
-
-@subheading CALLING SEQUENCE:
-
-@example
-#include <pthread.h>
-
-int pthread_getschedparam(
- pthread_t thread,
- int *policy,
- struct sched_param *param
-);
-@end example
-
-@subheading STATUS CODES:
-
-@table @b
-@item EINVAL
-The policy pointer argument is invalid.
-
-@item EINVAL
-The scheduling parameters pointer argument is invalid.
-
-@item ESRCH
-The thread indicated by the parameter thread is invalid.
-
-@end table
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
diff --git a/doc/relnotes/Makefile b/doc/relnotes/Makefile
deleted file mode 100644
index ac1d9db641..0000000000
--- a/doc/relnotes/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=relnotes
-DISTRIBUTION_LEVEL=internal
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi
-
-FILES=install.texi intro.texi probrep.texi relnotes.texi status.texi
-
-info: dirs relnotes
- cp $(PROJECT) $(wildcard $(PROJECT)-*) $(INFO_INSTALL)
-
-relnotes: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs
- -mkdir -p $(WWW_INSTALL)/relnotes
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core *.html
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f relnotes relnotes-* _*
-
diff --git a/doc/relnotes/install.texi b/doc/relnotes/install.texi
deleted file mode 100644
index 7b213e534e..0000000000
--- a/doc/relnotes/install.texi
+++ /dev/null
@@ -1,176 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Installation Procedure, Installation Procedure Introduction, Introduction Documentation, Top
-@end ifinfo
-@chapter Installation Procedure
-@ifinfo
-@menu
-* Installation Procedure Introduction::
-* Installation Procedure RTEMS FTP Site Organization::
-* Installation Procedure Unarchiving the RTEMS and GNU Components::
-* Installation Procedure Installing a Cross-Development GNU Toolset::
-* Installation Procedure Installing RTEMS::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Installation Procedure Introduction, Installation Procedure RTEMS FTP Site Organization, Installation Procedure, Installation Procedure
-@end ifinfo
-@section Introduction
-
-This chapter describes the process of installing and
-configuring RTEMS and a cross-development environment based on
-freely available tools and libraries.
-
-@ifinfo
-@node Installation Procedure RTEMS FTP Site Organization, Installation Procedure Unarchiving the RTEMS and GNU Components, Installation Procedure Introduction, Installation Procedure
-@end ifinfo
-@section RTEMS FTP Site Organization
-
-RTEMS is distributed only via anonymous ftp.
-
-This section will discuss how to navigate the RTEMS
-ftp site and unarchive the files in the RTEMS and GNU package
-distributions. All example commands will be given in a shell
-independent fashion unless otherwise noted.
-
-Throughout the rest of this manual
-<RTEMS_distribution> will be used as the parent of components
-within the RTEMS distribution. For persons using the ftp
-distribution found on the primary ftp site for RTEMS,
-<RTEMS_distribution> is
-ftp://ftp.OARcorp.com/oarcorp/rtems/@value{RELEASE}.
-
-The archive files for RTEMS Release @value{RELEASE} are found
-under the directory <RTEMS_distribution>. This directory
-contains the files which comprise this relase as well as any
-patches which may be required for other tools.
-
-The complete source code and documentation set for
-the C language implementation of RTEMS is provided.
-
-Documentation other than this on-line version is available to
-OAR support customers. Please contact OAR for more information.
-
-@ifinfo
-@node Installation Procedure Unarchiving the RTEMS and GNU Components, Installation Procedure Installing a Cross-Development GNU Toolset, Installation Procedure RTEMS FTP Site Organization, Installation Procedure
-@end ifinfo
-@section Unarchiving the RTEMS and GNU Components
-
-Many of the components of the RTEMS release are
-"tarred, zipped" files and have the .tar.gz or .tgz extension.
-The GNU zip package is required to unarchives these files on the
-RTEMS ftp site. If this package is not installed, the source
-can be found in the files
-ftp://prep.ai.mit.edu/pub/gnu/gzip-1.2.4.shar or
-ftp://prep.ai.mit.edu/pub/gnu/gzip-1.2.4.tar. It may be
-restored using a command similar to the following:
-
-@example
-@group
-tar xvf gzip-1.2.4.tar
-
-OR
-
-sh gzip-1.2.4.shar
-@end group
-@end example
-
-This will create a subdirectory gzip-1.2.4 in the
-current directory. Please examine the files README and INSTALL
-and follow the instructions provided there.
-
-[Note: The GNU tools follow a standard packaging procedure
-They will unarchive into a directory based on the package name and version
-number. For detailed instructions on compilation and
-installation of the GNU tools, please refer to the instructions for
-each GNU tool.]
-
-Files which have been "tarred, zipped" (i.e. .tar.gz
-or .tgz extension) may be unarchived with a command similar to
-one of the following:
-
-@example
-@group
-gzcat <file>.tgz | tar xvof -
-
-OR
-
-gunzip -c <file>.tgz | tar xvof -
-
-OR
-
-gtar xzvf <file>.tgz
-@end group
-@end example
-
-NOTE: gunzip -c is equivalent to gzcat, while gtar is GNU tar.
-
-Given that the necessary utility programs are
-installed, any of the above commands will extract the contents
-of <file>.tar.gz into the current directory. All of the RTEMS
-components will be extracted into the subdirectory rtems-@value{RELEASE}.
-To view the contents of a component without restoring any files,
-use a command similar to the following:
-
-@example
-@group
-gzcat <file>.tgz | tar tvf -
-@end group
-@end example
-
-@ifinfo
-@node Installation Procedure Installing a Cross-Development GNU Toolset, Installation Procedure Installing RTEMS, Installation Procedure Unarchiving the RTEMS and GNU Components, Installation Procedure
-@end ifinfo
-@section Installing a Cross-Development GNU Toolset
-
-This sections describes how to build and install the
-FSF GNU tools for use as a cross-compilation system. These
-tools are used by the RTEMS developers. Every effort has been
-made to make these instructions accurate and complete. However,
-it is recommended that the individual doing the installation
-read the appropriate installation notes for each of the tools in
-the cross toolset. This will help insure that there are no
-special requirements for a particular host.
-
-If the host and target processors are the same, then
-it may be possible to use the host development tools. An
-example of this scenario is using a SPARC based workstation
-to develop an RTEMS application for the SPARC processor. Although
-the native toolset is useable in this scenario, it is ultimately
-more desirable to build a toolset specifically for the embedded environment.
-
-Instructions for building a cross environment using the GNU
-tools is provided in the crossgcc FAQ available from ftp.cygnus.com
-in /pub/embedded/crossgcc. It is recommended that the user following
-these instructions.
-
-After the cross development toolset has been built
-and installed, it will be necessary to modify the environment of
-each RTEMS application developer to reflect at least the path of
-the newly installed cross development toolset.
-
-The documentation for the FSF GNU and Cygnus tools is
-formatted using TeX. The RTEMS developers use TeX 3.14t3 to
-format the manuals for their own use. This document does not
-contain instructions on the acquisition or installation of TeX
-and supporting tools.
-
-NOTE: For "UNIX" processors, the native compiler binary utilities
-should be used.
-
-@ifinfo
-@node Installation Procedure Installing RTEMS, Development Environment Status, Installation Procedure Installing a Cross-Development GNU Toolset, Installation Procedure
-@end ifinfo
-@section Installing RTEMS
-
-For instructions on building and installing RTEMS, please refer to
-the file README.configure in the source distribution.
-
diff --git a/doc/relnotes/intro.texi b/doc/relnotes/intro.texi
deleted file mode 100644
index f8395d7994..0000000000
--- a/doc/relnotes/intro.texi
+++ /dev/null
@@ -1,217 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Introduction, Introduction Supporting Tools, Top, Top
-@end ifinfo
-@chapter Introduction
-@ifinfo
-@menu
-* Introduction Supporting Tools::
-* Introduction Documentation::
-@end menu
-@end ifinfo
-
-This document describes the contents, installation
-procedure, and current status of Release @value{RELEASE} of the RTEMS
-executive. An installation procedure is provided which
-describes the steps necessary to load and configure the RTEMS
-environment, including the GNU Development Environment and the
-Cygnus NEWLIB ANSI C Library, on a host computer. The status of
-the RTEMS environment is given, which includes supported
-processors and target boards, versions of the GNU utilities
-which were used by the RTEMS developers for this release,
-support libraries status, features which are not implemented,
-and any known existing problems.
-
-This RTEMS release package contains the following general components:
-
-@itemize @bullet
-@item RTEMS C Executive
-
-@item RTEMS C Documentation Set
-
-@item RTEMS NEWLIB ANSI C Library
-
-@item Patches to GNU Development Tools
-
-@end itemize
-
-There is a mailing list dedicated to RTEMS. This is
-a Majordomo style mailing list and may be subscribed to
-by sending a message to rtems-list-request@@OARcorp.com with
-the following line as the body:
-
-@example
-subscribe rtems_user@@your_email_goes_here.com
-@end example
-
-Please replace rtems_user@@your_email_goes_here.com with your
-email address.
-
-@ifinfo
-@node Introduction Supporting Tools, GNU Development Tools, Introduction, Introduction
-@end ifinfo
-@section Supporting Tools
-@ifinfo
-@menu
-* GNU Development Tools::
-* ANSI C Libraries::
-* GNU C Library::
-* Cygnus NEWLIB C Library::
-@end menu
-@end ifinfo
-
-This section discusses the freely available tools and
-libraries which are part of the RTEMS Development Environment.
-None of the tools discussed in this section were developed by
-the RTEMS project, although many do include submissions from the
-project. All of the tools and libraries required to build RTEMS
-are freely available. The home ftp site for most of the non-RTEMS
-specific tools is either prep.ai.mit.edu (18.71.0.38) or
-ftp.cygnus.com (140.174.1.3).
-
-Specifically of interest to embedded systems developers
-using the GNU tools is the crossgcc mailing list. This is
-a Majordomo style mailing list and may be subscribed to
-by sending a message to crossgcc-request@@cygnus.com with
-the following line as the body:
-
-@example
-subscribe rtems_user@@your_email_goes_here.com
-@end example
-
-Please replace rtems_user@@your_email_goes_here.com with your
-email address. The FAQ for crossgcc is in the /pub/embedded/crossgcc
-directory on ftp.cygnus.com (205.180.83.42).
-
-@ifinfo
-@node GNU Development Tools, ANSI C Libraries, Introduction Supporting Tools, Introduction Supporting Tools
-@end ifinfo
-@subsection GNU Development Tools
-
-Numerous GNU tools are used in the RTEMS Development
-Environment including C and Ada compilers, the GNU make program,
-GNU m4, the GNU assembler and binary utilities (linker,
-librarian, etc.), GNU tar, GNU zip, and the GNU debugger. These
-tools are distributed in source form and are all licensed under
-the GNU Public License which allows for unrestricted
-distribution under the condition that source code always be
-available. The Free Software Foundation is officially the
-originator of most of the GNU tools although many individuals
-have contributed to the GNU projects. In keeping with the
-spirit of the GPL, most of the time the GNU tools are
-distributed as source code without executables. It is the
-responsibility of the local site to install each tool. Numerous
-organizations and individuals supply executables for the GNU
-tools. All are required by the terms of the GPL to also make
-the source code available to the end user.
-
-The primary ftp site for the FSF GNU tools is
-prep.ai.mit.edu (18.71.0.38) in the /pub/gnu directory. These
-tools are mirrored on numerous ftp sites.
-
-Intel maintains a toolset for their i960 processor
-family based on the GNU tools referred to as GNU/960. The
-source code for this toolset is available from ftp.intel.com
-(143.185.65.2). [NOTE: The GNU/960 toolset generally includes
-an older version of GCC than that available from the FSF. When
-the FSF version of GNU C is significantly newer than that in the
-GNU/960 release, the RTEMS developers replace the GCC in the
-GNU/960 toolset with the FSF release.]
-
-Cygnus maintains an ftp site -- ftp.cygnus.com
-(205.180.83.42) -- which contains a source code which appeals to
-embedded developers. Of especial interest on this site are the
-directories /pub/newlib and /pub/embedded.
-
-@ifinfo
-@node ANSI C Libraries, GNU C Library, GNU Development Tools, Introduction Supporting Tools
-@end ifinfo
-@subsection ANSI C Libraries
-
-This section discusses the following freely
-distributable ANSI C Libraries:
-
-@itemize @bullet
-@item GNU C Library, and
-
-@item Cygnus NEWLIB
-@end itemize
-
-No C Library is included in the standard RTEMS
-distribution. It is the responsibility of the user to obtain
-and install a C Library separately.
-
-@ifinfo
-@node GNU C Library, Cygnus NEWLIB C Library, ANSI C Libraries, Introduction Supporting Tools
-@end ifinfo
-@subsection GNU C Library
-
-The GNU C Library is a robust and well-documented C
-Library which is distributed under the terms of the Library GNU
-Public License (LGPL). This library was not designed for use in
-real-time, embedded systems and the resource requirements of
-some of the routines in this library are an obvious indication
-of this. Additionally, this library does not have support for
-reentrancy in the sense that each task in a multitasking system
-could safely invoke every routine in the library. Finally, the
-distribution terms of the LGPL are considered undesirable by
-many embedded systems developers. However, the GNU C Library is
-very complete and is compliant with as many standards as
-possible. Because of this, it may be the only choice for many
-developers.
-
-There is currently no RTEMS support for the GNU C Library.
-
-The primary ftp site for this library is
-prep.ai.mit.edu (18.71.0.38).
-
-@ifinfo
-@node Cygnus NEWLIB C Library, Introduction Documentation, GNU C Library, Introduction Supporting Tools
-@end ifinfo
-@subsection Cygnus NEWLIB C Library
-
-The Cygnus NEWLIB C Library was specifically designed
-for real-time embedded systems. It is a small, reasonably
-documented Library with support for reentrancy. This library is
-a collection of freely distributable and public domain source
-code and is freely distributable with as few restrictions as
-possible placed on the end user.
-
-The primary ftp site for this library is ftp.cygnus.com (205.180.83.42).
-
-@ifinfo
-@node Introduction Documentation, Installation Procedure, Cygnus NEWLIB C Library, Introduction
-@end ifinfo
-@section Documentation
-
-The RTEMS Documentation Set is provided online at http://www.OARcorp.com/
-as reference information for all levels of RTEMS users. The set includes
-the following documents:
-
-@itemize @bullet
-@item C Applications User's Guide
-
-@item Intel i386 Applications Supplement
-
-@item Intel i960CA Applications Supplement
-
-@item Motorola MC68xxx Applications Supplement
-
-@item Hewlett Packard PA-RISC 1.1 Applications Supplement
-
-@item SPARC Applications Supplement
-
-@item Development Environment Guide
-
-@item Release Notes
-@end itemize
-
-The RTEMS documentation set is available in alternate formats to
-support customers.
diff --git a/doc/relnotes/probrep.texi b/doc/relnotes/probrep.texi
deleted file mode 100644
index 5315959d47..0000000000
--- a/doc/relnotes/probrep.texi
+++ /dev/null
@@ -1,62 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-
-
-@ifinfo
-@node RTEMS PROBLEM REPORT, Command and Variable Index, RTEMS Problem Reporting, Top
-@end ifinfo
-@chapter RTEMS PROBLEM REPORT
-
-@example
-
-Customer (Company) Name:
-
-Customer Address:
-
-Contact Name:
-
-Telephone Voice: Fax:
-
-
-
-Product: Version:
-
-Target Processor: Target System:
-
-Host Computer System:
-
-Host Operating System: Version:
-
-
-
-Report Type: Customer Impact:
-
-
-
-[ ] Problem/Error [ ] System is inoperable, cannot proceed
-
-[ ] Enhancement [ ] Must be corrected in the near future
-
-[ ] Inquiry Suggestion [ ] Problem may be avoided until fixed
-
-[ ] Other______________ [ ] Problem is not time critical
-
- [ ] Minor problem
-
-@end example
-
-
-Please provide a detailed description of the
-problem (Attachments including source code, example code,
-makefiles, possible solutions, and any other information
-describing the problem will be appreciated):
-
-
-
-
diff --git a/doc/relnotes/relnotes.texi b/doc/relnotes/relnotes.texi
deleted file mode 100644
index 9a43977419..0000000000
--- a/doc/relnotes/relnotes.texi
+++ /dev/null
@@ -1,119 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename relnotes
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file
-@c
-
-@c Joel's Questions
-@c
-@c 1. Why does paragraphindent only impact makeinfo?
-@c 2. Why does paragraphindent show up in HTML?
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Release Notes: (relnotes). Release Notes
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c variable substitution info:
-@c
-@c @set LANGUAGE C
-@c the language is @value{LANGUAGE}
-@c NOTE: don't use underscore in the name
-@c
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Release Notes
-
-@setchapternewpage odd
-@settitle RTEMS Release Notes
-@titlepage
-@finalout
-
-@title RTEMS Release Notes
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include intro.texi
-@include install.texi
-@include status.texi
-@include probrep.texi
-
-@ifinfo
-@node Top, Introduction, (dir), (dir)
-@top relnotes
-
-This is the online version of the RTEMS Release Notes.
-
-@menu
-* Introduction::
-* Installation Procedure::
-* Development Environment Status::
-* RTEMS PROBLEM REPORT::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, RTEMS PROBLEM REPORT, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/relnotes/status.texi b/doc/relnotes/status.texi
deleted file mode 100644
index 154dd4a55f..0000000000
--- a/doc/relnotes/status.texi
+++ /dev/null
@@ -1,260 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Development Environment Status, Development Environment Status RTEMS Executive Status, Installation Procedure Installing RTEMS, Top
-@end ifinfo
-@chapter Development Environment Status
-@ifinfo
-@menu
-* Development Environment Status RTEMS Executive Status::
-* Development Environment Status Development Environment Status::
-* Development Environment Status Known Problems::
-@end menu
-@end ifinfo
-
-This chapter will describe the current status of
-release version @value{RELEASE} of the RTEMS Development Environment.
-
-@ifinfo
-@node Development Environment Status RTEMS Executive Status, Development Environment Status Development Environment Status, Development Environment Status, Development Environment Status
-@end ifinfo
-@section RTEMS Executive Status
-
-Release @value{RELEASE} of the RTEMS Executive contains support
-for both the classic RTEMS API based on the RTEID specification as well
-as support for POSIX threads and real-time extensions.
-
-The classic RTEMS API has the following managers based upon the RTEID
-specification:
-
-@itemize @bullet
-@item Task
-@item Initialization
-@item Clock
-@item Timer
-@item Interrupt
-@item Fatal Error
-@item Message
-@item Semaphore
-@item Event
-@item Signal
-@item Region
-@item Partition
-@item Dual Ported Memory
-@item I/O
-@item Multiprocessing
-@item Rate Monotonic
-@item User Extensions
-@end itemize
-
-RTEMS also has support for the following managers based upon the POSIX threads
-and real-time extensions:
-
-@itemize @bullet
-@item Thread
-@item Clock
-@item Key
-@item Condition Variable
-@item Mutex
-@item Signal
-@item Scheduler
-@end itemize
-
-This release of the C implementation supports the
-following processors and target boards:
-
-@itemize @bullet
-@item Motorola M68k family
-@itemize -
-@item DY-4 DMV152, SVME153
-@item Motorola IDP
-@item Motorola MVME135, MVME136
-@item Motorola MVME147, MVME147S
-@item Motorola MVME162
-@item EFI 68000 and 68332
-@item Generic 68302
-@item Generic 68360 and 68360 in companion mode with 68040
-@end itemize
-
-@item Intel i386 family
-@itemize -
-@item Force CPU386
-@item Intel i386ex eval board
-@item PC-AT i386 and above (go32)
-@end itemize
-
-@item Intel i960 family
-@itemize -
-@item Cyclone CVME960, CVME961
-@end itemize
-
-@item Hewlett Packard PA-RISC family
-@itemize -
-@item Processor Simulator
-@end itemize
-
-@item PowerPC
-@itemize -
-@item Papyrus (proprietary controller)
-@end itemize
-
-@item SPARC
-@itemize -
-@item ERC32 (space-hardened V7)
-@end itemize
-
-@item MIPS
-@itemize -
-@item P4000 with R4600 or R4650
-@end itemize
-
-@item AMD 29K
-@itemize -
-@item Portsw
-@end itemize
-
-@item UNIX
-@itemize -
-@item Hewlett Packard HPUX (PA-RISC)
-@item Sun Solaris 2.x (SPARC)
-@item Linux (i386)
-@end itemize
-
-@end itemize
-
-Support for the Cygnus NEWLIB Standard C Library is
-provided with this release which may be used on any of the RTEMS
-supported targets. The BSPs only provide support for console
-I/O only using this library. Support for the reentrancy
-capabilities of newlib is provided in the RTEMS distribution.
-
-@ifinfo
-@node Development Environment Status Development Environment Status, Development Environment Status Known Problems, Development Environment Status RTEMS Executive Status, Development Environment Status
-@end ifinfo
-@section Development Environment Status
-
-This section details the versions of the tools used
-to develop and maintain RTEMS @value{RELEASE}:
-
-@itemize @bullet
-@item Cross Tools
-@itemize -
-@item gcc - 2.7.2.2 with rtems patch
-@item binutils - 2.7 with rtems patch
-@item zip - 1.2.4
-@item make - 3.74
-@end itemize
-@end itemize
-
-
-@ifinfo
-@node Development Environment Status Known Problems, Executive Problems, Development Environment Status Development Environment Status, Development Environment Status
-@end ifinfo
-@section Known Problems
-@ifinfo
-@menu
-* Executive Problems::
-* Development Environment Problems::
-* RTEMS Problem Reporting::
-@end menu
-@end ifinfo
-
-Problems which are known to exist at the time of
-release are described in the following sections. These are
-provided as warnings to the user and where possible, workarounds
-are provided until the problem is corrected.
-
-@ifinfo
-@node Executive Problems, Development Environment Problems, Development Environment Status Known Problems, Development Environment Status Known Problems
-@end ifinfo
-@subsection Executive Problems
-
-There are no known bugs in the executive itself.
-
-@ifinfo
-@node Development Environment Problems, RTEMS Problem Reporting, Executive Problems, Development Environment Status Known Problems
-@end ifinfo
-@subsection Development Environment Problems
-
-There are no known major problems with the
-development environment.
-
-@ifinfo
-@node RTEMS Problem Reporting, RTEMS PROBLEM REPORT, Development Environment Problems, Development Environment Status Known Problems
-@end ifinfo
-@subsection RTEMS Problem Reporting
-
-A problem report is provided at the end of this
-document and may be copied by the RTEMS user. Please fill out
-the form completely to assure a speedy response to the problem.
-In filling out the problem report the following instructions
-apply:
-
-@table @code
-@item User Name and Address:
-The full name
-and mailing address of the customer or company where
-correspondence from RTEMS support personnel may be shipped.
-
-@item Contact Name:
-The name of the person with whom
-RTEMS support personnel will correspond with concerning the
-reported problem.
-
-@item Telephone Voice/FAX:
-The telephone numbers which
-will enable RTEMS support personnel to reach the designated
-contact name.
-
-@item Product/Version:
-The RTEMS product and the version that is currently in use.
-
-@item Target Processor/System:
-The processor and board type that is the target.
-
-@item Host Computer System:
-The manufacturer and model
-number of the system on which RTEMS has been installed.
-
-@item Host Operating System/Version:
-The operating system and version under which RTEMS has been installed.
-
-@c @item Report Type:
-@c Check the most appropriate description of the reported problem.
-
-@item Customer Impact:
-Indicate the severity of the impact of the reported problem.
-
-@item Detailed Description:
-A written description of the
-problem including the area of the RTEMS development environment
-where the problem is located and its behavior. Please feel free
-to provide source code listings, makefiles, possible solutions,
-and any other information describing the problem. This
-additional information may be submitted via email or anonymous
-ftp.
-
-Support, training, ports, and custom development are provided
-by On-Line Applications Research Corporation (OAR). Correspondence
-regarding any aspect of RTEMS should be addressed as follows
-(magnetic tapes should be marked: DO NOT X-RAY):
-@end table
-
-@example
-@group
-RTEMS
-On-Line Applications Research Corporation
-4910-L Corporate Drive
-Huntsville, AL 35805
-Voice: (205) 722-9985
-FAX: (205) 722-0985
-EMAIL: rtems@@OARcorp.com
-@end group
-@end example
-
diff --git a/doc/rtems_footer.html b/doc/rtems_footer.html
deleted file mode 100644
index 0dc1758285..0000000000
--- a/doc/rtems_footer.html
+++ /dev/null
@@ -1 +0,0 @@
-<P>Copyright &copy; 1988-1998 <A HREF="http://www.oarcorp.com" target="Text Frame">OAR Corporation</A>
diff --git a/doc/rtems_header.html b/doc/rtems_header.html
deleted file mode 100644
index f201073ba2..0000000000
--- a/doc/rtems_header.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<BODY BGCOLOR="FFFFFF">
-<A HREF="http://www.oarcorp.com" target="Text Frame">
- <IMG align=right BORDER=0 SRC="../oaronly.jpg" ALT="OAR"> </A>
-<H1>RTEMS RTEMS_VERSION On-Line Library</H1>
-<HR>
diff --git a/doc/rtems_support.html b/doc/rtems_support.html
deleted file mode 100644
index 48ba6e6075..0000000000
--- a/doc/rtems_support.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<HTML>
-<HEAD><TITLE>RTEMS RTEMS_VERSION On-Line Library</TITLE></HEAD>
-<BODY BGCOLOR="FFFFFF">
-<A HREF="http://www.oarcorp.com" target="Text Frame">
- <IMG align=right BORDER=0 SRC="oaronly.jpg" ALT="OAR"> </A>
-<H1>RTEMS 4.2.0 On-Line Library</H1>
-<HR>
-<BODY>
-<MENU>
- <LI><A HREF="c_user/index.html">
- RTEMS Applications C User's Guide</A>
- <LI><A HREF="started/index.html">
- Getting Started with RTEMS for C/C++ Users</A>
- <LI><A HREF="started_ada/index.html">
- Getting Started with GNAT/RTEMS</A>
- <LI><A HREF="develenv/index.html">
- RTEMS Development Environment Guide</A>
- <LI><A HREF="posix_users/index.html">
- RTEMS POSIX API User's Guide</A>
- <LI><A HREF="networking/index.html">
- RTEMS Network Supplement</A>
-
-<LI>CPU Supplements
-
- <MENU>
- <LI><A HREF="HELP.html">
- RTEMS AMD 29K Applications Supplement</A>
- <LI><A HREF="HELP.html">
- RTEMS Hitachi SH Applications Supplement</A>
- <LI><A HREF="support/c_i386/index.html">
- RTEMS Intel i386 Applications Supplement</A>
- <LI><A HREF="support/c_i960/index.html">
- RTEMS Intel i960 Applications Supplement</A>
- <LI><A HREF="HELP.html">
- RTEMS MIPS Applications Supplement</A>
- <LI><A HREF="support/c_m68k/index.html">
- RTEMS Motorola MC68xxx Applications Supplement</A>
- <LI><A HREF="support/c_powerpc/index.html">
- RTEMS PowerPC Applications Supplement</A>
- <LI><A HREF="support/c_sparc/index.html">
- RTEMS SPARC Applications Supplement</A>
- <LI><A HREF="support/c_hppa1_1/index.html">
- RTEMS Hewlett Packard PA-RISC Applications Supplement</A>
- <LI><A HREF="HELP.html">RTEMS UNIX Port Applications Supplement</A>
- </MENU>
-</LI>
-
-<LI>GNU Tools Documentation
- <MENU>
- <LI>Cygnus Newlib 1.8.0
- <MENU>
- <LI><A HREF="support/libc/index.html">
- ANSI C Library (libc) Manual</A>
- <LI><A HREF="support/libm/index.html">
- ANSI C Math Library (libm) Manual</A>
- </MENU>
- </LI>
- <LI>EGCS 1.0.2
- <MENU>
- <LI><A HREF="support/cpp/index.html">
- CPP Manual</A>
- <LI><A HREF="support/gcc/index.html">
- GCC Manual</A>
- </MENU>
- </LI>
- </MENU>
-</LI>
-
-</MENU>
-<HR>
-Copyright &copy; 1988-1998 <A HREF="http://www.oarcorp.com" target="Text Frame">OAR Corporation</A>
-</BODY></HTML>
diff --git a/doc/src2html/Makefile b/doc/src2html/Makefile
deleted file mode 100644
index 25bb78f07f..0000000000
--- a/doc/src2html/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=browseable_rtems
-DISTRIBUTION_LEVEL=internal
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi
-
-FILES= clock.texi cond.texi key.texi mutex.texi $(PROJECT).texi preface.texi \
- sched.texi signal.texi thread.texi $(COMMON_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info:
-
-ps:
-
-html: dirs
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- $(SRC2HTML) -d3 RTEMS.src
-
-RTEMS.src:
- sed -e 's/WWW_INSTALL/$(WWW_INSTALL)/' \
- <RTEMS.test >RTEMS.src
-
-clean:
- rm -f RTEMS.src
diff --git a/doc/src2html/RTEMS.test b/doc/src2html/RTEMS.test
deleted file mode 100644
index c99e86cd3b..0000000000
--- a/doc/src2html/RTEMS.test
+++ /dev/null
@@ -1,62 +0,0 @@
-# Comments
-#
-# Copyright (c) 1998, On-Line Applications Research Corporation (OAR)
-#
-# This file configures the src2html tool for the RTEMS source tree.
-#
-# $Id$
-#
-
-## Variables used are:
-## Srctree - The root of the source tree we are processing
-## Htmlroot - The directory where all WWW documents are kept
-## Htmldir - The directory under Htmlroot for this source tree
-## Htmltree - The root of the destination tree for the Html code
-## Newsrctree - The directory in Htmltree to store the new Htmlised code
-## Headers - The directory where we keep information to prepend in some docs
-## Formdir - The place to put the index searching script
-## Dirinfo{} - The list of dirs and the info about the directory
-## Dotdir{} - The directory name with /'s -> .'s
-
-set Srctree /usr1/rtems/rtems-work/c/src/exec/
-#set Htmltree /tmp/www
-set Htmlroot WWW_INSTALL/internal/browseable_rtems
-set Htmldir .
-set Newsrctree . # Comments here too
-# default is . and that is fine for us right now
-#set Headers
-set Formdir /cgi-bin/rtems
-#
-#
-
-dir rtems/src Classic API Source
-dir rtems/inline Classic API Inlines
-dir rtems/headers Classic API Header Files
-
-dir posix/src POSIX API Source
-dir posix/inline POSIX API Inlines
-dir posix/headers POSIX API Base Header Files
-dir posix/sys POSIX API System Header Files
-dir posix/headers POSIX API Internal Header Files
-
-dir sapi/src Non-Standard API Source
-dir sapi/inline Non-Standard API Inlines
-dir sapi/headers Non-Standard API Header Files
-
-dir score/src Super Core Source
-dir score/inline Super Core Inlines
-dir score/headers Super Core Header Files
-dir score/cpu/a29k AMD A29K Port
-dir score/cpu/hppa1.1 HP PA-RISC Port
-dir score/cpu/i386 Intel i386 Port
-dir score/cpu/i960 Intel i960 Port
-dir score/cpu/m68k Motorola m68k Port
-dir score/cpu/mips64orion MIPS64 Port
-dir score/cpu/no_cpu No CPU Example Port
-dir score/cpu/powerpc PowerPC Port
-dir score/cpu/sh Hitachi SH
-dir score/cpu/sparc SPARC Port
-dir score/cpu/unix UNIX Port
-
-
-
diff --git a/doc/started/Makefile b/doc/started/Makefile
deleted file mode 100644
index f5f2edf4d6..0000000000
--- a/doc/started/Makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=started
-DISTRIBUTION_LEVEL=public
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi ../common/setup.texi
-
-GENERATED_FILES= buildc.texi buildrt.texi gdb.texi intro.texi \
- nt.texi require.texi sample.texi
-
-FILES= $(PROJECT).texi versions.texi $(GENERATED_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs $(PROJECT)
- #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL)
- cp $(PROJECT) $(INFO_INSTALL)
-
-$(PROJECT): $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-# run texi2dvi twice to generate the xref's properly.
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
- texi2dvi $(PROJECT).texi
-
-intro.texi: intro.t versions.texi
- $(BMENU) -c -p "Top" \
- -u "Top" \
- -n "Requirements" ${*}.t
-
-require.texi: require.t versions.texi
- $(BMENU) -c -p "EGCS Mailing List" \
- -u "Top" \
- -n "Building the GNU C/C++ Cross Compiler Toolset" ${*}.t
-
-buildc.texi: buildc.t versions.texi
- $(BMENU) -c -p "GNU makeinfo Version Requirements" \
- -u "Top" \
- -n "Building RTEMS" ${*}.t
-
-buildrt.texi: buildrt.t versions.texi
- $(BMENU) -c -p "Running the bit Script" \
- -u "Top" \
- -n "Building the Sample Application" ${*}.t
-
-sample.texi: sample.t versions.texi
- $(BMENU) -c -p "Using the RTEMS configure Script Directly" \
- -u "Top" \
- -n "Building the GNU Debugger" ${*}.t
-
-gdb.texi: gdb.t versions.texi
- $(BMENU) -c -p "Application Executable" \
- -u "Top" \
- -n "Using MS-Windows as a Development Host" ${*}.t
-
-nt.texi: nt.t versions.texi
- $(BMENU) -c -p "GDB for DINK32" \
- -u "Top" \
- -n "" ${*}.t
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- -cp pictures/sfile12c.jpg $(WWW_INSTALL)/$(PROJECT)
- -cp pictures/bit_c.jpg $(WWW_INSTALL)/$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES)
- rm -f *.fixed _*
-
diff --git a/doc/started/buildc.t b/doc/started/buildc.t
deleted file mode 100644
index fee12bf660..0000000000
--- a/doc/started/buildc.t
+++ /dev/null
@@ -1,485 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Building the GNU C/C++ Cross Compiler Toolset
-
-This chapter describes the steps required to acquire the
-source code for a GNU cross compiler toolset, apply
-any required RTEMS specific patches, compile that
-toolset and install it.
-
-@section Create the Archive and Build Directories
-
-Start by making the @code{archive} directory to contain the downloaded
-source code and the @code{tools} directory to be used as a build
-directory. The command sequence to do this is shown
-below:
-
-@example
-mkdir archive
-mkdir tools
-@end example
-
-This will result in an initial directory structure similar to the
-one shown in the following figure:
-
-@example
-@group
-/whatever/prefix/you/choose/
- archive/
- tools/
-
-@end group
-@end example
-
-@c @ifset use-html
-@c @html
-@c <IMG SRC="sfile12c.jpg" WIDTH=417 HEIGHT=178
-@c ALT="Starting Directory Organization">
-@c @end html
-@c @end ifset
-
-@section Get All the Pieces
-
-This section lists the components of an RTEMS cross development system.
-Included are the locations of each component as well as any required RTEMS
-specific patches.
-
-@subheading @value{GCC-VERSION}
-@example
- FTP Site: @value{GCC-FTPSITE}
- Directory: @value{GCC-FTPDIR}
- File: @value{GCC-TAR}
-@ifset use-html
- URL: @href{Download @value{GCC-VERSION},,,ftp://@value{GCC-FTPSITE}@value{GCC-HTTPDIR}}
-@end ifset
-@end example
-
-@subheading @value{BINUTILS-VERSION}
-@example
- FTP Site: @value{BINUTILS-FTPSITE}
- Directory: @value{BINUTILS-FTPDIR}
- File: @value{BINUTILS-TAR}
-@ifset use-html
- URL: @href{Download @value{BINUTILS-VERSION},,,ftp://@value{BINUTILS-FTPSITE}@value{BINUTILS-FTPDIR}/@value{BINUTILS-TAR}}
-@end ifset
-@end example
-
-@subheading @value{NEWLIB-VERSION}
-@example
- FTP Site: @value{NEWLIB-FTPSITE}
- Directory: @value{NEWLIB-FTPDIR}
- File: @value{NEWLIB-TAR}
-@ifset use-html
- URL: @href{Download @value{NEWLIB-VERSION},,,ftp://@value{NEWLIB-FTPSITE}@value{NEWLIB-FTPDIR}/@value{NEWLIB-TAR}}
-@end ifset
-@end example
-
-@subheading @value{RTEMS-VERSION}
-@example
- FTP Site: @value{RTEMS-FTPSITE}
- Directory: @value{RTEMS-FTPDIR}
- File: @value{RTEMS-TAR}
-@ifset use-html
- URL: @href{Download RTEMS components,,,ftp://@value{RTEMS-FTPSITE}@value{RTEMS-FTPDIR}}
-@end ifset
-@end example
-
-@subheading RTEMS Hello World
-@example
- FTP Site: @value{RTEMS-FTPSITE}
- Directory: @value{RTEMS-FTPDIR}
- File: hello_world_c.tgz
-@ifset use-html
- URL: @href{Download RTEMS Hello World,,,ftp://@value{RTEMS-FTPSITE}@value{RTEMS-FTPDIR}/hello_world_c.tgz}
-@end ifset
-@end example
-
-@subheading RTEMS Specific Tool Patches and Scripts
-@example
- FTP Site: @value{RTEMS-FTPSITE}
- Directory: @value{RTEMS-FTPDIR}/c_tools
- File: @value{BUILDTOOLS-TAR}
-@ifset BINUTILS-RTEMSPATCH
- File: @value{BINUTILS-RTEMSPATCH}
-@end ifset
-@ifset NEWLIB-RTEMSPATCH
- File: @value{NEWLIB-RTEMSPATCH}
-@end ifset
-@ifset GCC-RTEMSPATCH
- File: @value{GCC-RTEMSPATCH}
-@end ifset
-@ifset use-html
- URL: @href{Download RTEMS Patches and Scripts,,,ftp://@value{RTEMS-FTPSITE}@value{RTEMS-FTPDIR}/c_tools}
-@end ifset
-@end example
-
-@section Unarchiving the Tools
-
-While in the @code{tools} directory, unpack the compressed
-tar files using the following command sequence:
-
-@example
-cd tools
-tar xzf ../archive/@value{GCC-TAR}
-tar xzf ../archive/@value{BINUTILS-TAR}
-tar xzf ../archive/@value{NEWLIB-TAR}
-tar xzf ../archive/@value{BUILDTOOLS-TAR}
-@end example
-
-After the compressed tar files have been unpacked, the following
-directories will have been created under tools.
-
-@itemize @bullet
-@item @value{BINUTILS-UNTAR}
-@item @value{GCC-UNTAR}
-@item @value{NEWLIB-UNTAR}
-@end itemize
-
-There will also be a set of scripts in the current directory
-which aid in building the tools and RTEMS. They are:
-
-@itemize @bullet
-@item bit
-@item bit_gdb
-@item bit_rtems
-@item common.sh
-@item user.cfg
-@end itemize
-
-When the @code{bit} script is executed later in this process,
-it will automatically create two other subdirectories:
-
-@itemize @bullet
-@item src
-@item build-$@{CPU@}-tools
-@end itemize
-
-Similarly, the @code{bit_gdb} script will create the
-subdirectory @code{build-$@{CPU@}-gdb} and
-the @code{bit_rtems} script will create the
-subdirectory @code{build-$@{CPU@}-rtems}.
-
-The tree should look something like the following figure:
-
-@example
-@group
-/whatever/prefix/you/choose/
- archive/
- @value{GCC-TAR}
- @value{BINUTILS-TAR}
- @value{NEWLIB-TAR}
- @value{RTEMS-TAR}
- @value{BUILDTOOLS-TAR}
-@ifset GCC-RTEMSPATCH
- @value{GCC-RTEMSPATCH}
-@end ifset
-@ifset BINUTILS-RTEMSPATCH
- @value{BINUTILS-RTEMSPATCH}
-@end ifset
-@ifset NEWLIB-RTEMSPATCH
- @value{NEWLIB-RTEMSPATCH}
-@end ifset
- hello_world_c.tgz
- bit
- tools/
- @value{BINUTILS-UNTAR}/
- @value{GCC-UNTAR}/
- @value{NEWLIB-UNTAR}/
- @value{RTEMS-UNTAR}/
- bit
- bit_gdb
- bit_rtems
- common.sh
- user.cfg
-@end group
-@end example
-
-
-@c @ifset use-html
-@c @html
-@c <IMG SRC="bit_c.jpg" WIDTH=816 HEIGHT=267 ALT="Directory Organization">
-@c @end html
-@c @end ifset
-
-@c
-@c Host Specific Notes
-@c
-
-@section Host Specific Notes
-
-@subsection Solaris 2.x
-
-The build scripts are written in "shell". The program @code{/bin/sh}
-on Solaris 2.x is not robust enough to execute these scripts. If you
-are on a Solaris 2.x host, then change the first line of the files
-@code{bit}, @code{bit_gdb}, and @code{bit_rtems} to use the
-@code{/bin/ksh} shell instead.
-
-@subsection Linux
-
-@subsubsection Broken install Program
-
-Certain versions of GNU fileutils include a version of @code{install} which
-does not work properly. Please perform the following test to see if you
-need to upgrade:
-
-@example
-install -c -d /tmp/foo/bar
-@end example
-
-If this does not create the specified directories your install
-program will not install RTEMS properly. You will need to upgrade
-to at least GNU fileutile version 3.16 to resolve this problem.
-
-@c
-@c Reading the Documentation
-@c
-
-@section Reading the Tools Documentation
-
-Each of the tools in the GNU development suite comes with documentation.
-It is in the reader's and tool maintainers' interest that one read the
-documentation before posting a problem to a mailing list or news group.
-
-@c
-@c EGCS patches
-@c
-
-@section Apply RTEMS Patch to EGCS
-
-@ifclear GCC-RTEMSPATCH
-No RTEMS specific patches are required for @value{GCC-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset GCC-RTEMSPATCH
-
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{GCC-UNTAR}
-zcat ../../archive/@value{GCC-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{GCC-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file which is properly applied.
-
-@end ifset
-
-@c
-@c BINUTILS patches
-@c
-
-@section Apply RTEMS Patch to binutils
-
-@ifclear BINUTILS-RTEMSPATCH
-No RTEMS specific patches are required for @value{BINUTILS-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset BINUTILS-RTEMSPATCH
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{BINUTILS-UNTAR}
-zcat ../../archive/@value{BINUTILS-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{BINUTILS-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file which is properly applied.
-
-@end ifset
-
-@c
-@c Newlib patches
-@c
-
-@section Apply RTEMS Patch to newlib
-
-@ifclear NEWLIB-RTEMSPATCH
-No RTEMS specific patches are required for @value{NEWLIB-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset NEWLIB-RTEMSPATCH
-
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{NEWLIB-UNTAR}
-zcat ../../archive/@value{NEWLIB-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{NEWLIB-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file which is properly applied.
-
-@end ifset
-
-@c
-@c Localizing the Configuration
-@c
-
-@section Localizing the Configuration
-
-Edit the @code{user.cfg} file to alter the settings of various
-variables which are used to tailor the build process.
-Each of the variables set in @code{user.cfg} may be modified
-as described below:
-
-@table @code
-@item INSTALL_POINT
-is the location where you wish the GNU C/C++ cross compilation tools for
-RTEMS to be built. It is recommended that the directory chosen to receive
-these tools be named so that it is clear from which egcs distribution it
-was generated and for which target system the tools are to produce code for.
-
-@b{WARNING}: The @code{INSTALL_POINT} should not be a subdirectory
-under the build directory. The build directory will be removed
-automatically upon successful completion of the build procedure.
-
-@item BINUTILS
-is the directory under tools that contains @value{BINUTILS-UNTAR}.
-For example:
-
-@example
-BINUTILS=@value{BINUTILS-UNTAR}
-@end example
-
-@item GCC
-is the directory under tools that contains @value{GCC-UNTAR}.
-For example,
-
-@example
-GCC=@value{GCC-UNTAR}
-@end example
-
-@item NEWLIB
-is the directory under tools that contains @value{NEWLIB-UNTAR}.
-For example:
-
-@example
-NEWLIB=@value{NEWLIB-UNTAR}
-@end example
-
-@item BUILD_DOCS
-is set to "yes" if you want to install documentation.
-For example:
-
-@example
-BUILD_DOCS=yes
-@end example
-
-@item BUILD_OTHER_LANGUAGES
-is set to "yes" if you want to build languages other than C and C++. At
-the current time, this enables Fortan and Objective-C.
-For example:
-
-@example
-BUILD_OTHER_LANGUAGES=yes
-@end example
-
-@b{NOTE:} Based upon the version of the compiler being used, it may not
-be possible to build languages other than C and C++ cross. In many cases,
-the language run-time support libraries are not "multilib'ed". Thus the
-executable code in these libraries will be for the default compiler settings
-and not necessarily be correct for your CPU model.
-
-@item RTEMS
-is the directory under tools that contails @value{RTEMS-UNTAR}.
-
-@item ENABLE_RTEMS_POSIX
-is set to "yes" if you want to enable the RTEMS POSIX API support.
-At this time, this feature is not supported by the UNIX ports of RTEMS
-and is forced to "no" for those targets. This corresponds to the
-@code{configure} option @code{--enable-posix}.
-
-@item ENABLE_RTEMS_TESTS
-is set to "yes" if you want to build the RTEMS Test Suite. If this
-is set to "no", then only the Sample Tests will be built.
-This corresponds to the @code{configure} option @code{--enable-tests}.
-
-@item ENABLE_RTEMS_TCPIP
-is set to "yes" if you want to build the RTEMS TCP/IP Stack. If a
-particular BSP does not support TCP/IP, then this feature is automatically
-disabled. This corresponds to the @code{configure} option
-@code{--enable-tcpip}.
-
-@item ENABLE_RTEMS_CXX
-is set to "yes" if you want to build the RTEMS C++ support including
-the C++ Wrapper for the Classic API. This corresponds to the
-@code{configure} option @code{--enable-cxx}.
-@end table
-
-@section Running the bit Script
-
-After the @code{bit} script has been modified to reflect the
-local installation, the modified @code{bit} script is run
-using the following sequence:
-
-@example
-cd tools
-./bit <target configuration>
-@end example
-
-Where <target configuration> is one of the following:
-
-@itemize @bullet
-@item hppa1.1
-@item i386
-@item i386-elf
-@item i386-go32
-@item i960
-@item m68k
-@item mips64orion
-@item powerpc
-@item sh
-@item sparc
-@end itemize
-
-If no errors are encountered, the @code{bit} script will conclude by
-printing messages similar to the following:
-
-@example
-
-The src and build-i386-tools subdirectory may now be removed.
-
-Started: Fri Apr 10 10:14:07 CDT 1998
-Finished: Fri Apr 10 12:01:33 CDT 1998
-@end example
-
-If the @code{bit} script successfully completes, then the
-GNU C/C++ cross compilation tools are installed.
-
-If the @code{bit} script does not successfully complete, then investigation
-will be required to determine the source of the error.
-
diff --git a/doc/started/buildrt.t b/doc/started/buildrt.t
deleted file mode 100644
index 1366bca1d4..0000000000
--- a/doc/started/buildrt.t
+++ /dev/null
@@ -1,137 +0,0 @@
-@c
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Building RTEMS
-
-@section Unpack the RTEMS Source
-
-Use the following command sequence to unpack the RTEMS source into the
-tools directory:
-
-@example
-cd tools
-tar xzf ../archive/@value{RTEMS-TAR}
-@end example
-
-@section Add <INSTALL_POINT>/bin to Executable PATH
-
-In order to compile RTEMS, you must have the cross compilation toolset
-in your search patch. The following command appends the directory
-where the tools were installed in the previous chapter:
-
-@example
-export PATH=$PATH:<INSTALL_POINT>/bin
-@end example
-
-NOTE: The above command is in Bourne shell (@code{sh}) syntax and
-should work with the Korn (@code{ksh}) and GNU Bourne Again Shell
-(@code{bash}). It will not work with the C Shell (@code{csh}) or
-derivatives of the C Shell.
-
-@section Verifying the Operation of the Cross Toolset
-
-In order to insure that the cross-compiler is invoking the correct
-subprograms (like @code{as} and @code{ld}), one can test assemble
-a small program. When in verbose more, @code{gcc} prints out information
-showing where it found the subprograms it invokes. Place the following
-function in a file named @code{f.c}:
-
-@example
-int f( int x )
-@{
- return x + 1;
-@}
-@end example
-
-Then assemble the file using a command similar to the following:
-
-@example
-m68k-rtems-gcc -v -S f.c
-@end example
-
-Where @code{m68k-rtems-gcc} should be changed to match the installed
-name of your cross compiler. The result of this command will be
-a sequence of output showing where the cross-compiler searched for
-and found its subcomponents. Verify that these paths correspond
-to your <INSTALL_POINT>.
-
-@b{NOTE:} One of the most common installation errors is for the
-cross-compiler not to be able to find the cross assembler and default
-to using the native @code{as}. This can result in very confusing
-error messages.
-
-@section Generate RTEMS for a Specific Target and BSP
-
-@subsection Using the bit_rtems Script
-
-The simplest way to build RTEMS is to use the @code{bit_rtems} script.
-This script interprets the settings in the @code{user.cfg} file to
-enable or disable the various RTEMS options.
-
-This script is invoked as follows:
-
-@example
-./bit_rtems CPU [BSP]
-@end example
-
-Where CPU is one of the RTEMS supported CPU families from the following
-list:
-
-@itemize @bullet
-@item hppa1.1
-@item i386
-@item i386-elf
-@item i386-go32
-@item i960
-@item m68k
-@item mips64orion
-@item powerpc
-@item sh
-@item sparc
-@end itemize
-
-BSP is a supported BSP for the selected CPU family. The list of
-supported BSPs may be found in the file
-tools/@value{RTEMS-UNTAR}/README.configure
-in the RTEMS source tree. If the BSP parameter is not specified,
-then all supported BSPs for the selected CPU family will be built.
-
-@subsection Using the RTEMS configure Script Directly
-
-Make a build directory under tools and build the RTEMS product in this
-directory. The ../@value{RTEMS-UNTAR}/configure
-command has numerous command line
-arguments. These arguments are discussed in detail in documentation that
-comes with the RTEMS distribution. In the installation described in the
-section "Unpack the RTEMS source", these configuration options can be found
-in the file tools/@value{RTEMS-UNTAR}/README.configure.
-
-The following shows the command sequence required to configure,
-compile, and install RTEMS with the POSIX API, FreeBSD TCP/IP,
-and C++ support disabled. RTEMS will be built to target
-the @code{BOARD_SUPPORT_PACKAGE} board.
-
-@example
-mkdir build-rtems
-cd build-rtems
-../@value{RTEMS-UNTAR}/configure --target=<TARGET_CONFIGURATION> \
- --disable-posix --disable-tcpip --disable-cxx \
- --enable-rtemsbsp=<BOARD_SUPPORT_PACKAGE>\
- --prefix=<INSTALL_POINT>
-gmake all install
-@end example
-
-Where the list of currently supported of <TARGET_CONFIGURATION>'s and
-<BOARD_SUPPORT_PACKAGE>'s can be found in
-tools/@value{RTEMS-UNTAR}/README.configure.
-
-<INSTALL_POINT> is the installation point from the previous step
-"Modify the bit script" in the build of the tools.
-
-
diff --git a/doc/started/gdb.t b/doc/started/gdb.t
deleted file mode 100644
index 13716ca635..0000000000
--- a/doc/started/gdb.t
+++ /dev/null
@@ -1,222 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Building the GNU Debugger
-
-GDB is not currently RTEMS aware. The following configurations have been
-successfully used with RTEMS applications:
-
-@itemize @bullet
-@item Sparc Instruction Simulator (SIS)
-@item PowerPC Instruction Simulator (PSIM)
-@item DINK32
-@end itemize
-
-Other configurations of gdb have successfully been used by RTEMS users
-but are not documented here.
-
-@section Unarchive the gdb Distribution
-
-Use the following commands to unarchive the gdb distribution:
-
-@example
-cd tools
-tar xzf ../archive/@value{GDB-TAR}
-@end example
-
-The directory @value{GDB-UNTAR} is created under the tools directory.
-
-@c
-@c GDB Patch
-@c
-
-@section Apply RTEMS Patch to GDB
-
-@ifclear GDB-RTEMSPATCH
-No RTEMS specific patches are required for @value{GDB-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset GDB-RTEMSPATCH
-
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-zcat archive/@value{GDB-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file.
-
-To see the files that have been modified use the sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-find . -name "*.orig" -print
-@end example
-
-The files that are found, have been modified by the patch file.
-
-@end ifset
-
-@section Using the bit_gdb script
-
-The simplest way to build gdb for RTEMS is to use the @code{bit_gdb} script.
-This script interprets the settings in the @code{user.cfg} file to
-produce the gdb configuration most appropriate for the target CPU.
-
-This script is invoked as follows:
-
-@example
-./bit_gdb CPU
-@end example
-
-Where CPU is one of the RTEMS supported CPU families from the following
-list:
-
-@itemize @bullet
-@item hppa1.1
-@item i386
-@item i386-elf
-@item i386-go32
-@item i960
-@item m68k
-@item mips64orion
-@item powerpc
-@item sh
-@item sparc
-@end itemize
-
-If gdb supports a CPU instruction simulator for this configuration, then
-it is included in the build.
-
-@section Using the gdb configure Script Directly
-
-@subsection GDB with Sparc Instruction Simulation (SIS)
-
-@subheading Make the Build Directory
-
-Create a build directory for the SIS Debugger
-
-@example
-cd tools
-mkdir build-sis
-@end example
-
-@subheading Configure for the Build
-
-Configure the GNU Debugger for the
-Sparc Instruction Simulator (SIS):
-
-@example
-cd tools/build-sis
-../@value{GDB-UNTAR}/configure --target-sparc-erc32-aout \
- --program-prefix=sparc-rtems- \
- --disable-gdbtk \
- --enable-targets=all \
- --prefix=<INSTALL_POINT_FOR_SIS>
-@end example
-
-Where <INSTALL_POINT_FOR_SIS> is a unique location where the gdb
-with SIS will be created.
-
-@subheading Make the Debugger
-
-From tools/build-sis execute the following command sequence:
-
-@example
-gmake all install
-@end example
-
-
-@subsection GDB with PowerPC Instruction Simulator
-
-@subheading Make the Build Directory
-
-Create a build directory for the SIS Debugger
-
-@example
-cd tools
-mkdir build-ppc
-@end example
-
-@subheading Configure for the Build
-
-Configure the GNU Debugger for the PowerPC
-Instruction Simulator (PSIM):
-
-@example
-cd tools/build-ppc
-../@value{GDB-UNTAR}/configure \
- --target=powerpc-unknown-eabi \
- --program-prefix=powerpc-rtems- \
- --enable-sim-powerpc \
- --enable-sim-timebase \
- --enable-sim-inline \
- --enable-sim-hardware \
- --enable-targets=all \
- --prefix=<INSTALL_POINT_FOR_PPC>
-@end example
-
-Where <INSTALL_POINT_FOR_PPC> is a unique location where the gdb
-with PSIM will be created.
-
-
-@subheading Make the Debugger
-
-From tools/build-ppc execute the following command sequence:
-
-@example
-gmake all install
-@end example
-
-
-@subsection GDB for DINK32
-
-@subheading Make the Build Directory
-
-Create a build directory for the DINK32 Debugger
-
-@example
-cd tools
-mkdir build-dink32
-@end example
-
-@subheading Configure for the Build
-
-Configure the GNU Debugger to communicate with
-the DINK32 ROM monitor:
-
-@example
-cd tools/build-dink32
-../@value{GDB-UNTAR}/configure --target-powerpc-elf \
- --program-prefix=powerpc-rtems- \
- --enable-targets=all \
- --prefix=<INSTALL_POINT_FOR_DINK32>
-@end example
-
-Where <INSTALL_POINT_FOR_DINK32> is a unique location where the
-gdb Dink32 will be created.
-
-@subheading Make the Debugger
-
-From tools/build-dink32 execute the following command sequence:
-
-@example
-gmake all install
-@end example
-
diff --git a/doc/started/intro.t b/doc/started/intro.t
deleted file mode 100644
index c5100b3292..0000000000
--- a/doc/started/intro.t
+++ /dev/null
@@ -1,162 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Introduction
-
-The purpose of this document is to guide you through the process of
-installing a GNU cross development environment to use with RTEMS.
-
-If you are already familiar with the concepts behind a cross compiler and
-have a background in Unix, these instructions should provide the bare
-essentials for performing a setup of the following items:
-
-@itemize @bullet
-@item GNU C/C++ Cross Compilation Tools for RTEMS on your host system
-@item RTEMS OS for the target host
-@item GDB Debugger
-@end itemize
-
-The remainder of this chapter provides background information on real-time
-embedded systems and cross development and an overview of other
-resources of interest on the Internet. If you are not familiar with
-real-time embedded systems or the other areas, please read those sections.
-These sections will help familiarize you with the
-types of systems RTEMS is designed to be used in and the cross development
-process used when developing RTEMS applications.
-
-@section Real-Time Embedded Systems
-
-Real-time embedded systems are found in practically every facet of our
-everyday lives. Today's systems range from the common telephone, automobile
-control systems, and kitchen appliances to complex air traffic control
-systems, military weapon systems, an d production line control including
-robotics and automation. However, in the current climate of rapidly changing
-technology, it is difficult to reach a consensus on the definition of a
-real-time embedded system. Hardware costs are continuing to rapidly decline
-while at the same time the hardware is increasing in power and functionality.
-As a result, embedded systems that were not considered viable two years ago
-are suddenly a cost effective solution. In this domain, it is not uncommon
-for a single hardware configuration to employ a variety of architectures and
-technologies. Therefore, we shall define an embedded system as any computer
-system that is built into a larger system consisting of multiple technologies
-such as digital and analog electronics, mechanical devices, and sensors.
-
-Even as hardware platforms become more powerful, most embedded systems are
-critically dependent on the real-time software embedded in the systems
-themselves. Regardless of how efficiently the hardware operates, the
-performance of the embedded real-time software determines the success of the
-system. As the complexity of the embedded hardware platform grows, so does
-the size and complexity of the embedded software. Software systems must
-routinely perform activities which were only dreamed of a short time ago.
-These large, complex, real-time embedded applications now commonly contain
-one million lines of code or more.
-
-Real-time embedded systems have a complex set of characteristics that
-distinguish them from other software applications. Real-time embedded
-systems are driven by and must respond to real world events while adhering to
-rigorous requirements imposed by the environment with which they interact.
-The correctness of the system depends not only on the results of
-computations, but also on the time at which the results are produced. The
-most important and complex characteristic of real-time application systems is
-that they must receive and respond to a set of external stimuli within rigid
-and critical time constraints.
-
-A single real-time application can be composed of both soft and hard
-real-time components. A typical example of a hard real-time system is a
-nuclear reactor control system that must not only detect failures, but must
-also respond quickly enough to prevent a meltdown. This application also has
-soft real-time requirements because it may involve a man-machine interface.
-Providing an interactive input to the control system is not as critical as
-setting off an alarm to indicate a failure condition. However, th e
-interactive system component must respond within an acceptable time limit to
-allow the operator to interact efficiently with the control system.
-
-@section Cross Development
-
-Today almost all real-time embedded software systems are developed in a
-@b{cross development} environment using cross development tools. In the cross
-development environment, software development activities are typically
-performed on one computer system, the @b{host} system, while the result of the
-development effort (produced by the cross tools) is a software system that
-executes on the @b{target} platform. The requirements for the target platform are
-usually incompatible and quite often in direct conflict with the requirements
-for the host. Moreover, the target hardware is often custom designed for a
-particular project. This means that the cross development toolset must allow
-the developer to customize the tools to address target specific run-time
-issues. The toolset must have provisions for board dependent initialization
-code, device drivers, and error handling code.
-
-The host computer is optimized to support the code development cycle with
-support for code editors, compilers, and linkers requiring large disk drives,
-user development windows, and multiple developer connections. Thus the host
-computer is typically a traditional UNIX workstation such as are available
-from SUN or Silicon Graphics, or a PC running either a version of MS-Windows
-or UNIX. The host system may also be required to execute office productivity
-applications to allow the software developer to write documentation, make
-presentations, or track the project's progress using a project management
-tool. This necessitates that the host computer be general purpose with
-resources such as a thirty-two or sixty-four bit processor, large amounts of
-RAM, a monitor, mouse, keyboard, hard and floppy disk drives, CD-ROM drive,
-and a graphics card. It is likely that the system will be multimedia capable
-and have some networking capability.
-
-Conversely, the target platform generally has limited traditional computer
-resources. The hardware is designed for the particular functionality and
-requirements of the embedded system and optimized to perform those tasks
-effectively. Instead of hard driverss and keyboards, it is composed of
-sensors, relays, and stepper motors. The per-unit cost of the target platform
-is typically a critical concern. No hardware component is included without
-being cost justified. As a result, the processor of the target system is
-often from a different processor family than that of the host system and
-usually has lower performance. In addition to the processor families
-targeted only for use in embedded systems, there are versions of nearly every
-general-purpose process or specifically tailored for real-time embedded
-systems. For example, many of the processors targeting the embedded market
-do not include hardware floating point units, but do include peripherals such
-as timers, serial controllers, or network interfaces.
-
-@section Resources on the Internet
-
-This section describes various resources on the Internet which are of
-use to RTEMS users.
-
-@subsection RTEMS Mailing List
-
-rtems-list@@OARcorp.com
-
-This mailing list is dedicated to discussion of issues related
-to RTEMS. If you have questions about RTEMS, wish to make
-suggestions, or just want to pick up hints, this is a good
-list to subscribe to. Subscribe by sending a message with
-the one line "subscribe" to rtems-list-request@@OARcorp.com.
-
-@subsection CrossGCC Mailing List
-
-crossgcc@@cygnus.com
-
-This mailing list is dedicated to the use of the GNU tools in
-cross development environments. Most of the discussions
-focus on embedded issues. Subscribe by sending a message with
-the one line "subscribe" to crossgcc-request@@cygnus.com.
-
-The crossgcc FAQ as well as a number of patches and utiliities
-of interest to cross development system users are available
-at ftp://ftp.cygnus.com/pub/embedded/crossgcc.
-
-@subsection EGCS Mailing List
-
-egcs@@cygnus.com
-
-This mailing list is dedicated to the EGCS Project which was
-formed to speed the development and integration of the various
-GNU languages. The RTEMS and Linux communities were among those
-initially targetted by the EGCS Project as being important
-for its success. Numerous RTEMS users have made contributions
-to this project. Subscribe by sending a message with
-the one line "subscribe" to egcs-request@@cygnus.com.
-
diff --git a/doc/started/nt.t b/doc/started/nt.t
deleted file mode 100644
index 9c5160b726..0000000000
--- a/doc/started/nt.t
+++ /dev/null
@@ -1,365 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@set CYGWIN-VERSION B19
-@set CYGWIN-FTP http://www.cygnus.com/misc/gnu-win32/
-@set CYGWIN-COOLVIEW http://www.lexa.ru/sos/
-@set DOS2UNIX-FTP ftp://ftp.micros.hensa.ac.uk/platforms/ibm-pc/ms-dos/simtelnet/txtutl/dos2unix.zip
-@set PFE-FTP http://www.lancs.ac.uk/people/cpaap/pfe/
-
-@chapter Using MS-Windows as a Development Host
-
-This chapter discusses the installation of the GNU tool chain
-on a computer running the Microsoft Windows NT operating system.
-
-This chapter is based on a draft provided by
-Geoffroy Montel <g_montel@@yahoo.com>. Geoffroy's
-procedure was based on information from
-David Fiddes <D.J@@fiddes.surfaid.org>.
-Their input and feedback is greatly appreciated.
-
-@b{STATUS:} This chapter should be considered preliminary.
-Please be careful when following these instructions.
-
-@section Version Information
-
-This installation process works well under Windows NT.
-Using Windows 95 or 98 is not recommended although it
-should be possible with version 3.77 of gmake and an updated
-cygwinb19.dll.
-
-This procedure should also work with newer version of
-the tool versions listed in this chapter, but this has
-not been verified. If you have success with a particular
-version of the toolset or notice problems in this chapter,
-please let the RTEMS maintainers know so they can be
-addressed in future revisions of this document.
-
-@section MS-Windows Host Specific Requirements
-
-This section details the components required to install
-and build a Windows hosted GNU cross development toolset.
-
-@subsection Unzipping Archives
-
-You will have to uncompress many archives during this
-process. You must @b{NOT} use @code{WinZip} or
-@code{PKZip}. Instead the un-archiving process uses
-the GNU @code{zip} and @code{tar} programs as shown below:
-
-@example
-tar -xzvf archive.tgz
-@end example
-
-@code{tar} is provided with Cygwin32.
-
-@subsection Text Editor
-
-You absolutely have to use a text editor which can
-save files with Unix format (so don't use Notepad
-nor Wordpad). If you do not have an appropriate
-text editor, try @b{Programmers File Editor}, it is
-free and very convenient. This editor may be downloaded
-from:
-
-@ifset use-html
-@href{@value{PFE-FTP},,@value{PFE-FTP}}
-@end ifset
-@ifclear use-html
-@value{PFE-FTP}
-@end ifclear
-
-@subsection Bug in Patch Utility
-
-There is a bug in the @code{patch} utility
-provided in Cygwin32 B19. The files modified end up
-having MS-DOS style line termination. They must have
-Unix format, so a @code{dos2unix}-like command must
-be used to put them back into Unix format as shown below:
-
-@example
-$ dos2unix XYZ
-Dos2Unix: Cleaning file XYZ ...
-@end example
-
-The dos2unix utility may be downloaded from:
-
-@ifset use-html
-@href{@value{DOS2UNIX-FTP},,,@value{DOS2UNIX-FTP}}
-@end ifset
-@ifclear use-html
-@value{DOS2UNIX-FTP}
-@end ifclear
-
-You @b{must} change the format of every patched file
-for the toolset build to work correctly.
-
-@subsection Files Needed
-
-This section lists the files required to build and install
-a Windows hosted GNU cross development toolset and their
-home WWW site. In addition to the sources required
-for the cross environment listed earlier in @ref{Get All the Pieces},
-you will need to download the following
-files from their respective sites using your favorite
-Web browser or ftp client.
-
-@table @b
-
-@item cdk.exe
-@ifset use-html
-@href{@value{CYGWIN-FTP},,@value{CYGWIN-FTP}}
-@end ifset
-@ifclear use-html
-@value{CYGWIN-FTP}
-@end ifclear
-
-@item coolview.tar.gz
-@ifset use-html
-@href{@value{CYGWIN-COOLVIEW},,@value{CYGWIN-COOLVIEW}}
-@end ifset
-@ifclear use-html
-@value{CYGWIN-COOLVIEW}
-@end ifclear
-
-@end table
-
-@subsection System Requirements
-
-Although the finished cross-compiler is fairly easy on resources,
-building it can take a significant amount of processing power and
-disk space. The recommended build system spec is:
-
-@enumerate
-
-@item An AMD K6-300, Pentium II-300 or better processor. GNU C and Cygwin32 are
-@b{very} CPU hungry.
-
-@item At least 64MB of RAM.
-
-@item At least 400MB of FAT16 disk space or 250MB if you have an NTFS partition.
-
-@end enumerate
-
-Even with this spec of machine expect the full suite to take over 2 hours to
-build with a further half an hour for RTEMS itself.
-
-
-@section Installing Cygwin32 B19
-
-This section describes the process of installing the
-version @value{CYGWIN-VERSION} of the Cygwin32 environment. It assumes
-that this toolset is installed in a directory
-referred to as @code{<RTOS>}.
-
-@enumerate
-
-@item Execute cdk.exe. These instructions assume that you
-install Cygwin32 under the <RTOS>\cygnus\b19 directory.
-
-@item Execute Cygwin.bat (either on the start menu or
-under <RTOS>\cygnus\b19).
-
-@item At this point, you are at the command line of @code{bash},
-a Unix-like shell. You have to mount the "/" directory. Type:
-
-@example
-umount /
-mount -b <RTOS> /
-@end example
-
-For example, the following sequence mounts the @code{E:\unix} as the
-root directory for the Cygwin32 environment. Note the use of two @code{\}s
-when specifying DOS paths in bash:
-
-@example
-umount /
-mount -b e:\\unix /
-@end example
-
-@item Create the /bin, /tmp, /source and /build directories.
-
-@example
-mkdir /bin
-mkdir /tmp
-mkdir /source
-mkdir /build
-mkdir /build/binutils
-mkdir /build/egcs
-@end example
-
-@item The light Bourne shell provided with Cygwin B19 is buggy.
-You should copy it to a fake name and copy @code{bash.exe} to @code{sh.exe}:
-
-@example
-cd <RTOS>/cygnus/b19/H-i386-cygwin32/bin
-mv sh.exe old_sh.exe
-cp bash.exe sh.exe
-@end example
-
-The Bourne shell has to be present in /bin directory to run shell scripts properly:
-
-@example
-cp <RTOS>/cygnus/b19/H-i386-cygwin32/bin/sh.exe /bin
-cp <RTOS>/cygnus/b19/H-i386-cygwin32/bin/bash.exe /bin
-@end example
-
-
-@item Open the file
-@code{/cygnus/b19/H-i386-cygwin32/lib/gcc-lib/i386-cygwin32/2.7-b19/specs},
-and change the following line:
-
-@example
--lcygwin %@{mwindows:-luser32 -lgdi32 -lcomdlg32@} -lkernel32
-@end example
-
-to:
-
-@example
--lcygwin %@{mwindows:-luser32 -lgdi32 -lcomdlg32@} -lkernel32 -ladvapi32
-@end example
-
-@end enumerate
-
-At this point, you have a native installation of Cygwin32 and
-are ready to proceed to building a cross-compiler.
-
-@c
-@c BINUTILS
-@c
-
-@section Installing binutils
-
-@enumerate
-
-@item Unarchive @value{BINUTILS-TAR} following the
-instructions in @ref{Unarchiving the Tools} into the /source directory.
-Apply the appropriate RTEMS specific patch as detailed in
-@ref{Apply RTEMS Patch to binutils}.
-
-@item In the @code{/build/binutils} directory, execute the following
-command to configure @value{BINUTILS-VERSION}:
-
-@example
-/source/@value{BINUTILS-UNTAR}/configure --verbose --target=m68k-rtems \
- --prefix=/gcc-m68k-rtems --with-gnu-as --with-gnu-ld
-@end example
-
-Replace @code{m68k-rtems} with the target configuration
-of your choice. See @ref{Running the bit Script} for a
-list of the targets available.
-
-@item Execute the following command to compile the toolset:
-
-@example
-make
-@end example
-
-@item Install the full package with the following command:
-
-@example
-make -k install
-@end example
-
-There is a problem with the gnu info package which will cause an
-error during installation. Telling make to keep going with -k allows
-the install to complete.
-
-@item In the @code{cygnus.bat} file, add the directory
-containing the cross-compiler executables to your search path
-by inserting the following line:
-
-@example
-PATH=E:\unix\gcc-m68k-rtems\bin;%PATH%
-@end example
-
-@item You can erase the /build/binutils directory content if
-disk space is tight.
-
-@item Exit bash and run @code{cygnus.bat} to restart
-the Cygwin32 environment with the new path.
-
-@end enumerate
-
-@c
-@c EGCS
-@c
-
-@section Installing EGCS AND NEWLIB
-
-@enumerate
-@item Unarchive and patch @value{EGCS-TAR} and @value{NEWLIB-TAR}
-following the instructions in @ref{Unarchiving the Tools}.
-Apply the appropriate RTEMS specific patches as detailed in
-@ref{Apply RTEMS Patch to EGCS} and @ref{Apply RTEMS Patch to newlib}.
-
-@b{NOTE}: See @ref{Bug in Patch Utility}.
-
-@item Remove the following directories (we cannot use Fortran
-or Objective-C as Cygwin32 cross-compilers):
-
-@example
-/source/@value{GCC-UNTAR}/libf2c
-/source/@value{GCC-UNTAR}/gcc/objc
-/source/@value{GCC-UNTAR}/gcc/f
-@end example
-
-@b{NOTE}: See @ref{Bug in Patch Utility}.
-
-@item Link the following directories from Newlib to the main EGCS directory,
-/source/@value{GCC-UNTAR}/ :
-
-@itemize @bullet
-@item ln -s ../@value{NEWLIB-UNTAR}/newlib newlib
-@item ln -s ../@value{NEWLIB-UNTAR}/libgloss libgloss
-@end itemize
-
-@item Change to the /build/egcs directory to configure the compiler:
-
-@example
-/source/@value{GCC-UNTAR}/configure --verbose --target=m68k-rtems \
- --prefix=/gcc-m68k --with-gnu-as --with-gnu-ld \
- --with-newlib
-@end example
-
-Replace @code{m68k-rtems} with the target configuration
-of your choice. See @ref{Running the bit Script} for a
-list of the targets available.
-
-@item Compile the toolset as follows:
-
-@example
-make cross
-@end example
-
-You must do a @code{make cross} (not a simple @code{make})
-to insure that the different packages are built in the correct
-order. Making the compiler can take several hours even on
-fairly fast machines, beware.
-
-@item Install with the following command:
-
-@example
-make -k install
-@end example
-
-@item Just as with binutils package, a problem with the gnu
-info package not building correctly requires that you use -k to
-keep going.
-
-@example
-make -k install
-@end example
-
-@end enumerate
-
-With any luck, at this point you having a working cross-compiler. So
-as Geoffroy said:
-
-@center @b{That's it! Celebrate!}
-
diff --git a/doc/started/pictures/bit_ada.jpg b/doc/started/pictures/bit_ada.jpg
deleted file mode 100644
index 774b103711..0000000000
--- a/doc/started/pictures/bit_ada.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/bit_ada.vsd b/doc/started/pictures/bit_ada.vsd
deleted file mode 100644
index 51e8e1fe53..0000000000
--- a/doc/started/pictures/bit_ada.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/bit_c.jpg b/doc/started/pictures/bit_c.jpg
deleted file mode 100644
index 158beb4bd1..0000000000
--- a/doc/started/pictures/bit_c.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/bit_c.vsd b/doc/started/pictures/bit_c.vsd
deleted file mode 100644
index a6db26bd15..0000000000
--- a/doc/started/pictures/bit_c.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scfile10.jpg b/doc/started/pictures/scfile10.jpg
deleted file mode 100644
index 22a83877ce..0000000000
--- a/doc/started/pictures/scfile10.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scfile10.vsd b/doc/started/pictures/scfile10.vsd
deleted file mode 100644
index 07efb1f18b..0000000000
--- a/doc/started/pictures/scfile10.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scfile11.jpg b/doc/started/pictures/scfile11.jpg
deleted file mode 100644
index f70986ef55..0000000000
--- a/doc/started/pictures/scfile11.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scfile11.vsd b/doc/started/pictures/scfile11.vsd
deleted file mode 100644
index 25871be19a..0000000000
--- a/doc/started/pictures/scfile11.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scfile12.jpg b/doc/started/pictures/scfile12.jpg
deleted file mode 100644
index 22a83877ce..0000000000
--- a/doc/started/pictures/scfile12.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scfile12.vsd b/doc/started/pictures/scfile12.vsd
deleted file mode 100644
index 750e7cdf56..0000000000
--- a/doc/started/pictures/scfile12.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scfile13.jpg b/doc/started/pictures/scfile13.jpg
deleted file mode 100644
index 7ea418b7a7..0000000000
--- a/doc/started/pictures/scfile13.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scfile13.vsd b/doc/started/pictures/scfile13.vsd
deleted file mode 100644
index 581eff901c..0000000000
--- a/doc/started/pictures/scfile13.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile1.jpg b/doc/started/pictures/scsfile1.jpg
deleted file mode 100644
index d1d497e955..0000000000
--- a/doc/started/pictures/scsfile1.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile1.vsd b/doc/started/pictures/scsfile1.vsd
deleted file mode 100644
index a7314848fc..0000000000
--- a/doc/started/pictures/scsfile1.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile2.jpg b/doc/started/pictures/scsfile2.jpg
deleted file mode 100644
index afbe1db125..0000000000
--- a/doc/started/pictures/scsfile2.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile2.vsd b/doc/started/pictures/scsfile2.vsd
deleted file mode 100644
index d2bb29a6e8..0000000000
--- a/doc/started/pictures/scsfile2.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile3.jpg b/doc/started/pictures/scsfile3.jpg
deleted file mode 100644
index b0e135994d..0000000000
--- a/doc/started/pictures/scsfile3.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile3.vsd b/doc/started/pictures/scsfile3.vsd
deleted file mode 100644
index da98158c85..0000000000
--- a/doc/started/pictures/scsfile3.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile4.jpg b/doc/started/pictures/scsfile4.jpg
deleted file mode 100644
index 1c01cbb460..0000000000
--- a/doc/started/pictures/scsfile4.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile4.vsd b/doc/started/pictures/scsfile4.vsd
deleted file mode 100644
index 50823fa67e..0000000000
--- a/doc/started/pictures/scsfile4.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile5.jpg b/doc/started/pictures/scsfile5.jpg
deleted file mode 100644
index 8fe8df173c..0000000000
--- a/doc/started/pictures/scsfile5.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile5.vsd b/doc/started/pictures/scsfile5.vsd
deleted file mode 100644
index 614736593a..0000000000
--- a/doc/started/pictures/scsfile5.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile6.jpg b/doc/started/pictures/scsfile6.jpg
deleted file mode 100644
index 58a3489242..0000000000
--- a/doc/started/pictures/scsfile6.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile6.vsd b/doc/started/pictures/scsfile6.vsd
deleted file mode 100644
index a970df509a..0000000000
--- a/doc/started/pictures/scsfile6.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile7.jpg b/doc/started/pictures/scsfile7.jpg
deleted file mode 100644
index 68cff033b8..0000000000
--- a/doc/started/pictures/scsfile7.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile7.vsd b/doc/started/pictures/scsfile7.vsd
deleted file mode 100644
index 0af5ae9f4f..0000000000
--- a/doc/started/pictures/scsfile7.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile8.jpg b/doc/started/pictures/scsfile8.jpg
deleted file mode 100644
index a2ef5954ca..0000000000
--- a/doc/started/pictures/scsfile8.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile8.vsd b/doc/started/pictures/scsfile8.vsd
deleted file mode 100644
index 0ed6dedf6d..0000000000
--- a/doc/started/pictures/scsfile8.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile9.jpg b/doc/started/pictures/scsfile9.jpg
deleted file mode 100644
index 04f623e62d..0000000000
--- a/doc/started/pictures/scsfile9.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/scsfile9.vsd b/doc/started/pictures/scsfile9.vsd
deleted file mode 100644
index ca3222b4cf..0000000000
--- a/doc/started/pictures/scsfile9.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/sfile12c.jpg b/doc/started/pictures/sfile12c.jpg
deleted file mode 100644
index aba5bf21a2..0000000000
--- a/doc/started/pictures/sfile12c.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/started/pictures/sfile12c.vsd b/doc/started/pictures/sfile12c.vsd
deleted file mode 100644
index fc0616cf1e..0000000000
--- a/doc/started/pictures/sfile12c.vsd
+++ /dev/null
Binary files differ
diff --git a/doc/started/require.t b/doc/started/require.t
deleted file mode 100644
index 9ac3d2033f..0000000000
--- a/doc/started/require.t
+++ /dev/null
@@ -1,56 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Requirements
-
-A fairly large amount of disk space is required to perform the build of the
-GNU C/C++ Cross Compiler Tools for RTEMS. The following table may help in
-assessing the amount of disk space required for your installation:
-
-@example
-+----------------------------------------+------------------------------+
-| Component | Disk Space Required |
-+----------------------------------------+------------------------------+
-| archive directory | 30 Mbytes |
-| tools src unzipped | 100 Mbytes |
-| each individual build directory | 300 Mbytes worst case |
-| each installation directory | 20-400 Mbytes |
-+----------------------------------------+------------------------------+
-@end example
-
-The disk space required for each installation directory depends
-primarily on the number of RTEMS BSPs which are to be installed.
-If a single BSP is installed, then the size of each install directory
-will tend to be in the 40-60 Mbyte range.
-
-The instructions in this manual should work on any computer running
-a UNIX variant. Some native GNU tools are used by this procedure
-including:
-
-@itemize @bullet
-@item GCC
-@item GNU make
-@item GNU makeinfo
-@end itemize
-
-In addition, some native utilities may be deficient for building
-the GNU tools.
-
-@section GNU makeinfo Version Requirements
-
-In order to build egcs 1.1b or newer, the GNU @code{makeinfo} program
-installed on your system must be at least version 1.68. The appropriate
-version of @code{makeinfo} is distributed with egcs 1.1b.
-
-The following demonstrates how to determine the version of @code{makeinfo}
-on your machine:
-
-@example
-makeinfo --version
-@end example
-
diff --git a/doc/started/sample.t b/doc/started/sample.t
deleted file mode 100644
index b2910319bc..0000000000
--- a/doc/started/sample.t
+++ /dev/null
@@ -1,57 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Building the Sample Application
-
-@section Unpack the Sample Application
-
-Use the following command to unarchive the sample application:
-
-@example
-cd tools
-tar xzf ../archive/hello_world_c.tgz
-@end example
-
-@section Set the Environment Variable RTEMS_MAKEFILE_PATH
-
-It must point to the appropriate directory containing RTEMS build for our
-target and board support package combination.
-
-@example
-export RTEMS_MAKEFILE_PATH = \
-<INSTALLATION_POINT>/rtems/<BOARD_SUPPORT_PACKAGE>
-@end example
-
-Where <INSTALLATION_POINT> and <BOARD_SUPPORT_PACKAGE> are those used when
-configuring and installing RTEMS.
-
-@section Build the Sample Application
-
-Use the following command to start the build of the sample application:
-
-@example
-cd tools/hello_world_c
-gmake
-@end example
-
-If no errors are detected during the sample application build, it is
-reasonable to assume that the build of the GNU C/C++ Cross Compiler Tools
-for RTEMS and RTEMS itself for the selected host and target
-combination was done properly.
-
-@section Application Executable
-
-If the sample application has successfully been build, then the application
-executable is placed in the following directory:
-
-@example
-tools/hello_world_c/o-<BOARD_SUPPORT_PACKAGE>/<filename>.exe
-@end example
-
-How this executable is downloaded to the target board is very dependent
-on the BOARD_SUPPORT_PACKAGE selected.
diff --git a/doc/started/started.texi b/doc/started/started.texi
deleted file mode 100644
index 3ed67ec472..0000000000
--- a/doc/started/started.texi
+++ /dev/null
@@ -1,117 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename started
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Getting Started (C) Guide
-@c
-
-@include ../common/setup.texi
-
-@c
-@c Now set all the tool version dependent information
-@c
-@include versions.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* Getting Started with RTEMS for C/C++ Users (started):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage Getting Started with RTEMS
-
-@setchapternewpage odd
-@settitle Getting Started with RTEMS for C/C++ Users
-@titlepage
-@finalout
-
-@title Getting Started with RTEMS for C/C++ Users
-@subtitle Edition @value{edition}, for @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include intro.texi
-@include require.texi
-@include buildc.texi
-@include buildrt.texi
-@include sample.texi
-@include gdb.texi
-@include nt.texi
-
-@ifinfo
-@node Top, Introduction, (dir), (dir)
-@top started
-
-This is the online version of the Getting Started with RTEMS for C/C++ Users.
-
-@menu
-* Introduction::
-* Requirements::
-* Building the GNU C/C++ Cross Compiler Toolset::
-* Building RTEMS::
-* Building the Sample Application::
-* Building the GNU Debugger::
-* Using MS-Windows as a Development Host::
-@end menu
-
-@c * Command and Variable Index::
-@c * Concept Index::
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@c @node Command and Variable Index, Concept Index, Installing EGCS AND NEWLIB, Top
-@c @unnumbered Command and Variable Index
-
-@c There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@c @node Concept Index, , Command and Variable Index, Top
-@c @unnumbered Concept Index
-
-@c There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/started/versions.texi b/doc/started/versions.texi
deleted file mode 100644
index 63bca0f05b..0000000000
--- a/doc/started/versions.texi
+++ /dev/null
@@ -1,86 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c This file contains all toolset version dependent information
-@c
-
-@c
-@c Comment out setting the "XYZ-RTEMSPATCH" variable if there is no
-@c patch required. The documentation will detect this and print
-@c an appropriate message in a short section.
-@c
-
-
-@c
-@c GCC/EGCS Version
-@c
-
-@set GCC-VERSION egcs 1.1b
-@set GCC-TAR egcs-1.1b.tar.gz
-@set GCC-UNTAR egcs-1.1b
-@set GCC-FTPSITE egcs.cygnus.com
-@set GCC-FTPDIR /pub/egcs/releases/egcs-1.1b
-@set GCC-HTTPDIR /pub/egcs/releases/index.html
-@set GCC-RTEMSPATCH egcs-1.1b-rtems-diff-19981027.gz
-
-@c
-@c BINUTILS Version
-@c
-
-@c The "official" binutils
-@set BINUTILS-VERSION binutils 2.9.1
-@set BINUTILS-TAR binutils-2.9.1.tar.gz
-@set BINUTILS-UNTAR binutils-2.9.1
-@set BINUTILS-FTPSITE ftp.gnu.org
-@set BINUTILS-FTPDIR /pub/gnu
-@set BINUTILS-RTEMSPATCH binutils-2.9.1-rtems-diff-19981027.gz
-
-@c When forced to use a snapshot
-@c @set BINUTILS-VERSION gas 980314
-@c @set BINUTILS-TAR gas-980314.tgz
-@c @set BINUTILS-UNTAR gas-980314
-@c @set BINUTILS-FTPSITE ftp.OARcorp.com
-@c @set BINUTILS-FTPDIR /oarcorp/private/beta3/ada_tools
-@c @set BINUTILS-RTEMSPATCH binutils-2.8.1-rtems-diff-1998xxxx.gz
-
-@c
-@c NEWLIB Version
-@c
-
-@set NEWLIB-VERSION newlib 1.8.0
-@set NEWLIB-TAR newlib-1.8.0.tar.gz
-@set NEWLIB-UNTAR newlib-1.8.0
-@set NEWLIB-FTPSITE ftp.cygnus.com
-@set NEWLIB-FTPDIR /pub/newlib
-@set NEWLIB-RTEMSPATCH newlib-1.8.0-rtems-diff-19981027.gz
-
-@c
-@c GDB Version
-@c
-
-@set GDB-VERSION gdb 4.17
-@set GDB-TAR gdb-4.17.tar.gz
-@set GDB-UNTAR gdb-4.17
-@set GDB-FTPSITE ftp.gnu.org
-@set GDB-FTPDIR /pub/gnu
-@set GDB-RTEMSPATCH gdb-4.17-rtems-diff-19981027.gz
-
-
-@c
-@c RTEMS Version
-@c
-
-@set RTEMS-VERSION RTEMS 4.0.0
-@set RTEMS-TAR rtems-4.0.0.tgz
-@set RTEMS-UNTAR rtems-4.0.0
-@set RTEMS-FTPSITE ftp.OARcorp.com
-@set RTEMS-FTPDIR /pub/rtems/4.0.0
-@set BUILDTOOLS-TAR c_build_scripts-4.0.0.tgz
-
-
diff --git a/doc/started_ada/Makefile b/doc/started_ada/Makefile
deleted file mode 100644
index 5df0ae5ab8..0000000000
--- a/doc/started_ada/Makefile
+++ /dev/null
@@ -1,88 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=started_ada
-DISTRIBUTION_LEVEL=public
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi ../common/setup.texi
-
-GENERATED_FILES= buildada.texi buildrt.texi gdb.texi intro.texi \
- require.texi sample.texi
-
-FILES= $(PROJECT).texi versions.texi $(GENERATED_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs $(PROJECT)
- #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL)
- cp $(PROJECT) $(INFO_INSTALL)
-
-$(PROJECT): $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-# run texi2dvi twice to generate the xref's properly.
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) -v $(PROJECT).texi
-
-intro.texi: intro.t versions.texi
- $(BMENU) -c -p "Top" \
- -u "Top" \
- -n "Requirements" ${*}.t
-
-require.texi: require.t versions.texi
- $(BMENU) -c -p "GNAT Chat Mailing List" \
- -u "Top" \
- -n "Building the GNAT Cross Compiler Toolset" ${*}.t
-
-buildada.texi: buildada.t versions.texi
- $(BMENU) -c -p "Insure GCC and GNAT Environment Variables Are Not Set" \
- -u "Top" \
- -n "Building RTEMS" ${*}.t
-
-buildrt.texi: buildrt.t versions.texi
- $(BMENU) -c -p "Running the bit_ada Script" \
- -u "Top" \
- -n "Building the Sample Application" ${*}.t
-
-sample.texi: sample.t versions.texi
- $(BMENU) -c -p "Using the RTEMS configure Script Directly" \
- -u "Top" \
- -n "Building the GNU Debugger" ${*}.t
-
-gdb.texi: gdb.t versions.texi
- $(BMENU) -c -p "Application Executable" \
- -u "Top" \
- -n "" ${*}.t
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- -cp ../started/pictures/sfile12c.jpg $(WWW_INSTALL)/$(PROJECT)
- -cp ../started/pictures/bit_ada.jpg $(WWW_INSTALL)/$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES)
- rm -f *.fixed _*
-
diff --git a/doc/started_ada/buildada.t b/doc/started_ada/buildada.t
deleted file mode 100644
index dfd9163ab9..0000000000
--- a/doc/started_ada/buildada.t
+++ /dev/null
@@ -1,541 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Building the GNAT Cross Compiler Toolset
-
-This chapter describes the steps required to acquire the
-source code for a GNU cross compiler toolset, apply
-any required RTEMS specific patches, compile that
-toolset and install it.
-
-@section Create the Archive and Build Directories
-
-Start by making the @code{archive} directory to contain the downloaded
-source code and the @code{tools} directory to be used as a build
-directory. The command sequence to do this is shown
-below:
-
-@example
-mkdir archive
-mkdir tools
-@end example
-
-This will result in an initial directory structure similar to the
-one shown in the following figure:
-
-@example
-@group
-/whatever/prefix/you/choose/
- archive/
- tools/
-
-@end group
-@end example
-
-@c @ifset use-html
-@c @html
-@c <IMG SRC="sfile12c.jpg" WIDTH=417 HEIGHT=178
-@c ALT="Starting Directory Organization">
-@c @end html
-@c @end ifset
-
-@section Get All the Pieces
-
-This section lists the components of an RTEMS cross development system.
-Included are the locations of each component as well as any required RTEMS
-specific patches.
-
-@subheading @value{GCC-VERSION}
-@example
- FTP Site: @value{GCC-FTPSITE}
- Directory: @value{GCC-FTPDIR}
- File: @value{GCC-TAR}
-@ifset use-html
- URL: @href{Download @value{GCC-VERSION},,,ftp://@value{GCC-FTPSITE}@value{GCC-FTPDIR}/@value{GCC-TAR}}
-@end ifset
-@end example
-
-@subheading @value{GNAT-VERSION}
-@example
- FTP Site: @value{GNAT-FTPSITE}
- Directory: @value{GNAT-FTPDIR}
- File: @value{GNAT-TAR}
-@ifset use-html
- URL: @href{Download @value{GNAT-VERSION},,,ftp://@value{GNAT-FTPSITE}@value{GNAT-FTPDIR}/@value{GNAT-TAR}}
-@end ifset
-@end example
-
-@subheading @value{BINUTILS-VERSION}
-@example
- FTP Site: @value{BINUTILS-FTPSITE}
- Directory: @value{BINUTILS-FTPDIR}
- File: @value{BINUTILS-TAR}
-@ifset use-html
- URL: @href{Download @value{BINUTILS-VERSION},,,ftp://@value{BINUTILS-FTPSITE}@value{BINUTILS-FTPDIR}/@value{BINUTILS-TAR}}
-@end ifset
-@end example
-
-@subheading @value{NEWLIB-VERSION}
-@example
- FTP Site: @value{NEWLIB-FTPSITE}
- Directory: @value{NEWLIB-FTPDIR}
- File: @value{NEWLIB-TAR}
-@ifset use-html
- URL: @href{Download @value{NEWLIB-VERSION},,,ftp://@value{NEWLIB-FTPSITE}@value{NEWLIB-FTPDIR}/@value{NEWLIB-TAR}}
-@end ifset
-@end example
-
-@subheading @value{RTEMS-VERSION}
-@example
- FTP Site: @value{RTEMS-FTPSITE}
- Directory: @value{RTEMS-FTPDIR}
- File: @value{RTEMS-TAR}
-@ifset use-html
- URL: @href{Download RTEMS components,,,ftp://@value{RTEMS-FTPSITE}@value{RTEMS-FTPDIR}}
-@end ifset
-@end example
-
-@subheading RTEMS Hello World
-@example
- FTP Site: @value{RTEMS-FTPSITE}
- Directory: @value{RTEMS-FTPDIR}
- File: hello_world_ada.tgz
-@ifset use-html
- URL: @href{Download RTEMS Hello World,,,ftp://@value{RTEMS-FTPSITE}@value{RTEMS-FTPDIR}/ada_tools/hello_world_ada.tgz}
-@end ifset
-@end example
-
-@subheading RTEMS Specific Tool Patches and Scripts
-@example
- FTP Site: @value{RTEMS-FTPSITE}
- Directory: @value{RTEMS-FTPDIR}/ada_tools
- File: @value{BUILDTOOLS-TAR}
-@ifset BINUTILS-RTEMSPATCH
- File: @value{BINUTILS-RTEMSPATCH}
-@end ifset
-@ifset NEWLIB-RTEMSPATCH
- File: @value{NEWLIB-RTEMSPATCH}
-@end ifset
-@ifset GCC-RTEMSPATCH
- File: @value{GCC-RTEMSPATCH}
-@end ifset
-@ifset GNAT-RTEMSPATCH
- File: @value{GNAT-RTEMSPATCH}
-@end ifset
-@ifset use-html
- URL: @href{Download RTEMS patches,,,ftp://@value{RTEMS-FTPSITE}@value{RTEMS-FTPDIR}/ada_tools}
-@end ifset
-@end example
-
-@section Unarchiving the Tools
-
-While in the @code{tools} directory, unpack the compressed
-tar files using the following command sequence:
-
-@example
-cd tools
-tar xzf ../archive/@value{GCC-TAR}
-tar xzf ../archive/@value{GNAT-TAR}
-tar xzf ../archive/@value{BINUTILS-TAR}
-tar xzf ../archive/@value{NEWLIB-TAR}
-tar xzf ../archive/@value{BUILDTOOLS-TAR}
-@end example
-
-After the compressed tar files have been unpacked, the following
-directories will have been created under tools.
-
-@itemize @bullet
-@item @value{BINUTILS-UNTAR}
-@item @value{GCC-UNTAR}
-@item @value{GNAT-UNTAR}
-@item @value{NEWLIB-UNTAR}
-@end itemize
-
-There will also be a set of scripts in the current directory
-which aid in building the tools and RTEMS. They are:
-
-@itemize @bullet
-@item bit_ada
-@item bit_gdb
-@item bit_rtems
-@item common.sh
-@item user.cfg
-@end itemize
-
-When the @code{bit_ada} script is executed later in this process,
-it will automatically create two other subdirectories:
-
-@itemize @bullet
-@item src
-@item build-$@{CPU@}-tools
-@end itemize
-
-Similarly, the @code{bit_gdb} script will create the
-subdirectory @code{build-$@{CPU@}-gdb} and
-the @code{bit_rtems} script will create the
-subdirectory @code{build-$@{CPU@}-rtems}.
-
-The directory tree should look something like the following figure:
-
-@example
-@group
-/whatever/prefix/you/choose/
- archive/
- @value{GCC-TAR}
- @value{GNAT-TAR}
- @value{BINUTILS-TAR}
- @value{NEWLIB-TAR}
- @value{RTEMS-TAR}
- @value{BUILDTOOLS-TAR}
-@ifset GCC-RTEMSPATCH
- @value{GCC-RTEMSPATCH}
-@end ifset
-@ifset BINUTILS-RTEMSPATCH
- @value{BINUTILS-RTEMSPATCH}
-@end ifset
-@ifset NEWLIB-RTEMSPATCH
- @value{NEWLIB-RTEMSPATCH}
-@end ifset
-@ifset GNAT-RTEMSPATCH
- @value{GNAT-RTEMSPATCH}
-@end ifset
- hello_world_ada.tgz
- bit_ada
- tools/
- @value{BINUTILS-UNTAR}/
- @value{GCC-UNTAR}/
- @value{GNAT-UNTAR}/
- @value{NEWLIB-UNTAR}/
- @value{RTEMS-UNTAR}/
- bit_ada
- bit_gdb
- bit_rtems
- common.sh
- user.cfg
-@end group
-@end example
-
-@c @ifset use-html
-@c @html
-@c <IMG SRC="bit_ada.jpg" WIDTH=816 HEIGHT=267 ALT="Directory Organization">
-@c @end html
-@c @end ifset
-
-@c
-@c Host Specific Notes
-@c
-
-@section Host Specific Notes
-
-@subsection Solaris 2.x
-
-The build scripts are written in "shell". The program @code{/bin/sh}
-on Solaris 2.x is not robust enough to execute these scripts. If you
-are on a Solaris 2.x host, then change the first line of the files
-@code{bit_ada}, @code{bit_gdb}, and @code{bit_rtems} to use the
-@code{/bin/ksh} shell instead.
-
-@c
-@c Reading the Documentation
-@c
-
-@section Reading the Tools Documentation
-
-Each of the tools in the GNU development suite comes with documentation.
-It is in the reader's and tool maintainers' interest that one read the
-documentation before posting a problem to a mailing list or news group.
-
-
-@c
-@c GCC patches
-@c
-
-@section Apply RTEMS Patch to GCC
-
-@ifclear GCC-RTEMSPATCH
-No RTEMS specific patches are required for @value{GCC-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset GCC-RTEMSPATCH
-
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{GCC-UNTAR}
-zcat ../../archive/@value{GCC-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{GCC-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file which is properly applied.
-
-@end ifset
-
-@c
-@c BINUTILS patches
-@c
-
-@section Apply RTEMS Patch to binutils
-
-@ifclear BINUTILS-RTEMSPATCH
-No RTEMS specific patches are required for @value{BINUTILS-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset BINUTILS-RTEMSPATCH
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{BINUTILS-UNTAR}
-zcat ../../archive/@value{BINUTILS-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{BINUTILS-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file which is properly applied.
-
-@end ifset
-
-@c
-@c Newlib patches
-@c
-
-@section Apply RTEMS Patch to newlib
-
-@ifclear NEWLIB-RTEMSPATCH
-No RTEMS specific patches are required for @value{NEWLIB-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset NEWLIB-RTEMSPATCH
-
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{NEWLIB-UNTAR}
-zcat ../../archive/@value{NEWLIB-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{NEWLIB-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file which is properly applied.
-
-@end ifset
-
-@c
-@c GNAT patches
-@c
-
-@section Apply RTEMS Patch to GNAT
-
-@ifclear GNAT-RTEMSPATCH
-No RTEMS specific patches are required for @value{GNAT-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset GNAT-RTEMSPATCH
-
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{GNAT-UNTAR}
-zcat ../../archive/@value{GNAT-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{GNAT-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file which is properly applied.
-
-@end ifset
-
-@c
-@c Copy the ada directory
-@c
-
-
-@section Copy the ada Subdirectory to the GCC Source Tree
-
-Copy the ada subtree in the patched subtree of
-tools/@value{GNAT-UNTAR}/src to the
-tools/@value{GCC-UNTAR} directory:
-
-@example
-cd tools/@value{GNAT-UNTAR}/src
-cp -r ada ../../@value{GCC-UNTAR}
-@end example
-
-@c
-@c Localizing the Configuration
-@c
-
-@section Localizing the Configuration
-
-Edit the @code{user.cfg} file to alter the settings of various
-variables which are used to tailor the build process.
-Each of the variables set in @code{user.cfg} may be modified
-as described below:
-
-@table @code
-@item INSTALL_POINT
-is the location where you wish the GNU C/C++ cross compilation tools for
-RTEMS to be built. It is recommended that the directory chosen to receive
-these tools be named so that it is clear from which egcs distribution it
-was generated and for which target system the tools are to produce code for.
-
-@b{WARNING}: The @code{INSTALL_POINT} should not be a subdirectory
-under the build directory. The build directory will be removed
-automatically upon successful completion of the build procedure.
-
-@item BINUTILS
-is the directory under tools that contains @value{BINUTILS-UNTAR}.
-For example:
-
-@example
-BINUTILS=@value{BINUTILS-UNTAR}
-@end example
-
-@item GCC
-is the directory under tools that contains @value{GCC-UNTAR}.
-For example,
-
-@example
-GCC=@value{GCC-UNTAR}
-@end example
-
-Note that the gnat version is not needed because the gnat source
-is built as part of building gcc.
-
-@item NEWLIB
-is the directory under tools that contains @value{NEWLIB-UNTAR}.
-For example:
-
-@example
-NEWLIB=@value{NEWLIB-UNTAR}
-@end example
-
-@item BUILD_DOCS
-is set to "yes" if you want to install documentation.
-For example:
-
-@example
-BUILD_DOCS=yes
-@end example
-
-@item BUILD_OTHER_LANGUAGES
-is set to "yes" if you want to build languages other than C and C++. At
-the current time, this enables Fortan and Objective-C.
-For example:
-
-@example
-BUILD_OTHER_LANGUAGES=yes
-@end example
-
-@item RTEMS
-is the directory under tools that contails @value{RTEMS-UNTAR}.
-
-@item ENABLE_RTEMS_POSIX
-is set to "yes" if you want to enable the RTEMS POSIX API support.
-At this time, this feature is not supported by the UNIX ports of RTEMS
-and is forced to "no" for those targets. This corresponds to the
-@code{configure} option @code{--enable-posix}.
-
-This must be enabled to support the GNAT/RTEMS run-time.
-
-@item ENABLE_RTEMS_TESTS
-is set to "yes" if you want to build the RTEMS Test Suite. If this
-is set to "no", then only the Sample Tests will be built.
-This corresponds to the @code{configure} option @code{--enable-tests}.
-
-@item ENABLE_RTEMS_TCPIP
-is set to "yes" if you want to build the RTEMS TCP/IP Stack. If a
-particular BSP does not support TCP/IP, then this feature is automatically
-disabled. This corresponds to the @code{configure} option
-@code{--enable-tcpip}.
-
-@item ENABLE_RTEMS_CXX
-is set to "yes" if you want to build the RTEMS C++ support including
-the C++ Wrapper for the Classic API. This corresponds to the
-@code{configure} option @code{--enable-cxx}.
-@end table
-
-@section Running the bit_ada Script
-
-After the @code{bit_ada} script has been modified to reflect the
-local installation, the modified @code{bit_ada} script is run
-using the following sequence:
-
-@example
-cd tools
-./bit_ada <target configuration>
-@end example
-
-Where <target configuration> is one of the following:
-
-@itemize @bullet
-@item hppa1.1
-@item i386
-@item i386-elf
-@item i386-go32
-@item i960
-@item m68k
-@item mips64orion
-@item powerpc
-@item sh
-@item sparc
-@end itemize
-
-NOTE: The above list of target configurations is the list of RTEMS supported
-targets. Only a subset of these have been tested with GNAT/RTEMS. For more
-information, contact your GNAT/RTEMS representative.
-
-If no errors are encountered, the @code{bit_ada} script will conclude by
-printing messages similar to the following:
-
-@example
-
-The src and build-i386-tools subdirectory may now be removed.
-
-Started: Fri Apr 10 10:14:07 CDT 1998
-Finished: Fri Apr 10 12:01:33 CDT 1998
-@end example
-
-If the @code{bit_ada} script successfully completes, then the
-GNU C/C++ cross compilation tools are installed.
-
-If the @code{bit_ada} script does not successfully complete, then investigation
-will be required to determine the source of the error.
-
diff --git a/doc/started_ada/buildrt.t b/doc/started_ada/buildrt.t
deleted file mode 100644
index bb1186aa5a..0000000000
--- a/doc/started_ada/buildrt.t
+++ /dev/null
@@ -1,141 +0,0 @@
-@c
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Building RTEMS
-
-@section Unpack the RTEMS Source
-
-Use the following command sequence to unpack the RTEMS source into the
-tools directory:
-
-@example
-cd tools
-tar xzf ../archive/@value{RTEMS-TAR}
-@end example
-
-@section Add <INSTALL_POINT>/bin to Executable PATH
-
-In order to compile RTEMS, you must have the cross compilation toolset
-in your search patch. The following command appends the directory
-where the tools were installed in the previous chapter:
-
-@example
-export PATH=$PATH:<INSTALL_POINT>/bin
-@end example
-
-@b{NOTE:} The above command is in Bourne shell (@code{sh}) syntax and should
-work with the Korn (@code{ksh}) and GNU Bourne Again Shell (@code{bash}).
-It will not work with the C Shell (@code{csh})or derivatives of the C Shell.
-
-@section Verifying the Operation of the Cross Toolset
-
-In order to insure that the cross-compiler is invoking the correct
-subprograms (like @code{as} and @code{ld}), one can test assemble
-a small program. When in verbose more, @code{gcc} prints out information
-showing where it found the subprograms it invokes. Place the following
-function in a file named @code{f.c}:
-
-@example
-int f( int x )
-@{
- return x + 1;
-@}
-@end example
-
-Then assemble the file using a command similar to the following:
-
-@example
-m68k-rtems-gcc -v -S f.c
-@end example
-
-Where @code{m68k-rtems-gcc} should be changed to match the installed
-name of your cross compiler. The result of this command will be
-a sequence of output showing where the cross-compiler searched for
-and found its subcomponents. Verify that these paths correspond
-to your <INSTALL_POINT>.
-
-@b{NOTE:} One of the most common installation errors is for the
-cross-compiler not to be able to find the cross assembler and default
-to using the native @code{as}. This can result in very confusing
-error messages.
-
-@section Generate RTEMS for a Specific Target and BSP
-
-@subsection Using the bit_rtems script
-
-The simplest way to build RTEMS is to use the @code{bit_rtems} script.
-This script interprets the settings in the @code{user.cfg} file to
-enable or disable the various RTEMS options.
-
-This script is invoked as follows:
-
-@example
-./bit_rtems CPU [BSP]
-@end example
-
-Where CPU is one of the RTEMS supported CPU families from the following
-list:
-
-@itemize @bullet
-@item hppa1.1
-@item i386
-@item i386-elf
-@item i386-go32
-@item i960
-@item m68k
-@item mips64orion
-@item powerpc
-@item sh
-@item sparc
-@end itemize
-
-BSP is a supported BSP for the selected CPU family. The list of
-supported BSPs may be found in the file
-tools/@value{RTEMS-UNTAR}/README.configure
-in the RTEMS source tree. If the BSP parameter is not specified,
-then all supported BSPs for the selected CPU family will be built.
-
-@b{NOTE:} The POSIX API must be enabled to use GNAT/RTEMS.
-
-@subsection Using the RTEMS configure Script Directly
-
-Make a build directory under tools and build the RTEMS product in this
-directory. The ../@value{RTEMS-UNTAR}/configure
-command has numerous command line
-arguments. These arguments are discussed in detail in documentation that
-comes with the RTEMS distribution. In the installation described in the
-section "Unpack the RTEMS source", these configuration options can be found
-in the file tools/@value{RTEMS-UNTAR}/README.configure.
-
-The GNAT/RTEMS run-time implementation is based on the POSIX API. Thus
-the RTEMS configuration for a GNAT/RTEMS environment MUST include the
-@code{--enable-posix} flag.
-
-The following shows the command sequence required to configure,
-compile, and install RTEMS with the POSIX API enabled.
-RTEMS will be built to target the @code{BOARD_SUPPORT_PACKAGE} board.
-
-@example
-mkdir build-rtems
-cd build-rtems
-../@value{RTEMS-UNTAR}/configure --target=<TARGET_CONFIGURATION> \
- --enable-posix \
- --enable-rtemsbsp=<BOARD_SUPPORT_PACKAGE>\
- --prefix=<INSTALL_POINT>
-gmake all install
-@end example
-
-Where the list of currently supported of <TARGET_CONFIGURATION>'s and
-<BOARD_SUPPORT_PACKAGE>'s can be found in
-tools/@value{RTEMS-UNTAR}/README.configure.
-
-<INSTALL_POINT> is the installation point from the previous step
-"Modify the bit_ada Script" in the build of the tools.
-
-
diff --git a/doc/started_ada/gdb.t b/doc/started_ada/gdb.t
deleted file mode 100644
index 6d760ddfc2..0000000000
--- a/doc/started_ada/gdb.t
+++ /dev/null
@@ -1,232 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Building the GNU Debugger
-
-GDB is not currently RTEMS aware. The following configurations have been
-successfully used with RTEMS applications:
-
-@itemize @bullet
-@item Sparc Instruction Simulator (SIS)
-@item PowerPC Instruction Simulator (PSIM)
-@item DINK32
-@end itemize
-
-Other configurations of gdb have successfully been used by RTEMS users
-but are not documented here.
-
-@section Unarchive the gdb Distribution
-
-Use the following commands to unarchive the gdb distribution:
-
-@example
-cd tools
-tar xzf ../archive/@value{GDB-TAR}
-@end example
-
-The directory @value{GDB-UNTAR} is created under the tools directory.
-
-@c
-@c GDB GNAT Patch
-@c
-
-@section Apply GNAT Patch to GDB
-
-@ifclear GDB-GNATPATCH
-No GNAT specific patches are required for @value{GDB-VERSION} to
-support @value{RTEMS-VERSION} and @value{GNAT-VERSION}.
-@end ifclear
-
-@ifset GDB-GNATPATCH
-
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-zcat archive/@value{GDB-GNATPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file.
-
-To see the files that have been modified use the sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-find . -name "*.orig" -print
-@end example
-
-The files that are found, have been modified by the patch file.
-
-@end ifset
-
-@c
-@c GDB RTEMS Patch
-@c
-
-@section Apply RTEMS Patch to GDB
-
-@ifclear GDB-RTEMSPATCH
-No RTEMS specific patches are required for @value{GDB-VERSION} to
-support @value{RTEMS-VERSION}.
-@end ifclear
-
-@ifset GDB-RTEMSPATCH
-
-Apply the patch using the following command sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-zcat archive/@value{GDB-RTEMSPATCH} | patch -p1
-@end example
-
-Check to see if any of these patches have been rejected using the following
-sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-find . -name "*.rej" -print
-@end example
-
-If any files are found with the .rej extension, a patch has been rejected.
-This should not happen with a good patch file.
-
-To see the files that have been modified use the sequence:
-
-@example
-cd tools/@value{GDB-UNTAR}
-find . -name "*.orig" -print
-@end example
-
-The files that are found, have been modified by the patch file.
-
-@end ifset
-
-
-@section GDB with Sparc Instruction Simulation (SIS)
-
-@subheading Make the Build Directory
-
-Create a build directory for the SIS Debugger
-
-@example
-cd tools
-mkdir build-sis
-@end example
-
-@subheading Configure for the Build
-
-Configure the GNU Debugger for the
-Sparc Instruction Simulator (SIS):
-
-@example
-cd tools/build-sis
-../@value{GDB-UNTAR}/configure --target-sparc-erc32-aout \
- --program-prefix=sparc-rtems- \
- --disable-gdbtk \
- --enable-targets=all \
- --prefix=<INSTALL_POINT_FOR_SIS>
-@end example
-
-Where <INSTALL_POINT_FOR_SIS> is a unique location where the gdb
-with SIS will be created.
-
-@subheading Make the Debugger
-
-From tools/build-sis execute the following command sequence:
-
-@example
-gmake all install
-@end example
-
-
-@section GDB with PowerPC Instruction Simulator
-
-@subheading Make the Build Directory
-
-Create a build directory for the SIS Debugger
-
-@example
-cd tools
-mkdir build-ppc
-@end example
-
-@subheading Configure for the Build
-
-Configure the GNU Debugger for the PowerPC
-Instruction Simulator (PSIM):
-
-@example
-cd tools/build-ppc
-../@value{GDB-UNTAR}/configure \
- --target=powerpc-unknown-eabi \
- --program-prefix=powerpc-rtems- \
- --enable-sim-powerpc \
- --enable-sim-timebase \
- --enable-sim-inline \
- --enable-sim-hardware \
- --enable-targets=all \
- --prefix=<INSTALL_POINT_FOR_PPC>
-@end example
-
-Where <INSTALL_POINT_FOR_PPC> is a unique location where the gdb
-with PSIM will be created.
-
-
-@subheading Make the Debugger
-
-From tools/build-ppc execute the following command sequence:
-
-@example
-gmake all install
-@end example
-
-
-@section GDB for DINK32
-
-@subheading Make the Build Directory
-
-Create a build directory for the DINK32 Debugger
-
-@example
-cd tools
-mkdir build-dink32
-@end example
-
-@subheading Configure for the Build
-
-Configure the GNU Debugger to communicate with
-the DINK32 ROM monitor:
-
-@example
-cd tools/build-dink32
-../@value{GDB-UNTAR}/configure --target-powerpc-elf \
- --program-prefix=powerpc-rtems- \
- --enable-targets=all \
- --prefix=<INSTALL_POINT_FOR_DINK32>
-@end example
-
-Where <INSTALL_POINT_FOR_DINK32> is a unique location where the
-gdb Dink32 will be created.
-
-@subheading Make the Debugger
-
-From tools/build-dink32 execute the following command sequence:
-
-@example
-gmake all install
-@end example
-
diff --git a/doc/started_ada/intro.t b/doc/started_ada/intro.t
deleted file mode 100644
index 823b83dd06..0000000000
--- a/doc/started_ada/intro.t
+++ /dev/null
@@ -1,161 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Introduction
-
-The purpose of this document is to guide you through the process of
-installing a GNU cross development environment to use with RTEMS.
-
-If you are already familiar with the concepts behind a cross compiler and
-have a background in Unix, these instructions should provide the bare
-essentials for performing a setup of the following items:
-
-@itemize @bullet
-@item GNAT/RTEMS Cross Compilation Tools on your host system
-@item RTEMS OS for the target host
-@item GDB Debugger
-@end itemize
-
-The remainder of this chapter provides background information on real-time
-embedded systems and cross development and an overview of other
-resources of interest on the Internet. If you are not familiar with
-real-time embedded systems or the other areas, please read those sections.
-These sections will help familiarize you with the
-types of systems RTEMS is designed to be used in and the cross development
-process used when developing RTEMS applications.
-
-@section Real-Time Embedded Systems
-
-Real-time embedded systems are found in practically every facet of our
-everyday lives. Today's systems range from the common telephone, automobile
-control systems, and kitchen appliances to complex air traffic control
-systems, military weapon systems, an d production line control including
-robotics and automation. However, in the current climate of rapidly changing
-technology, it is difficult to reach a consensus on the definition of a
-real-time embedded system. Hardware costs are continuing to rapidly decline
-while at the same time the hardware is increasing in power and functionality.
-As a result, embedded systems that were not considered viable two years ago
-are suddenly a cost effective solution. In this domain, it is not uncommon
-for a single hardware configuration to employ a variety of architectures and
-technologies. Therefore, we shall define an embedded system as any computer
-system that is built into a larger system consisting of multiple technologies
-such as digital and analog electronics, mechanical devices, and sensors.
-
-Even as hardware platforms become more powerful, most embedded systems are
-critically dependent on the real-time software embedded in the systems
-themselves. Regardless of how efficiently the hardware operates, the
-performance of the embedded real-time software determines the success of the
-system. As the complexity of the embedded hardware platform grows, so does
-the size and complexity of the embedded software. Software systems must
-routinely perform activities which were only dreamed of a short time ago.
-These large, complex, real-time embedded applications now commonly contain
-one million lines of code or more.
-
-Real-time embedded systems have a complex set of characteristics that
-distinguish them from other software applications. Real-time embedded
-systems are driven by and must respond to real world events while adhering to
-rigorous requirements imposed by the environment with which they interact.
-The correctness of the system depends not only on the results of
-computations, but also on the time at which the results are produced. The
-most important and complex characteristic of real-time application systems is
-that they must receive and respond to a set of external stimuli within rigid
-and critical time constraints.
-
-A single real-time application can be composed of both soft and hard
-real-time components. A typical example of a hard real-time system is a
-nuclear reactor control system that must not only detect failures, but must
-also respond quickly enough to prevent a meltdown. This application also has
-soft real-time requirements because it may involve a man-machine interface.
-Providing an interactive input to the control system is not as critical as
-setting off an alarm to indicate a failure condition. However, th e
-interactive system component must respond within an acceptable time limit to
-allow the operator to interact efficiently with the control system.
-
-@section Cross Development
-
-Today almost all real-time embedded software systems are developed in a
-@b{cross development} environment using cross development tools. In the cross
-development environment, software development activities are typically
-performed on one computer system, the @b{host} system, while the result of the
-development effort (produced by the cross tools) is a software system that
-executes on the @b{target} platform. The requirements for the target platform are
-usually incompatible and quite often in direct conflict with the requirements
-for the host. Moreover, the target hardware is often custom designed for a
-particular project. This means that the cross development toolset must allow
-the developer to customize the tools to address target specific run-time
-issues. The toolset must have provisions for board dependent initialization
-code, device drivers, and error handling code.
-
-The host computer is optimized to support the code development cycle with
-support for code editors, compilers, and linkers requiring large disk drives,
-user development windows, and multiple developer connections. Thus the host
-computer is typically a traditional UNIX workstation such as are available
-from SUN or Silicon Graphics, or a PC running either a version of MS-Windows
-or UNIX. The host system may also be required to execute office productivity
-applications to allow the software developer to write documentation, make
-presentations, or track the project's progress using a project management
-tool. This necessitates that the host computer be general purpose with
-resources such as a thirty-two or sixty-four bit processor, large amounts of
-RAM, a monitor, mouse, keyboard, hard and floppy disk drives, CD-ROM drive,
-and a graphics card. It is likely that the system will be multimedia capable
-and have some networking capability.
-
-Conversely, the target platform generally has limited traditional computer
-resources. The hardware is designed for the particular functionality and
-requirements of the embedded system and optimized to perform those tasks
-effectively. Instead of hard driverss and keyboards, it is composed of
-sensors, relays, and stepper motors. The per-unit cost of the target platform
-is typically a critical concern. No hardware component is included without
-being cost justified. As a result, the processor of the target system is
-often from a different processor family than that of the host system and
-usually has lower performance. In addition to the processor families
-targeted only for use in embedded systems, there are versions of nearly every
-general-purpose process or specifically tailored for real-time embedded
-systems. For example, many of the processors targeting the embedded market
-do not include hardware floating point units, but do include peripherals such
-as timers, serial controllers, or network interfaces.
-
-@section Resources on the Internet
-
-This section describes various resources on the Internet which are of
-use to GNAT/RTEMS users.
-
-@subsection RTEMS Mailing List
-
-rtems-list@@OARcorp.com
-
-This mailing list is dedicated to discussion of issues related
-to RTEMS. If you have questions about RTEMS, wish to make
-suggestions, or just want to pick up hints, this is a good
-list to subscribe to. Subscribe by sending a message with
-the one line "subscribe" to rtems-list-request@@OARcorp.com.
-
-@subsection CrossGCC Mailing List
-
-crossgcc@@cygnus.com
-
-This mailing list is dedicated to the use of the GNU tools in
-cross development environments. Most of the discussions
-focus on embedded issues. Subscribe by sending a message with
-the one line "subscribe" to crossgcc-request@@cygnus.com.
-
-The crossgcc FAQ as well as a number of patches and utiliities
-of interest to cross development system users are available
-at ftp://ftp.cygnus.com/pub/embedded/crossgcc.
-
-@subsection GNAT Chat Mailing List
-
-chat@@gnat.com
-
-This mailing list is dedicated to the general discussion
-of GNAT specific issues. The discussions try to avoid
-more general Ada95 language issues which have other
-forums. Subscribe by sending a message with
-the one line "subscribe" to chat-request@@gnat.com.
-
-
diff --git a/doc/started_ada/require.t b/doc/started_ada/require.t
deleted file mode 100644
index 6a9c02ff2f..0000000000
--- a/doc/started_ada/require.t
+++ /dev/null
@@ -1,102 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Requirements
-
-A fairly large amount of disk space is required to perform the build of the
-GNU C/C++ Cross Compiler Tools for RTEMS. The following table may help in
-assessing the amount of disk space required for your installation:
-
-@example
-+----------------------------------------+------------------------------+
-| Component | Disk Space Required |
-+----------------------------------------+------------------------------+
-| archive directory | 30 Mbytes |
-| tools src unzipped | 100 Mbytes |
-| each individual build directory | 300 Mbytes worst case |
-| each installation directory | 20-130 Mbytes |
-+----------------------------------------+------------------------------+
-@end example
-
-The disk space required for each installation directory depends
-primarily on the number of RTEMS BSPs which are to be installed.
-If a single BSP is installed, then the size of each install directory
-will tend to be in the 40-60 Mbyte range.
-
-The instructions in this manual should work on any computer running
-a UNIX variant. Some native GNU tools are used by this procedure
-including:
-
-@itemize @bullet
-@item GCC
-@item GNAT
-@item GNU make
-@end itemize
-
-In addition, some native utilities may be deficient for building
-the GNU tools.
-
-@section Native GNAT
-
-The native GNAT must be installed in the default location or built
-from source. No GCC or GNAT environment variables should be set during
-the build or use of the cross GNAT/RTEMS toolset as this could result in
-an unpredictable mix of native and cross toolsets.
-
-Binaries for native GNAT installations are available at the primary
-GNAT ftp site (@value{GNAT-FTP}. Installation instructions are
-included with the binary GNAT distributions. The binary installation
-should be installed in the default location or installed in a
-non-default location and used ONLY to build a native GNAT from source.
-This final native GNAT will be used to build the GNAT/RTEMS cross
-development toolset.
-
-@subsection Verifying Correct Operation of Native GNAT
-
-It is imperative that the native GNAT installation work correctly for
-the installation of GNAT/RTEMS to succeed. It is recommended that the
-user verify that the native GNAT is installed correctly by performing
-these tests:
-
-@subsubsection Native Hello World Test
-
-Place the following Ada source code in hello.adb:
-
-@example
-with Text_IO; use Text_IO;
-
-procedure Hello is
-begin
- Put_Line ( "Hello World");
-end Hello;
-@end example
-
-Use the following command sequence to ompile and execute the above program:
-
-@example
-gnatmake hello
-./hello
-@end example
-
-If the message @code{Hello World} is printed, then the native installation
-of GNAT operates well enough to proceed.
-
-@subsubsection Insure GCC and GNAT Environment Variables Are Not Set
-
-If any of the following commands produce output, then you have
-environment variables overriding the default behavior of the
-native GNAT toolset. These variables will conflict with the cross
-toolset. Please resolve this problem before proceeding further.
-
-@example
-echo $GCC_EXEC_PREFIX
-echo $ADA_INCLUDE_PATH
-echo $ADA_OBJECTS_PATH
-echo $LD_RUN_PATH
-echo $C_INCLUDE_PATH
-@end example
diff --git a/doc/started_ada/sample.t b/doc/started_ada/sample.t
deleted file mode 100644
index 2fd72f4343..0000000000
--- a/doc/started_ada/sample.t
+++ /dev/null
@@ -1,54 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Building the Sample Application
-
-@section Unpack the Sample Application
-
-Use the following command to unarchive the sample application:
-
-@example
-cd tools
-tar xzf ../archive/hello_world_ada.tgz
-@end example
-
-@section Create a BSP Specific Makefile
-
-Provided are example Makefiles for multiple BSPs. Copy one of these to
-the file Makefile.<BOARD_SUPPORT_PACKAGE> and edit it as appropriate for
-your local configuration.
-
-Use the <INSTALLATION_POINT> and <BOARD_SUPPORT_PACKAGE> specified when
-configuring and installing RTEMS.
-
-@section Build the Sample Application
-
-Use the following command to start the build of the sample application:
-
-@example
-cd tools/hello_world_ada
-gmake -f Makefile.<BOARD_SUPPORT_PACKAGE>
-@end example
-
-If the BSP specific modifications to the Makefile were correct and
-no errors are detected during the sample application build, it is
-reasonable to assume that the build of the GNAT/RTEMS Cross Compiler Tools
-for RTEMS and RTEMS itself for the selected host and target
-combination was done properly.
-
-@section Application Executable
-
-If the sample application has successfully been build, then the application
-executable is placed in the following directory:
-
-@example
-tools/hello_world_ada/o-<BOARD_SUPPORT_PACKAGE>/<filename>.exe
-@end example
-
-How this executable is downloaded to the target board is very dependent
-on the BOARD_SUPPORT_PACKAGE selected.
diff --git a/doc/started_ada/started_ada.texi b/doc/started_ada/started_ada.texi
deleted file mode 100644
index a6809734ff..0000000000
--- a/doc/started_ada/started_ada.texi
+++ /dev/null
@@ -1,115 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename started_ada
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Getting Started (C) Guide
-@c
-
-@include ../common/setup.texi
-
-@c
-@c Now set all the tool version dependent information
-@c
-@include versions.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* Getting Started with GNAT/RTEMS (started_ada):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage Getting Started with RTEMS
-
-@setchapternewpage odd
-@settitle Getting Started with GNAT/RTEMS
-@titlepage
-@finalout
-
-@title Getting Started with GNAT/RTEMS
-@subtitle Edition @value{edition}, for @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include intro.texi
-@include require.texi
-@include buildada.texi
-@include buildrt.texi
-@include sample.texi
-@include gdb.texi
-
-@ifinfo
-@node Top, Introduction, (dir), (dir)
-@top started_ada
-
-This is the online version of the Getting Started with GNAT/RTEMS.
-
-@menu
-* Introduction::
-* Requirements::
-* Building the GNAT Cross Compiler Toolset::
-* Building RTEMS::
-* Building the Sample Application::
-* Building the GNU Debugger::
-@end menu
-
-@c * Command and Variable Index::
-@c * Concept Index::
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@c @node Command and Variable Index, Concept Index, GDB for DINK32, Top
-@c @unnumbered Command and Variable Index
-
-@c There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@c @node Concept Index, , Command and Variable Index, Top
-@c @unnumbered Concept Index
-
-@c There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/started_ada/versions.texi b/doc/started_ada/versions.texi
deleted file mode 100644
index d238b85558..0000000000
--- a/doc/started_ada/versions.texi
+++ /dev/null
@@ -1,96 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c This file contains all toolset version dependent information
-@c
-
-@c
-@c Comment out setting the "XYZ-RTEMSPATCH" variable if there is no
-@c patch required. The documentation will detect this and print
-@c an appropriate message in a short section.
-@c
-
-
-@c
-@c GCC/EGCS Version
-@c
-
-@set GCC-VERSION gcc 2.8.1
-@set GCC-TAR gcc-2.8.1.tar.gz
-@set GCC-UNTAR gcc-2.8.1
-@set GCC-FTPSITE ftp.gnu.org
-@set GCC-FTPDIR /pub/gnu
-@set GCC-RTEMSPATCH gcc-2.8.1-rtems-diff-19980527.gz
-
-@c
-@c GNAT Version
-@c
-
-@set GNAT-VERSION gnat 3.10p
-@set GNAT-TAR gnat-3.10p-src.tar.gz
-@set GNAT-UNTAR gnat-3.10p-src
-@set GNAT-FTPSITE cs.nyu.edu
-@set GNAT-FTPDIR /pub/gnat
-@set GNAT-RTEMSPATCH gnat-3.10p-rtems-diff-19971106.gz
-
-@c
-@c BINUTILS Version
-@c
-
-@c The "official" binutils
-@set BINUTILS-VERSION binutils 2.9.1
-@set BINUTILS-TAR binutils-2.9.1.tar.gz
-@set BINUTILS-UNTAR binutils-2.9.1
-@set BINUTILS-FTPSITE ftp.gnu.org
-@set BINUTILS-FTPDIR /pub/gnu
-@set BINUTILS-RTEMSPATCH binutils-2.9.1-rtems-diff-19981027.gz
-
-@c When forced to use a snapshot
-@c @set BINUTILS-VERSION gas 980314
-@c @set BINUTILS-TAR gas-980314.tgz
-@c @set BINUTILS-UNTAR gas-980314
-@c @set BINUTILS-FTPSITE ftp.OARcorp.com
-@c @set BINUTILS-FTPDIR /oarcorp/private/beta3/ada_tools
-@c @set BINUTILS-RTEMSPATCH binutils-2.8.1-rtems-diff-980321.gz
-
-@c
-@c NEWLIB Version
-@c
-
-@set NEWLIB-VERSION newlib 1.8.0
-@set NEWLIB-TAR newlib-1.8.0.tar.gz
-@set NEWLIB-UNTAR newlib-1.8.0
-@set NEWLIB-FTPSITE ftp.cygnus.com
-@set NEWLIB-FTPDIR /pub/newlib
-@set NEWLIB-RTEMSPATCH newlib-1.8.0-rtems-diff-19981027.gz
-
-@c
-@c GDB Version
-@c
-
-@set GDB-VERSION gdb 4.17
-@set GDB-TAR gdb-4.17.tar.gz
-@set GDB-UNTAR gdb-4.17
-@set GDB-FTPSITE ftp.gnu.org
-@set GDB-FTPDIR /pub/gnu
-@set GDB-RTEMSPATCH gdb-4.17-rtems-diff-19981027.gz
-@c @set GDB-GNATPATCH gdb-ada-patch-1.17.8.gz
-
-@c
-@c RTEMS Version
-@c
-
-@set RTEMS-VERSION RTEMS 4.0.0
-@set RTEMS-TAR rtems-4.0.0.tgz
-@set RTEMS-UNTAR rtems-4.0.0
-@set RTEMS-FTPSITE ftp.OARcorp.com
-@set RTEMS-FTPDIR /pub/rtems/4.0.0
-@set BUILDTOOLS-TAR ada_build_scripts-4.0.0.tgz
-
-
diff --git a/doc/supplements/hppa1_1/Makefile b/doc/supplements/hppa1_1/Makefile
deleted file mode 100644
index 8714087ac0..0000000000
--- a/doc/supplements/hppa1_1/Makefile
+++ /dev/null
@@ -1,147 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=hppa1_1
-DISTRIBUTION_LEVEL=support
-
-include ../../Make.config
-
-REPLACE=../../tools/word-replace
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../../common/cpright.texi ../../common/setup.texi
-
-GENERATED_FILES=\
- cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \
- bsp.texi cputable.texi wksheets.texi timing.texi timeSIMHPPA.texi
-
-FILES= $(PROJECT).texi \
- preface.texi \
- $(GENERATED_FILES)
-
-info: dirs c_hppa1_1
- cp c_$(PROJECT) $(INFO_INSTALL)
-
-c_hppa1_1: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/c_$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/c_$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-*
- rm -f c_hppa1_1 c_hppa1_1-*
- rm -f intr.t
- rm -f timing.t timing.texi
- rm -f wksheets.t wksheets_NOTIMES.t $(GENERATED_FILES)
- rm -f *.fixed _*
-
-#
-# Chapters which get automatic processing
-#
-
-cpumodel.texi: cpumodel.t Makefile
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Calling Conventions" ${*}.t
-
-callconv.texi: callconv.t Makefile
- $(BMENU) -p "CPU Model Dependent Features CPU Model Name" \
- -u "Top" \
- -n "Memory Model" ${*}.t
-
-memmodel.texi: memmodel.t Makefile
- $(BMENU) -p "Calling Conventions User-Provided Routines" \
- -u "Top" \
- -n "Interrupt Processing" ${*}.t
-
-# Interrupt Chapter:
-# 1. Replace Times and Sizes
-# 2. Build Node Structure
-
-intr.t: intr_NOTIMES.t SIMHPPA_TIMES
- ${REPLACE} -p SIMHPPA_TIMES intr_NOTIMES.t
- mv intr_NOTIMES.t.fixed intr.t
-
-intr.texi: intr.t Makefile
- $(BMENU) -p "Memory Model Flat Memory Model" \
- -u "Top" \
- -n "Default Fatal Error Processing" ${*}.t
-
-
-fatalerr.texi: fatalerr.t Makefile
- $(BMENU) -p "Interrupt Processing Disabling of Interrupts by RTEMS" \
- -u "Top" \
- -n "Board Support Packages" ${*}.t
-
-bsp.texi: bsp.t Makefile
- $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \
- -u "Top" \
- -n "Processor Dependent Information Table" ${*}.t
-
-cputable.texi: cputable.t Makefile
- $(BMENU) -p "Board Support Packages Processor Initialization" \
- -u "Top" \
- -n "Memory Requirements" ${*}.t
-
-# Worksheets Chapter:
-# 1. Obtain the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-wksheets_NOTIMES.t: ../../common/wksheets.t
- cp ../../common/wksheets.t wksheets_NOTIMES.t
-
-wksheets.t: wksheets_NOTIMES.t SIMHPPA_TIMES
- ${REPLACE} -p SIMHPPA_TIMES wksheets_NOTIMES.t
- mv wksheets_NOTIMES.t.fixed wksheets.t
-
-wksheets.texi: wksheets.t Makefile
- $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \
- -u "Top" \
- -n "Timing Specification" ${*}.t
-
-# Timing Specification Chapter:
-# 1. Copy the Shared File
-# 3. Build Node Structure
-
-timing.t: ../../common/timing.t
- cp ../../common/timing.t timing.t
-
-timing.texi: timing.t Makefile
- $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \
- -u "Top" \
- -n "HP-7100 Timing Data" ${*}.t
-
-# Timing Data for BSP Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-timeSIMHPPA.texi: timeSIMHPPA.t Makefile
- $(BMENU) -p "Timing Specification Terminology" \
- -u "Top" \
- -n "Command and Variable Index" ${*}.t
diff --git a/doc/supplements/hppa1_1/SIMHPPA_TIMES b/doc/supplements/hppa1_1/SIMHPPA_TIMES
deleted file mode 100644
index 311553aa03..0000000000
--- a/doc/supplements/hppa1_1/SIMHPPA_TIMES
+++ /dev/null
@@ -1,247 +0,0 @@
-#
-# PA-RISC Timing and Size Information
-#
-# $Id$
-#
-
-#
-# CPU Model Information
-#
-RTEMS_BSP simhppa
-RTEMS_CPU_MODEL HP-7100
-#
-# Interrupt Latency
-#
-# NOTE: In general, the text says it is hand-calculated to be
-# RTEMS_MAXIMUM_DISABLE_PERIOD at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-# Mhz and this was last calculated for Release
-# RTEMS_VERSION_FOR_MAXIMUM_DISABLE_PERIOD.
-#
-RTEMS_MAXIMUM_DISABLE_PERIOD TBD
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ TBD
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD TBD
-#
-# Context Switch Times
-#
-RTEMS_NO_FP_CONTEXTS 1
-RTEMS_RESTORE_1ST_FP_TASK 2
-RTEMS_SAVE_INIT_RESTORE_INIT 3
-RTEMS_SAVE_IDLE_RESTORE_INIT 4
-RTEMS_SAVE_IDLE_RESTORE_IDLE 5
-#
-# Task Manager Times
-#
-RTEMS_TASK_CREATE_ONLY 6
-RTEMS_TASK_IDENT_ONLY 7
-RTEMS_TASK_START_ONLY 8
-RTEMS_TASK_RESTART_CALLING_TASK 9
-RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER 9
-RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER 10
-RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER 11
-RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER 12
-RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER 13
-RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER 14
-RTEMS_TASK_DELETE_CALLING_TASK 15
-RTEMS_TASK_DELETE_SUSPENDED_TASK 16
-RTEMS_TASK_DELETE_BLOCKED_TASK 17
-RTEMS_TASK_DELETE_READY_TASK 18
-RTEMS_TASK_SUSPEND_CALLING_TASK 19
-RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER 20
-RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER 21
-RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER 22
-RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY 23
-RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER 24
-RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER 25
-RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE 26
-RTEMS_TASK_MODE_NO_RESCHEDULE 27
-RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER 28
-RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER 29
-RTEMS_TASK_GET_NOTE_ONLY 30
-RTEMS_TASK_SET_NOTE_ONLY 31
-RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER 32
-RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER 33
-RTEMS_TASK_WAKE_WHEN_ONLY 34
-#
-# Interrupt Manager
-#
-RTEMS_INTR_ENTRY_RETURNS_TO_NESTED 35
-RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK 36
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK 37
-RTEMS_INTR_EXIT_RETURNS_TO_NESTED 38
-RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK 39
-RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK 40
-#
-# Clock Manager
-#
-RTEMS_CLOCK_SET_ONLY 41
-RTEMS_CLOCK_GET_ONLY 42
-RTEMS_CLOCK_TICK_ONLY 43
-#
-# Timer Manager
-#
-RTEMS_TIMER_CREATE_ONLY 44
-RTEMS_TIMER_IDENT_ONLY 45
-RTEMS_TIMER_DELETE_INACTIVE 46
-RTEMS_TIMER_DELETE_ACTIVE 47
-RTEMS_TIMER_FIRE_AFTER_INACTIVE 48
-RTEMS_TIMER_FIRE_AFTER_ACTIVE 49
-RTEMS_TIMER_FIRE_WHEN_INACTIVE 50
-RTEMS_TIMER_FIRE_WHEN_ACTIVE 51
-RTEMS_TIMER_RESET_INACTIVE 52
-RTEMS_TIMER_RESET_ACTIVE 53
-RTEMS_TIMER_CANCEL_INACTIVE 54
-RTEMS_TIMER_CANCEL_ACTIVE 55
-#
-# Semaphore Manager
-#
-RTEMS_SEMAPHORE_CREATE_ONLY 56
-RTEMS_SEMAPHORE_IDENT_ONLY 57
-RTEMS_SEMAPHORE_DELETE_ONLY 58
-RTEMS_SEMAPHORE_OBTAIN_AVAILABLE 59
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT 60
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS 61
-RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS 62
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER 63
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER 64
-#
-# Message Manager
-#
-RTEMS_MESSAGE_QUEUE_CREATE_ONLY 65
-RTEMS_MESSAGE_QUEUE_IDENT_ONLY 66
-RTEMS_MESSAGE_QUEUE_DELETE_ONLY 67
-RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS 68
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER 69
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER 70
-RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS 71
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER 72
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER 73
-RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS 74
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER 75
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER 76
-RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE 77
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT 78
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 79
-RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED 80
-RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED 81
-#
-# Event Manager
-#
-RTEMS_EVENT_SEND_NO_TASK_READIED 82
-RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER 83
-RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER 84
-RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS 85
-RTEMS_EVENT_RECEIVE_AVAILABLE 86
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT 87
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 88
-#
-# Signal Manager
-#
-RTEMS_SIGNAL_CATCH_ONLY 89
-RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER 90
-RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF 91
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK 92
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK 93
-#
-# Partition Manager
-#
-RTEMS_PARTITION_CREATE_ONLY 94
-RTEMS_PARTITION_IDENT_ONLY 95
-RTEMS_PARTITION_DELETE_ONLY 96
-RTEMS_PARTITION_GET_BUFFER_AVAILABLE 97
-RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE 98
-RTEMS_PARTITION_RETURN_BUFFER_ONLY 99
-#
-# Region Manager
-#
-RTEMS_REGION_CREATE_ONLY 100
-RTEMS_REGION_IDENT_ONLY 101
-RTEMS_REGION_DELETE_ONLY 102
-RTEMS_REGION_GET_SEGMENT_AVAILABLE 103
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT 104
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS 105
-RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS 106
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER 107
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER 108
-#
-# Dual-Ported Memory Manager
-#
-RTEMS_PORT_CREATE_ONLY 109
-RTEMS_PORT_IDENT_ONLY 110
-RTEMS_PORT_DELETE_ONLY 111
-RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY 112
-RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY 113
-#
-# IO Manager
-#
-RTEMS_IO_INITIALIZE_ONLY 114
-RTEMS_IO_OPEN_ONLY 115
-RTEMS_IO_CLOSE_ONLY 116
-RTEMS_IO_READ_ONLY 117
-RTEMS_IO_WRITE_ONLY 118
-RTEMS_IO_CONTROL_ONLY 119
-#
-# Rate Monotonic Manager
-#
-RTEMS_RATE_MONOTONIC_CREATE_ONLY 120
-RTEMS_RATE_MONOTONIC_IDENT_ONLY 121
-RTEMS_RATE_MONOTONIC_CANCEL_ONLY 122
-RTEMS_RATE_MONOTONIC_DELETE_ACTIVE 123
-RTEMS_RATE_MONOTONIC_DELETE_INACTIVE 124
-RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER 125
-RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS 126
-RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS 127
-#
-# Size Information
-#
-#
-# xxx alloted for numbers
-#
-RTEMS_DATA_SPACE 128
-RTEMS_MINIMUM_CONFIGURATION xx,129
-RTEMS_MAXIMUM_CONFIGURATION xx,130
-# x,xxx alloted for numbers
-RTEMS_CORE_CODE_SIZE x,131
-RTEMS_INITIALIZATION_CODE_SIZE x,132
-RTEMS_TASK_CODE_SIZE x,133
-RTEMS_INTERRUPT_CODE_SIZE x,134
-RTEMS_CLOCK_CODE_SIZE x,135
-RTEMS_TIMER_CODE_SIZE x,136
-RTEMS_SEMAPHORE_CODE_SIZE x,137
-RTEMS_MESSAGE_CODE_SIZE x,138
-RTEMS_EVENT_CODE_SIZE x,139
-RTEMS_SIGNAL_CODE_SIZE x,140
-RTEMS_PARTITION_CODE_SIZE x,141
-RTEMS_REGION_CODE_SIZE x,142
-RTEMS_DPMEM_CODE_SIZE x,143
-RTEMS_IO_CODE_SIZE x,144
-RTEMS_FATAL_ERROR_CODE_SIZE x,145
-RTEMS_RATE_MONOTONIC_CODE_SIZE x,146
-RTEMS_MULTIPROCESSING_CODE_SIZE x,147
-# xxx alloted for numbers
-RTEMS_TIMER_CODE_OPTSIZE 148
-RTEMS_SEMAPHORE_CODE_OPTSIZE 149
-RTEMS_MESSAGE_CODE_OPTSIZE 150
-RTEMS_EVENT_CODE_OPTSIZE 151
-RTEMS_SIGNAL_CODE_OPTSIZE 152
-RTEMS_PARTITION_CODE_OPTSIZE 153
-RTEMS_REGION_CODE_OPTSIZE 154
-RTEMS_DPMEM_CODE_OPTSIZE 155
-RTEMS_IO_CODE_OPTSIZE 156
-RTEMS_RATE_MONOTONIC_CODE_OPTSIZE 157
-RTEMS_MULTIPROCESSING_CODE_OPTSIZE 158
-# xxx alloted for numbers
-RTEMS_BYTES_PER_TASK 159
-RTEMS_BYTES_PER_TIMER 160
-RTEMS_BYTES_PER_SEMAPHORE 161
-RTEMS_BYTES_PER_MESSAGE_QUEUE 162
-RTEMS_BYTES_PER_REGION 163
-RTEMS_BYTES_PER_PARTITION 164
-RTEMS_BYTES_PER_PORT 165
-RTEMS_BYTES_PER_PERIOD 166
-RTEMS_BYTES_PER_EXTENSION 167
-RTEMS_BYTES_PER_FP_TASK 168
-RTEMS_BYTES_PER_NODE 169
-RTEMS_BYTES_PER_GLOBAL_OBJECT 170
-RTEMS_BYTES_PER_PROXY 171
-# x,xxx alloted for numbers
-RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS x,172
diff --git a/doc/supplements/hppa1_1/bsp.t b/doc/supplements/hppa1_1/bsp.t
deleted file mode 100644
index 1ec4380589..0000000000
--- a/doc/supplements/hppa1_1/bsp.t
+++ /dev/null
@@ -1,53 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Board Support Packages
-
-@section Introduction
-
-An RTEMS Board Support Package (BSP) must be designed
-to support a particular processor and target board combination.
-This chapter presents a discussion of PA-RISC specific BSP
-issues. For more information on developing a BSP, refer to the
-chapter titled Board Support Packages in the RTEMS
-Applications User's Guide.
-
-@section System Reset
-
-An RTEMS based application is initiated or
-re-initiated when the PA-RISC processor is reset. The behavior
-of a PA-RISC upon reset is implementation defined and thus is
-beyond the scope of this manual.
-
-@section Processor Initialization
-
-The precise requirements for initialization of a
-particular implementation of the PA-RISC architecture are
-implementation defined. Thus it is impossible to provide exact
-details of this procedure in this manual. However, the
-requirements of RTEMS which must be satisfied by this
-initialization code can be discussed.
-
-RTEMS assumes that interrupts are disabled when the
-initialize_executive directive is invoked. Interrupts are
-enabled automatically by RTEMS as part of the initialize
-executive directive and device driver initialization occurs
-after interrupts are enabled. Thus all interrupt sources should
-be quiescent until the system's device drivers have been
-initialized and installed their interrupt handlers.
-
-If the processor requires initialization of the
-cache, then it should be be done during the reset application
-initialization code.
-
-Finally, the requirements in the Board Support
-Packages chapter of the Applications User's Manual for the
-reset code which is executed before the call to initialize
-executive must be satisfied.
-
-
diff --git a/doc/supplements/hppa1_1/callconv.t b/doc/supplements/hppa1_1/callconv.t
deleted file mode 100644
index 570120a7e3..0000000000
--- a/doc/supplements/hppa1_1/callconv.t
+++ /dev/null
@@ -1,143 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Calling Conventions
-
-@section Introduction
-
-Each high-level language compiler generates
-subroutine entry and exit code based upon a set of rules known
-as the compiler's calling convention. These rules address the
-following issues:
-
-@itemize @bullet
-@item register preservation and usage
-
-@item parameter passing
-
-@item call and return mechanism
-@end itemize
-
-A compiler's calling convention is of importance when
-interfacing to subroutines written in another language either
-assembly or high-level. Even when the high-level language and
-target processor are the same, different compilers may use
-different calling conventions. As a result, calling conventions
-are both processor and compiler dependent.
-
-This chapter describes the calling conventions used
-by the GNU C and standard HP-UX compilers for the PA-RISC
-architecture.
-
-@section Processor Background
-
-The PA-RISC architecture supports a simple yet
-effective call and return mechanism for subroutine calls where
-the caller and callee are both in the same address space. The
-compiler will not automatically generate subroutine calls which
-cross address spaces. A subroutine is invoked via the branch
-and link (bl) or the branch and link register (blr). These
-instructions save the return address in a caller specified
-register. By convention, the return address is saved in r2.
-The callee is responsible for maintaining the return address so
-it can return to the correct address. The branch vectored (bv)
-instruction is used to branch to the return address and thus
-return from the subroutine to the caller. It is is important to
-note that the PA-RISC subroutine call and return mechanism does
-not automatically save or restore any registers. It is the
-responsibility of the high-level language compiler to define the
-register preservation and usage convention.
-
-@section Calling Mechanism
-
-All RTEMS directives are invoked as standard
-subroutines via a bl or a blr instruction with the return address
-assumed to be in r2 and return to the user application via the
-bv instruction.
-
-@section Register Usage
-
-As discussed above, the bl and blr instructions do
-not automatically save any registers. RTEMS uses the registers
-r1, r19 - r26, and r31 as scratch registers. The PA-RISC
-calling convention specifies that the first four (4) arguments
-to subroutines are passed in registers r23 - r26. After the
-arguments have been used, the contents of these registers may be
-altered. Register r31 is the millicode scratch register.
-Millicode is the set of routines which support high-level
-languages on the PA-RISC by providing routines which are either
-too complex or too long for the compiler to generate inline code
-when these operations are needed. For example, indirect calls
-utilize a millicode routine. The scratch registers are not
-preserved by RTEMS directives therefore, the contents of these
-registers should not be assumed upon return from any RTEMS
-directive.
-
-Surprisingly, when using the GNU C compiler at least
-integer multiplies are performed using the floating point
-registers. This is an important optimization because the
-PA-RISC does not have otherwise have hardware for multiplies.
-This has important ramifications in regards to the PA-RISC port
-of RTEMS. On most processors, the floating point unit is
-ignored if the code only performs integer operations. This
-makes it easy for the application developer to predict whether
-or not any particular task will require floating point
-operations. This property is taken advantage of by RTEMS on
-other architectures to minimize the number of times the floating
-point context is saved and restored. However, on the PA-RISC
-architecture, every task is implicitly a floating point task.
-Additionally the state of the floating point unit must be saved
-and restored as part of the interrupt processing because for all
-practical purposes it is impossible to avoid the use of the
-floating point registers. It is unknown if the HP-UX C compiler
-shares this property.
-
-@itemize @code{ }
-@item @b{NOTE}: Later versions of the GNU C has a PA-RISC specific
-option to disable use of the floating point registers. RTEMS
-currently assumes that this option is not turned on. If the use
-of this option sets a built-in define, then it should be
-possible to modify the PA-RISC specific code such that all tasks
-are considered floating point only when this option is not used.
-@end itemize
-
-@section Parameter Passing
-
-RTEMS assumes that the first four (4) arguments are
-placed in the appropriate registers (r26, r25, r24, and r23)
-and, if needed, additional are placed on the current stack
-before the directive is invoked via the bl or blr instruction.
-The first argument is placed in r26, the second is placed in
-r25, and so forth. The following pseudo-code illustrates the
-typical sequence used to call a RTEMS directive with three (3)
-arguments:
-
-
-@example
-set r24 to the third argument
-set r25 to the second argument
-set r26 to the first argument
-invoke directive
-@end example
-
-The stack on the PA-RISC grows upward -- i.e.
-"pushing" onto the stack results in the address in the stack
-pointer becoming numerically larger. By convention, r27 is used
-as the stack pointer. The standard stack frame consists of a
-minimum of sixty-four (64) bytes and is the responsibility of
-the callee to maintain.
-
-@section User-Provided Routines
-
-All user-provided routines invoked by RTEMS, such as
-user extensions, device drivers, and MPCI routines, must also
-adhere to these calling conventions.
-
-
-
-
diff --git a/doc/supplements/hppa1_1/cpumodel.t b/doc/supplements/hppa1_1/cpumodel.t
deleted file mode 100644
index 834892ee75..0000000000
--- a/doc/supplements/hppa1_1/cpumodel.t
+++ /dev/null
@@ -1,56 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter CPU Model Dependent Features
-
-@section Introduction
-
-Microprocessors are generally classified into
-families with a variety of CPU models or implementations within
-that family. Within a processor family, there is a high level
-of binary compatibility. This family may be based on either an
-architectural specification or on maintaining compatibility with
-a popular processor. Recent microprocessor families such as the
-SPARC or PA-RISC are based on an architectural specification
-which is independent or any particular CPU model or
-implementation. Older families such as the M68xxx and the iX86
-evolved as the manufacturer strived to produce higher
-performance processor models which maintained binary
-compatibility with older models.
-
-RTEMS takes advantage of the similarity of the
-various models within a CPU family. Although the models do vary
-in significant ways, the high level of compatibility makes it
-possible to share the bulk of the CPU dependent executive code
-across the entire family. Each processor family supported by
-RTEMS has a list of features which vary between CPU models
-within a family. For example, the most common model dependent
-feature regardless of CPU family is the presence or absence of a
-floating point unit or coprocessor. When defining the list of
-features present on a particular CPU model, one simply notes
-that floating point hardware is or is not present and defines a
-single constant appropriately. Conditional compilation is
-utilized to include the appropriate source code for this CPU
-model's feature set. It is important to note that this means
-that RTEMS is thus compiled using the appropriate feature set
-and compilation flags optimal for this CPU model used. The
-alternative would be to generate a binary which would execute on
-all family members using only the features which were always
-present.
-
-This chapter presents the set of features which vary
-across PA-RISC implementations and are of importance to RTEMS.
-The set of CPU model feature macros are defined in the file
-c/src/exec/score/cpu/hppa1_1/hppa.h based upon the particular CPU
-model defined on the compilation command line.
-
-@section CPU Model Name
-
-The macro CPU_MODEL_NAME is a string which designates
-the name of this CPU model. For example, for the Hewlett Packard
-PA-7100 CPU model, this macro is set to the string "hppa 7100".
diff --git a/doc/supplements/hppa1_1/cputable.t b/doc/supplements/hppa1_1/cputable.t
deleted file mode 100644
index 940510ce86..0000000000
--- a/doc/supplements/hppa1_1/cputable.t
+++ /dev/null
@@ -1,117 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Processor Dependent Information Table
-
-@section Introduction
-
-Any highly processor dependent information required
-to describe a processor to RTEMS is provided in the CPU
-Dependent Information Table. This table is not required for all
-processors supported by RTEMS. This chapter describes the
-contents, if any, for a particular processor type.
-
-@section CPU Dependent Information Table
-
-The PA-RISC version of the RTEMS CPU Dependent
-Information Table contains the information required to interface
-a Board Support Package and RTEMS on the PA-RISC. This
-information is provided to allow RTEMS to interoperate
-effectively with the BSP. The C structure definition is given
-here:
-
-@example
-typedef struct @{
- void (*pretasking_hook)( void );
- void (*predriver_hook)( void );
- void (*postdriver_hook)( void );
- void (*idle_task)( void );
- boolean do_zero_of_workspace;
- unsigned32 idle_task_stack_size;
- unsigned32 interrupt_stack_size;
- unsigned32 extra_mpci_receive_server_stack;
- void * (*stack_allocate_hook)( unsigned32 );
- void (*stack_free_hook)( void * );
- /* end of fields required on all CPUs */
-
- hppa_rtems_isr_entry spurious_handler;
-
- unsigned32 itimer_clicks_per_microsecond; /* for use by Clock driver */
-@} rtems_cpu_table;
-@end example
-
-@table @code
-@item pretasking_hook
-is the address of the
-user provided routine which is invoked once RTEMS initialization
-is complete but before interrupts and tasking are enabled. This
-field may be NULL to indicate that the hook is not utilized.
-
-@item predriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately before
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-but no device drivers are initialized. This field may be NULL to
-indicate that the hook is not utilized.
-
-@item postdriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately after
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-and the device drivers are initialized. This field may be NULL
-to indicate that the hook is not utilized.
-
-@item idle_task
-is the address of the optional user
-provided routine which is used as the system's IDLE task. If
-this field is not NULL, then the RTEMS default IDLE task is not
-used. This field may be NULL to indicate that the default IDLE
-is to be used.
-
-@item do_zero_of_workspace
-indicates whether RTEMS should
-zero the Workspace as part of its initialization. If set to
-TRUE, the Workspace is zeroed. Otherwise, it is not.
-
-@item idle_task_stack_size
-is the size of the RTEMS idle task stack in bytes.
-If this number is less than MINIMUM_STACK_SIZE, then the
-idle task's stack will be MINIMUM_STACK_SIZE in byte.
-
-@item interrupt_stack_size
-is the size of the RTEMS allocated interrupt stack in bytes.
-This value must be at least as large as MINIMUM_STACK_SIZE.
-
-@item extra_mpci_receive_server_stack
-is the extra stack space allocated for the RTEMS MPCI receive server task
-in bytes. The MPCI receive server may invoke nearly all directives and
-may require extra stack space on some targets.
-
-@item stack_allocate_hook
-is the address of the optional user provided routine which allocates
-memory for task stacks. If this hook is not NULL, then a stack_free_hook
-must be provided as well.
-
-@item stack_free_hook
-is the address of the optional user provided routine which frees
-memory for task stacks. If this hook is not NULL, then a stack_allocate_hook
-must be provided as well.
-
-@item spurious_handler
-is the address of the optional user provided routine which is invoked
-when a spurious external interrupt occurs. A spurious interrupt is one
-for which no handler is installed.
-
-@item itimer_clicks_per_microsecond
-is the number of countdowns in the on-CPU timer which corresponds
-to a microsecond. This is a function of the clock speed of the CPU
-being used.
-
-@end table
diff --git a/doc/supplements/hppa1_1/fatalerr.t b/doc/supplements/hppa1_1/fatalerr.t
deleted file mode 100644
index d5998d81a5..0000000000
--- a/doc/supplements/hppa1_1/fatalerr.t
+++ /dev/null
@@ -1,32 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Default Fatal Error Processing
-
-@section Introduction
-
-Upon detection of a fatal error by either the
-application or RTEMS the fatal error manager is invoked. The
-fatal error manager will invoke a user-supplied fatal error
-handler. If no user-supplied handler is configured, the RTEMS
-provided default fatal error handler is invoked. If the
-user-supplied fatal error handler returns to the executive the
-default fatal error handler is then invoked. This chapter
-describes the precise operations of the default fatal error
-handler.
-
-@section Default Fatal Error Handler Operations
-
-The default fatal error handler which is invoked by
-the fatal_error_occurred directive when there is no user handler
-configured or the user handler returns control to RTEMS. The
-default fatal error handler disables processor interrupts (i.e.
-sets the I bit in the PSW register to 0), places the error code
-in r1, and executes a break instruction to simulate a halt
-processor instruction.
-
diff --git a/doc/supplements/hppa1_1/hppa1_1.texi b/doc/supplements/hppa1_1/hppa1_1.texi
deleted file mode 100644
index 19d700fe63..0000000000
--- a/doc/supplements/hppa1_1/hppa1_1.texi
+++ /dev/null
@@ -1,121 +0,0 @@
-\input ../../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename c_hppa1_1
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Hewlett Packard PA-RISC Applications Supplement
-@c
-
-@include ../../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Hewlett Packard PA-RISC Applications Supplement (hppa1_1):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Hewlett Packard PA-RISC Applications Supplement
-
-@setchapternewpage odd
-@settitle RTEMS Hewlett Packard PA-RISC Applications Supplement
-@titlepage
-@finalout
-
-@title RTEMS Hewlett Packard PA-RISC Applications Supplement
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include cpumodel.texi
-@include callconv.texi
-@include memmodel.texi
-@include intr.texi
-@include fatalerr.texi
-@include bsp.texi
-@include cputable.texi
-@include wksheets.texi
-@include timing.texi
-@include timeSIMHPPA.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top c_hppa1_1
-
-This is the online version of the RTEMS Hewlett Packard PA-RISC
-Applications Supplement.
-
-@menu
-* Preface::
-* CPU Model Dependent Features::
-* Calling Conventions::
-* Memory Model::
-* Interrupt Processing::
-* Default Fatal Error Processing::
-* Board Support Packages::
-* Processor Dependent Information Table::
-* Memory Requirements::
-* Timing Specification::
-* HP-7100 Timing Data::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, HP-7100 Timing Data Directive Times, Top
-
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@c @contents
-@bye
-
diff --git a/doc/supplements/hppa1_1/intr_NOTIMES.t b/doc/supplements/hppa1_1/intr_NOTIMES.t
deleted file mode 100644
index 9ec3ae152d..0000000000
--- a/doc/supplements/hppa1_1/intr_NOTIMES.t
+++ /dev/null
@@ -1,191 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Interrupt Processing
-
-@section Introduction
-
-Different types of processors respond to the
-occurence of an interrupt in their own unique fashion. In
-addition, each processor type provides a control mechanism to
-allow for the proper handling of an interrupt. The processor
-dependent response to the interrupt modifies the current
-execution state and results in a change in the execution stream.
-Most processors require that an interrupt handler utilize some
-special control mechanisms to return to the normal processing
-stream. Although RTEMS hides many of the processor dependent
-details of interrupt processing, it is important to understand
-how the RTEMS interrupt manager is mapped onto the processor's
-unique architecture. Discussed in this chapter are the PA-RISC's
-interrupt response and control mechanisms as they pertain to
-RTEMS.
-
-@section Vectoring of Interrupt Handler
-
-Upon receipt of an interrupt the PA-RISC
-automatically performs the following actions:
-
-@itemize @bullet
-@item The PSW (Program Status Word) is saved in the IPSW
-(Interrupt Program Status Word).
-
-@item The current privilege level is set to 0.
-
-@item The following defined bits in the PSW are set:
-
-@item E bit is set to the default endian bit
-
-@item M bit is set to 1 if the interrupt is a high-priority
-machine check and 0 otherwise
-
-@item Q bit is set to zero thuse freezing the IIA
-(Instruction Address) queues
-
-@item C and D bits are set to zero thus disabling all
-protection and translation.
-
-@item I bit is set to zero this disabling all external,
-powerfail, and low-priority machine check interrupts.
-
-@item All others bits are set to zero.
-
-@item General purpose registers r1, r8, r9, r16, r17, r24, and
-r25 are copied to the shadow registers.
-
-@item Execution begins at the address given by the formula:
-Interruption Vector Address + (32 * interrupt vector number).
-@end itemize
-
-Once the processor has completed the actions it is is
-required to perform for each interrupt, the RTEMS interrupt
-management code (the beginning of which is stored in the
-Interruption Vector Table) gains control and performs the
-following actions upon each interrupt:
-
-@itemize @bullet
-@item returns the processor to "virtual mode" thus reenabling
-all code and data address translation.
-
-@item saves all necessary interrupt state information
-
-@item saves all floating point registers
-
-@item saves all integer registers
-
-@item switches the current stack to the interrupt stack
-
-@item dispatches to the appropriate user provided interrupt
-service routine (ISR). If the ISR was installed with the
-interrupt_catch directive, then it will be executed at this.
-Because, the RTEMS interrupt handler saves all registers which
-are not preserved according to the calling conventions and
-invokes the application's ISR, the ISR can easily be written in
-a high-level language.
-@end itemize
-
-RTEMS refers to the combination of the interrupt
-state information and registers saved when vectoring an
-interrupt as the Interrupt Stack Frame (ISF). A nested
-interrupt is processed similarly by the PA-RISC and RTEMS with
-the exception that the nested interrupt occurred while executing
-on the interrupt stack and, thus, the current stack need not be
-switched.
-
-@section Interrupt Stack Frame
-
-The PA-RISC architecture does not alter the stack
-while processing interrupts. However, RTEMS does save
-information on the stack as part of processing an interrupt.
-This following shows the format of the Interrupt Stack Frame for
-the PA-RISC as defined by RTEMS:
-
-@example
-@group
- +------------------------+
- | Interrupt Context | 0xXXX
- +------------------------+
- | Integer Context | 0xXXX
- +------------------------+
- | Floating Point Context | 0xXXX
- +------------------------+
-@end group
-@end example
-
-@section External Interrupts and Traps
-
-In addition to the thirty-two unique interrupt
-sources supported by the PA-RISC architecture, RTEMS also
-supports the installation of handlers for each of the thirty-two
-external interrupts supported by the PA-RISC architecture.
-Except for interrupt vector 4, each of the interrupt vectors 0
-through 31 may be associated with a user-provided interrupt
-handler. Interrupt vector 4 is used for external interrupts.
-When an external interrupt occurs, the RTEMS external interrupt
-handler is invoked and the actual interrupt source is indicated
-by status bits in the EIR (External Interrupt Request) register.
-The RTEMS external interrupt handler (or interrupt vector four)
-examines the EIR to determine which interrupt source requires
-servicing.
-
-RTEMS supports sixty-four interrupt vectors for the
-PA-RISC. Vectors 0 through 31 map to the normal interrupt
-sources while RTEMS interrupt vectors 32 through 63 are directly
-associated with the external interrupt sources indicated by bits
-0 through 31 in the EIR.
-
-The exact set of interrupt sources which are checked
-for by the RTEMS external interrupt handler and the order in
-which they are checked are configured by the user in the CPU
-Configuration Table. If an external interrupt occurs which does
-not have a handler configured, then the spurious interrupt
-handler will be invoked. The spurious interrupt handler may
-also be specifiec by the user in the CPU Configuration Table.
-
-@section Interrupt Levels
-
-Two levels (enabled and disabled) of interrupt
-priorities are supported by the PA-RISC architecture. Level
-zero (0) indicates that interrupts are fully enabled (i.e. the I
-bit of the PSW is 1). Level one (1) indicates that interrupts
-are disabled (i.e. the I bit of the PSW is 0). Thirty-two
-independent sources of external interrupts are supported by the
-PA-RISC architecture. Each of these interrupts sources may be
-individually enabled or disabled. When processor interrupts are
-disabled, all sources of external interrupts are ignored. When
-processor interrupts are enabled, the EIR (External Interrupt
-Request) register is used to determine which sources are
-currently allowed to generate interrupts.
-
-Although RTEMS supports 256 interrupt levels, the
-PA-RISC architecture only supports two. RTEMS interrupt level 0
-indicates that interrupts are enabled and level 1 indicates that
-interrupts are disabled. All other RTEMS interrupt levels are
-undefined and their behavior is unpredictable.
-
-@section Disabling of Interrupts by RTEMS
-
-During the execution of directive calls, critical
-sections of code may be executed. When these sections are
-encountered, RTEMS disables external interrupts by setting the I
-bit in the PSW to 0 before the execution of this section and
-restores them to the previous level upon completion of the
-section. RTEMS has been optimized to insure that interrupts are
-disabled for less than XXX instructions when compiled with GNU
-CC at optimization level 4. The exact execution time will vary
-based on the based on the processor implementation, amount of
-cache, the number of wait states for primary memory, and
-processor speed present on the target board.
-
-Non-maskable interrupts (NMI) such as high-priority
-machine checks cannot be disabled, and ISRs which execute at
-this level MUST NEVER issue RTEMS system calls. If a directive
-is invoked, unpredictable results may occur due to the inability
-of RTEMS to protect its critical sections. However, ISRs that
-make no system calls may safely execute as non-maskable
-interrupts.
-
diff --git a/doc/supplements/hppa1_1/memmodel.t b/doc/supplements/hppa1_1/memmodel.t
deleted file mode 100644
index b246998e75..0000000000
--- a/doc/supplements/hppa1_1/memmodel.t
+++ /dev/null
@@ -1,67 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Model
-
-@section Introduction
-
-A processor may support any combination of memory
-models ranging from pure physical addressing to complex demand
-paged virtual memory systems. RTEMS supports a flat memory
-model which ranges contiguously over the processor's allowable
-address space. RTEMS does not support segmentation or virtual
-memory of any kind. The appropriate memory model for RTEMS
-provided by the targeted processor and related characteristics
-of that model are described in this chapter.
-
-@section Flat Memory Model
-
-RTEMS supports applications in which the application
-and the executive execute within a single thirty-two bit address
-space. Thus RTEMS and the application share a common four
-gigabyte address space within a single space. The PA-RISC
-automatically converts every address from a logical to a
-physical address each time it is used. The PA-RISC uses
-information provided in the page table to perform this
-translation. The following protection levels are assumed:
-
-@itemize @bullet
-@item a single code segment at protection level (0) which
-contains all application and executive code.
-
-@item a single data segment at protection level zero (0) which
-contains all application and executive data.
-@end itemize
-
-The PA-RISC space registers and associated stack --
-including the stack pointer r27 -- must be initialized when the
-initialize_executive directive is invoked. RTEMS treats the
-space registers as system resources shared by all tasks and does
-not modify or context switch them.
-
-This memory model supports a flat 32-bit address
-space with addresses ranging from 0x00000000 to 0xFFFFFFFF (4
-gigabytes). Each address is represented by a 32-bit value and
-memory is addressable. The address may be used to reference a
-single byte, half-word (2-bytes), or word (4 bytes).
-
-RTEMS does not require that logical addresses map
-directly to physical addresses, although it is desirable in many
-applications to do so. RTEMS does not need any additional
-information when physical addresses do not map directly to
-physical addresses. By not requiring that logical addresses map
-directly to physical addresses, the memory space of an RTEMS
-space can be separated from that of a ROM monitor. For example,
-a ROM monitor may load application programs into a separate
-logical address space from itself.
-
-RTEMS assumes that the space registers contain the
-selector for the single data segment when a directive is
-invoked. This assumption is especially important when
-developing interrupt service routines.
-
diff --git a/doc/supplements/hppa1_1/preface.texi b/doc/supplements/hppa1_1/preface.texi
deleted file mode 100644
index 8619b11395..0000000000
--- a/doc/supplements/hppa1_1/preface.texi
+++ /dev/null
@@ -1,36 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, CPU Model Dependent Features, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-The Real Time Executive for Multiprocessor Systems
-(RTEMS) is designed to be portable across multiple processor
-architectures. However, the nature of real-time systems makes
-it essential that the application designer understand certain
-processor dependent implementation details. These processor
-dependencies include calling convention, board support package
-issues, interrupt processing, exact RTEMS memory requirements,
-performance data, header files, and the assembly language
-interface to the executive.
-
-For information on the PA-RISC V1.1 architecture in
-general, refer to the following documents:
-
-@itemize @bullet
-@item @cite{PA-RISC 1.1 Architecture and Instruction Set Reference
-Manual, Third Edition. HP Part Number 09740-90039}.
-@end itemize
-
-It is highly recommended that the PA-RISC RTEMS
-application developer also obtain and become familiar with the
-Technical Reference Manual for the particular implementation of
-the PA-RISC being used.
-
diff --git a/doc/supplements/hppa1_1/timeSIMHPPA.t b/doc/supplements/hppa1_1/timeSIMHPPA.t
deleted file mode 100644
index 82982ef21d..0000000000
--- a/doc/supplements/hppa1_1/timeSIMHPPA.t
+++ /dev/null
@@ -1,86 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter HP-7100 Timing Data
-
-@section Introduction
-
-The timing data for the PA-RISC version of RTEMS is
-provided along with the target dependent aspects concerning the
-gathering of the timing data. The hardware platform used to
-gather the times is described to give the reader a better
-understanding of each directive time provided. Also, provided
-is a description of the interrupt latency and the context
-switch times as they pertain to the PA-RISC version of RTEMS.
-
-@section Hardware Platform
-
-No directive execution times are reported for the
-HP-7100 because the target platform was proprietary and
-executions times could not be released.
-
-@section Interrupt Latency
-
-The maximum period with traps disabled or the
-processor interrupt level set to it's highest value inside RTEMS
-is less than RTEMS_MAXIMUM_DISABLE_PERIOD
-microseconds including the instructions which
-disable and re-enable interrupts. The time required for the
-HP-7100 to vector an interrupt and for the RTEMS entry overhead
-before invoking the user's trap handler are a total of
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. These combine to yield a worst case interrupt
-latency of less than RTEMS_MAXIMUM_DISABLE_PERIOD +
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK microseconds at 15 Mhz.
-[NOTE: The maximum period with interrupts disabled was last
-determined for Release RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-It should be noted again that the maximum period with
-interrupts disabled within RTEMS for the HP-7100 is hand calculated.
-
-@section Context Switch
-
-The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
-microsections for the HP-7100 when no floating point context
-switch is saved or restored. Saving and restoring the floating
-point context adds additional time to the context
-switch procedure. Additional execution time is required when a
-TASK_SWITCH user extension is configured. The use of the
-TASK_SWITCH extension is application dependent. Thus, its
-execution time is not considered part of the raw context switch
-time.
-
-Since RTEMS was designed specifically for embedded
-missile applications which are floating point intensive, the
-executive is optimized to avoid unnecessarily saving and
-restoring the state of the numeric coprocessor. On many
-processors, the state of the numeric coprocessor is only saved
-when an FLOATING_POINT task is dispatched and that task was not
-the last task to utilize the coprocessor. In a system with only
-one FLOATING_POINT task, the state of the numeric coprocessor
-will never be saved or restored. When the first FLOATING_POINT
-task is dispatched, RTEMS does not need to save the current
-state of the numeric coprocessor. As discussed in the Register
-Usage section, on the HP-7100 the every task is considered to be
-floating point registers and , as a rsule, every context switch
-involves saving and restoring the state of the floating point
-unit.
-
-The following table summarizes the context switch
-times for the HP-7100 processor:
-
-@example
-no times are available for the HP-7100
-@end example
-
-@section Directive Times
-
-No execution times are available for the HP-7100
-because the target platform was proprietary and no timing
-information could be released.
-
diff --git a/doc/supplements/i386/FORCE386_TIMES b/doc/supplements/i386/FORCE386_TIMES
deleted file mode 100644
index b40f8ad50b..0000000000
--- a/doc/supplements/i386/FORCE386_TIMES
+++ /dev/null
@@ -1,247 +0,0 @@
-#
-# Intel i386/Force CPU-386 Timing and Size Information
-#
-# $Id$
-#
-
-#
-# CPU Model Information
-#
-RTEMS_BSP CPU386
-RTEMS_CPU_MODEL i386
-#
-# Interrupt Latency
-#
-# NOTE: In general, the text says it is hand-calculated to be
-# RTEMS_MAXIMUM_DISABLE_PERIOD at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-# Mhz and this was last calculated for Release
-# RTEMS_VERSION_FOR_MAXIMUM_DISABLE_PERIOD.
-#
-RTEMS_MAXIMUM_DISABLE_PERIOD 13.0
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ 16
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD 3.1.0
-#
-# Context Switch Times
-#
-RTEMS_NO_FP_CONTEXTS 34
-RTEMS_RESTORE_1ST_FP_TASK 57
-RTEMS_SAVE_INIT_RESTORE_INIT 59
-RTEMS_SAVE_IDLE_RESTORE_INIT 59
-RTEMS_SAVE_IDLE_RESTORE_IDLE 83
-#
-# Task Manager Times
-#
-RTEMS_TASK_CREATE_ONLY 157
-RTEMS_TASK_IDENT_ONLY 748
-RTEMS_TASK_START_ONLY 86
-RTEMS_TASK_RESTART_CALLING_TASK 118
-RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER 45
-RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER 138
-RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER 105
-RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER 149
-RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER 162
-RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER 156
-RTEMS_TASK_DELETE_CALLING_TASK 187
-RTEMS_TASK_DELETE_SUSPENDED_TASK 147
-RTEMS_TASK_DELETE_BLOCKED_TASK 153
-RTEMS_TASK_DELETE_READY_TASK 157
-RTEMS_TASK_SUSPEND_CALLING_TASK 81
-RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER 45
-RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER 46
-RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER 71
-RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY 30
-RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER 67
-RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER 115
-RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE 19
-RTEMS_TASK_MODE_NO_RESCHEDULE 21
-RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER 27
-RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER 66
-RTEMS_TASK_GET_NOTE_ONLY 32
-RTEMS_TASK_SET_NOTE_ONLY 32
-RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER 18
-RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER 63
-RTEMS_TASK_WAKE_WHEN_ONLY 128
-#
-# Interrupt Manager
-#
-RTEMS_INTR_ENTRY_RETURNS_TO_NESTED 12
-RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK 13
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK 12
-RTEMS_INTR_EXIT_RETURNS_TO_NESTED 10
-RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK 13
-RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK 58
-#
-# Clock Manager
-#
-RTEMS_CLOCK_SET_ONLY 85
-RTEMS_CLOCK_GET_ONLY 2
-RTEMS_CLOCK_TICK_ONLY 16
-#
-# Timer Manager
-#
-RTEMS_TIMER_CREATE_ONLY 34
-RTEMS_TIMER_IDENT_ONLY 729
-RTEMS_TIMER_DELETE_INACTIVE 48
-RTEMS_TIMER_DELETE_ACTIVE 52
-RTEMS_TIMER_FIRE_AFTER_INACTIVE 65
-RTEMS_TIMER_FIRE_AFTER_ACTIVE 69
-RTEMS_TIMER_FIRE_WHEN_INACTIVE 92
-RTEMS_TIMER_FIRE_WHEN_ACTIVE 92
-RTEMS_TIMER_RESET_INACTIVE 58
-RTEMS_TIMER_RESET_ACTIVE 63
-RTEMS_TIMER_CANCEL_INACTIVE 32
-RTEMS_TIMER_CANCEL_ACTIVE 37
-#
-# Semaphore Manager
-#
-RTEMS_SEMAPHORE_CREATE_ONLY 64
-RTEMS_SEMAPHORE_IDENT_ONLY 787
-RTEMS_SEMAPHORE_DELETE_ONLY 60
-RTEMS_SEMAPHORE_OBTAIN_AVAILABLE 41
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT 40
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS 123
-RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS 47
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER 70
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER 95
-#
-# Message Manager
-#
-RTEMS_MESSAGE_QUEUE_CREATE_ONLY 294
-RTEMS_MESSAGE_QUEUE_IDENT_ONLY 730
-RTEMS_MESSAGE_QUEUE_DELETE_ONLY 81
-RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS 117
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER 118
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER 144
-RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS 117
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER 116
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER 144
-RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS 53
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER 122
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER 146
-RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE 93
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT 45
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 127
-RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED 29
-RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED 41
-#
-# Event Manager
-#
-RTEMS_EVENT_SEND_NO_TASK_READIED 26
-RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER 60
-RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER 89
-RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS <1
-RTEMS_EVENT_RECEIVE_AVAILABLE 27
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT 25
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 94
-#
-# Signal Manager
-#
-RTEMS_SIGNAL_CATCH_ONLY 13
-RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER 34
-RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF 59
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK 39
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK 60
-#
-# Partition Manager
-#
-RTEMS_PARTITION_CREATE_ONLY 83
-RTEMS_PARTITION_IDENT_ONLY 730
-RTEMS_PARTITION_DELETE_ONLY 40
-RTEMS_PARTITION_GET_BUFFER_AVAILABLE 34
-RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE 33
-RTEMS_PARTITION_RETURN_BUFFER_ONLY 40
-#
-# Region Manager
-#
-RTEMS_REGION_CREATE_ONLY 68
-RTEMS_REGION_IDENT_ONLY 739
-RTEMS_REGION_DELETE_ONLY 39
-RTEMS_REGION_GET_SEGMENT_AVAILABLE 49
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT 45
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS 127
-RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS 52
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER 113
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER 138
-#
-# Dual-Ported Memory Manager
-#
-RTEMS_PORT_CREATE_ONLY 39
-RTEMS_PORT_IDENT_ONLY 728
-RTEMS_PORT_DELETE_ONLY 39
-RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY 26
-RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY 26
-#
-# IO Manager
-#
-RTEMS_IO_INITIALIZE_ONLY 4
-RTEMS_IO_OPEN_ONLY 1
-RTEMS_IO_CLOSE_ONLY 1
-RTEMS_IO_READ_ONLY <1
-RTEMS_IO_WRITE_ONLY 1
-RTEMS_IO_CONTROL_ONLY 1
-#
-# Rate Monotonic Manager
-#
-RTEMS_RATE_MONOTONIC_CREATE_ONLY 36
-RTEMS_RATE_MONOTONIC_IDENT_ONLY 725
-RTEMS_RATE_MONOTONIC_CANCEL_ONLY 39
-RTEMS_RATE_MONOTONIC_DELETE_ACTIVE 53
-RTEMS_RATE_MONOTONIC_DELETE_INACTIVE 49
-RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER 53
-RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS 82
-RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS 30
-#
-# Size Information
-#
-#
-# xxx alloted for numbers
-#
-RTEMS_DATA_SPACE 833
-RTEMS_MINIMUM_CONFIGURATION 22,660
-RTEMS_MAXIMUM_CONFIGURATION 39,592
-# x,xxx alloted for numbers
-RTEMS_CORE_CODE_SIZE 16,948
-RTEMS_INITIALIZATION_CODE_SIZE 916
-RTEMS_TASK_CODE_SIZE 3,436
-RTEMS_INTERRUPT_CODE_SIZE 52
-RTEMS_CLOCK_CODE_SIZE 296
-RTEMS_TIMER_CODE_SIZE 1,084
-RTEMS_SEMAPHORE_CODE_SIZE 1,500
-RTEMS_MESSAGE_CODE_SIZE 1,596
-RTEMS_EVENT_CODE_SIZE 1,036
-RTEMS_SIGNAL_CODE_SIZE 396
-RTEMS_PARTITION_CODE_SIZE 1,052
-RTEMS_REGION_CODE_SIZE 1,392
-RTEMS_DPMEM_CODE_SIZE 664
-RTEMS_IO_CODE_SIZE 676
-RTEMS_FATAL_ERROR_CODE_SIZE 20
-RTEMS_RATE_MONOTONIC_CODE_SIZE 1,132
-RTEMS_MULTIPROCESSING_CODE_SIZE 6,840
-# xxx alloted for numbers
-RTEMS_TIMER_CODE_OPTSIZE 144
-RTEMS_SEMAPHORE_CODE_OPTSIZE 136
-RTEMS_MESSAGE_CODE_OPTSIZE 224
-RTEMS_EVENT_CODE_OPTSIZE 44
-RTEMS_SIGNAL_CODE_OPTSIZE 44
-RTEMS_PARTITION_CODE_OPTSIZE 104
-RTEMS_REGION_CODE_OPTSIZE 124
-RTEMS_DPMEM_CODE_OPTSIZE 104
-RTEMS_IO_CODE_OPTSIZE 00
-RTEMS_RATE_MONOTONIC_CODE_OPTSIZE 136
-RTEMS_MULTIPROCESSING_CODE_OPTSIZE 228
-# xxx alloted for numbers
-RTEMS_BYTES_PER_TASK 372
-RTEMS_BYTES_PER_TIMER 68
-RTEMS_BYTES_PER_SEMAPHORE 124
-RTEMS_BYTES_PER_MESSAGE_QUEUE 148
-RTEMS_BYTES_PER_REGION 144
-RTEMS_BYTES_PER_PARTITION 56
-RTEMS_BYTES_PER_PORT 36
-RTEMS_BYTES_PER_PERIOD 36
-RTEMS_BYTES_PER_EXTENSION 64
-RTEMS_BYTES_PER_FP_TASK 108
-RTEMS_BYTES_PER_NODE 48
-RTEMS_BYTES_PER_GLOBAL_OBJECT 20
-RTEMS_BYTES_PER_PROXY 124
-# x,xxx alloted for numbers
-RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS 6,768
diff --git a/doc/supplements/i386/Makefile b/doc/supplements/i386/Makefile
deleted file mode 100644
index b4e15003b9..0000000000
--- a/doc/supplements/i386/Makefile
+++ /dev/null
@@ -1,165 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=i386
-DISTRIBUTION_LEVEL=support
-
-include ../../Make.config
-
-REPLACE=../../tools/word-replace
-
-all: html info ps
-
-COMMON_FILES=../../common/cpright.texi ../../common/setup.texi
-
-GENERATED_FILES=\
- cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \
- bsp.texi cputable.texi timing.texi wksheets.texi timeFORCE386.texi
-
-FILES= $(PROJECT).texi \
- preface.texi \
- $(GENERATED_FILES)
-
-
-dirs:
- $(make-dirs)
-
-info: dirs c_i386
- cp c_$(PROJECT) $(INFO_INSTALL)
- #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL)
-
-c_i386: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/c_i386
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/c_$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-*
- rm -f c_i386 c_i386-*
- rm -f intr.t $(GENERATED_FILES)
- rm -f wksheets.t wksheets_NOTIMES.t timing.t intr.t
- rm -f timeFORCE386_.t timeFORCE386_.texi
- rm -f *.fixed _*
-
-#
-# Chapters which get automatic processing
-#
-
-cpumodel.texi: cpumodel.t Makefile
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Calling Conventions" ${*}.t
-
-callconv.texi: callconv.t Makefile
- $(BMENU) -p "CPU Model Dependent Features Floating Point Unit" \
- -u "Top" \
- -n "Memory Model" ${*}.t
-
-memmodel.texi: memmodel.t Makefile
- $(BMENU) -p "Calling Conventions User-Provided Routines" \
- -u "Top" \
- -n "Interrupt Processing" ${*}.t
-
-# Interrupt Chapter:
-# 1. Replace Times and Sizes
-# 2. Build Node Structure
-
-#intr.texi: intr.t FORCE386_TIMES
-# ${REPLACE} -p FORCE386_TIMES intr.t
-# mv intr.t.fixed intr.texi
-
-# Interrupt Chapter:
-# 1. Replace Times and Sizes
-# 2. Build Node Structure
-intr.t: intr_NOTIMES.t FORCE386_TIMES
- ${REPLACE} -p FORCE386_TIMES intr_NOTIMES.t
- mv intr_NOTIMES.t.fixed intr.t
-
-intr.texi: intr.t Makefile
- $(BMENU) -p "Memory Model Flat Memory Model" \
- -u "Top" \
- -n "Default Fatal Error Processing" ${*}.t
-
-fatalerr.texi: fatalerr.t Makefile
- $(BMENU) -p "Interrupt Processing Interrupt Stack" \
- -u "Top" \
- -n "Board Support Packages" ${*}.t
-
-bsp.texi: bsp.t Makefile
- $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \
- -u "Top" \
- -n "Processor Dependent Information Table" ${*}.t
-
-cputable.texi: cputable.t Makefile
- $(BMENU) -p "Board Support Packages Processor Initialization" \
- -u "Top" \
- -n "Memory Requirements" ${*}.t
-
-# Worksheets Chapter:
-# 1. Obtain the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-wksheets_NOTIMES.t: ../../common/wksheets.t
- cp ../../common/wksheets.t wksheets_NOTIMES.t
-
-wksheets.t: wksheets_NOTIMES.t FORCE386_TIMES
- ${REPLACE} -p FORCE386_TIMES wksheets_NOTIMES.t
- mv wksheets_NOTIMES.t.fixed wksheets.t
-
-wksheets.texi: wksheets.t Makefile
- $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \
- -u "Top" \
- -n "Timing Specification" ${*}.t
-
-# Timing Specification Chapter:
-# 1. Copy the Shared File
-# 3. Build Node Structure
-
-timing.t: ../../common/timing.t
- cp ../../common/timing.t timing.t
-
-timing.texi: timing.t Makefile
- $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \
- -u "Top" \
- -n "CPU386 Timing Data" ${*}.t
-
-# Timing Data for BSP Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-timeFORCE386_.t: ../../common/timetbl.t timeFORCE386.t
- cat timeFORCE386.t ../../common/timetbl.t >timeFORCE386_.t
- @echo >>timeFORCE386_.t
- @echo "@tex" >>timeFORCE386_.t
- @echo "\\global\\advance \\smallskipamount by 4pt" >>timeFORCE386_.t
- @echo "@end tex" >>timeFORCE386_.t
- ${REPLACE} -p FORCE386_TIMES timeFORCE386_.t
- mv timeFORCE386_.t.fixed timeFORCE386_.t
-
-timeFORCE386.texi: timeFORCE386_.t Makefile
- $(BMENU) -p "Timing Specification Terminology" \
- -u "Top" \
- -n "Command and Variable Index" timeFORCE386_.t
- mv timeFORCE386_.texi timeFORCE386.texi
diff --git a/doc/supplements/i386/bsp.t b/doc/supplements/i386/bsp.t
deleted file mode 100644
index c15fb24835..0000000000
--- a/doc/supplements/i386/bsp.t
+++ /dev/null
@@ -1,109 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Board Support Packages
-
-@section Introduction
-
-An RTEMS Board Support Package (BSP) must be designed to support a
-particular processor and target board combination. This chapter presents a
-discussion of i386 specific BSP issues. For more information on developing
-a BSP, refer to the chapter titled Board Support Packages in the RTEMS
-Applications User's Guide.
-
-@section System Reset
-
-An RTEMS based application is initiated when the i386
-processor is reset. When the i386 is reset,
-
-@itemize @bullet
-
-@item The EAX register is set to indicate the results of the processor's
-power-up self test. If the self-test was not executed, the contents of
-this register are undefined. Otherwise, a non-zero value indicates the
-processor is faulty and a zero value indicates a successful self-test.
-
-@item The DX register holds a component identifier and revision level. DH
-contains 3 to indicate an i386 component and DL contains a unique revision
-level indicator.
-
-@item Control register zero (CR0) is set such that the processor is in real
-mode with paging disabled. Other portions of CR0 are used to indicate the
-presence of a numeric coprocessor.
-
-@item All bits in the extended flags register (EFLAG) which are not
-permanently set are cleared. This inhibits all maskable interrupts.
-
-@item The Interrupt Descriptor Register (IDTR) is set to point at address
-zero.
-
-@item All segment registers are set to zero.
-
-@item The instruction pointer is set to 0x0000FFF0. The first instruction
-executed after a reset is actually at 0xFFFFFFF0 because the i386 asserts
-the upper twelve address until the first intersegment (FAR) JMP or CALL
-instruction. When a JMP or CALL is executed, the upper twelve address
-lines are lowered and the processor begins executing in the first megabyte
-of memory.
-
-@end itemize
-
-Typically, an intersegment JMP to the application's initialization code is
-placed at address 0xFFFFFFF0.
-
-@section Processor Initialization
-
-This initialization code is responsible for initializing all data
-structures required by the i386 in protected mode and for actually entering
-protected mode. The i386 must be placed in protected mode and the segment
-registers and associated selectors must be initialized before the
-initialize_executive directive is invoked.
-
-The initialization code is responsible for initializing the Global
-Descriptor Table such that the i386 is in the thirty-two bit flat memory
-model with paging disabled. In this mode, the i386 automatically converts
-every address from a logical to a physical address each time it is used.
-For more information on the memory model used by RTEMS, please refer to the
-Memory Model chapter in this document.
-
-Since the processor is in real mode upon reset, the processor must be
-switched to protected mode before RTEMS can execute. Before switching to
-protected mode, at least one descriptor table and two descriptors must be
-created. Descriptors are needed for a code segment and a data segment. (
-This will give you the flat memory model.) The stack can be placed in a
-normal read/write data segment, so no descriptor for the stack is needed.
-Before the GDT can be used, the base address and limit must be loaded into
-the GDTR register using an LGDT instruction.
-
-If the hardware allows an NMI to be generated, you need to create the IDT
-and a gate for the NMI interrupt handler. Before the IDT can be used, the
-base address and limit for the idt must be loaded into the IDTR register
-using an LIDT instruction.
-
-Protected mode is entered by setting thye PE bit in the CR0 register.
-Either a LMSW or MOV CR0 instruction may be used to set this bit. Because
-the processor overlaps the interpretation of several instructions, it is
-necessary to discard the instructions from the read-ahead cache. A JMP
-instruction immediately after the LMSW changes the flow and empties the
-processor if intructions which have been pre-fetched and/or decoded. At
-this point, the processor is in protected mode and begins to perform
-protected mode application initialization.
-
-If the application requires that the IDTR be some value besides zero, then
-it should set it to the required value at this point. All tasks share the
-same i386 IDTR value. Because interrupts are enabled automatically by
-RTEMS as part of the initialize_executive directive, the IDTR MUST be set
-properly before this directive is invoked to insure correct interrupt
-vectoring. If processor caching is to be utilized, then it should be
-enabled during the reset application initialization code. The reset code
-which is executed before the call to initialize_executive has the following
-requirements:
-
-For more information regarding the i386s data structures and their
-contents, refer to Intel's 386 Programmer's Reference Manual.
-
diff --git a/doc/supplements/i386/callconv.t b/doc/supplements/i386/callconv.t
deleted file mode 100644
index 22415238f4..0000000000
--- a/doc/supplements/i386/callconv.t
+++ /dev/null
@@ -1,90 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Calling Conventions
-
-@section Introduction
-
-Each high-level language compiler generates
-subroutine entry and exit code based upon a set of rules known
-as the compiler's calling convention. These rules address the
-following issues:
-
-@itemize @bullet
-@item register preservation and usage
-
-@item parameter passing
-
-@item call and return mechanism
-@end itemize
-
-A compiler's calling convention is of importance when
-interfacing to subroutines written in another language either
-assembly or high-level. Even when the high-level language and
-target processor are the same, different compilers may use
-different calling conventions. As a result, calling conventions
-are both processor and compiler dependent.
-
-@section Processor Background
-
-The i386 architecture supports a simple yet effective
-call and return mechanism. A subroutine is invoked via the call
-(call) instruction. This instruction pushes the return address
-on the stack. The return from subroutine (ret) instruction pops
-the return address off the current stack and transfers control
-to that instruction. It is is important to note that the i386
-call and return mechanism does not automatically save or restore
-any registers. It is the responsibility of the high-level
-language compiler to define the register preservation and usage
-convention.
-
-@section Calling Mechanism
-
-All RTEMS directives are invoked using a call
-instruction and return to the user application via the ret
-instruction.
-
-@section Register Usage
-
-As discussed above, the call instruction does not
-automatically save any registers. RTEMS uses the registers EAX,
-ECX, and EDX as scratch registers. These registers are not
-preserved by RTEMS directives therefore, the contents of these
-registers should not be assumed upon return from any RTEMS
-directive.
-
-@section Parameter Passing
-
-RTEMS assumes that arguments are placed on the
-current stack before the directive is invoked via the call
-instruction. The first argument is assumed to be closest to the
-return address on the stack. This means that the first argument
-of the C calling sequence is pushed last. The following
-pseudo-code illustrates the typical sequence used to call a
-RTEMS directive with three (3) arguments:
-
-@example
-push third argument
-push second argument
-push first argument
-invoke directive
-remove arguments from the stack
-@end example
-
-The arguments to RTEMS are typically pushed onto the
-stack using a push instruction. These arguments must be removed
-from the stack after control is returned to the caller. This
-removal is typically accomplished by adding the size of the
-argument list in bytes to the stack pointer.
-
-@section User-Provided Routines
-
-All user-provided routines invoked by RTEMS, such as
-user extensions, device drivers, and MPCI routines, must also
-adhere to these calling conventions.
-
diff --git a/doc/supplements/i386/cpumodel.t b/doc/supplements/i386/cpumodel.t
deleted file mode 100644
index 9b65e1d61d..0000000000
--- a/doc/supplements/i386/cpumodel.t
+++ /dev/null
@@ -1,72 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter CPU Model Dependent Features
-
-@section Introduction
-
-Microprocessors are generally classified into
-families with a variety of CPU models or implementations within
-that family. Within a processor family, there is a high level
-of binary compatibility. This family may be based on either an
-architectural specification or on maintaining compatibility with
-a popular processor. Recent microprocessor families such as the
-SPARC or PA-RISC are based on an architectural specification
-which is independent or any particular CPU model or
-implementation. Older families such as the M68xxx and the iX86
-evolved as the manufacturer strived to produce higher
-performance processor models which maintained binary
-compatibility with older models.
-
-RTEMS takes advantage of the similarity of the
-various models within a CPU family. Although the models do vary
-in significant ways, the high level of compatibility makes it
-possible to share the bulk of the CPU dependent executive code
-across the entire family. Each processor family supported by
-RTEMS has a list of features which vary between CPU models
-within a family. For example, the most common model dependent
-feature regardless of CPU family is the presence or absence of a
-floating point unit or coprocessor. When defining the list of
-features present on a particular CPU model, one simply notes
-that floating point hardware is or is not present and defines a
-single constant appropriately. Conditional compilation is
-utilized to include the appropriate source code for this CPU
-model's feature set. It is important to note that this means
-that RTEMS is thus compiled using the appropriate feature set
-and compilation flags optimal for this CPU model used. The
-alternative would be to generate a binary which would execute on
-all family members using only the features which were always
-present.
-
-This chapter presents the set of features which vary
-across i386 implementations and are of importance to RTEMS.
-The set of CPU model feature macros are defined in the file
-c/src/exec/score/cpu/i386/i386.h based upon the particular CPU
-model defined on the compilation command line.
-
-@section CPU Model Name
-
-The macro CPU_MODEL_NAME is a string which designates
-the name of this CPU model. For example, for the Intel i386 without an
-i387 coprocessor, this macro is set to the string "i386 with i387".
-
-@section bswap Instruction
-
-The macro I386_HAS_BSWAP is set to 1 to indicate that
-this CPU model has the @code{bswap} instruction which
-endian swaps a thirty-two bit quantity. This instruction
-appears to be present in all CPU models
-i486's and above.
-
-@section Floating Point Unit
-
-The macro I386_HAS_FPU is set to 1 to indicate that
-this CPU model has a hardware floating point unit and 0
-otherwise. The hardware floating point may be on-chip (as in the
-case of an i486DX or Pentium) or as a coprocessor (as in the case of
-an i386/i387 combination).
diff --git a/doc/supplements/i386/cputable.t b/doc/supplements/i386/cputable.t
deleted file mode 100644
index 9da005f732..0000000000
--- a/doc/supplements/i386/cputable.t
+++ /dev/null
@@ -1,121 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Processor Dependent Information Table
-
-@section Introduction
-
-Any highly processor dependent information required
-to describe a processor to RTEMS is provided in the CPU
-Dependent Information Table. This table is not required for all
-processors supported by RTEMS. This chapter describes the
-contents, if any, for a particular processor type.
-
-@section CPU Dependent Information Table
-
-The i386 version of the RTEMS CPU Dependent
-Information Table contains the information required to interface
-a Board Support Package and RTEMS on the i386. This information
-is provided to allow RTEMS to interoperate effectively with the
-BSP. The C structure definition is given here:
-
-@example
-@group
-typedef struct @{
- void (*pretasking_hook)( void );
- void (*predriver_hook)( void );
- void (*idle_task)( void );
- boolean do_zero_of_workspace;
- unsigned32 idle_task_stack_size;
- unsigned32 interrupt_stack_size;
- unsigned32 extra_mpci_receive_server_stack;
- void * (*stack_allocate_hook)( unsigned32 );
- void (*stack_free_hook)( void* );
- /* end of fields required on all CPUs */
-
- unsigned32 interrupt_segment;
- void *interrupt_vector_table;
-@} rtems_cpu_table;
-@end group
-@end example
-
-@table @code
-@item pretasking_hook
-is the address of the
-user provided routine which is invoked once RTEMS initialization
-is complete but before interrupts and tasking are enabled. This
-field may be NULL to indicate that the hook is not utilized.
-
-@item predriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately before
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-but no device drivers are initialized. This field may be NULL to
-indicate that the hook is not utilized.
-
-@item postdriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately after
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-and the device drivers are initialized. This field may be NULL
-to indicate that the hook is not utilized.
-
-@item idle_task
-is the address of the optional user
-provided routine which is used as the system's IDLE task. If
-this field is not NULL, then the RTEMS default IDLE task is not
-used. This field may be NULL to indicate that the default IDLE
-is to be used.
-
-@item do_zero_of_workspace
-indicates whether RTEMS should
-zero the Workspace as part of its initialization. If set to
-TRUE, the Workspace is zeroed. Otherwise, it is not.
-
-@item idle_task_stack_size
-is the size of the RTEMS idle task stack in bytes.
-If this number is less than MINIMUM_STACK_SIZE, then the
-idle task's stack will be MINIMUM_STACK_SIZE in byte.
-
-@item interrupt_stack_size
-is the size of the RTEMS
-allocated interrupt stack in bytes. This value must be at least
-as large as MINIMUM_STACK_SIZE.
-
-@item extra_mpci_receive_server_stack
-is the extra stack space allocated for the RTEMS MPCI receive server task
-in bytes. The MPCI receive server may invoke nearly all directives and
-may require extra stack space on some targets.
-
-@item stack_allocate_hook
-is the address of the optional user provided routine which allocates
-memory for task stacks. If this hook is not NULL, then a stack_free_hook
-must be provided as well.
-
-@item stack_free_hook
-is the address of the optional user provided routine which frees
-memory for task stacks. If this hook is not NULL, then a stack_allocate_hook
-must be provided as well.
-
-@item interrupt_segment
-is the value of the selector which should be placed in a segment
-register to access the Interrupt Descriptor Table.
-
-@item interrupt_vector_table
-is the base address of the Interrupt Descriptor Table relative to the
-interrupt_segment.
-
-@end table
-
-The contents of the i386 Interrupt Descriptor Table
-are discussed in Intel's i386 User's Manual. Structure
-definitions for the i386 IDT is provided by including the file
-rtems.h.
-
diff --git a/doc/supplements/i386/fatalerr.t b/doc/supplements/i386/fatalerr.t
deleted file mode 100644
index 7f9e0f3c56..0000000000
--- a/doc/supplements/i386/fatalerr.t
+++ /dev/null
@@ -1,31 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Default Fatal Error Processing
-
-@section Introduction
-
-Upon detection of a fatal error by either the
-application or RTEMS the fatal error manager is invoked. The
-fatal error manager will invoke the user-supplied fatal error
-handlers. If no user-supplied handlers are configured, the
-RTEMS provided default fatal error handler is invoked. If the
-user-supplied fatal error handlers return to the executive the
-default fatal error handler is then invoked. This chapter
-describes the precise operations of the default fatal error
-handler.
-
-@section Default Fatal Error Handler Operations
-
-The default fatal error handler which is invoked by
-the fatal_error_occurred directive when there is no user handler
-configured or the user handler returns control to RTEMS. The
-default fatal error handler disables processor interrupts,
-places the error code in EAX, and executes a HLT instruction to
-halt the processor.
-
diff --git a/doc/supplements/i386/i386.texi b/doc/supplements/i386/i386.texi
deleted file mode 100644
index 5e051828fe..0000000000
--- a/doc/supplements/i386/i386.texi
+++ /dev/null
@@ -1,120 +0,0 @@
-\input ../../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename c_i386
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Intel i386 Applications Supplement
-@c
-
-@include ../../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Intel i386 Applications Supplement (i386):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Intel i386 Applications Supplement
-
-@setchapternewpage odd
-@settitle RTEMS Intel i386 Applications Supplement
-@titlepage
-@finalout
-
-@title RTEMS Intel i386 Applications Supplement
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include cpumodel.texi
-@include callconv.texi
-@include memmodel.texi
-@include intr.texi
-@include fatalerr.texi
-@include bsp.texi
-@include cputable.texi
-@include wksheets.texi
-@include timing.texi
-@include timeFORCE386.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top c_i386
-
-This is the online version of the RTEMS Intel i386
-Applications Supplement.
-
-@menu
-* Preface::
-* CPU Model Dependent Features::
-* Calling Conventions::
-* Memory Model::
-* Interrupt Processing::
-* Default Fatal Error Processing::
-* Board Support Packages::
-* Processor Dependent Information Table::
-* Memory Requirements::
-* Timing Specification::
-* CPU386 Timing Data::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, CPU386 Timing Data Rate Monotonic Manager, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@c @contents
-@bye
-
diff --git a/doc/supplements/i386/intr_NOTIMES.t b/doc/supplements/i386/intr_NOTIMES.t
deleted file mode 100644
index 933973daa7..0000000000
--- a/doc/supplements/i386/intr_NOTIMES.t
+++ /dev/null
@@ -1,168 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Interrupt Processing
-
-@section Introduction
-
-Different types of processors respond to the
-occurrence of an interrupt in their own unique fashion. In
-addition, each processor type provides a control mechanism to
-allow the proper handling of an interrupt. The processor
-dependent response to the interrupt modifies the execution state
-and results in the modification of the execution stream. This
-modification usually requires that an interrupt handler utilize
-the provided control mechanisms to return to the normal
-processing stream. Although RTEMS hides many of the processor
-dependent details of interrupt processing, it is important to
-understand how the RTEMS interrupt manager is mapped onto the
-processor's unique architecture. Discussed in this chapter are
-the the processor's response and control mechanisms as they
-pertain to RTEMS.
-
-@section Vectoring of Interrupt Handler
-
-Although the i386 supports multiple privilege levels,
-RTEMS and all user software executes at privilege level 0. This
-decision was made by the RTEMS designers to enhance
-compatibility with processors which do not provide sophisticated
-protection facilities like those of the i386. This decision
-greatly simplifies the discussion of i386 processing, as one
-need only consider interrupts without privilege transitions.
-
-Upon receipt of an interrupt the i386 automatically
-performs the following actions:
-
-@itemize @bullet
-@item pushes the EFLAGS register
-
-@item pushes the far address of the interrupted instruction
-
-@item vectors to the interrupt service routine (ISR).
-@end itemize
-
-A nested interrupt is processed similarly by the
-i386.
-
-@section Interrupt Stack Frame
-
-The structure of the Interrupt Stack Frame for the
-i386 which is placed on the interrupt stack by the processor in
-response to an interrupt is as follows:
-
-@ifset use-ascii
-@example
-@group
- +----------------------+
- | Old EFLAGS Register | ESP+8
- +----------+-----------+
- | UNUSED | Old CS | ESP+4
- +----------+-----------+
- | Old EIP | ESP
- +----------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\strut\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}
-\cr
-\multispan{4}\hrulefill\cr
-& \multispan{3} Old EFLAGS Register\quad&&ESP+8\cr
-\multispan{4}\hrulefill\cr
-&UNUSED &&Old CS &&ESP+4\cr
-\multispan{4}\hrulefill\cr
-& \multispan{3} Old EIP && ESP\cr
-\multispan{4}\hrulefill\cr
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=3 WIDTH="40%" BORDER=2>
-<TR><TD ALIGN=center COLSPAN=2><STRONG>Old EFLAGS Register</STRONG></TD>
- <TD ALIGN=center>0x0</TD></TR>
-<TR><TD ALIGN=center><STRONG>UNUSED</STRONG></TD>
- <TD ALIGN=center><STRONG>Old CS</STRONG></TD>
- <TD ALIGN=center>0x2</TD></TR>
-<TR><TD ALIGN=center COLSPAN=2><STRONG>Old EIP</STRONG></TD>
- <TD ALIGN=center>0x4</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Interrupt Levels
-
-Although RTEMS supports 256 interrupt levels, the
-i386 only supports two -- enabled and disabled. Interrupts are
-enabled when the interrupt-enable flag (IF) in the extended
-flags (EFLAGS) is set. Conversely, interrupt processing is
-inhibited when the IF is cleared. During a non-maskable
-interrupt, all other interrupts, including other non-maskable
-ones, are inhibited.
-
-RTEMS interrupt levels 0 and 1 such that level zero
-(0) indicates that interrupts are fully enabled and level one
-that interrupts are disabled. All other RTEMS interrupt levels
-are undefined and their behavior is unpredictable.
-
-@section Disabling of Interrupts by RTEMS
-
-During the execution of directive calls, critical
-sections of code may be executed. When these sections are
-encountered, RTEMS disables interrupts before the execution of
-this section and restores them to the previous level upon
-completion of the section. RTEMS has been optimized to insure
-that interrupts are disabled for less than RTEMS_MAXIMUM_DISABLE_PERIOD
-microseconds on a RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz i386 with zero
-wait states. These numbers will vary based the number of wait states
-and processor speed present on the target board. [NOTE: The maximum
-period with interrupts disabled within RTEMS was last calculated for
-Release RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-Non-maskable interrupts (NMI) cannot be disabled, and
-ISRs which execute at this level MUST NEVER issue RTEMS system
-calls. If a directive is invoked, unpredictable results may
-occur due to the inability of RTEMS to protect its critical
-sections. However, ISRs that make no system calls may safely
-execute as non-maskable interrupts.
-
-@section Interrupt Stack
-
-The i386 family does not support a dedicated hardware
-interrupt stack. On this processor, RTEMS allocates and manages
-a dedicated interrupt stack. As part of vectoring a non-nested
-interrupt service routine, RTEMS switches from the stack of the
-interrupted task to a dedicated interrupt stack. When a
-non-nested interrupt returns, RTEMS switches back to the stack
-of the interrupted stack. The current stack pointer is not
-altered by RTEMS on nested interrupt.
-
-Without a dedicated interrupt stack, every task in
-the system MUST have enough stack space to accommodate the worst
-case stack usage of that particular task and the interrupt
-service routines COMBINED. By supporting a dedicated interrupt
-stack, RTEMS significantly lowers the stack requirements for
-each task.
-
-RTEMS allocates the dedicated interrupt stack from
-the Workspace Area. The amount of memory allocated for the
-interrupt stack is determined by the interrupt_stack_size field
-in the CPU Configuration Table.
-
diff --git a/doc/supplements/i386/memmodel.t b/doc/supplements/i386/memmodel.t
deleted file mode 100644
index e8bb2ab48d..0000000000
--- a/doc/supplements/i386/memmodel.t
+++ /dev/null
@@ -1,72 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Model
-
-@section Introduction
-
-A processor may support any combination of memory
-models ranging from pure physical addressing to complex demand
-paged virtual memory systems. RTEMS supports a flat memory
-model which ranges contiguously over the processor's allowable
-address space. RTEMS does not support segmentation or virtual
-memory of any kind. The appropriate memory model for RTEMS
-provided by the targeted processor and related characteristics
-of that model are described in this chapter.
-
-@section Flat Memory Model
-
-RTEMS supports the i386 protected mode, flat memory
-model with paging disabled. In this mode, the i386
-automatically converts every address from a logical to a
-physical address each time it is used. The i386 uses
-information provided in the segment registers and the Global
-Descriptor Table to convert these addresses. RTEMS assumes the
-existence of the following segments:
-
-@itemize @bullet
-@item a single code segment at protection level (0) which
-contains all application and executive code.
-
-@item a single data segment at protection level zero (0) which
-contains all application and executive data.
-@end itemize
-
-The i386 segment registers and associated selectors
-must be initialized when the initialize_executive directive is
-invoked. RTEMS treats the segment registers as system registers
-and does not modify or context switch them.
-
-This i386 memory model supports a flat 32-bit address
-space with addresses ranging from 0x00000000 to 0xFFFFFFFF (4
-gigabytes). Each address is represented by a 32-bit value and
-is byte addressable. The address may be used to reference a
-single byte, half-word (2-bytes), or word (4 bytes).
-
-RTEMS does not require that logical addresses map
-directly to physical addresses, although it is desirable in many
-applications to do so. If logical and physical addresses are
-not the same, then an additional selector will be required so
-RTEMS can access the Interrupt Descriptor Table to install
-interrupt service routines. The selector number of this segment
-is provided to RTEMS in the CPU Dependent Information Table.
-
-By not requiring that logical addresses map directly
-to physical addresses, the memory space of an RTEMS application
-can be separated from that of a ROM monitor. For example, on
-the Force Computers CPU386, the ROM monitor loads application
-programs into a logical address space where logical address
-0x00000000 corresponds to physical address 0x0002000. On this
-board, RTEMS and the application use virtual addresses which do
-not map to physical addresses.
-
-RTEMS assumes that the DS and ES registers contain
-the selector for the single data segment when a directive is
-invoked. This assumption is especially important when
-developing interrupt service routines.
-
diff --git a/doc/supplements/i386/preface.texi b/doc/supplements/i386/preface.texi
deleted file mode 100644
index 5dcf605d60..0000000000
--- a/doc/supplements/i386/preface.texi
+++ /dev/null
@@ -1,41 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, CPU Model Dependent Features, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-The Real Time Executive for Multiprocessor Systems
-(RTEMS) is designed to be portable across multiple processor
-architectures. However, the nature of real-time systems makes
-it essential that the application designer understand certain
-processor dependent implementation details. These processor
-dependencies include calling convention, board support package
-issues, interrupt processing, exact RTEMS memory requirements,
-performance data, header files, and the assembly language
-interface to the executive.
-
-For information on the i386 processor, refer to the
-following documents:
-
-@itemize @bullet
-@item @cite{386 Programmer's Reference Manual, Intel, Order No. 230985-002}.
-
-@item @cite{386 Microprocessor Hardware Reference Manual, Intel,
-Order No. 231732-003}.
-
-@item @cite{80386 System Software Writer's Guide, Intel, Order No. 231499-001}.
-
-@item @cite{80387 Programmer's Reference Manual, Intel, Order No. 231917-001}.
-@end itemize
-
-It is highly recommended that the i386 RTEMS
-application developer obtain and become familiar with Intel's
-386 Programmer's Reference Manual.
-
diff --git a/doc/supplements/i386/timeFORCE386.t b/doc/supplements/i386/timeFORCE386.t
deleted file mode 100644
index 88d8ea09cf..0000000000
--- a/doc/supplements/i386/timeFORCE386.t
+++ /dev/null
@@ -1,101 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@include ../../common/timemac.texi
-@tex
-\global\advance \smallskipamount by -4pt
-@end tex
-
-@chapter CPU386 Timing Data
-
-@section Introduction
-
-The timing data for the i386 version of RTEMS is
-provided along with the target dependent aspects concerning the
-gathering of the timing data. The hardware platform used to
-gather the times is described to give the reader a better
-understanding of each directive time provided. Also, provided
-is a description of the interrupt latency and the context
-switch times as they pertain to the i386 version of RTEMS.
-
-@section Hardware Platform
-
-All times reported except for the maximum period
-interrupts are disabled by RTEMS were measured using a Force
-Computers CPU386 board. The CPU386 is a 16 Mhz board with zero
-wait state dynamic memory and an i80387 numeric coprocessor.
-One of the count-down timers provided by a Motorola MC68901 was
-used to measure elapsed time with one microsecond resolution.
-All sources of hardware interrupts are disabled, although the
-interrupt level of the i386 allows all interrupts.
-
-The maximum period interrupts are disabled was
-measured by summing the number of CPU cycles required by each
-assembly language instruction executed while interrupts were
-disabled. Zero wait state memory was assumed. The total CPU
-cycles executed with interrupts disabled, including the
-instructions to disable and enable interrupts, was divided by 16
-to simulate a i386 executing at 16 Mhz.
-
-@section Interrupt Latency
-
-The maximum period with interrupts disabled within
-RTEMS is less than RTEMS_MAXIMUM_DISABLE_PERIOD microseconds
-including the instructions
-which disable and re-enable interrupts. The time required for
-the i386 to generate an interrupt using the int instruction,
-vectoring to an interrupt handler, and for the RTEMS entry
-overhead before invoking the user's interrupt handler are a
-total of 12 microseconds. These combine to yield a worst case
-interrupt latency of less
-RTEMS_MAXIMUM_DISABLE_PERIOD + RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. [NOTE: The
-maximum period with interrupts disabled within RTEMS was last
-calculated for Release RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-It should be noted again that the maximum period with
-interrupts disabled within RTEMS is hand-timed. The interrupt
-vector and entry overhead time was generated on the Force
-Computers CPU386 benchmark platform using the int instruction as
-the interrupt source.
-
-@section Context Switch
-
-The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
-microseconds on the Force Computers CPU386 benchmark platform.
-This time represents the raw context switch time with no user
-extensions configured. Additional execution time is required
-when a TASK_SWITCH user extension is configured. The use of the
-TASK_SWITCH extension is application dependent. Thus, its
-execution time is not considered part of the base context switch
-time.
-
-Since RTEMS was designed specifically for embedded
-missile applications which are floating point intensive, the
-executive is optimized to avoid unnecessarily saving and
-restoring the state of the numeric coprocessor. The state of
-the numeric coprocessor is only saved when a FLOATING_POINT task
-is dispatched and that task was not the last task to utilize the
-coprocessor. In a system with only one FLOATING_POINT task, the
-state of the numeric coprocessor will never be saved or
-restored. When the first FLOATING_POINT task is dispatched,
-RTEMS does not need to save the current state of the numeric
-coprocessor.
-
-The exact amount of time required to save and restore
-floating point context is dependent on the state of the numeric
-coprocessor. RTEMS places the coprocessor in the initialized
-state when a task is started or restarted. Once the task has
-utilized the coprocessor, it is in the idle state when floating
-point instructions are not executing and the busy state when
-floating point instructions are executing. The state of the
-coprocessor is task specific.
-
-The following table summarizes the context switch
-times for the Force Computers CPU386 benchmark platform:
-
diff --git a/doc/supplements/i960/CVME961_TIMES b/doc/supplements/i960/CVME961_TIMES
deleted file mode 100644
index 17e022c0f5..0000000000
--- a/doc/supplements/i960/CVME961_TIMES
+++ /dev/null
@@ -1,247 +0,0 @@
-#
-# Intel i960/Cyclone CVME961 (i960CA) Timing and Size Information
-#
-# $Id$
-#
-
-#
-# CPU Model Information
-#
-RTEMS_BSP CVME961
-RTEMS_CPU_MODEL i960CA
-#
-# Interrupt Latency
-#
-# NOTE: In general, the text says it is hand-calculated to be
-# RTEMS_MAXIMUM_DISABLE_PERIOD at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-# Mhz and this was last calculated for Release
-# RTEMS_VERSION_FOR_MAXIMUM_DISABLE_PERIOD.
-#
-RTEMS_MAXIMUM_DISABLE_PERIOD 2.5
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ 33
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD 3.2.1
-#
-# Context Switch Times
-#
-RTEMS_NO_FP_CONTEXTS 1
-RTEMS_RESTORE_1ST_FP_TASK 2
-RTEMS_SAVE_INIT_RESTORE_INIT 3
-RTEMS_SAVE_IDLE_RESTORE_INIT 4
-RTEMS_SAVE_IDLE_RESTORE_IDLE 5
-#
-# Task Manager Times
-#
-RTEMS_TASK_CREATE_ONLY 6
-RTEMS_TASK_IDENT_ONLY 7
-RTEMS_TASK_START_ONLY 8
-RTEMS_TASK_RESTART_CALLING_TASK 9
-RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER 9
-RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER 10
-RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER 11
-RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER 12
-RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER 13
-RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER 14
-RTEMS_TASK_DELETE_CALLING_TASK 15
-RTEMS_TASK_DELETE_SUSPENDED_TASK 16
-RTEMS_TASK_DELETE_BLOCKED_TASK 17
-RTEMS_TASK_DELETE_READY_TASK 18
-RTEMS_TASK_SUSPEND_CALLING_TASK 19
-RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER 20
-RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER 21
-RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER 22
-RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY 23
-RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER 24
-RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER 25
-RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE 26
-RTEMS_TASK_MODE_NO_RESCHEDULE 27
-RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER 28
-RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER 29
-RTEMS_TASK_GET_NOTE_ONLY 30
-RTEMS_TASK_SET_NOTE_ONLY 31
-RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER 32
-RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER 33
-RTEMS_TASK_WAKE_WHEN_ONLY 34
-#
-# Interrupt Manager
-#
-RTEMS_INTR_ENTRY_RETURNS_TO_NESTED 35
-RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK 36
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK 37
-RTEMS_INTR_EXIT_RETURNS_TO_NESTED 38
-RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK 39
-RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK 40
-#
-# Clock Manager
-#
-RTEMS_CLOCK_SET_ONLY 41
-RTEMS_CLOCK_GET_ONLY 42
-RTEMS_CLOCK_TICK_ONLY 43
-#
-# Timer Manager
-#
-RTEMS_TIMER_CREATE_ONLY 44
-RTEMS_TIMER_IDENT_ONLY 45
-RTEMS_TIMER_DELETE_INACTIVE 46
-RTEMS_TIMER_DELETE_ACTIVE 47
-RTEMS_TIMER_FIRE_AFTER_INACTIVE 48
-RTEMS_TIMER_FIRE_AFTER_ACTIVE 49
-RTEMS_TIMER_FIRE_WHEN_INACTIVE 50
-RTEMS_TIMER_FIRE_WHEN_ACTIVE 51
-RTEMS_TIMER_RESET_INACTIVE 52
-RTEMS_TIMER_RESET_ACTIVE 53
-RTEMS_TIMER_CANCEL_INACTIVE 54
-RTEMS_TIMER_CANCEL_ACTIVE 55
-#
-# Semaphore Manager
-#
-RTEMS_SEMAPHORE_CREATE_ONLY 56
-RTEMS_SEMAPHORE_IDENT_ONLY 57
-RTEMS_SEMAPHORE_DELETE_ONLY 58
-RTEMS_SEMAPHORE_OBTAIN_AVAILABLE 59
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT 60
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS 61
-RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS 62
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER 63
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER 64
-#
-# Message Manager
-#
-RTEMS_MESSAGE_QUEUE_CREATE_ONLY 65
-RTEMS_MESSAGE_QUEUE_IDENT_ONLY 66
-RTEMS_MESSAGE_QUEUE_DELETE_ONLY 67
-RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS 68
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER 69
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER 70
-RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS 71
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER 72
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER 73
-RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS 74
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER 75
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER 76
-RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE 77
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT 78
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 79
-RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED 80
-RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED 81
-#
-# Event Manager
-#
-RTEMS_EVENT_SEND_NO_TASK_READIED 82
-RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER 83
-RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER 84
-RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS 85
-RTEMS_EVENT_RECEIVE_AVAILABLE 86
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT 87
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 88
-#
-# Signal Manager
-#
-RTEMS_SIGNAL_CATCH_ONLY 89
-RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER 90
-RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF 91
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK 92
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK 93
-#
-# Partition Manager
-#
-RTEMS_PARTITION_CREATE_ONLY 94
-RTEMS_PARTITION_IDENT_ONLY 95
-RTEMS_PARTITION_DELETE_ONLY 96
-RTEMS_PARTITION_GET_BUFFER_AVAILABLE 97
-RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE 98
-RTEMS_PARTITION_RETURN_BUFFER_ONLY 99
-#
-# Region Manager
-#
-RTEMS_REGION_CREATE_ONLY 100
-RTEMS_REGION_IDENT_ONLY 101
-RTEMS_REGION_DELETE_ONLY 102
-RTEMS_REGION_GET_SEGMENT_AVAILABLE 103
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT 104
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS 105
-RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS 106
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER 107
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER 108
-#
-# Dual-Ported Memory Manager
-#
-RTEMS_PORT_CREATE_ONLY 109
-RTEMS_PORT_IDENT_ONLY 110
-RTEMS_PORT_DELETE_ONLY 111
-RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY 112
-RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY 113
-#
-# IO Manager
-#
-RTEMS_IO_INITIALIZE_ONLY 114
-RTEMS_IO_OPEN_ONLY 115
-RTEMS_IO_CLOSE_ONLY 116
-RTEMS_IO_READ_ONLY 117
-RTEMS_IO_WRITE_ONLY 118
-RTEMS_IO_CONTROL_ONLY 119
-#
-# Rate Monotonic Manager
-#
-RTEMS_RATE_MONOTONIC_CREATE_ONLY 120
-RTEMS_RATE_MONOTONIC_IDENT_ONLY 121
-RTEMS_RATE_MONOTONIC_CANCEL_ONLY 122
-RTEMS_RATE_MONOTONIC_DELETE_ACTIVE 123
-RTEMS_RATE_MONOTONIC_DELETE_INACTIVE 124
-RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER 125
-RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS 126
-RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS 127
-#
-# Size Information
-#
-#
-# xxx alloted for numbers
-#
-RTEMS_DATA_SPACE 128
-RTEMS_MINIMUM_CONFIGURATION xx,129
-RTEMS_MAXIMUM_CONFIGURATION xx,130
-# x,xxx alloted for numbers
-RTEMS_CORE_CODE_SIZE x,131
-RTEMS_INITIALIZATION_CODE_SIZE x,132
-RTEMS_TASK_CODE_SIZE x,133
-RTEMS_INTERRUPT_CODE_SIZE x,134
-RTEMS_CLOCK_CODE_SIZE x,135
-RTEMS_TIMER_CODE_SIZE x,136
-RTEMS_SEMAPHORE_CODE_SIZE x,137
-RTEMS_MESSAGE_CODE_SIZE x,138
-RTEMS_EVENT_CODE_SIZE x,139
-RTEMS_SIGNAL_CODE_SIZE x,140
-RTEMS_PARTITION_CODE_SIZE x,141
-RTEMS_REGION_CODE_SIZE x,142
-RTEMS_DPMEM_CODE_SIZE x,143
-RTEMS_IO_CODE_SIZE x,144
-RTEMS_FATAL_ERROR_CODE_SIZE x,145
-RTEMS_RATE_MONOTONIC_CODE_SIZE x,146
-RTEMS_MULTIPROCESSING_CODE_SIZE x,147
-# xxx alloted for numbers
-RTEMS_TIMER_CODE_OPTSIZE 148
-RTEMS_SEMAPHORE_CODE_OPTSIZE 149
-RTEMS_MESSAGE_CODE_OPTSIZE 150
-RTEMS_EVENT_CODE_OPTSIZE 151
-RTEMS_SIGNAL_CODE_OPTSIZE 152
-RTEMS_PARTITION_CODE_OPTSIZE 153
-RTEMS_REGION_CODE_OPTSIZE 154
-RTEMS_DPMEM_CODE_OPTSIZE 155
-RTEMS_IO_CODE_OPTSIZE 156
-RTEMS_RATE_MONOTONIC_CODE_OPTSIZE 157
-RTEMS_MULTIPROCESSING_CODE_OPTSIZE 158
-# xxx alloted for numbers
-RTEMS_BYTES_PER_TASK 159
-RTEMS_BYTES_PER_TIMER 160
-RTEMS_BYTES_PER_SEMAPHORE 161
-RTEMS_BYTES_PER_MESSAGE_QUEUE 162
-RTEMS_BYTES_PER_REGION 163
-RTEMS_BYTES_PER_PARTITION 164
-RTEMS_BYTES_PER_PORT 165
-RTEMS_BYTES_PER_PERIOD 166
-RTEMS_BYTES_PER_EXTENSION 167
-RTEMS_BYTES_PER_FP_TASK 168
-RTEMS_BYTES_PER_NODE 169
-RTEMS_BYTES_PER_GLOBAL_OBJECT 170
-RTEMS_BYTES_PER_PROXY 171
-# x,xxx alloted for numbers
-RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS x,172
diff --git a/doc/supplements/i960/Makefile b/doc/supplements/i960/Makefile
deleted file mode 100644
index 37dd8b5327..0000000000
--- a/doc/supplements/i960/Makefile
+++ /dev/null
@@ -1,156 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=i960
-DISTRIBUTION_LEVEL=support
-
-include ../../Make.config
-
-REPLACE=../../tools/word-replace
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../../common/cpright.texi ../../common/setup.texi
-
-GENERATED_FILES=\
- cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \
- bsp.texi cputable.texi timing.texi wksheets.texi timeCVME961.texi
-
-FILES= $(PROJECT).texi \
- preface.texi \
- $(GENERATED_FILES)
-
-info: dirs c_i960
- cp c_$(PROJECT) $(INFO_INSTALL)
-
-c_i960: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/c_i960
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/c_$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-*
- rm -f c_i960 c_i960-*
- rm -f intr.t $(GENERATED_FILES)
- rm -f wksheets.t wksheets_NOTIMES.t
- rm -f *.fixed _* timing.t timing.texi
- rm -f timeCVME961_.t timeCVME961_.texi
-
-#
-# Chapters which get automatic processing
-#
-
-cpumodel.texi: cpumodel.t Makefile
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Calling Conventions" ${*}.t
-
-callconv.texi: callconv.t Makefile
- $(BMENU) -p "CPU Model Dependent Features Floating Point Unit" \
- -u "Top" \
- -n "Memory Model" ${*}.t
-
-memmodel.texi: memmodel.t Makefile
- $(BMENU) -p "Calling Conventions Leaf Procedures" \
- -u "Top" \
- -n "Interrupt Processing" ${*}.t
-
-# Interrupt Chapter:
-# 1. Replace Times and Sizes
-# 2. Build Node Structure
-intr.t: intr_NOTIMES.t CVME961_TIMES
- ${REPLACE} -p CVME961_TIMES intr_NOTIMES.t
- mv intr_NOTIMES.t.fixed intr.t
-
-intr.texi: intr.t Makefile
- $(BMENU) -p "Memory Model Flat Memory Model" \
- -u "Top" \
- -n "Default Fatal Error Processing" ${*}.t
-
-fatalerr.texi: fatalerr.t Makefile
- $(BMENU) -p "Interrupt Processing Interrupt Stack" \
- -u "Top" \
- -n "Board Support Packages" ${*}.t
-
-bsp.texi: bsp.t Makefile
- $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \
- -u "Top" \
- -n "Processor Dependent Information Table" ${*}.t
-
-cputable.texi: cputable.t Makefile
- $(BMENU) -p "Board Support Packages Processor Initialization" \
- -u "Top" \
- -n "Memory Requirements" ${*}.t
-
-
-# Worksheets Chapter:
-# 1. Obtain the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-wksheets_NOTIMES.t: ../../common/wksheets.t
- cp ../../common/wksheets.t wksheets_NOTIMES.t
-
-wksheets.t: wksheets_NOTIMES.t CVME961_TIMES
- ${REPLACE} -p CVME961_TIMES wksheets_NOTIMES.t
- mv wksheets_NOTIMES.t.fixed wksheets.t
-
-wksheets.texi: wksheets.t Makefile
- $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \
- -u "Top" \
- -n "Timing Specification" ${*}.t
-
-# Timing Specification Chapter:
-# 1. Copy the Shared File
-# 3. Build Node Structure
-
-timing.t: ../../common/timing.t
- cp ../../common/timing.t timing.t
-
-timing.texi: timing.t Makefile
- $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \
- -u "Top" \
- -n "CVME961 Timing Data" ${*}.t
-
-# Timing Data for BSP Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-timeCVME961_.t: ../../common/timetbl.t timeCVME961.t
- cat timeCVME961.t ../../common/timetbl.t >timeCVME961_.t
- @echo >>timeCVME961_.t
- @echo "@tex" >>timeCVME961_.t
- @echo "\\global\\advance \\smallskipamount by 4pt" >>timeCVME961_.t
- @echo "@end tex" >>timeCVME961_.t
- ${REPLACE} -p CVME961_TIMES timeCVME961_.t
- mv timeCVME961_.t.fixed timeCVME961_.t
-
-timeCVME961.texi: timeCVME961_.t Makefile
- $(BMENU) -p "Timing Specification Terminology" \
- -u "Top" \
- -n "Command and Variable Index" timeCVME961_.t
- mv timeCVME961_.texi timeCVME961.texi
diff --git a/doc/supplements/i960/bsp.t b/doc/supplements/i960/bsp.t
deleted file mode 100644
index 425ad43aa9..0000000000
--- a/doc/supplements/i960/bsp.t
+++ /dev/null
@@ -1,54 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Board Support Packages
-
-@section Introduction
-
-An RTEMS Board Support Package (BSP) must be designed
-to support a particular processor and target board combination.
-This chapter presents a discussion of i960CA specific BSP
-issues. For more information on developing a BSP, refer to the
-chapter titled Board Support Packages in the RTEMS
-Applications User's Guide.
-
-@section System Reset
-
-An RTEMS based application is initiated when the
-i960CA processor is reset. When the i960CA is reset, the
-processor reads an Initial Memory Image (IMI) to establish its
-state. The IMI consists of the Initialization Boot Record (IBR)
-and the Process Control Block (PRCB) from an Initial Memory
-Image (IMI) at location 0xFFFFFF00. The IBR contains the
-initial bus configuration data, the address of the first
-instruction to execute after reset, the address of the PRCB, and
-the checksum used by the processor's self-test.
-
-@section Processor Initialization
-
-The PRCB contains the base addresses for system data
-structures, and initial configuration information for the core
-and integrated peripherals. In particular, the PRCB contains
-the initial contents of the Arithmetic Control (AC) Register as
-well as the base addresses of the Interrupt Vector Table, System
-Procedure Entry Table, Fault Entry Table, and the Control Table.
-In addition, the PRCB is used to configure the depth of the
-instruction and register caches and the actions when certain
-types of faults are encountered.
-
-The Process Controls (PC) Register is initialized to
-0xC01F2002 which sets the i960CA's interrupt level to 0x1F (31
-decimal). In addition, the Interrupt Mask (IMSK) Register
-(alternately referred to as Special Function Register 1 or sf1)
-is set to 0x00000000 to mask all external and DMA interrupt
-sources. Thus, all interrupts are disabled when the first
-instruction is executed.
-
-For more information regarding the i960CA's data
-structures and their contents, refer to Intel's i960CA User's
-Manual.
diff --git a/doc/supplements/i960/callconv.t b/doc/supplements/i960/callconv.t
deleted file mode 100644
index 0e4c06a1bb..0000000000
--- a/doc/supplements/i960/callconv.t
+++ /dev/null
@@ -1,97 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Calling Conventions
-
-@section Introduction
-
-Each high-level language compiler generates
-subroutine entry and exit code based upon a set of rules known
-as the compiler's calling convention. These rules address the
-following issues:
-
-@itemize @bullet
-@item register preservation and usage
-
-@item parameter passing
-
-@item call and return mechanism
-@end itemize
-
-A compiler's calling convention is of importance when
-interfacing to subroutines written in another language either
-assembly or high-level. Even when the high-level language and
-target processor are the same, different compilers may use
-different calling conventions. As a result, calling conventions
-are both processor and compiler dependent.
-
-@section Processor Background
-
-All members of the i960 architecture family support
-two methods for performing procedure calls: a RISC-style
-branch-and-link and an integrated call and return mechanism.
-
-On a branch-and-link, the processor branches to the
-invoked procedure and saves the return address in a register,
-G14. Typically, the invoked procedure will not invoke another
-procedure and is referred to as a leaf procedure. Many
-high-level language compilers for the i960 family recognize leaf
-procedures and automatically optimize them to utilize the
-branch-and-link mechanism. Branch-and-link procedures are
-invoked using the bal and balx instructions and return control
-via the bx instruction. By convention, G14 is zero when not in
-a leaf procedure. It is the responsibility of the leaf
-procedure to clear G14 before returning.
-
-The integrated call and return mechanism also
-branches to the invoked procedure and saves the return address
-as did the branch and link mechanism. However, the important
-difference is that the call, callx, and calls instructions save
-the local register set (R0 through R15) before transferring
-control to the invoked procedure. The ret instruction
-automatically restores the previous local register set. The
-i960CA provides a register cache which can be configured to
-retain the last five to sixteen recent register caches. When
-the register cache is full, the oldest cached register set is
-written to the stack.
-
-@section Calling Mechanism
-
-All RTEMS directives are invoked using either a call
-or callx instruction and return to the user via the ret
-instruction.
-
-@section Register Usage
-
-As discussed above, the call and callx instructions
-automatically save the current contents of the local register
-set (R0 through R15). The contents of the local registers will
-be restored as part of returning to the application. The
-contents of global registers G0 through G7 are not preserved by
-RTEMS directives.
-
-@section Parameter Passing
-
-RTEMS uses the standard i960 family C parameter
-passing mechanism in which G0 contains the first parameter, G1
-the second, and so on for the remaining parameters. No RTEMS
-directive requires more than six parameters.
-
-@section User-Provided Routines
-
-All user-provided routines invoked by RTEMS, such as
-user extensions, device drivers, and MPCI routines, must also
-adhere to these calling conventions.
-
-@section Leaf Procedures
-
-RTEMS utilizes leaf procedures internally to improve
-performance. This improves execution speed as well as reducing
-stack usage and the number of register sets which must be cached.
-
-
diff --git a/doc/supplements/i960/cpumodel.t b/doc/supplements/i960/cpumodel.t
deleted file mode 100644
index 16ac726476..0000000000
--- a/doc/supplements/i960/cpumodel.t
+++ /dev/null
@@ -1,62 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter CPU Model Dependent Features
-
-@section Introduction
-
-Microprocessors are generally classified into
-families with a variety of CPU models or implementations within
-that family. Within a processor family, there is a high level
-of binary compatibility. This family may be based on either an
-architectural specification or on maintaining compatibility with
-a popular processor. Recent microprocessor families such as the
-SPARC or PA-RISC are based on an architectural specification
-which is independent or any particular CPU model or
-implementation. Older families such as the M68xxx and the iX86
-evolved as the manufacturer strived to produce higher
-performance processor models which maintained binary
-compatibility with older models.
-
-RTEMS takes advantage of the similarity of the
-various models within a CPU family. Although the models do vary
-in significant ways, the high level of compatibility makes it
-possible to share the bulk of the CPU dependent executive code
-across the entire family. Each processor family supported by
-RTEMS has a list of features which vary between CPU models
-within a family. For example, the most common model dependent
-feature regardless of CPU family is the presence or absence of a
-floating point unit or coprocessor. When defining the list of
-features present on a particular CPU model, one simply notes
-that floating point hardware is or is not present and defines a
-single constant appropriately. Conditional compilation is
-utilized to include the appropriate source code for this CPU
-model's feature set. It is important to note that this means
-that RTEMS is thus compiled using the appropriate feature set
-and compilation flags optimal for this CPU model used. The
-alternative would be to generate a binary which would execute on
-all family members using only the features which were always
-present.
-
-This chapter presents the set of features which vary
-across i960 implementations and are of importance to RTEMS.
-The set of CPU model feature macros are defined in the file
-c/src/exec/score/cpu/i960/i960.h based upon the particular CPU
-model defined on the compilation command line.
-
-@section CPU Model Name
-
-The macro CPU_MODEL_NAME is a string which designates
-the name of this CPU model. For example, for the Intel i960CA,
-this macro is set to the string "i960ca".
-
-@section Floating Point Unit
-
-The macro I960_HAS_FPU is set to 1 to indicate that
-this CPU model has a hardware floating point unit and 0
-otherwise.
diff --git a/doc/supplements/i960/cputable.t b/doc/supplements/i960/cputable.t
deleted file mode 100644
index e7833eb18b..0000000000
--- a/doc/supplements/i960/cputable.t
+++ /dev/null
@@ -1,125 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Processor Dependent Information Table
-
-@section Introduction
-
-Any highly processor dependent information required
-to describe a processor to RTEMS is provided in the CPU
-Dependent Information Table. This table is not required for all
-processors supported by RTEMS. This chapter describes the
-contents, if any, for a particular processor type.
-
-@section CPU Dependent Information Table
-
-The i960CA version of the RTEMS CPU Dependent
-Information Table contains the information required to interface
-a Board Support Package and RTEMS on the i960CA. This
-information is provided to allow RTEMS to interoperate
-effectively with the BSP. The C structure definition is given
-here:
-
-@example
-@group
-typedef struct @{
- void (*pretasking_hook)( void );
- void (*predriver_hook)( void );
- void (*postdriver_hook)( void );
- void (*idle_task)( void );
- boolean do_zero_of_workspace;
- unsigned32 idle_task_stack_size;
- unsigned32 interrupt_stack_size;
- unsigned32 extra_mpci_receive_server_stack;
- void (*stack_free_hook)( void* );
- /* end of fields required on all CPUs */
-
-#if defined(__i960CA__) || defined(__i960_CA__) || defined(__i960CA)
- i960ca_PRCB *Prcb;
-#endif
-
-@} rtems_cpu_table;
-@end group
-@end example
-
-The contents of the i960CA Processor Control Block
-are discussed in Intel's i960CA User's Manual. Structure
-definitions for the i960CA PRCB and Control Table are provided
-by including the file rtems.h.
-
-@table @code
-@item pretasking_hook
-is the address of the
-user provided routine which is invoked once RTEMS initialization
-is complete but before interrupts and tasking are enabled. This
-field may be NULL to indicate that the hook is not utilized.
-
-@item predriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately before
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-but no device drivers are initialized. This field may be NULL to
-indicate that the hook is not utilized.
-
-@item postdriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately after
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-and the device drivers are initialized. This field may be NULL
-to indicate that the hook is not utilized.
-
-@item idle_task
-is the address of the optional user
-provided routine which is used as the system's IDLE task. If
-this field is not NULL, then the RTEMS default IDLE task is not
-used. This field may be NULL to indicate that the default IDLE
-is to be used.
-
-@item do_zero_of_workspace
-indicates whether RTEMS should
-zero the Workspace as part of its initialization. If set to
-TRUE, the Workspace is zeroed. Otherwise, it is not.
-
-@item idle_task_stack_size
-is the size of the RTEMS idle task stack in bytes.
-If this number is less than MINIMUM_STACK_SIZE, then the
-idle task's stack will be MINIMUM_STACK_SIZE in byte.
-
-@item interrupt_stack_size
-is the size of the RTEMS
-allocated interrupt stack in bytes. This value must be at least
-as large as MINIMUM_STACK_SIZE.
-
-@item extra_mpci_receive_server_stack
-is the extra stack space allocated for the RTEMS MPCI receive server task
-in bytes. The MPCI receive server may invoke nearly all directives and
-may require extra stack space on some targets.
-
-@item stack_allocate_hook
-is the address of the optional user provided routine which allocates
-memory for task stacks. If this hook is not NULL, then a stack_free_hook
-must be provided as well.
-
-@item stack_free_hook
-is the address of the optional user provided routine which frees
-memory for task stacks. If this hook is not NULL, then a stack_allocate_hook
-must be provided as well.
-
-@item Prcb
-is the base address of the i960CA's Processor
-Control Block. It is primarily used by RTEMS to install
-interrupt handlers.
-@end table
-
-
-
-
-
-
diff --git a/doc/supplements/i960/fatalerr.t b/doc/supplements/i960/fatalerr.t
deleted file mode 100644
index 87751a652e..0000000000
--- a/doc/supplements/i960/fatalerr.t
+++ /dev/null
@@ -1,30 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Default Fatal Error Processing
-
-@section Introduction
-
-Upon detection of a fatal error by either the
-application or RTEMS the fatal error manager is invoked. The
-fatal error manager will invoke the user-supplied fatal error
-handlers. If no user-supplied handlers is configured, the
-RTEMS provided default fatal error handler is invoked. If the
-user-supplied fatal error handlers return to the executive the
-default fatal error handler is then invoked. This chapter
-describes the precise operations of the default fatal error
-handler.
-
-@section Default Fatal Error Handler Operations
-
-The default fatal error handler which is invoked by
-the fatal_error_occurred directive when there is no user handler
-configured or the user handler returns control to RTEMS. The
-default fatal error handler disables processor interrupts to
-level 31, places the error code in G0, and executes a branch to
-self instruction to simulate a halt processor instruction.
diff --git a/doc/supplements/i960/i960.texi b/doc/supplements/i960/i960.texi
deleted file mode 100644
index aa2709ba7d..0000000000
--- a/doc/supplements/i960/i960.texi
+++ /dev/null
@@ -1,120 +0,0 @@
-\input ../../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename c_i960
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Intel i960 Applications Supplement
-@c
-
-@include ../../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Intel i960 Applications Supplement (i960):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Intel i960 Applications Supplement
-
-@setchapternewpage odd
-@settitle RTEMS Intel i960 Applications Supplement
-@titlepage
-@finalout
-
-@title RTEMS Intel i960 Applications Supplement
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include cpumodel.texi
-@include callconv.texi
-@include memmodel.texi
-@include intr.texi
-@include fatalerr.texi
-@include bsp.texi
-@include cputable.texi
-@include wksheets.texi
-@include timing.texi
-@include timeCVME961.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top c_i960
-
-This is the online version of the RTEMS Intel i960
-Applications Supplement.
-
-@menu
-* Preface::
-* CPU Model Dependent Features::
-* Calling Conventions::
-* Memory Model::
-* Interrupt Processing::
-* Default Fatal Error Processing::
-* Board Support Packages::
-* Processor Dependent Information Table::
-* Memory Requirements::
-* Timing Specification::
-* CVME961 Timing Data::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, CVME961 Timing Data Rate Monotonic Manager, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@c @contents
-@bye
-
diff --git a/doc/supplements/i960/intr_NOTIMES.t b/doc/supplements/i960/intr_NOTIMES.t
deleted file mode 100644
index 1851440723..0000000000
--- a/doc/supplements/i960/intr_NOTIMES.t
+++ /dev/null
@@ -1,193 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Interrupt Processing
-
-@section Introduction
-
-Different types of processors respond to the
-occurrence of an interrupt in its own unique fashion. In
-addition, each processor type provides a control mechanism to
-allow the proper handling of an interrupt. The processor
-dependent response to the interrupt which modifies the execution
-state and results in the modification of the execution stream.
-This modification usually requires that an interrupt handler
-utilize the provided control mechanisms to return to the normal
-processing stream. Although RTEMS hides many of the processor
-dependent details of interrupt processing, it is important to
-understand how the RTEMS interrupt manager is mapped onto the
-processor's unique architecture. Discussed in this chapter are
-the the processor's response and control mechanisms as they
-pertain to RTEMS.
-
-@section Vectoring of Interrupt Handler
-
-Upon receipt of an interrupt the i960CA
-automatically performs the following actions:
-
-@itemize @bullet
-@item saves the local register set,
-
-@item sets the Frame Pointer (FP) to point to the interrupt
-stack,
-
-@item increments the FP by sixteen (16) to make room for the
-Interrupt Record,
-
-@item saves the current values of the arithmetic-controls (AC)
-register, the process-controls (PC) register, and the interrupt
-vector number are saved in the Interrupt Record,
-
-@item the CPU sets the Instruction Pointer (IP) to the address
-of the first instruction in the interrupt handler,
-
-@item the return-status field of the Previous Frame Pointer
-(PFP or R0) register is set to interrupt return,
-
-@item sets the PC state bit to interrupted,
-
-@item sets the current interrupt disable level in the PC to
-the level of the current interrupt, and
-
-@item disables tracing.
-@end itemize
-
-A nested interrupt is processed similarly by the
-i960CA with the exception that the Frame Pointer (FP) already
-points to the interrupt stack. This means that the FP is NOT
-overwritten before space for the Interrupt Record is allocated.
-
-The state flag bit of the saved PC register in the
-Interrupt Record is examined by RTEMS to determine when an outer
-most interrupt is being exited. Therefore, the user application
-code MUST NOT modify this bit.
-
-@section Interrupt Record
-
-The structure of the Interrupt Record for the i960CA
-which is placed on the interrupt stack by the processor in
-response to an interrupt is as follows:
-
-@ifset use-ascii
-@example
-@group
- +---------------------------+
- | Saved Process Controls | NFP-16
- +---------------------------+
- | Saved Arithmetic Controls | NFP-12
- +---------------------------+
- | UNUSED | NFP-8
- +---------------------------+
- | UNUSED | NFP-4
- +---------------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\strut\vrule#&
-\hbox to 2.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}
-\cr
-\multispan{3}\hrulefill\cr
-& Saved Process Controls && NFP-16\cr
-\multispan{3}\hrulefill\cr
-& Saved Arithmetic Controls && NFP-12\cr
-\multispan{3}\hrulefill\cr
-& UNUSED && NFP-8\cr
-\multispan{3}\hrulefill\cr
-& UNUSED && NFP-4\cr
-\multispan{3}\hrulefill\cr
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="40%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Saved Process Controls</STRONG></TD>
- <TD ALIGN=center>NFP-16</TD></TR>
-<TR><TD ALIGN=center><STRONG>Saved Arithmetic Controls</STRONG></TD>
- <TD ALIGN=center>NFP-12</TD></TR>
-<TR><TD ALIGN=center><STRONG>UNUSED</STRONG></TD>
- <TD ALIGN=center>NFP-8</TD></TR>
-<TR><TD ALIGN=center><STRONG>UNUSED</STRONG></TD>
- <TD ALIGN=center>NFP-4</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Interrupt Levels
-
-Thirty-two levels (0-31) of interrupt priorities are
-supported by the i960CA microprocessor with level thirty-one
-(31) being the highest priority. Level zero (0) indicates that
-interrupts are fully enabled. Interrupt requests for interrupts
-with priorities less than or equal to the current interrupt mask
-level are ignored.
-
-Although RTEMS supports 256 interrupt levels, the
-i960CA only supports thirty-two. RTEMS interrupt levels 0
-through 31 directly correspond to i960CA interrupt levels. All
-other RTEMS interrupt levels are undefined and their behavior is
-unpredictable.
-
-@section Disabling of Interrupts by RTEMS
-
-During the execution of directive calls, critical
-sections of code may be executed. When these sections are
-encountered, RTEMS disables interrupts to level thirty-one (31)
-before the execution of this section and restores them to the
-previous level upon completion of the section. RTEMS has been
-optimized to insure that interrupts are disabled for less than
-RTEMS_MAXIMUM_DISABLE_PERIOD microseconds on a
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz i960CA with zero wait states.
-These numbers will vary based the number of wait states and
-processor speed present on the target board. [NOTE: This
-calculation was most recently performed for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-Non-maskable interrupts (NMI) cannot be disabled, and
-ISRs which execute at this level MUST NEVER issue RTEMS system
-calls. If a directive is invoked, unpredictable results may
-occur due to the inability of RTEMS to protect its critical
-sections. However, ISRs that make no system calls may safely
-execute as non-maskable interrupts.
-
-@section Register Cache Flushing
-
-The i960CA version of the RTEMS interrupt manager is
-optimized to insure that the flushreg instruction is only
-executed when a context switch is necessary. The flushreg
-instruction flushes the i960CA register set cache and takes (14
-+ 23 * number of sets flushed) cycles to execute. As the i960CA
-supports caching of from five to sixteen register sets, this
-instruction takes from 129 to 382 cycles (3.90 to 11.57
-microseconds at 33 Mhz) to execute given no wait state memory.
-RTEMS flushes the register set cache only at the conclusion of
-the outermost ISR when a context switch is necessary. The
-register set cache will not be flushed as part of processing a
-nested interrupt or when a context switch is not necessary.
-This optimization is essential to providing high-performance
-interrupt management on the i960CA.
-
-@section Interrupt Stack
-
-On the i960CA, RTEMS allocates the interrupt stack
-from the Workspace Area. The amount of memory allocated for the
-interrupt stack is determined by the interrupt_stack_size field
-in the CPU Configuration Table. During the initialization
-process, RTEMS will install its interrupt stack.
-
-
diff --git a/doc/supplements/i960/memmodel.t b/doc/supplements/i960/memmodel.t
deleted file mode 100644
index d11c1c32fe..0000000000
--- a/doc/supplements/i960/memmodel.t
+++ /dev/null
@@ -1,40 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Model
-
-@section Introduction
-
-A processor may support any combination of memory
-models ranging from pure physical addressing to complex demand
-paged virtual memory systems. RTEMS supports a flat memory
-model which ranges contiguously over the processor's allowable
-address space. RTEMS does not support segmentation or virtual
-memory of any kind. The appropriate memory model for RTEMS
-provided by the targeted processor and related characteristics
-of that model are described in this chapter.
-
-@section Flat Memory Model
-
-The i960CA supports a flat 32-bit address space with
-addresses ranging from 0x00000000 to 0xFFFFFFFF (4 gigabytes).
-Although the i960CA reserves portions of this address space,
-application code and data may be placed in any non-reserved
-areas. Each address is represented by a 32-bit value and is
-byte addressable. The address may be used to reference a single
-byte, half-word (2-bytes), word (4 bytes), double-word (8
-bytes), triple-word (12 bytes) or quad-word (16 bytes). The
-i960CA does not support virtual memory or segmentation.
-
-The i960CA allows the memory space to be partitioned
-into sixteen regions which may be configured individually as big
-or little endian. RTEMS assumes that the memory regions in
-which its code, data, and the RTEMS Workspace reside are
-configured as little endian.
-
-
diff --git a/doc/supplements/i960/preface.texi b/doc/supplements/i960/preface.texi
deleted file mode 100644
index 519eb3c90e..0000000000
--- a/doc/supplements/i960/preface.texi
+++ /dev/null
@@ -1,40 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, CPU Model Dependent Features, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-The Real Time Executive for Multiprocessor Systems
-(RTEMS) is designed to be portable across multiple processor
-architectures. However, the nature of real-time systems makes
-it essential that the application designer understand certain
-processor dependent implementation details. These processor
-dependencies include calling convention, board support package
-issues, interrupt processing, exact RTEMS memory requirements,
-performance data, header files, and the assembly language
-interface to the executive.
-
-For information on the i960CA and the i960 processor
-family in general, refer to the following documents:
-
-@itemize @bullet
-@item @cite{80960CA User's Manual, Intel, Order No. 270710}.
-
-@item @cite{32-Bit Embedded Controller Handbook, Intel, Order No. 270647}.
-
-@item @cite{Glenford J. Meyers and David L. Budde. The 80960
-Microprocessor Architecture. Wiley. New York. 1988}.
-@end itemize
-
-It is highly recommended that the i960CA RTEMS
-application developer obtain and become familiar with Intel's
-i960CA User's Manual.
-
-
diff --git a/doc/supplements/i960/timeCVME961.t b/doc/supplements/i960/timeCVME961.t
deleted file mode 100644
index 4fcfca41b4..0000000000
--- a/doc/supplements/i960/timeCVME961.t
+++ /dev/null
@@ -1,88 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@include ../../common/timemac.texi
-@tex
-\global\advance \smallskipamount by -4pt
-@end tex
-
-@chapter CVME961 Timing Data
-
-NOTE: The CVME961 board used by the RTEMS Project to
-obtain i960CA times is currently broken. The information in
-this chapter was obtained using Release 3.2.1.
-
-@section Introduction
-
-The timing data for the i960CA version of RTEMS is
-provided along with the target dependent aspects concerning the
-gathering of the timing data. The hardware platform used to
-gather the times is described to give the reader a better
-understanding of each directive time provided. Also, provided
-is a description of the interrupt latency and the context
-switch times as they pertain to the i960CA version of RTEMS.
-
-@section Hardware Platform
-
-All times reported except for the maximum period
-interrupts are disabled by RTEMS were measured using a Cyclone
-Microsystems CVME961 board. The CVME961 is a 33 Mhz board with
-dynamic RAM which has two wait state dynamic memory (four CPU
-cycles) for read accesses and one wait state (two CPU cycles)
-for write accesses. The Z8536 on a SQUALL SQSIO4 mezzanine
-board was used to measure elapsed time with one-half microsecond
-resolution. All sources of hardware interrupts are disabled,
-although the interrupt level of the i960CA allows all interrupts.
-
-The maximum interrupt disable period was measured by
-summing the number of CPU cycles required by each assembly
-language instruction executed while interrupts were disabled.
-Zero wait state memory was assumed. The total CPU cycles
-executed with interrupts disabled, including the instructions to
-disable and enable interrupts, was divided by 33 to simulate a
-i960CA executing at 33 Mhz with zero wait states.
-
-@section Interrupt Latency
-
-The maximum period with interrupts disabled within
-RTEMS is less than
-RTEMS_MAXIMUM_DISABLE_PERIOD microseconds including the instructions
-which disable and re-enable interrupts. The time required for
-the i960CA to generate an interrupt using the sysctl
-instruction, vectoring to an interrupt handler, and for the
-RTEMS entry overhead before invoking the user's interrupt
-handler are a total of RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. These combine to yield
-a worst case interrupt latency of less than
-RTEMS_MAXIMUM_DISABLE_PERIOD + RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. [NOTE: The maximum period with interrupts
-disabled within RTEMS was last calculated for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-It should be noted again that the maximum period with
-interrupts disabled within RTEMS is hand-timed. The interrupt
-vector and entry overhead time was generated on the Cyclone
-CVME961 benchmark platform using the sysctl instruction as the
-interrupt source.
-
-@section Context Switch
-
-The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
-microseconds on the Cyclone CVME961 benchmark platform. This
-time represents the raw context switch time with no user
-extensions configured. Additional execution time is required
-when a TSWITCH user extension is configured. The use of the
-TSWITCH extension is application dependent. Thus, its execution
-time is not considered part of the base context switch time.
-
-The CVME961 has no hardware floating point capability
-and floating point tasks are not supported.
-
-The following table summarizes the context switch
-times for the CVME961 benchmark platform:
-
diff --git a/doc/supplements/m68k/MVME136_TIMES b/doc/supplements/m68k/MVME136_TIMES
deleted file mode 100644
index 5b0dfe6fda..0000000000
--- a/doc/supplements/m68k/MVME136_TIMES
+++ /dev/null
@@ -1,247 +0,0 @@
-#
-# M68020/MVME136 Timing and Size Information
-#
-# $Id$
-#
-
-#
-# CPU Model Information
-#
-RTEMS_BSP MVME136
-RTEMS_CPU_MODEL MC68020
-#
-# Interrupt Latency
-#
-# NOTE: In general, the text says it is hand-calculated to be
-# RTEMS_MAXIMUM_DISABLE_PERIOD at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-# Mhz and this was last calculated for Release
-# RTEMS_VERSION_FOR_MAXIMUM_DISABLE_PERIOD.
-#
-RTEMS_MAXIMUM_DISABLE_PERIOD TBD
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ 20
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD 3.2.1
-#
-# Context Switch Times
-#
-RTEMS_NO_FP_CONTEXTS 35
-RTEMS_RESTORE_1ST_FP_TASK 39
-RTEMS_SAVE_INIT_RESTORE_INIT 66
-RTEMS_SAVE_IDLE_RESTORE_INIT 66
-RTEMS_SAVE_IDLE_RESTORE_IDLE 68
-#
-# Task Manager Times
-#
-RTEMS_TASK_CREATE_ONLY 148
-RTEMS_TASK_IDENT_ONLY 350
-RTEMS_TASK_START_ONLY 76
-RTEMS_TASK_RESTART_CALLING_TASK 95
-RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER 89
-RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER 124
-RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER 92
-RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER 125
-RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER 149
-RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER 142
-RTEMS_TASK_DELETE_CALLING_TASK 170
-RTEMS_TASK_DELETE_SUSPENDED_TASK 138
-RTEMS_TASK_DELETE_BLOCKED_TASK 143
-RTEMS_TASK_DELETE_READY_TASK 144
-RTEMS_TASK_SUSPEND_CALLING_TASK 71
-RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER 43
-RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER 45
-RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER 67
-RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY 31
-RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER 64
-RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER 106
-RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE 14
-RTEMS_TASK_MODE_NO_RESCHEDULE 16
-RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER 23
-RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER 60
-RTEMS_TASK_GET_NOTE_ONLY 33
-RTEMS_TASK_SET_NOTE_ONLY 33
-RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER 16
-RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER 56
-RTEMS_TASK_WAKE_WHEN_ONLY 117
-#
-# Interrupt Manager
-#
-RTEMS_INTR_ENTRY_RETURNS_TO_NESTED 12
-RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK 9
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK 9
-RTEMS_INTR_EXIT_RETURNS_TO_NESTED <1
-RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK 8
-RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK 54
-#
-# Clock Manager
-#
-RTEMS_CLOCK_SET_ONLY 86
-RTEMS_CLOCK_GET_ONLY 1
-RTEMS_CLOCK_TICK_ONLY 17
-#
-# Timer Manager
-#
-RTEMS_TIMER_CREATE_ONLY 28
-RTEMS_TIMER_IDENT_ONLY 343
-RTEMS_TIMER_DELETE_INACTIVE 43
-RTEMS_TIMER_DELETE_ACTIVE 47
-RTEMS_TIMER_FIRE_AFTER_INACTIVE 58
-RTEMS_TIMER_FIRE_AFTER_ACTIVE 61
-RTEMS_TIMER_FIRE_WHEN_INACTIVE 88
-RTEMS_TIMER_FIRE_WHEN_ACTIVE 88
-RTEMS_TIMER_RESET_INACTIVE 54
-RTEMS_TIMER_RESET_ACTIVE 58
-RTEMS_TIMER_CANCEL_INACTIVE 31
-RTEMS_TIMER_CANCEL_ACTIVE 34
-#
-# Semaphore Manager
-#
-RTEMS_SEMAPHORE_CREATE_ONLY 60
-RTEMS_SEMAPHORE_IDENT_ONLY 367
-RTEMS_SEMAPHORE_DELETE_ONLY 58
-RTEMS_SEMAPHORE_OBTAIN_AVAILABLE 38
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT 38
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS 109
-RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS 44
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER 66
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER 87
-#
-# Message Manager
-#
-RTEMS_MESSAGE_QUEUE_CREATE_ONLY 200
-RTEMS_MESSAGE_QUEUE_IDENT_ONLY 341
-RTEMS_MESSAGE_QUEUE_DELETE_ONLY 80
-RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS 97
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER 101
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER 123
-RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS 96
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER 101
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER 123
-RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS 53
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER 111
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER 133
-RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE 79
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT 43
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 114
-RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED 29
-RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED 39
-#
-# Event Manager
-#
-RTEMS_EVENT_SEND_NO_TASK_READIED 24
-RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER 60
-RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER 84
-RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS 1
-RTEMS_EVENT_RECEIVE_AVAILABLE 28
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT 23
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 84
-#
-# Signal Manager
-#
-RTEMS_SIGNAL_CATCH_ONLY 15
-RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER 37
-RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF 55
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK 37
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK 54
-#
-# Partition Manager
-#
-RTEMS_PARTITION_CREATE_ONLY 70
-RTEMS_PARTITION_IDENT_ONLY 341
-RTEMS_PARTITION_DELETE_ONLY 42
-RTEMS_PARTITION_GET_BUFFER_AVAILABLE 35
-RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE 33
-RTEMS_PARTITION_RETURN_BUFFER_ONLY 43
-#
-# Region Manager
-#
-RTEMS_REGION_CREATE_ONLY 63
-RTEMS_REGION_IDENT_ONLY 348
-RTEMS_REGION_DELETE_ONLY 39
-RTEMS_REGION_GET_SEGMENT_AVAILABLE 52
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT 49
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS 123
-RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS 54
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER 114
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER 136
-#
-# Dual-Ported Memory Manager
-#
-RTEMS_PORT_CREATE_ONLY 35
-RTEMS_PORT_IDENT_ONLY 340
-RTEMS_PORT_DELETE_ONLY 39
-RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY 26
-RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY 27
-#
-# IO Manager
-#
-RTEMS_IO_INITIALIZE_ONLY 4
-RTEMS_IO_OPEN_ONLY 2
-RTEMS_IO_CLOSE_ONLY 1
-RTEMS_IO_READ_ONLY 2
-RTEMS_IO_WRITE_ONLY 3
-RTEMS_IO_CONTROL_ONLY 2
-#
-# Rate Monotonic Manager
-#
-RTEMS_RATE_MONOTONIC_CREATE_ONLY 32
-RTEMS_RATE_MONOTONIC_IDENT_ONLY 341
-RTEMS_RATE_MONOTONIC_CANCEL_ONLY 39
-RTEMS_RATE_MONOTONIC_DELETE_ACTIVE 51
-RTEMS_RATE_MONOTONIC_DELETE_INACTIVE 48
-RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER 54
-RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS 74
-RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS 31
-#
-# Size Information
-#
-#
-# xxx alloted for numbers
-#
-RTEMS_DATA_SPACE 723
-RTEMS_MINIMUM_CONFIGURATION 18,980
-RTEMS_MAXIMUM_CONFIGURATION 36,438
-# x,xxx alloted for numbers
-RTEMS_CORE_CODE_SIZE 12,674
-RTEMS_INITIALIZATION_CODE_SIZE 970
-RTEMS_TASK_CODE_SIZE 3,562
-RTEMS_INTERRUPT_CODE_SIZE 54
-RTEMS_CLOCK_CODE_SIZE 334
-RTEMS_TIMER_CODE_SIZE 1,110
-RTEMS_SEMAPHORE_CODE_SIZE 1,632
-RTEMS_MESSAGE_CODE_SIZE 1,754
-RTEMS_EVENT_CODE_SIZE 1,000
-RTEMS_SIGNAL_CODE_SIZE 418
-RTEMS_PARTITION_CODE_SIZE 1,164
-RTEMS_REGION_CODE_SIZE 1,494
-RTEMS_DPMEM_CODE_SIZE 724
-RTEMS_IO_CODE_SIZE 686
-RTEMS_FATAL_ERROR_CODE_SIZE 24
-RTEMS_RATE_MONOTONIC_CODE_SIZE 1,212
-RTEMS_MULTIPROCESSING_CODE_SIZE 6.952
-# xxx alloted for numbers
-RTEMS_TIMER_CODE_OPTSIZE 184
-RTEMS_SEMAPHORE_CODE_OPTSIZE 172
-RTEMS_MESSAGE_CODE_OPTSIZE 288
-RTEMS_EVENT_CODE_OPTSIZE 56
-RTEMS_SIGNAL_CODE_OPTSIZE 56
-RTEMS_PARTITION_CODE_OPTSIZE 132
-RTEMS_REGION_CODE_OPTSIZE 160
-RTEMS_DPMEM_CODE_OPTSIZE 132
-RTEMS_IO_CODE_OPTSIZE 00
-RTEMS_RATE_MONOTONIC_CODE_OPTSIZE 184
-RTEMS_MULTIPROCESSING_CODE_OPTSIZE 332
-# xxx alloted for numbers
-RTEMS_BYTES_PER_TASK 400
-RTEMS_BYTES_PER_TIMER 68
-RTEMS_BYTES_PER_SEMAPHORE 124
-RTEMS_BYTES_PER_MESSAGE_QUEUE 148
-RTEMS_BYTES_PER_REGION 144
-RTEMS_BYTES_PER_PARTITION 56
-RTEMS_BYTES_PER_PORT 36
-RTEMS_BYTES_PER_PERIOD 36
-RTEMS_BYTES_PER_EXTENSION 64
-RTEMS_BYTES_PER_FP_TASK 332
-RTEMS_BYTES_PER_NODE 48
-RTEMS_BYTES_PER_GLOBAL_OBJECT 20
-RTEMS_BYTES_PER_PROXY 124
-# x,xxx alloted for numbers
-RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS 8,872
diff --git a/doc/supplements/m68k/Makefile b/doc/supplements/m68k/Makefile
deleted file mode 100644
index 9751428c7a..0000000000
--- a/doc/supplements/m68k/Makefile
+++ /dev/null
@@ -1,165 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=m68k
-DISTRIBUTION_LEVEL=support
-
-include ../../Make.config
-
-REPLACE=../../tools/word-replace
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../../common/cpright.texi ../../common/setup.texi
-
-GENERATED_FILES=\
- cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \
- bsp.texi cputable.texi timing.texi wksheets.texi timeMVME136.texi
-
-FILES= $(PROJECT).texi \
- preface.texi \
- $(GENERATED_FILES)
-
-info: dirs c_m68k
- cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL)
-
-c_m68k: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/c_m68k
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/c_$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-*
- rm -f c_m68k c_m68k-*
- rm -f intr.t $(GENERATED_FILES)
- rm -f wksheets.t wksheets_NOTIMES.t
- rm -f timeMVME136_.t timeMVME136_.texi
- rm -f *.fixed _* timing.t
-
-#
-# Chapters which get automatic processing
-#
-
-cpumodel.texi: cpumodel.t Makefile
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Calling Conventions" ${*}.t
-
-callconv.texi: callconv.t Makefile
- $(BMENU) -p "CPU Model Dependent Features Extend Byte to Long Instruction" \
- -u "Top" \
- -n "Memory Model" ${*}.t
-
-memmodel.texi: memmodel.t Makefile
- $(BMENU) -p "Calling Conventions User-Provided Routines" \
- -u "Top" \
- -n "Interrupt Processing" ${*}.t
-
-
-## Interrupt Chapter:
-## 1. Replace Times and Sizes
-## 2. Build Node Structure
-#
-#intr.texi: intr.t MVME136_TIMES
-# ${REPLACE} -p MVME136_TIMES intr.t
-# mv intr.t.fixed intr.texi
-
-# Interrupt Chapter:
-# 1. Replace Times and Sizes
-# 2. Build Node Structure
-intr.t: intr_NOTIMES.t MVME136_TIMES
- ${REPLACE} -p MVME136_TIMES intr_NOTIMES.t
- mv intr_NOTIMES.t.fixed intr.t
-
-intr.texi: intr.t Makefile
- $(BMENU) -p "Memory Model Flat Memory Model" \
- -u "Top" \
- -n "Default Fatal Error Processing" ${*}.t
-
-fatalerr.texi: fatalerr.t Makefile
- $(BMENU) -p "Interrupt Processing Interrupt Stack" \
- -u "Top" \
- -n "Board Support Packages" ${*}.t
-
-bsp.texi: bsp.t Makefile
- $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \
- -u "Top" \
- -n "Processor Dependent Information Table" ${*}.t
-
-cputable.texi: cputable.t Makefile
- $(BMENU) -p "Board Support Packages Processor Initialization" \
- -u "Top" \
- -n "Memory Requirements" ${*}.t
-
-
-# Worksheets Chapter:
-# 1. Obtain the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-wksheets_NOTIMES.t: ../../common/wksheets.t
- cp ../../common/wksheets.t wksheets_NOTIMES.t
-
-wksheets.t: wksheets_NOTIMES.t MVME136_TIMES
- ${REPLACE} -p MVME136_TIMES wksheets_NOTIMES.t
- mv wksheets_NOTIMES.t.fixed wksheets.t
-
-wksheets.texi: wksheets.t Makefile
- $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \
- -u "Top" \
- -n "Timing Specification" ${*}.t
-
-# Timing Specification Chapter:
-# 1. Copy the Shared File
-# 3. Build Node Structure
-
-timing.t: ../../common/timing.t
- cp ../../common/timing.t timing.t
-
-timing.texi: timing.t Makefile
- $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \
- -u "Top" \
- -n "MVME136 Timing Data" ${*}.t
-
-# Timing Data for BSP Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-timeMVME136_.t: ../../common/timetbl.t timeMVME136.t
- cat timeMVME136.t ../../common/timetbl.t >timeMVME136_.t
- @echo >>timeMVME136_.t
- @echo "@tex" >>timeMVME136_.t
- @echo "\\global\\advance \\smallskipamount by 4pt" >>timeMVME136_.t
- @echo "@end tex" >>timeMVME136_.t
- ${REPLACE} -p MVME136_TIMES timeMVME136_.t
- mv timeMVME136_.t.fixed timeMVME136_.t
-
-timeMVME136.texi: timeMVME136_.t Makefile
- $(BMENU) -p "Timing Specification Terminology" \
- -u "Top" \
- -n "Command and Variable Index" timeMVME136_.t
- mv timeMVME136_.texi timeMVME136.texi
diff --git a/doc/supplements/m68k/bsp.t b/doc/supplements/m68k/bsp.t
deleted file mode 100644
index 7782fe2e3d..0000000000
--- a/doc/supplements/m68k/bsp.t
+++ /dev/null
@@ -1,93 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Board Support Packages
-
-@section Introduction
-
-An RTEMS Board Support Package (BSP) must be designed
-to support a particular processor and target board combination.
-This chapter presents a discussion of MC68020 specific BSP
-issues. For more information on developing a BSP, refer to the
-chapter titled Board Support Packages in the RTEMS
-Applications User's Guide.
-
-@section System Reset
-
-An RTEMS based application is initiated or
-re-initiated when the MC68020 processor is reset. When the
-MC68020 is reset, the processor performs the following actions:
-
-@itemize @bullet
-@item The tracing bits of the status register are cleared to
-disable tracing.
-
-@item The supervisor interrupt state is entered by setting the
-supervisor (S) bit and clearing the master/interrupt (M) bit of
-the status register.
-
-@item The interrupt mask of the status register is set to
-level 7 to effectively disable all maskable interrupts.
-
-@item The vector base register (VBR) is set to zero.
-
-@item The cache control register (CACR) is set to zero to
-disable and freeze the processor cache.
-
-@item The interrupt stack pointer (ISP) is set to the value
-stored at vector 0 (bytes 0-3) of the exception vector table
-(EVT).
-
-@item The program counter (PC) is set to the value stored at
-vector 1 (bytes 4-7) of the EVT.
-
-@item The processor begins execution at the address stored in
-the PC.
-@end itemize
-
-@section Processor Initialization
-
-The address of the application's initialization code
-should be stored in the first vector of the EVT which will allow
-the immediate vectoring to the application code. If the
-application requires that the VBR be some value besides zero,
-then it should be set to the required value at this point. All
-tasks share the same MC68020's VBR value. Because interrupts
-are enabled automatically by RTEMS as part of the initialize
-executive directive, the VBR MUST be set before this directive
-is invoked to insure correct interrupt vectoring. If processor
-caching is to be utilized, then it should be enabled during the
-reset application initialization code.
-
-In addition to the requirements described in the
-Board Support Packages chapter of the Applications User's
-Manual for the reset code which is executed before the call to
-initialize executive, the MC68020 version has the following
-specific requirements:
-
-@itemize @bullet
-@item Must leave the S bit of the status register set so that
-the MC68020 remains in the supervisor state.
-
-@item Must set the M bit of the status register to remove the
-MC68020 from the interrupt state.
-
-@item Must set the master stack pointer (MSP) such that a
-minimum stack size of MINIMUM_STACK_SIZE bytes is provided for
-the initialize executive directive.
-
-@item Must initialize the MC68020's vector table.
-@end itemize
-
-Note that the BSP is not responsible for allocating
-or installing the interrupt stack. RTEMS does this
-automatically as part of initialization. If the BSP does not
-install an interrupt stack and -- for whatever reason -- an
-interrupt occurs before initialize_executive is invoked, then
-the results are unpredictable.
-
diff --git a/doc/supplements/m68k/callconv.t b/doc/supplements/m68k/callconv.t
deleted file mode 100644
index 1ebdf7592e..0000000000
--- a/doc/supplements/m68k/callconv.t
+++ /dev/null
@@ -1,92 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Calling Conventions
-
-@section Introduction
-
-Each high-level language compiler generates
-subroutine entry and exit code based upon a set of rules known
-as the compiler's calling convention. These rules address the
-following issues:
-
-@itemize @bullet
-@item register preservation and usage
-@item parameter passing
-@item call and return mechanism
-@end itemize
-
-A compiler's calling convention is of importance when
-interfacing to subroutines written in another language either
-assembly or high-level. Even when the high-level language and
-target processor are the same, different compilers may use
-different calling conventions. As a result, calling conventions
-are both processor and compiler dependent.
-
-@section Processor Background
-
-The MC68xxx architecture supports a simple yet
-effective call and return mechanism. A subroutine is invoked
-via the branch to subroutine (bsr) or the jump to subroutine
-(jsr) instructions. These instructions push the return address
-on the current stack. The return from subroutine (rts)
-instruction pops the return address off the current stack and
-transfers control to that instruction. It is is important to
-note that the MC68xxx call and return mechanism does not
-automatically save or restore any registers. It is the
-responsibility of the high-level language compiler to define the
-register preservation and usage convention.
-
-@section Calling Mechanism
-
-All RTEMS directives are invoked using either a bsr
-or jsr instruction and return to the user application via the
-rts instruction.
-
-@section Register Usage
-
-As discussed above, the bsr and jsr instructions do
-not automatically save any registers. RTEMS uses the registers
-D0, D1, A0, and A1 as scratch registers. These registers are
-not preserved by RTEMS directives therefore, the contents of
-these registers should not be assumed upon return from any RTEMS
-directive.
-
-@section Parameter Passing
-
-RTEMS assumes that arguments are placed on the
-current stack before the directive is invoked via the bsr or jsr
-instruction. The first argument is assumed to be closest to the
-return address on the stack. This means that the first argument
-of the C calling sequence is pushed last. The following
-pseudo-code illustrates the typical sequence used to call a
-RTEMS directive with three (3) arguments:
-
-@example
-@group
-push third argument
-push second argument
-push first argument
-invoke directive
-remove arguments from the stack
-@end group
-@end example
-
-The arguments to RTEMS are typically pushed onto the
-stack using a move instruction with a pre-decremented stack
-pointer as the destination. These arguments must be removed
-from the stack after control is returned to the caller. This
-removal is typically accomplished by adding the size of the
-argument list in bytes to the current stack pointer.
-
-@section User-Provided Routines
-
-All user-provided routines invoked by RTEMS, such as
-user extensions, device drivers, and MPCI routines, must also
-adhere to these calling conventions.
-
diff --git a/doc/supplements/m68k/cpumodel.t b/doc/supplements/m68k/cpumodel.t
deleted file mode 100644
index d9bf601e1f..0000000000
--- a/doc/supplements/m68k/cpumodel.t
+++ /dev/null
@@ -1,91 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter CPU Model Dependent Features
-
-@section Introduction
-
-Microprocessors are generally classified into
-families with a variety of CPU models or implementations within
-that family. Within a processor family, there is a high level
-of binary compatibility. This family may be based on either an
-architectural specification or on maintaining compatibility with
-a popular processor. Recent microprocessor families such as the
-SPARC or PA-RISC are based on an architectural specification
-which is independent or any particular CPU model or
-implementation. Older families such as the M68xxx and the iX86
-evolved as the manufacturer strived to produce higher
-performance processor models which maintained binary
-compatibility with older models.
-
-RTEMS takes advantage of the similarity of the
-various models within a CPU family. Although the models do vary
-in significant ways, the high level of compatibility makes it
-possible to share the bulk of the CPU dependent executive code
-across the entire family. Each processor family supported by
-RTEMS has a list of features which vary between CPU models
-within a family. For example, the most common model dependent
-feature regardless of CPU family is the presence or absence of a
-floating point unit or coprocessor. When defining the list of
-features present on a particular CPU model, one simply notes
-that floating point hardware is or is not present and defines a
-single constant appropriately. Conditional compilation is
-utilized to include the appropriate source code for this CPU
-model's feature set. It is important to note that this means
-that RTEMS is thus compiled using the appropriate feature set
-and compilation flags optimal for this CPU model used. The
-alternative would be to generate a binary which would execute on
-all family members using only the features which were always
-present.
-
-This chapter presents the set of features which vary
-across SPARC implementations and are of importance to RTEMS.
-The set of CPU model feature macros are defined in the file
-c/src/exec/score/cpu/m68k/m68k.h based upon the particular CPU
-model defined on the compilation command line.
-
-@section CPU Model Name
-
-The macro CPU_MODEL_NAME is a string which designates
-the name of this CPU model. For example, for the MC68020
-processor, this macro is set to the string "mc68020".
-
-@section Floating Point Unit
-
-The macro M68K_HAS_FPU is set to 1 to indicate that
-this CPU model has a hardware floating point unit and 0
-otherwise. It does not matter whether the hardware floating
-point support is incorporated on-chip or is an external
-coprocessor.
-
-@section BFFFO Instruction
-
-The macro M68K_HAS_BFFFO is set to 1 to indicate that
-this CPU model has the bfffo instruction.
-
-@section Vector Base Register
-
-The macro M68K_HAS_VBR is set to 1 to indicate that
-this CPU model has a vector base register (vbr).
-
-@section Separate Stacks
-
-The macro M68K_HAS_SEPARATE_STACKS is set to 1 to
-indicate that this CPU model has separate interrupt, user, and
-supervisor mode stacks.
-
-@section Pre-Indexing Address Mode
-
-The macro M68K_HAS_PREINDEXING is set to 1 to indicate that
-this CPU model has the pre-indexing address mode.
-
-@section Extend Byte to Long Instruction
-
-The macro M68K_HAS_EXTB_L is set to 1 to indicate that this CPU model
-has the extb.l instruction. This instruction is supposed to be available
-in all models based on the cpu32 core as well as mc68020 and up models.
diff --git a/doc/supplements/m68k/cputable.t b/doc/supplements/m68k/cputable.t
deleted file mode 100644
index 7a7273ea8e..0000000000
--- a/doc/supplements/m68k/cputable.t
+++ /dev/null
@@ -1,111 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Processor Dependent Information Table
-
-@section Introduction
-
-Any highly processor dependent information required
-to describe a processor to RTEMS is provided in the CPU
-Dependent Information Table. This table is not required for all
-processors supported by RTEMS. This chapter describes the
-contents, if any, for a particular processor type.
-
-@section CPU Dependent Information Table
-
-The MC68xxx version of the RTEMS CPU Dependent
-Information Table contains the information required to interface
-a Board Support Package and RTEMS on the MC68xxx. This
-information is provided to allow RTEMS to interoperate
-effectively with the BSP. The C structure definition is given
-here:
-
-@example
-@group
-typedef struct @{
- void (*pretasking_hook)( void );
- void (*predriver_hook)( void );
- void (*postdriver_hook)( void );
- void (*idle_task)( void );
- boolean do_zero_of_workspace;
- unsigned32 idle_task_stack_size;
- unsigned32 interrupt_stack_size;
- unsigned32 extra_mpci_receive_server_stack;
- void * (*stack_allocate_hook)( unsigned32 );
- void (*stack_free_hook)( void* );
- /* end of fields required on all CPUs */
-
- m68k_isr *interrupt_vector_table;
-@} rtems_cpu_table;
-@end group
-@end example
-
-@table @code
-@item pretasking_hook
-is the address of the
-user provided routine which is invoked once RTEMS initialization
-is complete but before interrupts and tasking are enabled. This
-field may be NULL to indicate that the hook is not utilized.
-
-@item predriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately before
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-but no device drivers are initialized. This field may be NULL to
-indicate that the hook is not utilized.
-
-@item postdriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately after
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-and the device drivers are initialized. This field may be NULL
-to indicate that the hook is not utilized.
-
-@item idle_task
-is the address of the optional user
-provided routine which is used as the system's IDLE task. If
-this field is not NULL, then the RTEMS default IDLE task is not
-used. This field may be NULL to indicate that the default IDLE
-is to be used.
-
-@item do_zero_of_workspace
-indicates whether RTEMS should
-zero the Workspace as part of its initialization. If set to
-TRUE, the Workspace is zeroed. Otherwise, it is not.
-
-@item idle_task_stack_size
-is the size of the RTEMS idle task stack in bytes.
-If this number is less than MINIMUM_STACK_SIZE, then the
-idle task's stack will be MINIMUM_STACK_SIZE in byte.
-
-@item interrupt_stack_size
-is the size of the RTEMS
-allocated interrupt stack in bytes. This value must be at least
-as large as MINIMUM_STACK_SIZE.
-
-@item extra_mpci_receive_server_stack
-is the extra stack space allocated for the RTEMS MPCI receive server task
-in bytes. The MPCI receive server may invoke nearly all directives and
-may require extra stack space on some targets.
-
-@item stack_allocate_hook
-is the address of the optional user provided routine which allocates
-memory for task stacks. If this hook is not NULL, then a stack_free_hook
-must be provided as well.
-
-@item stack_free_hook
-is the address of the optional user provided routine which frees
-memory for task stacks. If this hook is not NULL, then a stack_allocate_hook
-must be provided as well.
-
-@item interrupt_vector_table
-is the base address of the CPU's Exception Vector Table.
-
-@end table
diff --git a/doc/supplements/m68k/fatalerr.t b/doc/supplements/m68k/fatalerr.t
deleted file mode 100644
index 4b4c8d0b8d..0000000000
--- a/doc/supplements/m68k/fatalerr.t
+++ /dev/null
@@ -1,31 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Default Fatal Error Processing
-
-@section Introduction
-
-Upon detection of a fatal error by either the
-application or RTEMS the fatal error manager is invoked. The
-fatal error manager will invoke the user-supplied fatal error
-handlers. If no user-supplied handlers are configured, the
-RTEMS provided default fatal error handler is invoked. If the
-user-supplied fatal error handlers return to the executive the
-default fatal error handler is then invoked. This chapter
-describes the precise operations of the default fatal error
-handler.
-
-@section Default Fatal Error Handler Operations
-
-The default fatal error handler which is invoked by
-the fatal_error_occurred directive when there is no user handler
-configured or the user handler returns control to RTEMS. The
-default fatal error handler disables processor interrupts to
-level 7, places the error code in D0, and executes a stop
-instruction to simulate a halt processor instruction.
-
diff --git a/doc/supplements/m68k/intr_NOTIMES.t b/doc/supplements/m68k/intr_NOTIMES.t
deleted file mode 100644
index 89c5225625..0000000000
--- a/doc/supplements/m68k/intr_NOTIMES.t
+++ /dev/null
@@ -1,196 +0,0 @@
-@c
-@c Interrupt Stack Frame Picture
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Interrupt Processing
-
-@section Introduction
-
-Different types of processors respond to the
-occurrence of an interrupt in its own unique fashion. In
-addition, each processor type provides a control mechanism to
-allow for the proper handling of an interrupt. The processor
-dependent response to the interrupt modifies the current
-execution state and results in a change in the execution stream.
-Most processors require that an interrupt handler utilize some
-special control mechanisms to return to the normal processing
-stream. Although RTEMS hides many of the processor dependent
-details of interrupt processing, it is important to understand
-how the RTEMS interrupt manager is mapped onto the processor's
-unique architecture. Discussed in this chapter are the MC68xxx's
-interrupt response and control mechanisms as they pertain to
-RTEMS.
-
-@section Vectoring of an Interrupt Handler
-
-Depending on whether or not the particular CPU
-supports a separate interrupt stack, the MC68xxx family has two
-different interrupt handling models.
-
-@subsection Models Without Separate Interrupt Stacks
-
-Upon receipt of an interrupt the MC68xxx family
-members without separate interrupt stacks automatically perform
-the following actions:
-
-@itemize @bullet
-@item To Be Written
-@end itemize
-
-@subsection Models With Separate Interrupt Stacks
-
-Upon receipt of an interrupt the MC68xxx family
-members with separate interrupt stacks automatically perform the
-following actions:
-
-@itemize @bullet
-@item saves the current status register (SR),
-
-@item clears the master/interrupt (M) bit of the SR to
-indicate the switch from master state to interrupt state,
-
-@item sets the privilege mode to supervisor,
-
-@item suppresses tracing,
-
-@item sets the interrupt mask level equal to the level of the
-interrupt being serviced,
-
-@item pushes an interrupt stack frame (ISF), which includes
-the program counter (PC), the status register (SR), and the
-format/exception vector offset (FVO) word, onto the supervisor
-and interrupt stacks,
-
-@item switches the current stack to the interrupt stack and
-vectors to an interrupt service routine (ISR). If the ISR was
-installed with the interrupt_catch directive, then the RTEMS
-interrupt handler will begin execution. The RTEMS interrupt
-handler saves all registers which are not preserved according to
-the calling conventions and invokes the application's ISR.
-@end itemize
-
-A nested interrupt is processed similarly by these
-CPU models with the exception that only a single ISF is placed
-on the interrupt stack and the current stack need not be
-switched.
-
-The FVO word in the Interrupt Stack Frame is examined
-by RTEMS to determine when an outer most interrupt is being
-exited. Since the FVO is used by RTEMS for this purpose, the
-user application code MUST NOT modify this field.
-
-The following shows the Interrupt Stack Frame for
-MC68xxx CPU models with separate interrupt stacks:
-
-@ifset use-ascii
-@example
-@group
- +----------------------+
- | Status Register | 0x0
- +----------------------+
- | Program Counter High | 0x2
- +----------------------+
- | Program Counter Low | 0x4
- +----------------------+
- | Format/Vector Offset | 0x6
- +----------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\strut\vrule#&
-\hbox to 2.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.50in{\enskip\hfil#\hfil}
-\cr
-\multispan{3}\hrulefill\cr
-& Status Register && 0x0\cr
-\multispan{3}\hrulefill\cr
-& Program Counter High && 0x2\cr
-\multispan{3}\hrulefill\cr
-& Program Counter Low && 0x4\cr
-\multispan{3}\hrulefill\cr
-& Format/Vector Offset && 0x6\cr
-\multispan{3}\hrulefill\cr
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="40%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Status Register</STRONG></TD>
- <TD ALIGN=center>0x0</TD></TR>
-<TR><TD ALIGN=center><STRONG>Program Counter High</STRONG></TD>
- <TD ALIGN=center>0x2</TD></TR>
-<TR><TD ALIGN=center><STRONG>Program Counter Low</STRONG></TD>
- <TD ALIGN=center>0x4</TD></TR>
-<TR><TD ALIGN=center><STRONG>Format/Vector Offset</STRONG></TD>
- <TD ALIGN=center>0x6</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Interrupt Levels
-
-Eight levels (0-7) of interrupt priorities are
-supported by MC68xxx family members with level seven (7) being
-the highest priority. Level zero (0) indicates that interrupts
-are fully enabled. Interrupt requests for interrupts with
-priorities less than or equal to the current interrupt mask
-level are ignored.
-
-Although RTEMS supports 256 interrupt levels, the
-MC68xxx family only supports eight. RTEMS interrupt levels 0
-through 7 directly correspond to MC68xxx interrupt levels. All
-other RTEMS interrupt levels are undefined and their behavior is
-unpredictable.
-
-@section Disabling of Interrupts by RTEMS
-
-During the execution of directive calls, critical
-sections of code may be executed. When these sections are
-encountered, RTEMS disables interrupts to level seven (7) before
-the execution of this section and restores them to the previous
-level upon completion of the section. RTEMS has been optimized
-to insure that interrupts are disabled for less than
-RTEMS_MAXIMUM_DISABLE_PERIOD microseconds on a
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz MC68020 with
-zero wait states. These numbers will vary based the
-number of wait states and processor speed present on the target board.
-[NOTE: The maximum period with interrupts disabled is hand calculated. This
-calculation was last performed for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-Non-maskable interrupts (NMI) cannot be disabled, and
-ISRs which execute at this level MUST NEVER issue RTEMS system
-calls. If a directive is invoked, unpredictable results may
-occur due to the inability of RTEMS to protect its critical
-sections. However, ISRs that make no system calls may safely
-execute as non-maskable interrupts.
-
-@section Interrupt Stack
-
-RTEMS allocates the interrupt stack from the
-Workspace Area. The amount of memory allocated for the
-interrupt stack is determined by the interrupt_stack_size field
-in the CPU Configuration Table. During the initialization
-process, RTEMS will install its interrupt stack.
-
-The MC68xxx port of RTEMS supports a software managed
-dedicated interrupt stack on those CPU models which do not
-support a separate interrupt stack in hardware.
-
-
diff --git a/doc/supplements/m68k/m68k.texi b/doc/supplements/m68k/m68k.texi
deleted file mode 100644
index edd541331d..0000000000
--- a/doc/supplements/m68k/m68k.texi
+++ /dev/null
@@ -1,121 +0,0 @@
-\input ../../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename c_m68k
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Motorola MC68xxx Applications Supplement
-@c
-
-@include ../../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Motorola MC68xxx Applications Supplement (m68k):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Motorola MC68xxx Applications Supplement
-
-@setchapternewpage odd
-@settitle RTEMS Motorola MC68xxx Applications Supplement
-@titlepage
-@finalout
-
-@title RTEMS Motorola MC68xxx Applications Supplement
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-
-@include ../../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include cpumodel.texi
-@include callconv.texi
-@include memmodel.texi
-@include intr.texi
-@include fatalerr.texi
-@include bsp.texi
-@include cputable.texi
-@include wksheets.texi
-@include timing.texi
-@include timeMVME136.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top c_m68k
-
-This is the online version of the RTEMS Motorola MC68xxx
-Applications Supplement.
-
-@menu
-* Preface::
-* CPU Model Dependent Features::
-* Calling Conventions::
-* Memory Model::
-* Interrupt Processing::
-* Default Fatal Error Processing::
-* Board Support Packages::
-* Processor Dependent Information Table::
-* Memory Requirements::
-* Timing Specification::
-* MVME136 Timing Data::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, MVME136 Timing Data Rate Monotonic Manager, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@c @contents
-@bye
-
diff --git a/doc/supplements/m68k/memmodel.t b/doc/supplements/m68k/memmodel.t
deleted file mode 100644
index 6054fd54a9..0000000000
--- a/doc/supplements/m68k/memmodel.t
+++ /dev/null
@@ -1,39 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Model
-
-@section Introduction
-
-A processor may support any combination of memory
-models ranging from pure physical addressing to complex demand
-paged virtual memory systems. RTEMS supports a flat memory
-model which ranges contiguously over the processor's allowable
-address space. RTEMS does not support segmentation or virtual
-memory of any kind. The appropriate memory model for RTEMS
-provided by the targeted processor and related characteristics
-of that model are described in this chapter.
-
-@section Flat Memory Model
-
-The MC68xxx family supports a flat 32-bit address
-space with addresses ranging from 0x00000000 to 0xFFFFFFFF (4
-gigabytes). Each address is represented by a 32-bit value and
-is byte addressable. The address may be used to reference a
-single byte, word (2-bytes), or long word (4 bytes). Memory
-accesses within this address space are performed in big endian
-fashion by the processors in this family.
-
-Some of the MC68xxx family members such as the
-MC68020, MC68030, and MC68040 support virtual memory and
-segmentation. The MC68020 requires external hardware support
-such as the MC68851 Paged Memory Management Unit coprocessor
-which is typically used to perform address translations for
-these systems. RTEMS does not support virtual memory or
-segmentation on any of the MC68xxx family members.
-
diff --git a/doc/supplements/m68k/preface.texi b/doc/supplements/m68k/preface.texi
deleted file mode 100644
index cf3f9d2901..0000000000
--- a/doc/supplements/m68k/preface.texi
+++ /dev/null
@@ -1,60 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, CPU Model Dependent Features, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-The Real Time Executive for Multiprocessor Systems (RTEMS)
-is designed to be portable across multiple processor
-architectures. However, the nature of real-time systems makes
-it essential that the application designer understand certain
-processor dependent implementation details. These processor
-dependencies include calling convention, board support package
-issues, interrupt processing, exact RTEMS memory requirements,
-performance data, header files, and the assembly language
-interface to the executive.
-
-This document discusses the Motorola MC68xxx
-architecture dependencies in this port of RTEMS. The MC68xxx
-family has a wide variety of CPU models within it. The part
-numbers for these models are generally divided into MC680xx and
-MC683xx. The MC680xx models are more general purpose processors
-with no integrated peripherals. The MC683xx models, on the
-other hand, are more specialized and have a variety of
-peripherals on chip including sophisticated timers and serial
-communications controllers.
-
-It is highly recommended that the Motorola MC68xxx
-RTEMS application developer obtain and become familiar with the
-documentation for the processor being used as well as the
-documentation for the family as a whole.
-
-@subheading Architecture Documents
-
-For information on the Motorola MC68xxx architecture,
-refer to the following documents available from Motorola
-(@file{http//www.moto.com/}):
-
-@itemize @bullet
-@item @cite{M68000 Family Reference, Motorola, FR68K/D}.
-@end itemize
-
-@subheading MODEL SPECIFIC DOCUMENTS
-
-For information on specific processor models and
-their associated coprocessors, refer to the following documents:
-
-@itemize @bullet
-@item @cite{MC68020 User's Manual, Motorola, MC68020UM/AD}.
-
-@item @cite{MC68881/MC68882 Floating-Point Coprocessor User's
-Manual, Motorola, MC68881UM/AD}.
-@end itemize
-
diff --git a/doc/supplements/m68k/timeMVME136.t b/doc/supplements/m68k/timeMVME136.t
deleted file mode 100644
index 7f126b4606..0000000000
--- a/doc/supplements/m68k/timeMVME136.t
+++ /dev/null
@@ -1,108 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@include ../../common/timemac.texi
-@tex
-\global\advance \smallskipamount by -4pt
-@end tex
-
-@chapter MVME136 Timing Data
-
-@section Introduction
-
-The timing data for the MC68020 version of RTEMS is
-provided along with the target dependent aspects concerning the
-gathering of the timing data. The hardware platform used to
-gather the times is described to give the reader a better
-understanding of each directive time provided. Also, provided
-is a description of the interrupt latency and the context switch
-times as they pertain to the MC68020 version of RTEMS.
-
-@section Hardware Platform
-
-All times reported except for the maximum period
-interrupts are disabled by RTEMS were measured using a Motorola
-MVME135 CPU board. The MVME135 is a 20Mhz board with one wait
-state dynamic memory and a MC68881 numeric coprocessor. The
-Zilog 8036 countdown timer on this board was used to measure
-elapsed time with a one-half microsecond resolution. All
-sources of hardware interrupts were disabled, although the
-interrupt level of the MC68020 allows all interrupts.
-
-The maximum period interrupts are disabled was
-measured by summing the number of CPU cycles required by each
-assembly language instruction executed while interrupts were
-disabled. The worst case times of the MC68020 microprocessor
-were used for each instruction. Zero wait state memory was
-assumed. The total CPU cycles executed with interrupts
-disabled, including the instructions to disable and enable
-interrupts, was divided by 20 to simulate a 20Mhz MC68020. It
-should be noted that the worst case instruction times for the
-MC68020 assume that the internal cache is disabled and that no
-instructions overlap.
-
-@section Interrupt Latency
-
-The maximum period with interrupts disabled within
-RTEMS is less than RTEMS_MAXIMUM_DISABLE_PERIOD
-microseconds including the instructions
-which disable and re-enable interrupts. The time required for
-the MC68020 to vector an interrupt and for the RTEMS entry
-overhead before invoking the user's interrupt handler are a
-total of RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. These combine to yield a worst case
-interrupt latency of less than
-RTEMS_MAXIMUM_DISABLE_PERIOD + RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds at 20Mhz. [NOTE: The maximum period with interrupts
-disabled was last determined for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-It should be noted again that the maximum period with
-interrupts disabled within RTEMS is hand-timed and based upon
-worst case (i.e. CPU cache disabled and no instruction overlap)
-times for a 20Mhz MC68020. The interrupt vector and entry
-overhead time was generated on an MVME135 benchmark platform
-using the Multiprocessing Communications registers to generate
-as the interrupt source.
-
-@section Context Switch
-
-The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
-microseconds on the MVME135 benchmark platform when no floating
-point context is saved or restored. Additional execution time
-is required when a TASK_SWITCH user extension is configured.
-The use of the TASK_SWITCH extension is application dependent.
-Thus, its execution time is not considered part of the raw
-context switch time.
-
-Since RTEMS was designed specifically for embedded
-missile applications which are floating point intensive, the
-executive is optimized to avoid unnecessarily saving and
-restoring the state of the numeric coprocessor. The state of
-the numeric coprocessor is only saved when an FLOATING_POINT
-task is dispatched and that task was not the last task to
-utilize the coprocessor. In a system with only one
-FLOATING_POINT task, the state of the numeric coprocessor will
-never be saved or restored. When the first FLOATING_POINT task
-is dispatched, RTEMS does not need to save the current state of
-the numeric coprocessor.
-
-The exact amount of time required to save and restore
-floating point context is dependent on whether an MC68881 or
-MC68882 is being used as well as the state of the numeric
-coprocessor. These numeric coprocessors define three operating
-states: initialized, idle, and busy. RTEMS places the
-coprocessor in the initialized state when a task is started or
-restarted. Once the task has utilized the coprocessor, it is in
-the idle state when floating point instructions are not
-executing and the busy state when floating point instructions
-are executing. The state of the coprocessor is task specific.
-
-The following table summarizes the context switch
-times for the MVME135 benchmark platform:
-
diff --git a/doc/supplements/m68k/timedata.t b/doc/supplements/m68k/timedata.t
deleted file mode 100644
index 74b64bd088..0000000000
--- a/doc/supplements/m68k/timedata.t
+++ /dev/null
@@ -1,150 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@include ../../common/timemac.texi
-@tex
-\global\advance \smallskipamount by -4pt
-@end tex
-
-@ifinfo
-@node MVME136 Timing Data, MVME136 Timing Data Introduction, Timing Specification Terminology, Top
-@end ifinfo
-@chapter MVME136 Timing Data
-@ifinfo
-@menu
-* MVME136 Timing Data Introduction::
-* MVME136 Timing Data Hardware Platform::
-* MVME136 Timing Data Interrupt Latency::
-* MVME136 Timing Data Context Switch::
-* MVME136 Timing Data Directive Times::
-* MVME136 Timing Data Task Manager::
-* MVME136 Timing Data Interrupt Manager::
-* MVME136 Timing Data Clock Manager::
-* MVME136 Timing Data Timer Manager::
-* MVME136 Timing Data Semaphore Manager::
-* MVME136 Timing Data Message Manager::
-* MVME136 Timing Data Event Manager::
-* MVME136 Timing Data Signal Manager::
-* MVME136 Timing Data Partition Manager::
-* MVME136 Timing Data Region Manager::
-* MVME136 Timing Data Dual-Ported Memory Manager::
-* MVME136 Timing Data I/O Manager::
-* MVME136 Timing Data Rate Monotonic Manager::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node MVME136 Timing Data Introduction, MVME136 Timing Data Hardware Platform, MVME136 Timing Data, MVME136 Timing Data
-@end ifinfo
-@section Introduction
-
-The timing data for the MC68020 version of RTEMS is
-provided along with the target dependent aspects concerning the
-gathering of the timing data. The hardware platform used to
-gather the times is described to give the reader a better
-understanding of each directive time provided. Also, provided
-is a description of the interrupt latency and the context switch
-times as they pertain to the MC68020 version of RTEMS.
-
-@ifinfo
-@node MVME136 Timing Data Hardware Platform, MVME136 Timing Data Interrupt Latency, MVME136 Timing Data Introduction, MVME136 Timing Data
-@end ifinfo
-@section Hardware Platform
-
-All times reported except for the maximum period
-interrupts are disabled by RTEMS were measured using a Motorola
-MVME135 CPU board. The MVME135 is a 20Mhz board with one wait
-state dynamic memory and a MC68881 numeric coprocessor. The
-Zilog 8036 countdown timer on this board was used to measure
-elapsed time with a one-half microsecond resolution. All
-sources of hardware interrupts were disabled, although the
-interrupt level of the MC68020 allows all interrupts.
-
-The maximum period interrupts are disabled was
-measured by summing the number of CPU cycles required by each
-assembly language instruction executed while interrupts were
-disabled. The worst case times of the MC68020 microprocessor
-were used for each instruction. Zero wait state memory was
-assumed. The total CPU cycles executed with interrupts
-disabled, including the instructions to disable and enable
-interrupts, was divided by 20 to simulate a 20Mhz MC68020. It
-should be noted that the worst case instruction times for the
-MC68020 assume that the internal cache is disabled and that no
-instructions overlap.
-
-@ifinfo
-@node MVME136 Timing Data Interrupt Latency, MVME136 Timing Data Context Switch, MVME136 Timing Data Hardware Platform, MVME136 Timing Data
-@end ifinfo
-@section Interrupt Latency
-
-The maximum period with interrupts disabled within
-RTEMS is less than RTEMS_MAXIMUM_DISABLE_PERIOD
-microseconds including the instructions
-which disable and re-enable interrupts. The time required for
-the MC68020 to vector an interrupt and for the RTEMS entry
-overhead before invoking the user's interrupt handler are a
-total of RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. These combine to yield a worst case
-interrupt latency of less than
-RTEMS_MAXIMUM_DISABLE_PERIOD + RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds at 20Mhz. [NOTE: The maximum period with interrupts
-disabled was last determined for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-It should be noted again that the maximum period with
-interrupts disabled within RTEMS is hand-timed and based upon
-worst case (i.e. CPU cache disabled and no instruction overlap)
-times for a 20Mhz MC68020. The interrupt vector and entry
-overhead time was generated on an MVME135 benchmark platform
-using the Multiprocessing Communications registers to generate
-as the interrupt source.
-
-@ifinfo
-@node MVME136 Timing Data Context Switch, MVME136 Timing Data Directive Times, MVME136 Timing Data Interrupt Latency, MVME136 Timing Data
-@end ifinfo
-@section Context Switch
-
-The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
-microseconds on the MVME135 benchmark platform when no floating
-point context is saved or restored. Additional execution time
-is required when a TASK_SWITCH user extension is configured.
-The use of the TASK_SWITCH extension is application dependent.
-Thus, its execution time is not considered part of the raw
-context switch time.
-
-Since RTEMS was designed specifically for embedded
-missile applications which are floating point intensive, the
-executive is optimized to avoid unnecessarily saving and
-restoring the state of the numeric coprocessor. The state of
-the numeric coprocessor is only saved when an FLOATING_POINT
-task is dispatched and that task was not the last task to
-utilize the coprocessor. In a system with only one
-FLOATING_POINT task, the state of the numeric coprocessor will
-never be saved or restored. When the first FLOATING_POINT task
-is dispatched, RTEMS does not need to save the current state of
-the numeric coprocessor.
-
-The exact amount of time required to save and restore
-floating point context is dependent on whether an MC68881 or
-MC68882 is being used as well as the state of the numeric
-coprocessor. These numeric coprocessors define three operating
-states: initialized, idle, and busy. RTEMS places the
-coprocessor in the initialized state when a task is started or
-restarted. Once the task has utilized the coprocessor, it is in
-the idle state when floating point instructions are not
-executing and the busy state when floating point instructions
-are executing. The state of the coprocessor is task specific.
-
-The following table summarizes the context switch
-times for the MVME135 benchmark platform:
-
-@include timetbl.texi
-
-@tex
-\global\advance \smallskipamount by 4pt
-@end tex
diff --git a/doc/supplements/powerpc/DMV177_TIMES b/doc/supplements/powerpc/DMV177_TIMES
deleted file mode 100644
index 8f6ff2e3c0..0000000000
--- a/doc/supplements/powerpc/DMV177_TIMES
+++ /dev/null
@@ -1,248 +0,0 @@
-#
-# PowerPC/603e/PSIM Timing and Size Information
-#
-# $Id$
-#
-
-#
-# CPU Model Information
-#
-RTEMS_BSP DMV177
-RTEMS_CPU_MODEL PPC603e
-#
-# Interrupt Latency
-#
-# NOTE: In general, the text says it is hand-calculated to be
-# RTEMS_MAXIMUM_DISABLE_PERIOD at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-# Mhz and this was last calculated for Release
-# RTEMS_VERSION_FOR_MAXIMUM_DISABLE_PERIOD.
-#
-RTEMS_MAXIMUM_DISABLE_PERIOD TBD
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ 100.0
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD 4.0.0-lmco
-#
-# Context Switch Times
-#
-RTEMS_NO_FP_CONTEXTS 585
-RTEMS_RESTORE_1ST_FP_TASK 730
-RTEMS_SAVE_INIT_RESTORE_INIT 478
-RTEMS_SAVE_IDLE_RESTORE_INIT 825
-RTEMS_SAVE_IDLE_RESTORE_IDLE 478
-#
-# Task Manager Times
-#
-RTEMS_TASK_CREATE_ONLY 2301
-RTEMS_TASK_IDENT_ONLY 2900
-RTEMS_TASK_START_ONLY 794
-RTEMS_TASK_RESTART_CALLING_TASK 1137
-RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER 906
-RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER 1102
-RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER 928
-RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER 1483
-RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER 1640
-RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER 1601
-RTEMS_TASK_DELETE_CALLING_TASK 2117
-RTEMS_TASK_DELETE_SUSPENDED_TASK 1555
-RTEMS_TASK_DELETE_BLOCKED_TASK 1609
-RTEMS_TASK_DELETE_READY_TASK 1620
-RTEMS_TASK_SUSPEND_CALLING_TASK 960
-RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER 433
-RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER 960
-RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER 803
-RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY 368
-RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER 633
-RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER 1211
-RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE 184
-RTEMS_TASK_MODE_NO_RESCHEDULE 213
-RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER 247
-RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER 919
-RTEMS_TASK_GET_NOTE_ONLY 382
-RTEMS_TASK_SET_NOTE_ONLY 383
-RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER 245
-RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER 851
-RTEMS_TASK_WAKE_WHEN_ONLY 1275
-#
-# Interrupt Manager
-#
-RTEMS_INTR_ENTRY_RETURNS_TO_NESTED 201
-RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK 206
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK 202
-RTEMS_INTR_EXIT_RETURNS_TO_NESTED 201
-RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK 213
-RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK 857
-#
-# Clock Manager
-#
-RTEMS_CLOCK_SET_ONLY 792
-RTEMS_CLOCK_GET_ONLY 78
-RTEMS_CLOCK_TICK_ONLY 214
-#
-# Timer Manager
-#
-RTEMS_TIMER_CREATE_ONLY 357
-RTEMS_TIMER_IDENT_ONLY 2828
-RTEMS_TIMER_DELETE_INACTIVE 432
-RTEMS_TIMER_DELETE_ACTIVE 471
-RTEMS_TIMER_FIRE_AFTER_INACTIVE 607
-RTEMS_TIMER_FIRE_AFTER_ACTIVE 646
-RTEMS_TIMER_FIRE_WHEN_INACTIVE 766
-RTEMS_TIMER_FIRE_WHEN_ACTIVE 764
-RTEMS_TIMER_RESET_INACTIVE 552
-RTEMS_TIMER_RESET_ACTIVE 766
-RTEMS_TIMER_CANCEL_INACTIVE 339
-RTEMS_TIMER_CANCEL_ACTIVE 378
-#
-# Semaphore Manager
-#
-RTEMS_SEMAPHORE_CREATE_ONLY 571
-RTEMS_SEMAPHORE_IDENT_ONLY 3243
-RTEMS_SEMAPHORE_DELETE_ONLY 575
-RTEMS_SEMAPHORE_OBTAIN_AVAILABLE 414
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT 414
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS 1254
-RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS 501
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER 636
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER 982
-#
-# Message Manager
-#
-RTEMS_MESSAGE_QUEUE_CREATE_ONLY 2270
-RTEMS_MESSAGE_QUEUE_IDENT_ONLY 2828
-RTEMS_MESSAGE_QUEUE_DELETE_ONLY 708
-RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS 923
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER 955
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER 1322
-RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS 919
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER 955
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER 1322
-RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS 589
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER 1079
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER 1435
-RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE 755
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT 467
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 1283
-RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED 369
-RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED 431
-#
-# Event Manager
-#
-RTEMS_EVENT_SEND_NO_TASK_READIED 354
-RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER 571
-RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER 946
-RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS 43
-RTEMS_EVENT_RECEIVE_AVAILABLE 357
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT 331
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 1043
-#
-# Signal Manager
-#
-RTEMS_SIGNAL_CATCH_ONLY 267
-RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER 408
-RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF 607
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK 464
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK 752
-#
-# Partition Manager
-#
-RTEMS_PARTITION_CREATE_ONLY 762
-RTEMS_PARTITION_IDENT_ONLY 2828
-RTEMS_PARTITION_DELETE_ONLY 426
-RTEMS_PARTITION_GET_BUFFER_AVAILABLE 394
-RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE 376
-RTEMS_PARTITION_RETURN_BUFFER_ONLY 420
-#
-# Region Manager
-#
-RTEMS_REGION_CREATE_ONLY 614
-RTEMS_REGION_IDENT_ONLY 2878
-RTEMS_REGION_DELETE_ONLY 425
-RTEMS_REGION_GET_SEGMENT_AVAILABLE 515
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT 472
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS 1345
-RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS 544
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER 935
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER 1296
-#
-# Dual-Ported Memory Manager
-#
-RTEMS_PORT_CREATE_ONLY 428
-RTEMS_PORT_IDENT_ONLY 2828
-RTEMS_PORT_DELETE_ONLY 421
-RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY 339
-RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY 339
-#
-# IO Manager
-#
-RTEMS_IO_INITIALIZE_ONLY 52
-RTEMS_IO_OPEN_ONLY 42
-RTEMS_IO_CLOSE_ONLY 44
-RTEMS_IO_READ_ONLY 42
-RTEMS_IO_WRITE_ONLY 44
-RTEMS_IO_CONTROL_ONLY 42
-#
-# Rate Monotonic Manager
-#
-RTEMS_RATE_MONOTONIC_CREATE_ONLY 388
-RTEMS_RATE_MONOTONIC_IDENT_ONLY 2826
-RTEMS_RATE_MONOTONIC_CANCEL_ONLY 427
-RTEMS_RATE_MONOTONIC_DELETE_ACTIVE 519
-RTEMS_RATE_MONOTONIC_DELETE_INACTIVE 465
-RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER 556
-RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS 842
-RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS 377
-#
-# Size Information
-#
-#
-# xxx alloted for numbers
-#
-RTEMS_DATA_SPACE 428
-RTEMS_MINIMUM_CONFIGURATION 30,980
-RTEMS_MAXIMUM_CONFIGURATION 55540
-# x,xxx alloted for numbers
-RTEMS_CORE_CODE_SIZE 21,516
-RTEMS_INITIALIZATION_CODE_SIZE 1,412
-RTEMS_TASK_CODE_SIZE 4,804
-RTEMS_INTERRUPT_CODE_SIZE 96
-RTEMS_CLOCK_CODE_SIZE 536
-RTEMS_TIMER_CODE_SIZE 1,380
-RTEMS_SEMAPHORE_CODE_SIZE 1,928
-RTEMS_MESSAGE_CODE_SIZE 532
-RTEMS_EVENT_CODE_SIZE 100
-RTEMS_SIGNAL_CODE_SIZE 100
-RTEMS_PARTITION_CODE_SIZE 1,384
-RTEMS_REGION_CODE_SIZE 1,780
-RTEMS_DPMEM_CODE_SIZE 928
-RTEMS_IO_CODE_SIZE 1,244
-RTEMS_FATAL_ERROR_CODE_SIZE 44
-RTEMS_RATE_MONOTONIC_CODE_SIZE 1,756
-RTEMS_MULTIPROCESSING_CODE_SIZE 11,448
-# xxx alloted for numbers
-RTEMS_TIMER_CODE_OPTSIZE 340
-RTEMS_SEMAPHORE_CODE_OPTSIZE 308
-RTEMS_MESSAGE_CODE_OPTSIZE 532
-RTEMS_EVENT_CODE_OPTSIZE 100
-RTEMS_SIGNAL_CODE_OPTSIZE 100
-RTEMS_PARTITION_CODE_OPTSIZE 244
-RTEMS_REGION_CODE_OPTSIZE 292
-RTEMS_DPMEM_CODE_OPTSIZE 244
-RTEMS_IO_CODE_OPTSIZE NA
-RTEMS_RATE_MONOTONIC_CODE_OPTSIZE 336
-RTEMS_MULTIPROCESSING_CODE_OPTSIZE 612
-# xxx alloted for numbers
-RTEMS_BYTES_PER_TASK 456
-RTEMS_BYTES_PER_TIMER 68
-RTEMS_BYTES_PER_SEMAPHORE 120
-RTEMS_BYTES_PER_MESSAGE_QUEUE 144
-RTEMS_BYTES_PER_REGION 140
-RTEMS_BYTES_PER_PARTITION 56
-RTEMS_BYTES_PER_PORT 36
-RTEMS_BYTES_PER_PERIOD 36
-RTEMS_BYTES_PER_EXTENSION 64
-RTEMS_BYTES_PER_FP_TASK 264
-RTEMS_BYTES_PER_NODE 48
-RTEMS_BYTES_PER_GLOBAL_OBJECT 20
-RTEMS_BYTES_PER_PROXY 124
-# x,xxx alloted for numbers
-RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS 10008
-
diff --git a/doc/supplements/powerpc/Makefile b/doc/supplements/powerpc/Makefile
deleted file mode 100644
index 9ad8ce7626..0000000000
--- a/doc/supplements/powerpc/Makefile
+++ /dev/null
@@ -1,178 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=powerpc
-DISTRIBUTION_LEVEL=support
-
-include ../../Make.config
-
-REPLACE=../../tools/word-replace
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../../common/cpright.texi ../../common/setup.texi
-
-GENERATED_FILES=\
- cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \
- bsp.texi cputable.texi timing.texi wksheets.texi timePSIM.texi timeDMV177.texi
-
-FILES= $(PROJECT).texi \
- preface.texi \
- $(GENERATED_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs c_$(PROJECT)
- cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL)
-
-c_$(PROJECT): $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/c_$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/c_$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-*
- rm -f c_$(PROJECT) c_$(PROJECT)-*
- rm -f intr.t $(GENERATED_FILES)
- rm -f wksheets.t wksheets_NOTIMES.t timing.t
- rm -f timePSIM_.t timePSIM_.texi
- rm -f timeDMV177_.t timeDMV177_.texi
- rm -f *.fixed _*
-
-#
-# Chapters which get automatic processing
-#
-
-cpumodel.texi: cpumodel.t Makefile
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Calling Conventions" ${*}.t
-
-callconv.texi: callconv.t Makefile
- $(BMENU) -p "CPU Model Dependent Features Low Power Model" \
- -u "Top" \
- -n "Memory Model" ${*}.t
-
-memmodel.texi: memmodel.t Makefile
- $(BMENU) -p "Calling Conventions User-Provided Routines" \
- -u "Top" \
- -n "Interrupt Processing" ${*}.t
-
-# Interrupt Chapter:
-# 1. Replace Times and Sizes
-# 2. Build Node Structure
-intr.t: intr_NOTIMES.t PSIM_TIMES
- ${REPLACE} -p PSIM_TIMES intr_NOTIMES.t
- mv intr_NOTIMES.t.fixed intr.t
-
-intr.texi: intr.t Makefile
- $(BMENU) -p "Memory Model Flat Memory Model" \
- -u "Top" \
- -n "Default Fatal Error Processing" ${*}.t
-
-fatalerr.texi: fatalerr.t Makefile
- $(BMENU) -p "Interrupt Processing Interrupt Stack" \
- -u "Top" \
- -n "Board Support Packages" ${*}.t
-
-bsp.texi: bsp.t Makefile
- $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \
- -u "Top" \
- -n "Processor Dependent Information Table" ${*}.t
-
-cputable.texi: cputable.t Makefile
- $(BMENU) -p "Board Support Packages Processor Initialization" \
- -u "Top" \
- -n "Memory Requirements" ${*}.t
-
-# Worksheets Chapter:
-# 1. Obtain the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-wksheets_NOTIMES.t: ../../common/wksheets.t
- cp ../../common/wksheets.t wksheets_NOTIMES.t
-
-wksheets.t: wksheets_NOTIMES.t PSIM_TIMES
- ${REPLACE} -p PSIM_TIMES wksheets_NOTIMES.t
- mv wksheets_NOTIMES.t.fixed wksheets.t
-
-wksheets.texi: wksheets.t Makefile
- $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \
- -u "Top" \
- -n "Timing Specification" ${*}.t
-
-# Timing Specification Chapter:
-# 1. Copy the Shared File
-# 3. Build Node Structure
-
-timing.t: ../../common/timing.t
- cp ../../common/timing.t timing.t
-
-timing.texi: timing.t Makefile
- $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \
- -u "Top" \
- -n "PSIM Timing Data" ${*}.t
-
-# Timing Data for PSIM BSP Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-timePSIM_.t: ../../common/timetbl.t timePSIM.t
- cat timePSIM.t ../../common/timetbl.t >timePSIM_.t
- @echo >>timePSIM_.t
- @echo "@tex" >>timePSIM_.t
- @echo "\\global\\advance \\smallskipamount by 4pt" >>timePSIM_.t
- @echo "@end tex" >>timePSIM_.t
- ${REPLACE} -p PSIM_TIMES timePSIM_.t
- mv timePSIM_.t.fixed timePSIM_.t
-
-timePSIM.texi: timePSIM_.t Makefile
- $(BMENU) -p "Timing Specification Terminology" \
- -u "Top" \
- -n "DMV177 Timing Data" timePSIM_.t
- mv timePSIM_.texi timePSIM.texi
-
-# Timing Data for DMV177 BSP Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-timeDMV177_.t: ../../common/timetbl.t timeDMV177.t
- cat timeDMV177.t ../../common/timetbl.t >timeDMV177_.t
- @echo >>timeDMV177_.t
- @echo "@tex" >>timeDMV177_.t
- @echo "\\global\\advance \\smallskipamount by 4pt" >>timeDMV177_.t
- @echo "@end tex" >>timeDMV177_.t
- ${REPLACE} -p DMV177_TIMES timeDMV177_.t
- mv timeDMV177_.t.fixed timeDMV177_.t
-
-timeDMV177.texi: timeDMV177_.t Makefile
- $(BMENU) -p "PSIM Timing Data Rate Monotonic Manager" \
- -u "Top" \
- -n "Command and Variable Index" timeDMV177_.t
- mv timeDMV177_.texi timeDMV177.texi
diff --git a/doc/supplements/powerpc/PSIM_TIMES b/doc/supplements/powerpc/PSIM_TIMES
deleted file mode 100644
index b357a1fc3c..0000000000
--- a/doc/supplements/powerpc/PSIM_TIMES
+++ /dev/null
@@ -1,248 +0,0 @@
-#
-# PowerPC/603e/PSIM Timing and Size Information
-#
-# $Id$
-#
-
-#
-# CPU Model Information
-#
-RTEMS_BSP PSIM
-RTEMS_CPU_MODEL PPC603e
-#
-# Interrupt Latency
-#
-# NOTE: In general, the text says it is hand-calculated to be
-# RTEMS_MAXIMUM_DISABLE_PERIOD at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-# Mhz and this was last calculated for Release
-# RTEMS_VERSION_FOR_MAXIMUM_DISABLE_PERIOD.
-#
-RTEMS_MAXIMUM_DISABLE_PERIOD TBD
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ na
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD 4.0.0-lmco
-#
-# Context Switch Times
-#
-RTEMS_NO_FP_CONTEXTS 214
-RTEMS_RESTORE_1ST_FP_TASK 255
-RTEMS_SAVE_INIT_RESTORE_INIT 140
-RTEMS_SAVE_IDLE_RESTORE_INIT 140
-RTEMS_SAVE_IDLE_RESTORE_IDLE 290
-#
-# Task Manager Times
-#
-RTEMS_TASK_CREATE_ONLY 1075
-RTEMS_TASK_IDENT_ONLY 1637
-RTEMS_TASK_START_ONLY 345
-RTEMS_TASK_RESTART_CALLING_TASK 483
-RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER 396
-RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER 491
-RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER 404
-RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER 644
-RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER 709
-RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER 686
-RTEMS_TASK_DELETE_CALLING_TASK 941
-RTEMS_TASK_DELETE_SUSPENDED_TASK 703
-RTEMS_TASK_DELETE_BLOCKED_TASK 723
-RTEMS_TASK_DELETE_READY_TASK 729
-RTEMS_TASK_SUSPEND_CALLING_TASK 403
-RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER 181
-RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER 191
-RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER 803
-RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY 147
-RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER 264
-RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER 517
-RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE 88
-RTEMS_TASK_MODE_NO_RESCHEDULE 110
-RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER 112
-RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER 386
-RTEMS_TASK_GET_NOTE_ONLY 156
-RTEMS_TASK_SET_NOTE_ONLY 155
-RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER 92
-RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER 348
-RTEMS_TASK_WAKE_WHEN_ONLY 546
-#
-# Interrupt Manager
-#
-RTEMS_INTR_ENTRY_RETURNS_TO_NESTED 60
-RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK 62
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK 61
-RTEMS_INTR_EXIT_RETURNS_TO_NESTED 55
-RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK 67
-RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK 344
-#
-# Clock Manager
-#
-RTEMS_CLOCK_SET_ONLY 340
-RTEMS_CLOCK_GET_ONLY 29
-RTEMS_CLOCK_TICK_ONLY 81
-#
-# Timer Manager
-#
-RTEMS_TIMER_CREATE_ONLY 144
-RTEMS_TIMER_IDENT_ONLY 1595
-RTEMS_TIMER_DELETE_INACTIVE 197
-RTEMS_TIMER_DELETE_ACTIVE 181
-RTEMS_TIMER_FIRE_AFTER_INACTIVE 252
-RTEMS_TIMER_FIRE_AFTER_ACTIVE 269
-RTEMS_TIMER_FIRE_WHEN_INACTIVE 333
-RTEMS_TIMER_FIRE_WHEN_ACTIVE 334
-RTEMS_TIMER_RESET_INACTIVE 233
-RTEMS_TIMER_RESET_ACTIVE 250
-RTEMS_TIMER_CANCEL_INACTIVE 156
-RTEMS_TIMER_CANCEL_ACTIVE 140
-#
-# Semaphore Manager
-#
-RTEMS_SEMAPHORE_CREATE_ONLY 223
-RTEMS_SEMAPHORE_IDENT_ONLY 1836
-RTEMS_SEMAPHORE_DELETE_ONLY 1836
-RTEMS_SEMAPHORE_OBTAIN_AVAILABLE 175
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT 175
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS 530
-RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS 206
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER 272
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER 415
-#
-# Message Manager
-#
-RTEMS_MESSAGE_QUEUE_CREATE_ONLY 1022
-RTEMS_MESSAGE_QUEUE_IDENT_ONLY 1596
-RTEMS_MESSAGE_QUEUE_DELETE_ONLY 308
-RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS 421
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER 434
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER 581
-RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS 422
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER 435
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER 582
-RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS 244
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER 482
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER 630
-RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE 345
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT 197
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 542
-RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED 142
-RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED 170
-#
-# Event Manager
-#
-RTEMS_EVENT_SEND_NO_TASK_READIED 145
-RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER 250
-RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER 407
-RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS 17
-RTEMS_EVENT_RECEIVE_AVAILABLE 133
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT 130
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 442
-#
-# Signal Manager
-#
-RTEMS_SIGNAL_CATCH_ONLY 95
-RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER 165
-RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF 275
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK 216
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK 329
-#
-# Partition Manager
-#
-RTEMS_PARTITION_CREATE_ONLY 320
-RTEMS_PARTITION_IDENT_ONLY 1596
-RTEMS_PARTITION_DELETE_ONLY 168
-RTEMS_PARTITION_GET_BUFFER_AVAILABLE 157
-RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE 149
-RTEMS_PARTITION_RETURN_BUFFER_ONLY 172
-#
-# Region Manager
-#
-RTEMS_REGION_CREATE_ONLY 239
-RTEMS_REGION_IDENT_ONLY 1625
-RTEMS_REGION_DELETE_ONLY 167
-RTEMS_REGION_GET_SEGMENT_AVAILABLE 206
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT 190
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS 556
-RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS 230
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER 412
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER 562
-#
-# Dual-Ported Memory Manager
-#
-RTEMS_PORT_CREATE_ONLY 167
-RTEMS_PORT_IDENT_ONLY 1594
-RTEMS_PORT_DELETE_ONLY 165
-RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY 133
-RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY 134
-#
-# IO Manager
-#
-RTEMS_IO_INITIALIZE_ONLY 23
-RTEMS_IO_OPEN_ONLY 18
-RTEMS_IO_CLOSE_ONLY 18
-RTEMS_IO_READ_ONLY 18
-RTEMS_IO_WRITE_ONLY 18
-RTEMS_IO_CONTROL_ONLY 18
-#
-# Rate Monotonic Manager
-#
-RTEMS_RATE_MONOTONIC_CREATE_ONLY 149
-RTEMS_RATE_MONOTONIC_IDENT_ONLY 1595
-RTEMS_RATE_MONOTONIC_CANCEL_ONLY 169
-RTEMS_RATE_MONOTONIC_DELETE_ACTIVE 212
-RTEMS_RATE_MONOTONIC_DELETE_INACTIVE 186
-RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER 226
-RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS 362
-RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS 142
-#
-# Size Information
-#
-#
-# xxx alloted for numbers
-#
-RTEMS_DATA_SPACE 428
-RTEMS_MINIMUM_CONFIGURATION 30,912
-RTEMS_MAXIMUM_CONFIGURATION 55,572
-# x,xxx alloted for numbers
-RTEMS_CORE_CODE_SIZE 21,452
-RTEMS_INITIALIZATION_CODE_SIZE 1,408
-RTEMS_TASK_CODE_SIZE 4,804
-RTEMS_INTERRUPT_CODE_SIZE 96
-RTEMS_CLOCK_CODE_SIZE 536
-RTEMS_TIMER_CODE_SIZE 1,380
-RTEMS_SEMAPHORE_CODE_SIZE 1,928
-RTEMS_MESSAGE_CODE_SIZE 2,400
-RTEMS_EVENT_CODE_SIZE 1,460
-RTEMS_SIGNAL_CODE_SIZE 576
-RTEMS_PARTITION_CODE_SIZE 1,384
-RTEMS_REGION_CODE_SIZE 1,780
-RTEMS_DPMEM_CODE_SIZE 928
-RTEMS_IO_CODE_SIZE 1,244
-RTEMS_FATAL_ERROR_CODE_SIZE 44
-RTEMS_RATE_MONOTONIC_CODE_SIZE 1,756
-RTEMS_MULTIPROCESSING_CODE_SIZE 11,448
-# xxx alloted for numbers
-RTEMS_TIMER_CODE_OPTSIZE 340
-RTEMS_SEMAPHORE_CODE_OPTSIZE 308
-RTEMS_MESSAGE_CODE_OPTSIZE 532
-RTEMS_EVENT_CODE_OPTSIZE 100
-RTEMS_SIGNAL_CODE_OPTSIZE 100
-RTEMS_PARTITION_CODE_OPTSIZE 244
-RTEMS_REGION_CODE_OPTSIZE 292
-RTEMS_DPMEM_CODE_OPTSIZE 244
-RTEMS_IO_CODE_OPTSIZE NA
-RTEMS_RATE_MONOTONIC_CODE_OPTSIZE 336
-RTEMS_MULTIPROCESSING_CODE_OPTSIZE 612
-# xxx alloted for numbers
-RTEMS_BYTES_PER_TASK 456
-RTEMS_BYTES_PER_TIMER 68
-RTEMS_BYTES_PER_SEMAPHORE 120
-RTEMS_BYTES_PER_MESSAGE_QUEUE 144
-RTEMS_BYTES_PER_REGION 140
-RTEMS_BYTES_PER_PARTITION 56
-RTEMS_BYTES_PER_PORT 36
-RTEMS_BYTES_PER_PERIOD 36
-RTEMS_BYTES_PER_EXTENSION 64
-RTEMS_BYTES_PER_FP_TASK 264
-RTEMS_BYTES_PER_NODE 48
-RTEMS_BYTES_PER_GLOBAL_OBJECT 20
-RTEMS_BYTES_PER_PROXY 124
-# x,xxx alloted for numbers
-RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS 10,008
-
diff --git a/doc/supplements/powerpc/bsp.t b/doc/supplements/powerpc/bsp.t
deleted file mode 100644
index 2c9539be88..0000000000
--- a/doc/supplements/powerpc/bsp.t
+++ /dev/null
@@ -1,76 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Board Support Packages
-
-@section Introduction
-
-An RTEMS Board Support Package (BSP) must be designed
-to support a particular processor and target board combination.
-This chapter presents a discussion of PowerPC specific BSP issues.
-For more information on developing a BSP, refer to the chapter
-titled Board Support Packages in the RTEMS
-Applications User's Guide.
-
-@section System Reset
-
-An RTEMS based application is initiated or
-re-initiated when the PowerPC processor is reset. The PowerPC
-architecture defines a Reset Exception, but leaves the
-details of the CPU state as implementation specific. Please
-refer to the User's Manual for the CPU model in question.
-
-In general, at power-up the PowerPC begin execution at address
-0xFFF00100 in supervisor mode with all exceptions disabled. For
-soft resets, the CPU will vector to either 0xFFF00100 or 0x00000100
-depending upon the setting of the Exception Prefix bit in the MSR.
-If during a soft reset, a Machine Check Exception occurs, then the
-CPU may execute a hard reset.
-
-@section Processor Initialization
-
-It is the responsibility of the application's
-initialization code to initialize the CPU and board
-to a quiescent state before invoking the @code{rtems_initialize_executive}
-directive. It is recommended that the BSP utilize the @code{predriver_hook}
-to install default handlers for all exceptions. These default handlers
-may be overwritten as various device drivers and subsystems install
-their own exception handlers. Upon completion of RTEMS executive
-initialization, all interrupts are enabled.
-
-If this PowerPC implementation supports on-chip caching
-and this is to be utilized, then it should be enabled during the
-reset application initialization code. On-chip caching has been
-observed to prevent some emulators from working properly, so it
-may be necessary to run with caching disabled to use these emulators.
-
-In addition to the requirements described in the
-@b{Board Support Packages} chapter of the @b{@value{LANGUAGE}
-Applications User's Manual} for the reset code
-which is executed before the call to @code{rtems_initialize_executive},
-the PowrePC version has the following specific requirements:
-
-@itemize @bullet
-@item Must leave the PR bit of the Machine State Register (MSR) set
-to 0 so the PowerPC remains in the supervisor state.
-
-@item Must set stack pointer (sp or r1) such that a minimum stack
-size of MINIMUM_STACK_SIZE bytes is provided for the
-@code{rtems_initialize_executive} directive.
-
-@item Must disable all external interrupts (i.e. clear the EI (EE)
-bit of the machine state register).
-
-@item Must enable traps so window overflow and underflow
-conditions can be properly handled.
-
-@item Must initialize the PowerPC's initial Exception Table with default
-handlers.
-
-@end itemize
-
diff --git a/doc/supplements/powerpc/callconv.t b/doc/supplements/powerpc/callconv.t
deleted file mode 100644
index 7fc4bfd60f..0000000000
--- a/doc/supplements/powerpc/callconv.t
+++ /dev/null
@@ -1,229 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Calling Conventions
-
-@section Introduction
-
-Each high-level language compiler generates
-subroutine entry and exit code based upon a set of rules known
-as the compiler's calling convention. These rules address the
-following issues:
-
-@itemize @bullet
-@item register preservation and usage
-
-@item parameter passing
-
-@item call and return mechanism
-@end itemize
-
-A compiler's calling convention is of importance when
-interfacing to subroutines written in another language either
-assembly or high-level. Even when the high-level language and
-target processor are the same, different compilers may use
-different calling conventions. As a result, calling conventions
-are both processor and compiler dependent.
-
-RTEMS supports the Embedded Application Binary Interface (EABI)
-calling convention. Documentation for EABI is available by sending
-a message with a subject line of "EABI" to eabi@@goth.sis.mot.com.
-
-@section Programming Model
-
-This section discusses the programming model for the
-PowerPC architecture.
-
-@subsection Non-Floating Point Registers
-
-The PowerPC architecture defines thirty-two non-floating point registers
-directly visible to the programmer. In thirty-two bit implementations, each
-register is thirty-two bits wide. In sixty-four bit implementations, each
-register is sixty-four bits wide.
-
-These registers are referred to as @code{gpr0} to @code{gpr31}.
-
-Some of the registers serve defined roles in the EABI programming model.
-The following table describes the role of each of these registers:
-
-@ifset use-ascii
-@example
-@group
- +---------------+----------------+------------------------------+
- | Register Name | Alternate Name | Description |
- +---------------+----------------+------------------------------+
- | r1 | sp | stack pointer |
- +---------------+----------------+------------------------------+
- | | | global pointer to the Small |
- | r2 | na | Constant Area (SDA2) |
- +---------------+----------------+------------------------------+
- | r3 - r12 | na | parameter and result passing |
- +---------------+----------------+------------------------------+
- | | | global pointer to the Small |
- | r13 | na | Data Area (SDA) |
- +---------------+----------------+------------------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 2.50in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-&\bf Register Name &&\bf Alternate Names&&\bf Description&\cr\noalign{\hrule}
-&r1&&sp&&stack pointer&\cr\noalign{\hrule}
-&r2&&NA&&global pointer to the Small&\cr
-&&&&&Constant Area (SDA2)&\cr\noalign{\hrule}
-&r3 - r12&&NA&&parameter and result passing&\cr\noalign{\hrule}
-&r13&&NA&&global pointer to the Small&\cr
-&&&&&Data Area (SDA2)&\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=3 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Register Name</STRONG></TD>
- <TD ALIGN=center><STRONG>Alternate Name</STRONG></TD>
- <TD ALIGN=center><STRONG>Description</STRONG></TD></TR>
-<TR><TD ALIGN=center>r1</TD>
- <TD ALIGN=center>sp</TD>
- <TD ALIGN=center>stack pointer</TD></TR>
-<TR><TD ALIGN=center>r2</TD>
- <TD ALIGN=center>na</TD>
- <TD ALIGN=center>global pointer to the Small Constant Area (SDA2)</TD></TR>
-<TR><TD ALIGN=center>r3 - r12</TD>
- <TD ALIGN=center>NA</TD>
- <TD ALIGN=center>parameter and result passing</TD></TR>
-<TR><TD ALIGN=center>r13</TD>
- <TD ALIGN=center>NA</TD>
- <TD ALIGN=center>global pointer to the Small Data Area (SDA)</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-
-@subsection Floating Point Registers
-
-The PowerPC architecture includes thirty-two, sixty-four bit
-floating point registers. All PowerPC floating point instructions
-interpret these registers as 32 double precision floating point registers,
-regardless of whether the processor has 64-bit or 32-bit implementation.
-
-The floating point status and control register (fpscr) records exceptions
-and the type of result generated by floating-point operations.
-Additionally, it controls the rounding mode of operations and allows the
-reporting of floating exceptions to be enabled or disabled.
-
-@subsection Special Registers
-
-The PowerPC architecture includes a number of special registers
-which are critical to the programming model:
-
-@table @b
-
-@item Machine State Register
-
-The MSR contains the processor mode, power management mode, endian mode,
-exception information, privilege level, floating point available and
-floating point excepiton mode, address translation information and
-the exception prefix.
-
-@item Link Register
-
-The LR contains the return address after a function call. This register
-must be saved before a subsequent subroutine call can be made. The
-use of this register is discussed further in the @b{Call and Return
-Mechanism} section below.
-
-@item Count Register
-
-The CTR contains the iteration variable for some loops. It may also be used
-for indirect function calls and jumps.
-
-@end table
-
-@section Call and Return Mechanism
-
-The PowerPC architecture supports a simple yet effective call
-and return mechanism. A subroutine is invoked
-via the "branch and link" (@code{bl}) and
-"brank and link absolute" (@code{bla})
-instructions. This instructions place the return address
-in the Link Register (LR). The callee returns to the caller by
-executing a "branch unconditional to the link register" (@code{blr})
-instruction. Thus the callee returns to the caller via a jump
-to the return address which is stored in the LR.
-
-The previous contents of the LR are not automatically saved
-by either the @code{bl} or @code{bla}. It is the responsibility
-of the callee to save the contents of the LR before invoking
-another subroutine. If the callee invokes another subroutine,
-it must restore the LR before executing the @code{blr} instruction
-to return to the caller.
-
-It is important to note that the PowerPC subroutine
-call and return mechanism does not automatically save and
-restore any registers.
-
-The LR may be accessed as special purpose register 8 (@code{SPR8}) using the
-"move from special register" (@code{mfspr}) and
-"move to special register" (@code{mtspr}) instructions.
-
-@section Calling Mechanism
-
-All RTEMS directives are invoked using the regular
-PowerPC EABI calling convention via the @code{bl} or
-@code{bla} instructions.
-
-@section Register Usage
-
-As discussed above, the call instruction does not
-automatically save any registers. It is the responsibility
-of the callee to save and restore any registers which must be preserved
-across subroutine calls. The callee is responsible for saving
-callee-preserved registers to the program stack and restoring them
-before returning to the caller.
-
-@section Parameter Passing
-
-RTEMS assumes that arguments are placed in the
-general purpose registers with the first argument in
-register 3 (@code{r3}), the second argument in general purpose
-register 4 (@code{r4}), and so forth until the seventh
-argument is in general purpose register 10 (@code{r10}).
-If there are more than seven arguments, then subsequent arguments
-are placed on the program stack. The following pseudo-code
-illustrates the typical sequence used to call a RTEMS directive
-with three (3) arguments:
-
-@example
-load third argument into r5
-load second argument into r4
-load first argument into r3
-invoke directive
-@end example
-
-@section User-Provided Routines
-
-All user-provided routines invoked by RTEMS, such as
-user extensions, device drivers, and MPCI routines, must also
-adhere to these same calling conventions.
-
-
diff --git a/doc/supplements/powerpc/cpumodel.t b/doc/supplements/powerpc/cpumodel.t
deleted file mode 100644
index 4b4acb4a78..0000000000
--- a/doc/supplements/powerpc/cpumodel.t
+++ /dev/null
@@ -1,156 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter CPU Model Dependent Features
-
-@section Introduction
-
-Microprocessors are generally classified into
-families with a variety of CPU models or implementations within
-that family. Within a processor family, there is a high level
-of binary compatibility. This family may be based on either an
-architectural specification or on maintaining compatibility with
-a popular processor. Recent microprocessor families such as the
-PowerPC, SPARC, and PA-RISC are based on an architectural specification
-which is independent or any particular CPU model or
-implementation. Older families such as the M68xxx and the iX86
-evolved as the manufacturer strived to produce higher
-performance processor models which maintained binary
-compatibility with older models.
-
-RTEMS takes advantage of the similarity of the
-various models within a CPU family. Although the models do vary
-in significant ways, the high level of compatibility makes it
-possible to share the bulk of the CPU dependent executive code
-across the entire family.
-
-@section CPU Model Feature Flags
-
-Each processor family supported by RTEMS has a
-list of features which vary between CPU models
-within a family. For example, the most common model dependent
-feature regardless of CPU family is the presence or absence of a
-floating point unit or coprocessor. When defining the list of
-features present on a particular CPU model, one simply notes
-that floating point hardware is or is not present and defines a
-single constant appropriately. Conditional compilation is
-utilized to include the appropriate source code for this CPU
-model's feature set. It is important to note that this means
-that RTEMS is thus compiled using the appropriate feature set
-and compilation flags optimal for this CPU model used. The
-alternative would be to generate a binary which would execute on
-all family members using only the features which were always
-present.
-
-This section presents the set of features which vary
-across PowerPC implementations and are of importance to RTEMS.
-The set of CPU model feature macros are defined in the file
-c/src/exec/score/cpu/ppc/ppc.h based upon the particular CPU
-model defined on the compilation command line.
-
-@subsection CPU Model Name
-
-The macro CPU_MODEL_NAME is a string which designates
-the name of this CPU model. For example, for the PowerPC 603e
-model, this macro is set to the string "PowerPC 603e".
-
-@subsection Floating Point Unit
-
-The macro PPC_HAS_FPU is set to 1 to indicate that this CPU model
-has a hardware floating point unit and 0 otherwise.
-
-@subsection Alignment
-
-The macro PPC_ALIGNMENT is set to the PowerPC model's worst case alignment
-requirement for data types on a byte boundary. This value is used
-to derive the alignment restrictions for memory allocated from
-regions and partitions.
-
-@subsection Cache Alignment
-
-The macro PPC_CACHE_ALIGNMENT is set to the line size of the cache. It is
-used to align the entry point of critical routines so that as much code
-as possible can be retrieved with the initial read into cache. This
-is done for the interrupt handler as well as the context switch routines.
-
-In addition, the "shortcut" data structure used by the PowerPC implementation
-to ease access to data elements frequently accessed by RTEMS routines
-implemented in assembly language is aligned using this value.
-
-@subsection Maximum Interrupts
-
-The macro PPC_INTERRUPT_MAX is set to the number of exception sources
-supported by this PowerPC model.
-
-@subsection Has Double Precision Floating Point
-
-The macro PPC_HAS_DOUBLE is set to 1 to indicate that the PowerPC model
-has support for double precision floating point numbers. This is
-important because the floating point registers need only be four bytes
-wide (not eight) if double precision is not supported.
-
-@subsection Critical Interrupts
-
-The macro PPC_HAS_RFCI is set to 1 to indicate that the PowerPC model
-has the Critical Interrupt capability as defined by the IBM 403 models.
-
-@subsection Use Multiword Load/Store Instructions
-
-The macro PPC_USE_MULTIPLE is set to 1 to indicate that multiword load and
-store instructions should be used to perform context switch operations.
-The relative efficiency of multiword load and store instructions versus
-an equivalent set of single word load and store instructions varies based
-upon the PowerPC model.
-
-@subsection Instruction Cache Size
-
-The macro PPC_I_CACHE is set to the size in bytes of the instruction cache.
-
-@subsection Data Cache Size
-
-The macro PPC_D_CACHE is set to the size in bytes of the data cache.
-
-@subsection Debug Model
-
-The macro PPC_DEBUG_MODEL is set to indicate the debug support features
-present in this CPU model. The following debug support feature sets
-are currently supported:
-
-@table @b
-
-@item @code{PPC_DEBUG_MODEL_STANDARD}
-indicates that the single-step trace enable (SE) and branch trace
-enable (BE) bits in the MSR are supported by this CPU model.
-
-@item @code{PPC_DEBUG_MODEL_SINGLE_STEP_ONLY}
-indicates that only the single-step trace enable (SE) bit in the MSR
-is supported by this CPU model.
-
-@item @code{PPC_DEBUG_MODEL_IBM4xx}
-indicates that the debug exception enable (DE) bit in the MSR is supported
-by this CPU model. At this time, this particular debug feature set
-has only been seen in the IBM 4xx series.
-
-@end table
-
-@subsection Low Power Model
-
-The macro PPC_LOW_POWER_MODE is set to indicate the low power model
-supported by this CPU model. The following low power modes are currently
-supported.
-
-@table @b
-
-@item @code{PPC_LOW_POWER_MODE_NONE}
-indicates that this CPU model has no low power mode support.
-
-@item @code{PPC_LOW_POWER_MODE_STANDARD}
-indicates that this CPU model follows the low power model defined for
-the PPC603e.
-
-@end table
diff --git a/doc/supplements/powerpc/cputable.t b/doc/supplements/powerpc/cputable.t
deleted file mode 100644
index 35fabdb6f3..0000000000
--- a/doc/supplements/powerpc/cputable.t
+++ /dev/null
@@ -1,156 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Processor Dependent Information Table
-
-@section Introduction
-
-Any highly processor dependent information required
-to describe a processor to RTEMS is provided in the CPU
-Dependent Information Table. This table is not required for all
-processors supported by RTEMS. This chapter describes the
-contents, if any, for a particular processor type.
-
-@section CPU Dependent Information Table
-
-The PowerPC version of the RTEMS CPU Dependent
-Information Table is given by the C structure definition is
-shown below:
-
-@example
-typedef struct @{
- void (*pretasking_hook)( void );
- void (*predriver_hook)( void );
- void (*postdriver_hook)( void );
- void (*idle_task)( void );
- boolean do_zero_of_workspace;
- unsigned32 idle_task_stack_size;
- unsigned32 interrupt_stack_size;
- unsigned32 extra_mpci_receive_server_stack;
- void * (*stack_allocate_hook)( unsigned32 );
- void (*stack_free_hook)( void* );
- /* end of fields required on all CPUs */
-
- unsigned32 clicks_per_usec; /* Timer clicks per microsecond */
- void (*spurious_handler)(unsigned32 vector, CPU_Interrupt_frame *);
- boolean exceptions_in_RAM; /* TRUE if in RAM */
-
-#if defined(ppc403)
- unsigned32 serial_per_sec; /* Serial clocks per second */
- boolean serial_external_clock;
- boolean serial_xon_xoff;
- boolean serial_cts_rts;
- unsigned32 serial_rate;
- unsigned32 timer_average_overhead; /* in ticks */
- unsigned32 timer_least_valid; /* Least valid number from timer */
-#endif
-@};
-@end example
-
-@table @code
-@item pretasking_hook
-is the address of the
-user provided routine which is invoked once RTEMS initialization
-is complete but before interrupts and tasking are enabled. This
-field may be NULL to indicate that the hook is not utilized.
-
-@item predriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately before
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-but no device drivers are initialized. This field may be NULL to
-indicate that the hook is not utilized.
-
-@item postdriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately after
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-and the device drivers are initialized. This field may be NULL
-to indicate that the hook is not utilized.
-
-@item idle_task
-is the address of the optional user
-provided routine which is used as the system's IDLE task. If
-this field is not NULL, then the RTEMS default IDLE task is not
-used. This field may be NULL to indicate that the default IDLE
-is to be used.
-
-@item do_zero_of_workspace
-indicates whether RTEMS should
-zero the Workspace as part of its initialization. If set to
-TRUE, the Workspace is zeroed. Otherwise, it is not.
-
-@item idle_task_stack_size
-is the size of the RTEMS idle task stack in bytes.
-If this number is less than MINIMUM_STACK_SIZE, then the
-idle task's stack will be MINIMUM_STACK_SIZE in byte.
-
-@item interrupt_stack_size
-is the size of the RTEMS allocated interrupt stack in bytes.
-This value must be at least as large as MINIMUM_STACK_SIZE.
-
-@item extra_mpci_receive_server_stack
-is the extra stack space allocated for the RTEMS MPCI receive server task
-in bytes. The MPCI receive server may invoke nearly all directives and
-may require extra stack space on some targets.
-
-@item stack_allocate_hook
-is the address of the optional user provided routine which allocates
-memory for task stacks. If this hook is not NULL, then a stack_free_hook
-must be provided as well.
-
-@item stack_free_hook
-is the address of the optional user provided routine which frees
-memory for task stacks. If this hook is not NULL, then a stack_allocate_hook
-must be provided as well.
-
-@item clicks_per_usec
-is the number of decrementer interupts that occur each microsecond.
-
-@item spurious_handler
-is the address of the
-routine which is invoked when a spurious interrupt occurs.
-
-@item exceptions_in_RAM
-indicates whether the exception vectors are located in RAM or ROM. If
-they are located in RAM dynamic vector installation occurs, otherwise
-it does not.
-
-@item serial_per_sec
-is a PPC403 specific field which specifies the number of clock
-ticks per second for the PPC403 serial timer.
-
-@item serial_rate
-is a PPC403 specific field which specifies the baud rate for the
-PPC403 serial port.
-
-@item serial_external_clock
-is a PPC403 specific field which indicates whether or not to mask in a 0x2 into
-the Input/Output Configuration Register (IOCR) during initialization of the
-PPC403 console. (NOTE: This bit is defined as "reserved" 6-12?)
-
-@item serial_xon_xoff
-is a PPC403 specific field which indicates whether or not
-XON/XOFF flow control is supported for the PPC403 serial port.
-
-@item serial_cts_rts
-is a PPC403 specific field which indicates whether or not to set the
-least significant bit of the Input/Output Configuration Register
-(IOCR) during initialization of the PPC403 console. (NOTE: This
-bit is defined as "reserved" 6-12?)
-
-@item timer_average_overhead
-is a PPC403 specific field which specifies the average number of overhead ticks that occur on the PPC403 timer.
-
-@item timer_least_valid
-is a PPC403 specific field which specifies the maximum valid PPC403 timer value.
-
-@end table
-
diff --git a/doc/supplements/powerpc/fatalerr.t b/doc/supplements/powerpc/fatalerr.t
deleted file mode 100644
index df8ac491d0..0000000000
--- a/doc/supplements/powerpc/fatalerr.t
+++ /dev/null
@@ -1,47 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Default Fatal Error Processing
-
-@section Introduction
-
-Upon detection of a fatal error by either the
-application or RTEMS the fatal error manager is invoked. The
-fatal error manager will invoke the user-supplied fatal error
-handlers. If no user-supplied handlers are configured, the
-RTEMS provided default fatal error handler is invoked. If the
-user-supplied fatal error handlers return to the executive the
-default fatal error handler is then invoked. This chapter
-describes the precise operations of the default fatal error
-handler.
-
-@section Default Fatal Error Handler Operations
-
-The default fatal error handler which is invoked by
-the @code{rtems_fatal_error_occurred} directive when there is no user handler
-configured or the user handler returns control to RTEMS. The
-default fatal error handler performs the following actions:
-
-@itemize @bullet
-
-@item places the error code in r3, and
-
-@item executes a trap instruction which results in a Program Exception.
-
-@end itemize
-
-If the Program Exception returns, then the following actions are performed:
-
-@itemize @bullet
-
-@item disables all processor exceptions by loading a 0 into the MSR, and
-
-@item goes into an infinite loop to simulate a halt processor instruction.
-
-@end itemize
-
diff --git a/doc/supplements/powerpc/intr_NOTIMES.t b/doc/supplements/powerpc/intr_NOTIMES.t
deleted file mode 100644
index 7d5117e7d5..0000000000
--- a/doc/supplements/powerpc/intr_NOTIMES.t
+++ /dev/null
@@ -1,184 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Interrupt Processing
-
-@section Introduction
-
-Different types of processors respond to the
-occurrence of an interrupt in its own unique fashion. In
-addition, each processor type provides a control mechanism to
-allow for the proper handling of an interrupt. The processor
-dependent response to the interrupt modifies the current
-execution state and results in a change in the execution stream.
-Most processors require that an interrupt handler utilize some
-special control mechanisms to return to the normal processing
-stream. Although RTEMS hides many of the processor dependent
-details of interrupt processing, it is important to understand
-how the RTEMS interrupt manager is mapped onto the processor's
-unique architecture. Discussed in this chapter are the PowerPC's
-interrupt response and control mechanisms as they pertain to
-RTEMS.
-
-RTEMS and associated documentation uses the terms
-interrupt and vector. In the PowerPC architecture, these terms
-correspond to exception and exception handler, respectively. The terms will
-be used interchangeably in this manual.
-
-@section Synchronous Versus Asynchronous Exceptions
-
-In the PowerPC architecture exceptions can be either precise or
-imprecise and either synchronous or asynchronous. Asynchronous
-exceptions occur when an external event interrupts the processor.
-Synchronous exceptions are caused by the actions of an
-instruction. During an exception SRR0 is used to calculate where
-instruction processing should resume. All instructions prior to
-the resume instruction will have completed execution. SRR1 is used to
-store the machine status.
-
-There are two asynchronous nonmaskable, highest-priority exceptions
-system reset and machine check. There are two asynchrononous maskable
-low-priority exceptions external interrupt and decrementer. Nonmaskable
-execptions are never delayed, therefore if two nonmaskable, asynchronous
-exceptions occur in immediate succession, the state information saved by
-the first exception may be overwritten when the subsequent exception occurs.
-
-The PowerPC arcitecure defines one imprecise exception, the imprecise
-floating point enabled exception. All other synchronous exceptions are
-precise. The synchronization occuring during asynchronous precise
-exceptions conforms to the requirements for context synchronization.
-
-@section Vectoring of Interrupt Handler
-
-Upon determining that an exception can be taken the PowerPC automatically
-performs the following actions:
-
-@itemize @bullet
-@item an instruction address is loaded into SRR0
-
-@item bits 33-36 and 42-47 of SRR1 are loaded with information
-specific to the exception.
-
-@item bits 0-32, 37-41, and 48-63 of SRR1 are loaded with corresponding
-bits from the MSR.
-
-@item the MSR is set based upon the exception type.
-
-@item instruction fetch and execution resumes, using the new MSR value, at a location specific to the execption type.
-
-@end itemize
-
-If the interrupt handler was installed as an RTEMS
-interrupt handler, then upon receipt of the interrupt, the
-processor passes control to the RTEMS interrupt handler which
-performs the following actions:
-
-@itemize @bullet
-@item saves the state of the interrupted task on it's stack,
-
-@item saves all registers which are not normally preserved
-by the calling sequence so the user's interrupt service
-routine can be written in a high-level language.
-
-@item if this is the outermost (i.e. non-nested) interrupt,
-then the RTEMS interrupt handler switches from the current stack
-to the interrupt stack,
-
-@item enables exceptions,
-
-@item invokes the vectors to a user interrupt service routine (ISR).
-@end itemize
-
-Asynchronous interrupts are ignored while exceptions are
-disabled. Synchronous interrupts which occur while are
-disabled result in the CPU being forced into an error mode.
-
-A nested interrupt is processed similarly with the
-exception that the current stack need not be switched to the
-interrupt stack.
-
-@section Interrupt Levels
-
-The PowerPC architecture supports only a single external
-asynchronous interrupt source. This interrupt source
-may be enabled and disabled via the External Interrupt Enable (EE)
-bit in the Machine State Register (MSR). Thus only two level (enabled
-and disabled) of external device interrupt priorities are
-directly supported by the PowerPC architecture.
-
-Some PowerPC implementations include a Critical Interrupt capability
-which is often used to receive interrupts from high priority external
-devices.
-
-The RTEMS interrupt level mapping scheme for the PowerPC is not
-a numeric level as on most RTEMS ports. It is a bit mapping in
-which the least three significiant bits of the interrupt level
-are mapped directly to the enabling of specific interrupt
-sources as follows:
-
-@table @b
-
-@item Critical Interrupt
-Setting bit 0 (the least significant bit) of the interrupt level
-enables the Critical Interrupt source, if it is available on this
-CPU model.
-
-@item Machine Check
-Setting bit 1 of the interrupt level enables Machine Check execptions.
-
-@item External Interrupt
-Setting bit 2 of the interrupt level enables External Interrupt execptions.
-
-@end table
-
-All other bits in the RTEMS task interrupt level are ignored.
-
-@section Disabling of Interrupts by RTEMS
-
-During the execution of directive calls, critical
-sections of code may be executed. When these sections are
-encountered, RTEMS disables Critical Interrupts, External Interrupts
-and Machine Checks before the execution of this section and restores
-them to the previous level upon completion of the section. RTEMS has been
-optimized to insure that interrupts are disabled for less than
-RTEMS_MAXIMUM_DISABLE_PERIOD microseconds on a
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz PowerPC 603e with zero
-wait states. These numbers will vary based the number of wait
-states and processor speed present on the target board.
-[NOTE: The maximum period with interrupts disabled is hand calculated. This
-calculation was last performed for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-If a PowerPC implementation provides non-maskable interrupts (NMI)
-which cannot be disabled, ISRs which process these interrupts
-MUST NEVER issue RTEMS system calls. If a directive is invoked,
-unpredictable results may occur due to the inability of RTEMS
-to protect its critical sections. However, ISRs that make no
-system calls may safely execute as non-maskable interrupts.
-
-@section Interrupt Stack
-
-The PowerPC architecture does not provide for a
-dedicated interrupt stack. Thus by default, exception handlers would
-execute on the stack of the RTEMS task which they interrupted.
-This artificially inflates the stack requirements for each task
-since EVERY task stack would have to include enough space to
-account for the worst case interrupt stack requirements in
-addition to it's own worst case usage. RTEMS addresses this
-problem on the PowerPC by providing a dedicated interrupt stack
-managed by software.
-
-During system initialization, RTEMS allocates the
-interrupt stack from the Workspace Area. The amount of memory
-allocated for the interrupt stack is determined by the
-interrupt_stack_size field in the CPU Configuration Table. As
-part of processing a non-nested interrupt, RTEMS will switch to
-the interrupt stack before invoking the installed handler.
-
-
-
diff --git a/doc/supplements/powerpc/memmodel.t b/doc/supplements/powerpc/memmodel.t
deleted file mode 100644
index a8bd0f66ab..0000000000
--- a/doc/supplements/powerpc/memmodel.t
+++ /dev/null
@@ -1,110 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Model
-
-@section Introduction
-
-A processor may support any combination of memory
-models ranging from pure physical addressing to complex demand
-paged virtual memory systems. RTEMS supports a flat memory
-model which ranges contiguously over the processor's allowable
-address space. RTEMS does not support segmentation or virtual
-memory of any kind. The appropriate memory model for RTEMS
-provided by the targeted processor and related characteristics
-of that model are described in this chapter.
-
-@section Flat Memory Model
-
-The PowerPC architecture supports a variety of memory models.
-RTEMS supports the PowerPC using a flat memory model with
-paging disabled. In this mode, the PowerPC automatically
-converts every address from a logical to a physical address
-each time it is used. The PowerPC uses information provided
-in the Block Address Translation (BAT) to convert these addresses.
-
-Implementations of the PowerPC architecture may be thirty-two or sixty-four bit.
-The PowerPC architecture supports a flat thirty-two or sixty-four bit address
-space with addresses ranging from 0x00000000 to 0xFFFFFFFF (4
-gigabytes) in thirty-two bit implementations or to 0xFFFFFFFFFFFFFFFF
-in sixty-four bit implementations. Each address is represented
-by either a thirty-two bit or sixty-four bit value and is byte addressable.
-The address may be used to reference a single byte, half-word
-(2-bytes), word (4 bytes), or in sixty-four bit implementations a
-doubleword (8 bytes). Memory accesses within the address space are
-performed in big or little endian fashion by the PowerPC based
-upon the current setting of the Little-endian mode enable bit (LE)
-in the Machine State Register (MSR). While the processor is in
-big endian mode, memory accesses which are not properly aligned
-generate an "alignment exception" (vector offset 0x00600). In
-little endian mode, the PowerPC architecture does not require
-the processor to generate alignment exceptions.
-
-The following table lists the alignment requirements for a variety
-of data accesses:
-
-@ifset use-ascii
-@example
-@group
- +--------------+-----------------------+
- | Data Type | Alignment Requirement |
- +--------------+-----------------------+
- | byte | 1 |
- | half-word | 2 |
- | word | 4 |
- | doubleword | 8 |
- +--------------+-----------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-&\bf Data Type &&\bf Alignment Requirement&\cr\noalign{\hrule}
-&byte&&1&\cr\noalign{\hrule}
-&half-word&&2&\cr\noalign{\hrule}
-&word&&4&\cr\noalign{\hrule}
-&doubleword&&8&\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="60%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Data Type</STRONG></TD>
- <TD ALIGN=center><STRONG>Alignment Requirement</STRONG></TD></TR>
-<TR><TD ALIGN=center>byte</TD>
- <TD ALIGN=center>1</TD></TR>
-<TR><TD ALIGN=center>half-word</TD>
- <TD ALIGN=center>2</TD></TR>
-<TR><TD ALIGN=center>word</TD>
- <TD ALIGN=center>4</TD></TR>
-<TR><TD ALIGN=center>doubleword</TD>
- <TD ALIGN=center>8</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-Doubleword load and store operations are only available in
-PowerPC CPU models which are sixty-four bit implementations.
-
-RTEMS does not directly support any PowerPC Memory Management
-Units, therefore, virtual memory or segmentation systems
-involving the PowerPC are not supported.
-
diff --git a/doc/supplements/powerpc/powerpc.texi b/doc/supplements/powerpc/powerpc.texi
deleted file mode 100644
index 48dfc7da12..0000000000
--- a/doc/supplements/powerpc/powerpc.texi
+++ /dev/null
@@ -1,121 +0,0 @@
-\input ../../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename c_powerpc
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the PowerPC Applications Supplement
-@c
-
-@include ../../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS PowerPC Applications Supplement (powerpc):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS PowerPC Applications Supplement
-
-@setchapternewpage odd
-@settitle RTEMS PowerPC Applications Supplement
-@titlepage
-@finalout
-
-@title RTEMS PowerPC Applications Supplement
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include cpumodel.texi
-@include callconv.texi
-@include memmodel.texi
-@include intr.texi
-@include fatalerr.texi
-@include bsp.texi
-@include cputable.texi
-@include wksheets.texi
-@include timing.texi
-@include timePSIM.texi
-@include timeDMV177.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top c_powerpc
-
-This is the online version of the RTEMS PowerPC Applications Supplement.
-
-@menu
-* Preface::
-* CPU Model Dependent Features::
-* Calling Conventions::
-* Memory Model::
-* Interrupt Processing::
-* Default Fatal Error Processing::
-* Board Support Packages::
-* Processor Dependent Information Table::
-* Memory Requirements::
-* Timing Specification::
-* PSIM Timing Data::
-* DMV177 Timing Data::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, DMV177 Timing Data Rate Monotonic Manager, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@c @contents
-@bye
-
diff --git a/doc/supplements/powerpc/preface.texi b/doc/supplements/powerpc/preface.texi
deleted file mode 100644
index e898c3d8dd..0000000000
--- a/doc/supplements/powerpc/preface.texi
+++ /dev/null
@@ -1,94 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, CPU Model Dependent Features, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-The Real Time Executive for Multiprocessor Systems
-(RTEMS) is designed to be portable across multiple processor
-architectures. However, the nature of real-time systems makes
-it essential that the application designer understand certain
-processor dependent implementation details. These processor
-dependencies include calling convention, board support package
-issues, interrupt processing, exact RTEMS memory requirements,
-performance data, header files, and the assembly language
-interface to the executive.
-
-This document discusses the PowerPC architecture
-dependencies in this port of RTEMS.
-
-It is highly recommended that the PowerPC RTEMS
-application developer obtain and become familiar with the
-documentation for the processor being used as well as the
-specification for the revision of the PowerPC architecture which
-corresponds to that processor.
-
-@subheading PowerPC Architecture Documents
-
-For information on the PowerPC architecture, refer to
-the following documents available from Motorola and IBM:
-
-@itemize @bullet
-
-@item @cite{PowerPC Microprocessor Family: The Programming Environment}
-(Motorola Document MPRPPCFPE-01).
-
-@item @cite{IBM PPC403GB Embedded Controller User's Manual}.
-
-@item @cite{PoweRisControl MPC500 Family RCPU RISC Central Processing
-Unit Reference Manual} (Motorola Document RCPUURM/AD).
-
-@item @cite{PowerPC 601 RISC Microprocessor User's Manual}
-(Motorola Document MPR601UM/AD).
-
-@item @cite{PowerPC 603 RISC Microprocessor User's Manual}
-(Motorola Document MPR603UM/AD).
-
-@item @cite{PowerPC 603e RISC Microprocessor User's Manual}
-(Motorola Document MPR603EUM/AD).
-
-@item @cite{PowerPC 604 RISC Microprocessor User's Manual}
-(Motorola Document MPR604UM/AD).
-
-@item @cite{PowerPC MPC821 Portable Systems Microprocessor User's Manual}
-(Motorola Document MPC821UM/AD).
-
-@item @cite{PowerQUICC MPC860 User's Manual} (Motorola Document MPC860UM/AD).
-
-
-@end itemize
-
-Motorola maintains an on-line electronic library for the PowerPC
-at the following URL:
-
-@itemize @code{ }
-@item @cite{http://www.mot.com/powerpc/library/library.html}
-@end itemize
-
-This site has a a wealth of information and examples. Many of the
-manuals are available from that site in electronic format.
-
-@subheading PowerPC Processor Simulator Information
-
-PSIM is a program which emulates the Instruction Set Architecture
-of the PowerPC microprocessor family. It is reely available in source
-code form under the terms of the GNU General Public License (version
-2 or later). PSIM can be integrated with the GNU Debugger (gdb) to
-execute and debug PowerPC executables on non-PowerPC hosts. PSIM
-supports the addition of user provided device models which can be
-used to allow one to develop and debug embedded applications using
-the simulator.
-
-The latest version of PSIM is made available to the public via
-anonymous ftp at ftp://ftp.ci.com.au/pub/psim or
-ftp://cambridge.cygnus.com/pub/psim. There is also a mailing list
-at powerpc-psim@@ci.com.au.
-
-
diff --git a/doc/supplements/powerpc/timeDMV177.t b/doc/supplements/powerpc/timeDMV177.t
deleted file mode 100644
index 1117b03f6e..0000000000
--- a/doc/supplements/powerpc/timeDMV177.t
+++ /dev/null
@@ -1,113 +0,0 @@
-@c
-@c Timing information for the DMV177
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@include ../../common/timemac.texi
-@tex
-\global\advance \smallskipamount by -4pt
-@end tex
-
-@chapter RTEMS_BSP Timing Data
-
-@section Introduction
-
-The timing data for RTEMS on the DY-4 RTEMS_BSP board
-is provided along with the target
-dependent aspects concerning the gathering of the timing data.
-The hardware platform used to gather the times is described to
-give the reader a better understanding of each directive time
-provided. Also, provided is a description of the interrupt
-latency and the context switch times as they pertain to the
-PowerPC version of RTEMS.
-
-@section Hardware Platform
-
-All times reported in this chapter were measured using a RTEMS_BSP board.
-All data and code caching was disabled. This results in very deterministic
-times which represent the worst possible performance. Many embedded
-applications disable caching to insure that execution times are
-repeatable. Moreover, the JTAG port on certain revisions of the PowerPC
-603e does not operate properly if caching is enabled. Thus during
-development and debug, caching must be off.
-
-The PowerPC decrementer register was was used to gather
-all timing information. In the PowerPC architecture,
-this register typically counts
-something like CPU cycles or is a function of the clock
-speed. On the PPC603e decrements once for every four (4) bus cycles.
-On the RTEMS_BSP, the bus operates at a clock speed of
-33 Mhz. This result in a very accurate number since it is a function of the
-microprocessor itself. Thus all measurements in this
-chapter are reported as the actual number of decrementer
-clicks reported.
-
-To convert the numbers reported to microseconds, one should
-divide the number reported by 8.650752. This number was derived as
-shown below:
-
-@example
-((33 * 1048576) / 1000000) / 4 = 8.650752
-@end example
-
-All sources of hardware interrupts were disabled,
-although traps were enabled and the interrupt level of the
-PowerPC allows all interrupts.
-
-@section Interrupt Latency
-
-The maximum period with traps disabled or the
-processor interrupt level set to it's highest value inside RTEMS
-is less than RTEMS_MAXIMUM_DISABLE_PERIOD
-microseconds including the instructions which
-disable and re-enable interrupts. The time required for the
-PowerPC to vector an interrupt and for the RTEMS entry overhead
-before invoking the user's trap handler are a total of
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. These combine to yield a worst case interrupt
-latency of less than RTEMS_MAXIMUM_DISABLE_PERIOD +
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK microseconds at
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz.
-[NOTE: The maximum period with interrupts disabled was last
-determined for Release RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-The maximum period with interrupts disabled within
-RTEMS is hand-timed with some assistance from the PowerPC simulator.
-The maximum period with interrupts disabled with RTEMS has not
-been calculated on this target.
-
-The interrupt vector and entry overhead time was
-generated on the PSIM benchmark platform using the PowerPC's
-decrementer register. This register was programmed to generate
-an interrupt after one countdown.
-
-@section Context Switch
-
-The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
-bus cycle on the RTEMS_BSP benchmark platform when no floating
-point context is saved or restored. Additional execution time
-is required when a TASK_SWITCH user extension is configured.
-The use of the TASK_SWITCH extension is application dependent.
-Thus, its execution time is not considered part of the raw
-context switch time.
-
-Since RTEMS was designed specifically for embedded
-missile applications which are floating point intensive, the
-executive is optimized to avoid unnecessarily saving and
-restoring the state of the numeric coprocessor. The state of
-the numeric coprocessor is only saved when an FLOATING_POINT
-task is dispatched and that task was not the last task to
-utilize the coprocessor. In a system with only one
-FLOATING_POINT task, the state of the numeric coprocessor will
-never be saved or restored. When the first FLOATING_POINT task
-is dispatched, RTEMS does not need to save the current state of
-the numeric coprocessor.
-
-The following table summarizes the context switch
-times for the RTEMS_BSP benchmark platform:
-
diff --git a/doc/supplements/powerpc/timePSIM.t b/doc/supplements/powerpc/timePSIM.t
deleted file mode 100644
index 520cb6df64..0000000000
--- a/doc/supplements/powerpc/timePSIM.t
+++ /dev/null
@@ -1,97 +0,0 @@
-@c
-@c Timing information for PSIM
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@include ../../common/timemac.texi
-@tex
-\global\advance \smallskipamount by -4pt
-@end tex
-
-@chapter RTEMS_BSP Timing Data
-
-@section Introduction
-
-The timing data for RTEMS on the RTEMS_BSP target
-is provided along with the target
-dependent aspects concerning the gathering of the timing data.
-The hardware platform used to gather the times is described to
-give the reader a better understanding of each directive time
-provided. Also, provided is a description of the interrupt
-latency and the context switch times as they pertain to the
-PowerPC version of RTEMS.
-
-@section Hardware Platform
-
-All times reported in this chapter were measured using the PowerPC
-Instruction Simulator (PSIM). PSIM simulates a variety of PowerPC
-6xx models with the PPC603e being used as the basis for the measurements
-reported in this chapter.
-
-The PowerPC decrementer register was was used to gather
-all timing information. In real hardware implementations
-of the PowerPC architecture, this register would typically
-count something like CPU cycles or be a function of the clock
-speed. However, with PSIM each count of the decrementer register
-represents an instruction. Thus all measurements in this
-chapter are reported as the actual number of instructions
-executed. All sources of hardware interrupts were disabled,
-although traps were enabled and the interrupt level of the
-PowerPC allows all interrupts.
-
-@section Interrupt Latency
-
-The maximum period with traps disabled or the
-processor interrupt level set to it's highest value inside RTEMS
-is less than RTEMS_MAXIMUM_DISABLE_PERIOD
-microseconds including the instructions which
-disable and re-enable interrupts. The time required for the
-PowerPC to vector an interrupt and for the RTEMS entry overhead
-before invoking the user's trap handler are a total of
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. These combine to yield a worst case interrupt
-latency of less than RTEMS_MAXIMUM_DISABLE_PERIOD +
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK microseconds at
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz.
-[NOTE: The maximum period with interrupts disabled was last
-determined for Release RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-The maximum period with interrupts disabled within
-RTEMS is hand-timed with some assistance from RTEMS_BSP. The maximum
-period with interrupts disabled with RTEMS occurs was not measured
-on this target.
-
-The interrupt vector and entry overhead time was
-generated on the RTEMS_BSP benchmark platform using the PowerPC's
-decrementer register. This register was programmed to generate
-an interrupt after one countdown.
-
-@section Context Switch
-
-The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
-instructions on the RTEMS_BSP benchmark platform when no floating
-point context is saved or restored. Additional execution time
-is required when a TASK_SWITCH user extension is configured.
-The use of the TASK_SWITCH extension is application dependent.
-Thus, its execution time is not considered part of the raw
-context switch time.
-
-Since RTEMS was designed specifically for embedded
-missile applications which are floating point intensive, the
-executive is optimized to avoid unnecessarily saving and
-restoring the state of the numeric coprocessor. The state of
-the numeric coprocessor is only saved when an FLOATING_POINT
-task is dispatched and that task was not the last task to
-utilize the coprocessor. In a system with only one
-FLOATING_POINT task, the state of the numeric coprocessor will
-never be saved or restored. When the first FLOATING_POINT task
-is dispatched, RTEMS does not need to save the current state of
-the numeric coprocessor.
-
-The following table summarizes the context switch
-times for the RTEMS_BSP benchmark platform:
diff --git a/doc/supplements/sh/callconv.texi b/doc/supplements/sh/callconv.texi
deleted file mode 100644
index adde30776c..0000000000
--- a/doc/supplements/sh/callconv.texi
+++ /dev/null
@@ -1,102 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Calling Conventions
-
-@section Introduction
-
-Each high-level language compiler generates
-subroutine entry and exit code based upon a set of rules known
-as the compiler's calling convention. These rules address the
-following issues:
-
-@itemize @bullet
-@item register preservation and usage
-@item parameter passing
-@item call and return mechanism
-@end itemize
-
-A compiler's calling convention is of importance when
-interfacing to subroutines written in another language either
-assembly or high-level. Even when the high-level language and
-target processor are the same, different compilers may use
-different calling conventions. As a result, calling conventions
-are both processor and compiler dependent.
-
-The Hitachi SH architecture supports a simple yet
-effective call and return mechanism. A subroutine is invoked
-via the branch to subroutine (XXX) or the jump to subroutine
-(XXX) instructions. These instructions push the return address
-on the current stack. The return from subroutine (rts)
-instruction pops the return address off the current stack and
-transfers control to that instruction. It is is important to
-note that the MC68xxx call and return mechanism does not
-automatically save or restore any registers. It is the
-responsibility of the high-level language compiler to define the
-register preservation and usage convention.
-
-@section Calling Mechanism
-
-All RTEMS directives are invoked using either a bsr
-or jsr instruction and return to the user application via the
-rts instruction.
-
-@section Register Usage
-
-As discussed above, the bsr and jsr instructions do
-not automatically save any registers. RTEMS uses the registers
-D0, D1, A0, and A1 as scratch registers. These registers are
-not preserved by RTEMS directives therefore, the contents of
-these registers should not be assumed upon return from any RTEMS
-directive.
-
-
-> > The SH1 has 16 general registers (r0..r15)
-> > r0..r3 used as general volatile registers
-> > r4..r7 used to pass up to 4 arguments to functions, arguments above 4 are
-> > passed via the stack)
-> > r8..13 caller saved registers (i.e. push them to the stack if you need them
-> > inside of a function)
-> > r14 frame pointer
-> > r15 stack pointer
->
-
-
-@section Parameter Passing
-
-RTEMS assumes that arguments are placed on the
-current stack before the directive is invoked via the bsr or jsr
-instruction. The first argument is assumed to be closest to the
-return address on the stack. This means that the first argument
-of the C calling sequence is pushed last. The following
-pseudo-code illustrates the typical sequence used to call a
-RTEMS directive with three (3) arguments:
-
-@example
-@group
-push third argument
-push second argument
-push first argument
-invoke directive
-remove arguments from the stack
-@end group
-@end example
-
-The arguments to RTEMS are typically pushed onto the
-stack using a move instruction with a pre-decremented stack
-pointer as the destination. These arguments must be removed
-from the stack after control is returned to the caller. This
-removal is typically accomplished by adding the size of the
-argument list in bytes to the current stack pointer.
-
-@section User-Provided Routines
-
-All user-provided routines invoked by RTEMS, such as
-user extensions, device drivers, and MPCI routines, must also
-adhere to these calling conventions.
-
diff --git a/doc/supplements/sparc/ERC32_TIMES b/doc/supplements/sparc/ERC32_TIMES
deleted file mode 100644
index 4f9ce4c98b..0000000000
--- a/doc/supplements/sparc/ERC32_TIMES
+++ /dev/null
@@ -1,247 +0,0 @@
-#
-# SPARC/ERC32/SIS Timing and Size Information
-#
-# $Id$
-#
-
-#
-# CPU Model Information
-#
-RTEMS_BSP ERC32
-RTEMS_CPU_MODEL ERC32
-#
-# Interrupt Latency
-#
-# NOTE: In general, the text says it is hand-calculated to be
-# RTEMS_MAXIMUM_DISABLE_PERIOD at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-# Mhz and this was last calculated for Release
-# RTEMS_VERSION_FOR_MAXIMUM_DISABLE_PERIOD.
-#
-RTEMS_MAXIMUM_DISABLE_PERIOD TBD
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ 15.0
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD 4.2.0-prerelease
-#
-# Context Switch Times
-#
-RTEMS_NO_FP_CONTEXTS 21
-RTEMS_RESTORE_1ST_FP_TASK 26
-RTEMS_SAVE_INIT_RESTORE_INIT 24
-RTEMS_SAVE_IDLE_RESTORE_INIT 23
-RTEMS_SAVE_IDLE_RESTORE_IDLE 33
-#
-# Task Manager Times
-#
-RTEMS_TASK_CREATE_ONLY 59
-RTEMS_TASK_IDENT_ONLY 163
-RTEMS_TASK_START_ONLY 30
-RTEMS_TASK_RESTART_CALLING_TASK 64
-RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER 36
-RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER 47
-RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER 37
-RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER 77
-RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER 84
-RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER 75
-RTEMS_TASK_DELETE_CALLING_TASK 91
-RTEMS_TASK_DELETE_SUSPENDED_TASK 47
-RTEMS_TASK_DELETE_BLOCKED_TASK 50
-RTEMS_TASK_DELETE_READY_TASK 51
-RTEMS_TASK_SUSPEND_CALLING_TASK 56
-RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER 16
-RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER 17
-RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER 52
-RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY 10
-RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER 25
-RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER 67
-RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE 5
-RTEMS_TASK_MODE_NO_RESCHEDULE 6
-RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER 9
-RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER 42
-RTEMS_TASK_GET_NOTE_ONLY 10
-RTEMS_TASK_SET_NOTE_ONLY 10
-RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER 6
-RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER 49
-RTEMS_TASK_WAKE_WHEN_ONLY 75
-#
-# Interrupt Manager
-#
-RTEMS_INTR_ENTRY_RETURNS_TO_NESTED 7
-RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK 8
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK 8
-RTEMS_INTR_EXIT_RETURNS_TO_NESTED 5
-RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK 7
-RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK 14
-#
-# Clock Manager
-#
-RTEMS_CLOCK_SET_ONLY 33
-RTEMS_CLOCK_GET_ONLY 4
-RTEMS_CLOCK_TICK_ONLY 6
-#
-# Timer Manager
-#
-RTEMS_TIMER_CREATE_ONLY 11
-RTEMS_TIMER_IDENT_ONLY 159
-RTEMS_TIMER_DELETE_INACTIVE 15
-RTEMS_TIMER_DELETE_ACTIVE 17
-RTEMS_TIMER_FIRE_AFTER_INACTIVE 21
-RTEMS_TIMER_FIRE_AFTER_ACTIVE 23
-RTEMS_TIMER_FIRE_WHEN_INACTIVE 34
-RTEMS_TIMER_FIRE_WHEN_ACTIVE 34
-RTEMS_TIMER_RESET_INACTIVE 20
-RTEMS_TIMER_RESET_ACTIVE 22
-RTEMS_TIMER_CANCEL_INACTIVE 10
-RTEMS_TIMER_CANCEL_ACTIVE 13
-#
-# Semaphore Manager
-#
-RTEMS_SEMAPHORE_CREATE_ONLY 19
-RTEMS_SEMAPHORE_IDENT_ONLY 171
-RTEMS_SEMAPHORE_DELETE_ONLY 19
-RTEMS_SEMAPHORE_OBTAIN_AVAILABLE 12
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT 12
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS 67
-RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS 14
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER 23
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER 57
-#
-# Message Manager
-#
-RTEMS_MESSAGE_QUEUE_CREATE_ONLY 114
-RTEMS_MESSAGE_QUEUE_IDENT_ONLY 159
-RTEMS_MESSAGE_QUEUE_DELETE_ONLY 25
-RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS 36
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER 38
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER 76
-RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS 36
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER 38
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER 76
-RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS 15
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER 42
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER 83
-RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE 30
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT 13
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 67
-RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED 9
-RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED 13
-#
-# Event Manager
-#
-RTEMS_EVENT_SEND_NO_TASK_READIED 9
-RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER 22
-RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER 58
-RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS 1
-RTEMS_EVENT_RECEIVE_AVAILABLE 10
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT 9
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 60
-#
-# Signal Manager
-#
-RTEMS_SIGNAL_CATCH_ONLY 6
-RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER 14
-RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF 22
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK 27
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK 56
-#
-# Partition Manager
-#
-RTEMS_PARTITION_CREATE_ONLY 34
-RTEMS_PARTITION_IDENT_ONLY 159
-RTEMS_PARTITION_DELETE_ONLY 14
-RTEMS_PARTITION_GET_BUFFER_AVAILABLE 12
-RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE 10
-RTEMS_PARTITION_RETURN_BUFFER_ONLY 16
-#
-# Region Manager
-#
-RTEMS_REGION_CREATE_ONLY 22
-RTEMS_REGION_IDENT_ONLY 162
-RTEMS_REGION_DELETE_ONLY 14
-RTEMS_REGION_GET_SEGMENT_AVAILABLE 19
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT 19
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS 67
-RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS 17
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER 44
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER 77
-#
-# Dual-Ported Memory Manager
-#
-RTEMS_PORT_CREATE_ONLY 14
-RTEMS_PORT_IDENT_ONLY 159
-RTEMS_PORT_DELETE_ONLY 13
-RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY 9
-RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY 9
-#
-# IO Manager
-#
-RTEMS_IO_INITIALIZE_ONLY 2
-RTEMS_IO_OPEN_ONLY 1
-RTEMS_IO_CLOSE_ONLY 1
-RTEMS_IO_READ_ONLY 1
-RTEMS_IO_WRITE_ONLY 1
-RTEMS_IO_CONTROL_ONLY 1
-#
-# Rate Monotonic Manager
-#
-RTEMS_RATE_MONOTONIC_CREATE_ONLY 12
-RTEMS_RATE_MONOTONIC_IDENT_ONLY 159
-RTEMS_RATE_MONOTONIC_CANCEL_ONLY 14
-RTEMS_RATE_MONOTONIC_DELETE_ACTIVE 19
-RTEMS_RATE_MONOTONIC_DELETE_INACTIVE 16
-RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER 20
-RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS 55
-RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS 9
-#
-# Size Information
-#
-#
-# xxx alloted for numbers
-#
-RTEMS_DATA_SPACE 9059
-RTEMS_MINIMUM_CONFIGURATION 28,288
-RTEMS_MAXIMUM_CONFIGURATION 50,432
-# x,xxx alloted for numbers
-RTEMS_CORE_CODE_SIZE 20,336
-RTEMS_INITIALIZATION_CODE_SIZE 1,408
-RTEMS_TASK_CODE_SIZE 4,496
-RTEMS_INTERRUPT_CODE_SIZE 72
-RTEMS_CLOCK_CODE_SIZE 576
-RTEMS_TIMER_CODE_SIZE 1,336
-RTEMS_SEMAPHORE_CODE_SIZE 1,888
-RTEMS_MESSAGE_CODE_SIZE 2,032
-RTEMS_EVENT_CODE_SIZE 1,696
-RTEMS_SIGNAL_CODE_SIZE 664
-RTEMS_PARTITION_CODE_SIZE 1,368
-RTEMS_REGION_CODE_SIZE 1,736
-RTEMS_DPMEM_CODE_SIZE 872
-RTEMS_IO_CODE_SIZE 1,144
-RTEMS_FATAL_ERROR_CODE_SIZE 32
-RTEMS_RATE_MONOTONIC_CODE_SIZE 1,656
-RTEMS_MULTIPROCESSING_CODE_SIZE 8,328
-# xxx alloted for numbers
-RTEMS_TIMER_CODE_OPTSIZE 208
-RTEMS_SEMAPHORE_CODE_OPTSIZE 192
-RTEMS_MESSAGE_CODE_OPTSIZE 320
-RTEMS_EVENT_CODE_OPTSIZE 64
-RTEMS_SIGNAL_CODE_OPTSIZE 64
-RTEMS_PARTITION_CODE_OPTSIZE 152
-RTEMS_REGION_CODE_OPTSIZE 176
-RTEMS_DPMEM_CODE_OPTSIZE 152
-RTEMS_IO_CODE_OPTSIZE 00
-RTEMS_RATE_MONOTONIC_CODE_OPTSIZE 208
-RTEMS_MULTIPROCESSING_CODE_OPTSIZE 408
-# xxx alloted for numbers
-RTEMS_BYTES_PER_TASK 488
-RTEMS_BYTES_PER_TIMER 68
-RTEMS_BYTES_PER_SEMAPHORE 124
-RTEMS_BYTES_PER_MESSAGE_QUEUE 148
-RTEMS_BYTES_PER_REGION 144
-RTEMS_BYTES_PER_PARTITION 56
-RTEMS_BYTES_PER_PORT 36
-RTEMS_BYTES_PER_PERIOD 36
-RTEMS_BYTES_PER_EXTENSION 64
-RTEMS_BYTES_PER_FP_TASK 136
-RTEMS_BYTES_PER_NODE 48
-RTEMS_BYTES_PER_GLOBAL_OBJECT 20
-RTEMS_BYTES_PER_PROXY 124
-# x,xxx alloted for numbers
-RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS 10,072
diff --git a/doc/supplements/sparc/Makefile b/doc/supplements/sparc/Makefile
deleted file mode 100644
index 1e6c486747..0000000000
--- a/doc/supplements/sparc/Makefile
+++ /dev/null
@@ -1,158 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=sparc
-DISTRIBUTION_LEVEL=support
-
-include ../../Make.config
-
-REPLACE=../../tools/word-replace
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../../common/cpright.texi ../../common/setup.texi
-
-GENERATED_FILES=\
- cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \
- bsp.texi cputable.texi timing.texi wksheets.texi timeERC32.texi
-
-FILES= $(PROJECT).texi \
- preface.texi \
- $(GENERATED_FILES)
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs c_sparc
- cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL)
-
-c_sparc: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: dirs $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/c_$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/c_$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-*
- rm -f c_$(PROJECT) c_$(PROJECT)-*
- rm -f intr.t $(GENERATED_FILES)
- rm -f wksheets.t wksheets_NOTIMES.t timing.t
- rm -f timeERC32_.t timeERC32_.texi
- rm -f *.fixed _*
-
-#
-# Chapters which get automatic processing
-#
-
-cpumodel.texi: cpumodel.t Makefile
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Calling Conventions" ${*}.t
-
-callconv.texi: callconv.t Makefile
- $(BMENU) -p "CPU Model Dependent Features CPU Model Implementation Notes" \
- -u "Top" \
- -n "Memory Model" ${*}.t
-
-memmodel.texi: memmodel.t Makefile
- $(BMENU) -p "Calling Conventions User-Provided Routines" \
- -u "Top" \
- -n "Interrupt Processing" ${*}.t
-
-# Interrupt Chapter:
-# 1. Replace Times and Sizes
-# 2. Build Node Structure
-intr.t: intr_NOTIMES.t ERC32_TIMES
- ${REPLACE} -p ERC32_TIMES intr_NOTIMES.t
- mv intr_NOTIMES.t.fixed intr.t
-
-intr.texi: intr.t Makefile
- $(BMENU) -p "Memory Model Flat Memory Model" \
- -u "Top" \
- -n "Default Fatal Error Processing" ${*}.t
-
-fatalerr.texi: fatalerr.t Makefile
- $(BMENU) -p "Interrupt Processing Interrupt Stack" \
- -u "Top" \
- -n "Board Support Packages" ${*}.t
-
-bsp.texi: bsp.t Makefile
- $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \
- -u "Top" \
- -n "Processor Dependent Information Table" ${*}.t
-
-cputable.texi: cputable.t Makefile
- $(BMENU) -p "Board Support Packages Processor Initialization" \
- -u "Top" \
- -n "Memory Requirements" ${*}.t
-
-
-# Worksheets Chapter:
-# 1. Obtain the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-wksheets_NOTIMES.t: ../../common/wksheets.t
- cp ../../common/wksheets.t wksheets_NOTIMES.t
-
-wksheets.t: wksheets_NOTIMES.t ERC32_TIMES
- ${REPLACE} -p ERC32_TIMES wksheets_NOTIMES.t
- mv wksheets_NOTIMES.t.fixed wksheets.t
-
-wksheets.texi: wksheets.t Makefile
- $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \
- -u "Top" \
- -n "Timing Specification" ${*}.t
-
-# Timing Specification Chapter:
-# 1. Copy the Shared File
-# 3. Build Node Structure
-
-timing.t: ../../common/timing.t
- cp ../../common/timing.t timing.t
-
-timing.texi: timing.t Makefile
- $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \
- -u "Top" \
- -n "ERC32 Timing Data" ${*}.t
-
-# Timing Data for ERC32 BSP Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-timeERC32_.t: ../../common/timetbl.t timeERC32.t
- cat timeERC32.t ../../common/timetbl.t >timeERC32_.t
- @echo >>timeERC32_.t
- @echo "@tex" >>timeERC32_.t
- @echo "\\global\\advance \\smallskipamount by 4pt" >>timeERC32_.t
- @echo "@end tex" >>timeERC32_.t
- ${REPLACE} -p ERC32_TIMES timeERC32_.t
- mv timeERC32_.t.fixed timeERC32_.t
-
-timeERC32.texi: timeERC32_.t Makefile
- $(BMENU) -p "Timing Specification Terminology" \
- -u "Top" \
- -n "Command and Variable Index" timeERC32_.t
- mv timeERC32_.texi timeERC32.texi
diff --git a/doc/supplements/sparc/bsp.t b/doc/supplements/sparc/bsp.t
deleted file mode 100644
index 2ba100edbd..0000000000
--- a/doc/supplements/sparc/bsp.t
+++ /dev/null
@@ -1,87 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Board Support Packages
-
-@section Introduction
-
-An RTEMS Board Support Package (BSP) must be designed
-to support a particular processor and target board combination.
-This chapter presents a discussion of SPARC specific BSP issues.
-For more information on developing a BSP, refer to the chapter
-titled Board Support Packages in the RTEMS
-Applications User's Guide.
-
-@section System Reset
-
-An RTEMS based application is initiated or
-re-initiated when the SPARC processor is reset. When the SPARC
-is reset, the processor performs the following actions:
-
-@itemize @bullet
-@item the enable trap (ET) of the psr is set to 0 to disable
-traps,
-
-@item the supervisor bit (S) of the psr is set to 1 to enter
-supervisor mode, and
-
-@item the PC is set 0 and the nPC is set to 4.
-@end itemize
-
-The processor then begins to execute the code at
-location 0. It is important to note that all fields in the psr
-are not explicitly set by the above steps and all other
-registers retain their value from the previous execution mode.
-This is true even of the Trap Base Register (TBR) whose contents
-reflect the last trap which occurred before the reset.
-
-@section Processor Initialization
-
-It is the responsibility of the application's
-initialization code to initialize the TBR and install trap
-handlers for at least the register window overflow and register
-window underflow conditions. Traps should be enabled before
-invoking any subroutines to allow for register window
-management. However, interrupts should be disabled by setting
-the Processor Interrupt Level (pil) field of the psr to 15.
-RTEMS installs it's own Trap Table as part of initialization
-which is initialized with the contents of the Trap Table in
-place when the @code{rtems_initialize_executive} directive was invoked.
-Upon completion of executive initialization, interrupts are
-enabled.
-
-If this SPARC implementation supports on-chip caching
-and this is to be utilized, then it should be enabled during the
-reset application initialization code.
-
-In addition to the requirements described in the
-Board Support Packages chapter of the @value{LANGUAGE}
-Applications User's Manual for the reset code
-which is executed before the call to
-@code{rtems_initialize_executive}, the SPARC version has the following
-specific requirements:
-
-@itemize @bullet
-@item Must leave the S bit of the status register set so that
-the SPARC remains in the supervisor state.
-
-@item Must set stack pointer (sp) such that a minimum stack
-size of MINIMUM_STACK_SIZE bytes is provided for the
-@code{rtems_initialize_executive} directive.
-
-@item Must disable all external interrupts (i.e. set the pil
-to 15).
-
-@item Must enable traps so window overflow and underflow
-conditions can be properly handled.
-
-@item Must initialize the SPARC's initial trap table with at
-least trap handlers for register window overflow and register
-window underflow.
-@end itemize
-
diff --git a/doc/supplements/sparc/callconv.t b/doc/supplements/sparc/callconv.t
deleted file mode 100644
index 030f9f9b5a..0000000000
--- a/doc/supplements/sparc/callconv.t
+++ /dev/null
@@ -1,392 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Calling Conventions
-
-@section Introduction
-
-Each high-level language compiler generates
-subroutine entry and exit code based upon a set of rules known
-as the compiler's calling convention. These rules address the
-following issues:
-
-@itemize @bullet
-@item register preservation and usage
-
-@item parameter passing
-
-@item call and return mechanism
-@end itemize
-
-A compiler's calling convention is of importance when
-interfacing to subroutines written in another language either
-assembly or high-level. Even when the high-level language and
-target processor are the same, different compilers may use
-different calling conventions. As a result, calling conventions
-are both processor and compiler dependent.
-
-@section Programming Model
-
-This section discusses the programming model for the
-SPARC architecture.
-
-@subsection Non-Floating Point Registers
-
-The SPARC architecture defines thirty-two
-non-floating point registers directly visible to the programmer.
-These are divided into four sets:
-
-@itemize @bullet
-@item input registers
-
-@item local registers
-
-@item output registers
-
-@item global registers
-@end itemize
-
-Each register is referred to by either two or three
-names in the SPARC reference manuals. First, the registers are
-referred to as r0 through r31 or with the alternate notation
-r[0] through r[31]. Second, each register is a member of one of
-the four sets listed above. Finally, some registers have an
-architecturally defined role in the programming model which
-provides an alternate name. The following table describes the
-mapping between the 32 registers and the register sets:
-
-@ifset use-ascii
-@example
-@group
- +-----------------+----------------+------------------+
- | Register Number | Register Names | Description |
- +-----------------+----------------+------------------+
- | 0 - 7 | g0 - g7 | Global Registers |
- +-----------------+----------------+------------------+
- | 8 - 15 | o0 - o7 | Output Registers |
- +-----------------+----------------+------------------+
- | 16 - 23 | l0 - l7 | Local Registers |
- +-----------------+----------------+------------------+
- | 24 - 31 | i0 - i7 | Input Registers |
- +-----------------+----------------+------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-&\bf Register Number &&\bf Register Names&&\bf Description&\cr\noalign{\hrule}
-&0 - 7&&g0 - g7&&Global Registers&\cr\noalign{\hrule}
-&8 - 15&&o0 - o7&&Output Registers&\cr\noalign{\hrule}
-&16 - 23&&l0 - l7&&Local Registers&\cr\noalign{\hrule}
-&24 - 31&&i0 - i7&&Input Registers&\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=3 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Register Number</STRONG></TD>
- <TD ALIGN=center><STRONG>Register Names</STRONG></TD>
- <TD ALIGN=center><STRONG>Description</STRONG></TD>
-<TR><TD ALIGN=center>0 - 7</TD>
- <TD ALIGN=center>g0 - g7</TD>
- <TD ALIGN=center>Global Registers</TD></TR>
-<TR><TD ALIGN=center>8 - 15</TD>
- <TD ALIGN=center>o0 - o7</TD>
- <TD ALIGN=center>Output Registers</TD></TR>
-<TR><TD ALIGN=center>16 - 23</TD>
- <TD ALIGN=center>l0 - l7</TD>
- <TD ALIGN=center>Local Registers</TD></TR>
-<TR><TD ALIGN=center>24 - 31</TD>
- <TD ALIGN=center>i0 - i7</TD>
- <TD ALIGN=center>Input Registers</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-As mentioned above, some of the registers serve
-defined roles in the programming model. The following table
-describes the role of each of these registers:
-
-@ifset use-ascii
-@example
-@group
- +---------------+----------------+----------------------+
- | Register Name | Alternate Name | Description |
- +---------------+----------------+----------------------+
- | g0 | na | reads return 0 |
- | | | writes are ignored |
- +---------------+----------------+----------------------+
- | o6 | sp | stack pointer |
- +---------------+----------------+----------------------+
- | i6 | fp | frame pointer |
- +---------------+----------------+----------------------+
- | i7 | na | return address |
- +---------------+----------------+----------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-&\bf Register Name &&\bf Alternate Names&&\bf Description&\cr\noalign{\hrule}
-&g0&&NA&&reads return 0; &\cr
-&&&&&writes are ignored&\cr\noalign{\hrule}
-&o6&&sp&&stack pointer&\cr\noalign{\hrule}
-&i6&&fp&&frame pointer&\cr\noalign{\hrule}
-&i7&&NA&&return address&\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=3 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Register Name</STRONG></TD>
- <TD ALIGN=center><STRONG>Alternate Name</STRONG></TD>
- <TD ALIGN=center><STRONG>Description</STRONG></TD></TR>
-<TR><TD ALIGN=center>g0</TD>
- <TD ALIGN=center>NA</TD>
- <TD ALIGN=center>reads return 0 ; writes are ignored</TD></TR>
-<TR><TD ALIGN=center>o6</TD>
- <TD ALIGN=center>sp</TD>
- <TD ALIGN=center>stack pointer</TD></TR>
-<TR><TD ALIGN=center>i6</TD>
- <TD ALIGN=center>fp</TD>
- <TD ALIGN=center>frame pointer</TD></TR>
-<TR><TD ALIGN=center>i7</TD>
- <TD ALIGN=center>NA</TD>
- <TD ALIGN=center>return address</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-
-@subsection Floating Point Registers
-
-The SPARC V7 architecture includes thirty-two,
-thirty-two bit registers. These registers may be viewed as
-follows:
-
-@itemize @bullet
-@item 32 single precision floating point or integer registers
-(f0, f1, ... f31)
-
-@item 16 double precision floating point registers (f0, f2,
-f4, ... f30)
-
-@item 8 extended precision floating point registers (f0, f4,
-f8, ... f28)
-@end itemize
-
-The floating point status register (fpsr) specifies
-the behavior of the floating point unit for rounding, contains
-its condition codes, version specification, and trap information.
-
-A queue of the floating point instructions which have
-started execution but not yet completed is maintained. This
-queue is needed to support the multiple cycle nature of floating
-point operations and to aid floating point exception trap
-handlers. Once a floating point exception has been encountered,
-the queue is frozen until it is emptied by the trap handler.
-The floating point queue is loaded by launching instructions.
-It is emptied normally when the floating point completes all
-outstanding instructions and by floating point exception
-handlers with the store double floating point queue (stdfq)
-instruction.
-
-@subsection Special Registers
-
-The SPARC architecture includes two special registers
-which are critical to the programming model: the Processor State
-Register (psr) and the Window Invalid Mask (wim). The psr
-contains the condition codes, processor interrupt level, trap
-enable bit, supervisor mode and previous supervisor mode bits,
-version information, floating point unit and coprocessor enable
-bits, and the current window pointer (cwp). The cwp field of
-the psr and wim register are used to manage the register windows
-in the SPARC architecture. The register windows are discussed
-in more detail below.
-
-@section Register Windows
-
-The SPARC architecture includes the concept of
-register windows. An overly simplistic way to think of these
-windows is to imagine them as being an infinite supply of
-"fresh" register sets available for each subroutine to use. In
-reality, they are much more complicated.
-
-The save instruction is used to obtain a new register
-window. This instruction decrements the current window pointer,
-thus providing a new set of registers for use. This register
-set includes eight fresh local registers for use exclusively by
-this subroutine. When done with a register set, the restore
-instruction increments the current window pointer and the
-previous register set is once again available.
-
-The two primary issues complicating the use of
-register windows are that (1) the set of register windows is
-finite, and (2) some registers are shared between adjacent
-registers windows.
-
-Because the set of register windows is finite, it is
-possible to execute enough save instructions without
-corresponding restore's to consume all of the register windows.
-This is easily accomplished in a high level language because
-each subroutine typically performs a save instruction upon
-entry. Thus having a subroutine call depth greater than the
-number of register windows will result in a window overflow
-condition. The window overflow condition generates a trap which
-must be handled in software. The window overflow trap handler
-is responsible for saving the contents of the oldest register
-window on the program stack.
-
-Similarly, the subroutines will eventually complete
-and begin to perform restore's. If the restore results in the
-need for a register window which has previously been written to
-memory as part of an overflow, then a window underflow condition
-results. Just like the window overflow, the window underflow
-condition must be handled in software by a trap handler. The
-window underflow trap handler is responsible for reloading the
-contents of the register window requested by the restore
-instruction from the program stack.
-
-The Window Invalid Mask (wim) and the Current Window
-Pointer (cwp) field in the psr are used in conjunction to manage
-the finite set of register windows and detect the window
-overflow and underflow conditions. The cwp contains the index
-of the register window currently in use. The save instruction
-decrements the cwp modulo the number of register windows.
-Similarly, the restore instruction increments the cwp modulo the
-number of register windows. Each bit in the wim represents
-represents whether a register window contains valid information.
-The value of 0 indicates the register window is valid and 1
-indicates it is invalid. When a save instruction causes the cwp
-to point to a register window which is marked as invalid, a
-window overflow condition results. Conversely, the restore
-instruction may result in a window underflow condition.
-
-Other than the assumption that a register window is
-always available for trap (i.e. interrupt) handlers, the SPARC
-architecture places no limits on the number of register windows
-simultaneously marked as invalid (i.e. number of bits set in the
-wim). However, RTEMS assumes that only one register window is
-marked invalid at a time (i.e. only one bit set in the wim).
-This makes the maximum possible number of register windows
-available to the user while still meeting the requirement that
-window overflow and underflow conditions can be detected.
-
-The window overflow and window underflow trap
-handlers are a critical part of the run-time environment for a
-SPARC application. The SPARC architectural specification allows
-for the number of register windows to be any power of two less
-than or equal to 32. The most common choice for SPARC
-implementations appears to be 8 register windows. This results
-in the cwp ranging in value from 0 to 7 on most implementations.
-
-
-The second complicating factor is the sharing of
-registers between adjacent register windows. While each
-register window has its own set of local registers, the input
-and output registers are shared between adjacent windows. The
-output registers for register window N are the same as the input
-registers for register window ((N - 1) modulo RW) where RW is
-the number of register windows. An alternative way to think of
-this is to remember how parameters are passed to a subroutine on
-the SPARC. The caller loads values into what are its output
-registers. Then after the callee executes a save instruction,
-those parameters are available in its input registers. This is
-a very efficient way to pass parameters as no data is actually
-moved by the save or restore instructions.
-
-@section Call and Return Mechanism
-
-The SPARC architecture supports a simple yet
-effective call and return mechanism. A subroutine is invoked
-via the call (call) instruction. This instruction places the
-return address in the caller's output register 7 (o7). After
-the callee executes a save instruction, this value is available
-in input register 7 (i7) until the corresponding restore
-instruction is executed.
-
-The callee returns to the caller via a jmp to the
-return address. There is a delay slot following this
-instruction which is commonly used to execute a restore
-instruction -- if a register window was allocated by this
-subroutine.
-
-It is important to note that the SPARC subroutine
-call and return mechanism does not automatically save and
-restore any registers. This is accomplished via the save and
-restore instructions which manage the set of registers windows.
-
-@section Calling Mechanism
-
-All RTEMS directives are invoked using the regular
-SPARC calling convention via the call instruction.
-
-@section Register Usage
-
-As discussed above, the call instruction does not
-automatically save any registers. The save and restore
-instructions are used to allocate and deallocate register
-windows. When a register window is allocated, the new set of
-local registers are available for the exclusive use of the
-subroutine which allocated this register set.
-
-@section Parameter Passing
-
-RTEMS assumes that arguments are placed in the
-caller's output registers with the first argument in output
-register 0 (o0), the second argument in output register 1 (o1),
-and so forth. Until the callee executes a save instruction, the
-parameters are still visible in the output registers. After the
-callee executes a save instruction, the parameters are visible
-in the corresponding input registers. The following pseudo-code
-illustrates the typical sequence used to call a RTEMS directive
-with three (3) arguments:
-
-@example
-load third argument into o2
-load second argument into o1
-load first argument into o0
-invoke directive
-@end example
-
-@section User-Provided Routines
-
-All user-provided routines invoked by RTEMS, such as
-user extensions, device drivers, and MPCI routines, must also
-adhere to these calling conventions.
-
diff --git a/doc/supplements/sparc/cpumodel.t b/doc/supplements/sparc/cpumodel.t
deleted file mode 100644
index 2871b08e7e..0000000000
--- a/doc/supplements/sparc/cpumodel.t
+++ /dev/null
@@ -1,128 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter CPU Model Dependent Features
-
-@section Introduction
-
-Microprocessors are generally classified into
-families with a variety of CPU models or implementations within
-that family. Within a processor family, there is a high level
-of binary compatibility. This family may be based on either an
-architectural specification or on maintaining compatibility with
-a popular processor. Recent microprocessor families such as the
-SPARC or PA-RISC are based on an architectural specification
-which is independent or any particular CPU model or
-implementation. Older families such as the M68xxx and the iX86
-evolved as the manufacturer strived to produce higher
-performance processor models which maintained binary
-compatibility with older models.
-
-RTEMS takes advantage of the similarity of the
-various models within a CPU family. Although the models do vary
-in significant ways, the high level of compatibility makes it
-possible to share the bulk of the CPU dependent executive code
-across the entire family.
-
-@section CPU Model Feature Flags
-
-Each processor family supported by RTEMS has a
-list of features which vary between CPU models
-within a family. For example, the most common model dependent
-feature regardless of CPU family is the presence or absence of a
-floating point unit or coprocessor. When defining the list of
-features present on a particular CPU model, one simply notes
-that floating point hardware is or is not present and defines a
-single constant appropriately. Conditional compilation is
-utilized to include the appropriate source code for this CPU
-model's feature set. It is important to note that this means
-that RTEMS is thus compiled using the appropriate feature set
-and compilation flags optimal for this CPU model used. The
-alternative would be to generate a binary which would execute on
-all family members using only the features which were always
-present.
-
-This section presents the set of features which vary
-across SPARC implementations and are of importance to RTEMS.
-The set of CPU model feature macros are defined in the file
-c/src/exec/score/cpu/sparc/sparc.h based upon the particular CPU
-model defined on the compilation command line.
-
-@subsection CPU Model Name
-
-The macro CPU_MODEL_NAME is a string which designates
-the name of this CPU model. For example, for the European Space
-Agency's ERC32 SPARC model, this macro is set to the string
-"erc32".
-
-@subsection Floating Point Unit
-
-The macro SPARC_HAS_FPU is set to 1 to indicate that
-this CPU model has a hardware floating point unit and 0
-otherwise.
-
-@subsection Bitscan Instruction
-
-The macro SPARC_HAS_BITSCAN is set to 1 to indicate
-that this CPU model has the bitscan instruction. For example,
-this instruction is supported by the Fujitsu SPARClite family.
-
-@subsection Number of Register Windows
-
-The macro SPARC_NUMBER_OF_REGISTER_WINDOWS is set to
-indicate the number of register window sets implemented by this
-CPU model. The SPARC architecture allows a for a maximum of
-thirty-two register window sets although most implementations
-only include eight.
-
-@subsection Low Power Mode
-
-The macro SPARC_HAS_LOW_POWER_MODE is set to one to
-indicate that this CPU model has a low power mode. If low power
-is enabled, then there must be CPU model specific implementation
-of the IDLE task in c/src/exec/score/cpu/sparc/cpu.c. The low
-power mode IDLE task should be of the form:
-
-@example
-while ( TRUE ) @{
- enter low power mode
-@}
-@end example
-
-The code required to enter low power mode is CPU model specific.
-
-@section CPU Model Implementation Notes
-
-The ERC32 is a custom SPARC V7 implementation based on the Cypress 601/602
-chipset. This CPU has a number of on-board peripherals and was developed by
-the European Space Agency to target space applications. RTEMS currently
-provides support for the following peripherals:
-
-@itemize @bullet
-@item UART Channels A and B
-@item General Purpose Timer
-@item Real Time Clock
-@item Watchdog Timer (so it can be disabled)
-@item Control Register (so powerdown mode can be enabled)
-@item Memory Control Register
-@item Interrupt Control
-@end itemize
-
-The General Purpose Timer and Real Time Clock Timer provided with the ERC32
-share the Timer Control Register. Because the Timer Control Register is write
-only, we must mirror it in software and insure that writes to one timer do not
-alter the current settings and status of the other timer. Routines are
-provided in erc32.h which promote the view that the two timers are completely
-independent. By exclusively using these routines to access the Timer Control
-Register, the application can view the system as having a General Purpose
-Timer Control Register and a Real Time Clock Timer Control Register
-rather than the single shared value.
-
-The RTEMS Idle thread take advantage of the low power mode provided by the
-ERC32. Low power mode is entered during idle loops and is enabled at
-initialization time.
diff --git a/doc/supplements/sparc/cputable.t b/doc/supplements/sparc/cputable.t
deleted file mode 100644
index 4e37375c9c..0000000000
--- a/doc/supplements/sparc/cputable.t
+++ /dev/null
@@ -1,104 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Processor Dependent Information Table
-
-@section Introduction
-
-Any highly processor dependent information required
-to describe a processor to RTEMS is provided in the CPU
-Dependent Information Table. This table is not required for all
-processors supported by RTEMS. This chapter describes the
-contents, if any, for a particular processor type.
-
-@section CPU Dependent Information Table
-
-The SPARC version of the RTEMS CPU Dependent
-Information Table is given by the C structure definition is
-shown below:
-
-@example
-@group
-typedef struct @{
- void (*pretasking_hook)( void );
- void (*predriver_hook)( void );
- void (*postdriver_hook)( void );
- void (*idle_task)( void );
- boolean do_zero_of_workspace;
- unsigned32 idle_task_stack_size;
- unsigned32 interrupt_stack_size;
- unsigned32 extra_mpci_receive_server_stack;
- void * (*stack_allocate_hook)( unsigned32 );
- void (*stack_free_hook)( void* );
- /* end of fields required on all CPUs */
-
-@} rtems_cpu_table;
-@end group
-@end example
-
-@table @code
-@item pretasking_hook
-is the address of the
-user provided routine which is invoked once RTEMS initialization
-is complete but before interrupts and tasking are enabled. This
-field may be NULL to indicate that the hook is not utilized.
-
-@item predriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately before
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-but no device drivers are initialized. This field may be NULL to
-indicate that the hook is not utilized.
-
-@item postdriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately after
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-and the device drivers are initialized. This field may be NULL
-to indicate that the hook is not utilized.
-
-@item idle_task
-is the address of the optional user
-provided routine which is used as the system's IDLE task. If
-this field is not NULL, then the RTEMS default IDLE task is not
-used. This field may be NULL to indicate that the default IDLE
-is to be used.
-
-@item do_zero_of_workspace
-indicates whether RTEMS should
-zero the Workspace as part of its initialization. If set to
-TRUE, the Workspace is zeroed. Otherwise, it is not.
-
-@item idle_task_stack_size
-is the size of the RTEMS idle task stack in bytes.
-If this number is less than MINIMUM_STACK_SIZE, then the
-idle task's stack will be MINIMUM_STACK_SIZE in byte.
-
-@item interrupt_stack_size
-is the size of the RTEMS allocated interrupt stack in bytes.
-This value must be at least as large as MINIMUM_STACK_SIZE.
-
-@item extra_mpci_receive_server_stack
-is the extra stack space allocated for the RTEMS MPCI receive server task
-in bytes. The MPCI receive server may invoke nearly all directives and
-may require extra stack space on some targets.
-
-@item stack_allocate_hook
-is the address of the optional user provided routine which allocates
-memory for task stacks. If this hook is not NULL, then a stack_free_hook
-must be provided as well.
-
-@item stack_free_hook
-is the address of the optional user provided routine which frees
-memory for task stacks. If this hook is not NULL, then a stack_allocate_hook
-must be provided as well.
-
-@end table
-
diff --git a/doc/supplements/sparc/fatalerr.t b/doc/supplements/sparc/fatalerr.t
deleted file mode 100644
index eb035b3596..0000000000
--- a/doc/supplements/sparc/fatalerr.t
+++ /dev/null
@@ -1,32 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Default Fatal Error Processing
-
-@section Introduction
-
-Upon detection of a fatal error by either the
-application or RTEMS the fatal error manager is invoked. The
-fatal error manager will invoke the user-supplied fatal error
-handlers. If no user-supplied handlers are configured, the
-RTEMS provided default fatal error handler is invoked. If the
-user-supplied fatal error handlers return to the executive the
-default fatal error handler is then invoked. This chapter
-describes the precise operations of the default fatal error
-handler.
-
-@section Default Fatal Error Handler Operations
-
-The default fatal error handler which is invoked by
-the fatal_error_occurred directive when there is no user handler
-configured or the user handler returns control to RTEMS. The
-default fatal error handler disables processor interrupts to
-level 15, places the error code in g1, and goes into an infinite
-loop to simulate a halt processor instruction.
-
-
diff --git a/doc/supplements/sparc/intr_NOTIMES.t b/doc/supplements/sparc/intr_NOTIMES.t
deleted file mode 100644
index 4a4b0086a2..0000000000
--- a/doc/supplements/sparc/intr_NOTIMES.t
+++ /dev/null
@@ -1,199 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Interrupt Processing
-
-@section Introduction
-
-Different types of processors respond to the
-occurrence of an interrupt in its own unique fashion. In
-addition, each processor type provides a control mechanism to
-allow for the proper handling of an interrupt. The processor
-dependent response to the interrupt modifies the current
-execution state and results in a change in the execution stream.
-Most processors require that an interrupt handler utilize some
-special control mechanisms to return to the normal processing
-stream. Although RTEMS hides many of the processor dependent
-details of interrupt processing, it is important to understand
-how the RTEMS interrupt manager is mapped onto the processor's
-unique architecture. Discussed in this chapter are the SPARC's
-interrupt response and control mechanisms as they pertain to
-RTEMS.
-
-RTEMS and associated documentation uses the terms
-interrupt and vector. In the SPARC architecture, these terms
-correspond to traps and trap type, respectively. The terms will
-be used interchangeably in this manual.
-
-@section Synchronous Versus Asynchronous Traps
-
-The SPARC architecture includes two classes of traps:
-synchronous and asynchronous. Asynchronous traps occur when an
-external event interrupts the processor. These traps are not
-associated with any instruction executed by the processor and
-logically occur between instructions. The instruction currently
-in the execute stage of the processor is allowed to complete
-although subsequent instructions are annulled. The return
-address reported by the processor for asynchronous traps is the
-pair of instructions following the current instruction.
-
-Synchronous traps are caused by the actions of an
-instruction. The trap stimulus in this case either occurs
-internally to the processor or is from an external signal that
-was provoked by the instruction. These traps are taken
-immediately and the instruction that caused the trap is aborted
-before any state changes occur in the processor itself. The
-return address reported by the processor for synchronous traps
-is the instruction which caused the trap and the following
-instruction.
-
-@section Vectoring of Interrupt Handler
-
-Upon receipt of an interrupt the SPARC automatically
-performs the following actions:
-
-@itemize @bullet
-@item disables traps (sets the ET bit of the psr to 0),
-
-@item the S bit of the psr is copied into the Previous
-Supervisor Mode (PS) bit of the psr,
-
-@item the cwp is decremented by one (modulo the number of
-register windows) to activate a trap window,
-
-@item the PC and nPC are loaded into local register 1 and 2
-(l0 and l1),
-
-@item the trap type (tt) field of the Trap Base Register (TBR)
-is set to the appropriate value, and
-
-@item if the trap is not a reset, then the PC is written with
-the contents of the TBR and the nPC is written with TBR + 4. If
-the trap is a reset, then the PC is set to zero and the nPC is
-set to 4.
-@end itemize
-
-Trap processing on the SPARC has two features which
-are noticeably different than interrupt processing on other
-architectures. First, the value of psr register in effect
-immediately before the trap occurred is not explicitly saved.
-Instead only reversible alterations are made to it. Second, the
-Processor Interrupt Level (pil) is not set to correspond to that
-of the interrupt being processed. When a trap occurs, ALL
-subsequent traps are disabled. In order to safely invoke a
-subroutine during trap handling, traps must be enabled to allow
-for the possibility of register window overflow and underflow
-traps.
-
-If the interrupt handler was installed as an RTEMS
-interrupt handler, then upon receipt of the interrupt, the
-processor passes control to the RTEMS interrupt handler which
-performs the following actions:
-
-@itemize @bullet
-@item saves the state of the interrupted task on it's stack,
-
-@item insures that a register window is available for
-subsequent traps,
-
-@item if this is the outermost (i.e. non-nested) interrupt,
-then the RTEMS interrupt handler switches from the current stack
-to the interrupt stack,
-
-@item enables traps,
-
-@item invokes the vectors to a user interrupt service routine (ISR).
-@end itemize
-
-Asynchronous interrupts are ignored while traps are
-disabled. Synchronous traps which occur while traps are
-disabled result in the CPU being forced into an error mode.
-
-A nested interrupt is processed similarly with the
-exception that the current stack need not be switched to the
-interrupt stack.
-
-@section Traps and Register Windows
-
-One of the register windows must be reserved at all
-times for trap processing. This is critical to the proper
-operation of the trap mechanism in the SPARC architecture. It
-is the responsibility of the trap handler to insure that there
-is a register window available for a subsequent trap before
-re-enabling traps. It is likely that any high level language
-routines invoked by the trap handler (such as a user-provided
-RTEMS interrupt handler) will allocate a new register window.
-The save operation could result in a window overflow trap. This
-trap cannot be correctly processed unless (1) traps are enabled
-and (2) a register window is reserved for traps. Thus, the
-RTEMS interrupt handler insures that a register window is
-available for subsequent traps before enabling traps and
-invoking the user's interrupt handler.
-
-@section Interrupt Levels
-
-Sixteen levels (0-15) of interrupt priorities are
-supported by the SPARC architecture with level fifteen (15)
-being the highest priority. Level zero (0) indicates that
-interrupts are fully enabled. Interrupt requests for interrupts
-with priorities less than or equal to the current interrupt mask
-level are ignored.
-
-Although RTEMS supports 256 interrupt levels, the
-SPARC only supports sixteen. RTEMS interrupt levels 0 through
-15 directly correspond to SPARC processor interrupt levels. All
-other RTEMS interrupt levels are undefined and their behavior is
-unpredictable.
-
-@section Disabling of Interrupts by RTEMS
-
-During the execution of directive calls, critical
-sections of code may be executed. When these sections are
-encountered, RTEMS disables interrupts to level seven (15)
-before the execution of this section and restores them to the
-previous level upon completion of the section. RTEMS has been
-optimized to insure that interrupts are disabled for less than
-RTEMS_MAXIMUM_DISABLE_PERIOD microseconds on a RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-Mhz ERC32 with zero wait states.
-These numbers will vary based the number of wait states and
-processor speed present on the target board.
-[NOTE: The maximum period with interrupts disabled is hand calculated. This
-calculation was last performed for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-[NOTE: It is thought that the length of time at which
-the processor interrupt level is elevated to fifteen by RTEMS is
-not anywhere near as long as the length of time ALL traps are
-disabled as part of the "flush all register windows" operation.]
-
-Non-maskable interrupts (NMI) cannot be disabled, and
-ISRs which execute at this level MUST NEVER issue RTEMS system
-calls. If a directive is invoked, unpredictable results may
-occur due to the inability of RTEMS to protect its critical
-sections. However, ISRs that make no system calls may safely
-execute as non-maskable interrupts.
-
-@section Interrupt Stack
-
-The SPARC architecture does not provide for a
-dedicated interrupt stack. Thus by default, trap handlers would
-execute on the stack of the RTEMS task which they interrupted.
-This artificially inflates the stack requirements for each task
-since EVERY task stack would have to include enough space to
-account for the worst case interrupt stack requirements in
-addition to it's own worst case usage. RTEMS addresses this
-problem on the SPARC by providing a dedicated interrupt stack
-managed by software.
-
-During system initialization, RTEMS allocates the
-interrupt stack from the Workspace Area. The amount of memory
-allocated for the interrupt stack is determined by the
-interrupt_stack_size field in the CPU Configuration Table. As
-part of processing a non-nested interrupt, RTEMS will switch to
-the interrupt stack before invoking the installed handler.
-
diff --git a/doc/supplements/sparc/memmodel.t b/doc/supplements/sparc/memmodel.t
deleted file mode 100644
index 3c7ae7b4e9..0000000000
--- a/doc/supplements/sparc/memmodel.t
+++ /dev/null
@@ -1,104 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Model
-
-@section Introduction
-
-A processor may support any combination of memory
-models ranging from pure physical addressing to complex demand
-paged virtual memory systems. RTEMS supports a flat memory
-model which ranges contiguously over the processor's allowable
-address space. RTEMS does not support segmentation or virtual
-memory of any kind. The appropriate memory model for RTEMS
-provided by the targeted processor and related characteristics
-of that model are described in this chapter.
-
-@section Flat Memory Model
-
-The SPARC architecture supports a flat 32-bit address
-space with addresses ranging from 0x00000000 to 0xFFFFFFFF (4
-gigabytes). Each address is represented by a 32-bit value and
-is byte addressable. The address may be used to reference a
-single byte, half-word (2-bytes), word (4 bytes), or doubleword
-(8 bytes). Memory accesses within this address space are
-performed in big endian fashion by the SPARC. Memory accesses
-which are not properly aligned generate a "memory address not
-aligned" trap (type number 7). The following table lists the
-alignment requirements for a variety of data accesses:
-
-@ifset use-ascii
-@example
-@group
- +--------------+-----------------------+
- | Data Type | Alignment Requirement |
- +--------------+-----------------------+
- | byte | 1 |
- | half-word | 2 |
- | word | 4 |
- | doubleword | 8 |
- +--------------+-----------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.75in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\noalign{\hrule}
-&\bf Data Type &&\bf Alignment Requirement&\cr\noalign{\hrule}
-&byte&&1&\cr\noalign{\hrule}
-&half-word&&2&\cr\noalign{\hrule}
-&word&&4&\cr\noalign{\hrule}
-&doubleword&&8&\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="60%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Data Type</STRONG></TD>
- <TD ALIGN=center><STRONG>Alignment Requirement</STRONG></TD></TR>
-<TR><TD ALIGN=center>byte</TD>
- <TD ALIGN=center>1</TD></TR>
-<TR><TD ALIGN=center>half-word</TD>
- <TD ALIGN=center>2</TD></TR>
-<TR><TD ALIGN=center>word</TD>
- <TD ALIGN=center>4</TD></TR>
-<TR><TD ALIGN=center>doubleword</TD>
- <TD ALIGN=center>8</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-Doubleword load and store operations must use a pair
-of registers as their source or destination. This pair of
-registers must be an adjacent pair of registers with the first
-of the pair being even numbered. For example, a valid
-destination for a doubleword load might be input registers 0 and
-1 (i0 and i1). The pair i1 and i2 would be invalid. [NOTE:
-Some assemblers for the SPARC do not generate an error if an odd
-numbered register is specified as the beginning register of the
-pair. In this case, the assembler assumes that what the
-programmer meant was to use the even-odd pair which ends at the
-specified register. This may or may not have been a correct
-assumption.]
-
-RTEMS does not support any SPARC Memory Management
-Units, therefore, virtual memory or segmentation systems
-involving the SPARC are not supported.
-
diff --git a/doc/supplements/sparc/preface.texi b/doc/supplements/sparc/preface.texi
deleted file mode 100644
index e3d80cc43e..0000000000
--- a/doc/supplements/sparc/preface.texi
+++ /dev/null
@@ -1,91 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, CPU Model Dependent Features, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-The Real Time Executive for Multiprocessor Systems
-(RTEMS) is designed to be portable across multiple processor
-architectures. However, the nature of real-time systems makes
-it essential that the application designer understand certain
-processor dependent implementation details. These processor
-dependencies include calling convention, board support package
-issues, interrupt processing, exact RTEMS memory requirements,
-performance data, header files, and the assembly language
-interface to the executive.
-
-This document discusses the SPARC architecture
-dependencies in this port of RTEMS. Currently, only
-implementations of SPARC Version 7 are supported by RTEMS.
-
-It is highly recommended that the SPARC RTEMS
-application developer obtain and become familiar with the
-documentation for the processor being used as well as the
-specification for the revision of the SPARC architecture which
-corresponds to that processor.
-
-@subheading SPARC Architecture Documents
-
-For information on the SPARC architecture, refer to
-the following documents available from SPARC International, Inc.
-(http://www.sparc.com):
-
-@itemize @bullet
-@item SPARC Standard Version 7.
-
-@item SPARC Standard Version 8.
-
-@item SPARC Standard Version 9.
-@end itemize
-
-@subheading ERC32 Specific Information
-
-The European Space Agency's ERC32 is a three chip
-computing core implementing a SPARC V7 processor and associated
-support circuitry for embedded space applications. The integer
-and floating-point units (90C601E & 90C602E) are based on the
-Cypress 7C601 and 7C602, with additional error-detection and
-recovery functions. The memory controller (MEC) implements
-system support functions such as address decoding, memory
-interface, DMA interface, UARTs, timers, interrupt control,
-write-protection, memory reconfiguration and error-detection.
-The core is designed to work at 25MHz, but using space qualified
-memories limits the system frequency to around 15 MHz, resulting
-in a performance of 10 MIPS and 2 MFLOPS.
-
-Information on the ERC32 and a number of development
-support tools, such as the SPARC Instruction Simulator (SIS),
-are freely available on the Internet. The following documents
-and SIS are available via anonymous ftp or pointing your web
-browser at ftp://ftp.estec.esa.nl/pub/ws/wsd/erc32.
-
-@itemize @bullet
-@item ERC32 System Design Document
-
-@item MEC Device Specification
-@end itemize
-
-Additionally, the SPARC RISC User's Guide from Matra
-MHS documents the functionality of the integer and floating
-point units including the instruction set information. To
-obtain this document as well as ERC32 components and VHDL models
-contact:
-
-@example
-Matra MHS SA
-3 Avenue du Centre, BP 309,
-78054 St-Quentin-en-Yvelines,
-Cedex, France
-VOICE: +31-1-30607087
-FAX: +31-1-30640693
-@end example
-
-Amar Guennon (amar.guennon@@matramhs.fr) is familiar with the ERC32.
-
diff --git a/doc/supplements/sparc/sparc.texi b/doc/supplements/sparc/sparc.texi
deleted file mode 100644
index f00e2aa8b7..0000000000
--- a/doc/supplements/sparc/sparc.texi
+++ /dev/null
@@ -1,119 +0,0 @@
-\input ../../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename c_sparc
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the SPARC Applications Supplement
-@c
-
-@include ../../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS SPARC Applications Supplement (sparc):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS SPARC Applications Supplement
-
-@setchapternewpage odd
-@settitle RTEMS SPARC Applications Supplement
-@titlepage
-@finalout
-
-@title RTEMS SPARC Applications Supplement
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include cpumodel.texi
-@include callconv.texi
-@include memmodel.texi
-@include intr.texi
-@include fatalerr.texi
-@include bsp.texi
-@include cputable.texi
-@include wksheets.texi
-@include timing.texi
-@include timeERC32.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top c_sparc
-
-This is the online version of the RTEMS SPARC Applications Supplement.
-
-@menu
-* Preface::
-* CPU Model Dependent Features::
-* Calling Conventions::
-* Memory Model::
-* Interrupt Processing::
-* Default Fatal Error Processing::
-* Board Support Packages::
-* Processor Dependent Information Table::
-* Memory Requirements::
-* Timing Specification::
-* ERC32 Timing Data::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, ERC32 Timing Data Rate Monotonic Manager, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@c @contents
-@bye
-
diff --git a/doc/supplements/sparc/timeERC32.t b/doc/supplements/sparc/timeERC32.t
deleted file mode 100644
index dd2d12edbc..0000000000
--- a/doc/supplements/sparc/timeERC32.t
+++ /dev/null
@@ -1,120 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@include ../../common/timemac.texi
-@tex
-\global\advance \smallskipamount by -4pt
-@end tex
-
-@chapter ERC32 Timing Data
-
-@section Introduction
-
-The timing data for RTEMS on the ERC32 implementation
-of the SPARC architecture is provided along with the target
-dependent aspects concerning the gathering of the timing data.
-The hardware platform used to gather the times is described to
-give the reader a better understanding of each directive time
-provided. Also, provided is a description of the interrupt
-latency and the context switch times as they pertain to the
-SPARC version of RTEMS.
-
-@section Hardware Platform
-
-All times reported in this chapter were measured
-using the SPARC Instruction Simulator (SIS) developed by the
-European Space Agency. SIS simulates the ERC32 -- a custom low
-power implementation combining the Cypress 90C601 integer unit,
-the Cypress 90C602 floating point unit, and a number of
-peripherals such as counter timers, interrupt controller and a
-memory controller.
-
-For the RTEMS tests, SIS is configured with the
-following characteristics:
-
-@itemize @bullet
-@item 15 Mhz clock speed
-
-@item 0 wait states for PROM accesses
-
-@item 0 wait states for RAM accesses
-@end itemize
-
-The ERC32's General Purpose Timer was used to gather
-all timing information. This timer was programmed to operate
-with one microsecond accuracy. All sources of hardware
-interrupts were disabled, although traps were enabled and the
-interrupt level of the SPARC allows all interrupts.
-
-@section Interrupt Latency
-
-The maximum period with traps disabled or the
-processor interrupt level set to it's highest value inside RTEMS
-is less than RTEMS_MAXIMUM_DISABLE_PERIOD
-microseconds including the instructions which
-disable and re-enable interrupts. The time required for the
-ERC32 to vector an interrupt and for the RTEMS entry overhead
-before invoking the user's trap handler are a total of
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. These combine to yield a worst case interrupt
-latency of less than RTEMS_MAXIMUM_DISABLE_PERIOD +
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK microseconds at
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz.
-[NOTE: The maximum period with interrupts disabled was last
-determined for Release RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-The maximum period with interrupts disabled within
-RTEMS is hand-timed with some assistance from SIS. The maximum
-period with interrupts disabled with RTEMS occurs during a
-context switch when traps are disabled to flush all the register
-windows to memory. The length of time spent flushing the
-register windows varies based on the number of windows which
-must be flushed. Based on the information reported by SIS, it
-takes from 4.0 to 18.0 microseconds (37 to 122 instructions) to
-flush the register windows. It takes approximately 41 CPU
-cycles (2.73 microseconds) to flush each register window set to
-memory. The register window flush operation is heavily memory
-bound.
-
-[NOTE: All traps are disabled during the register
-window flush thus disabling both software generate traps and
-external interrupts. During a normal RTEMS critical section,
-the processor interrupt level (pil) is raised to level 15 and
-traps are left enabled. The longest path for a normal critical
-section within RTEMS is less than 50 instructions.]
-
-The interrupt vector and entry overhead time was
-generated on the SIS benchmark platform using the ERC32's
-ability to forcibly generate an arbitrary interrupt as the
-source of the "benchmark" interrupt.
-
-@section Context Switch
-
-The RTEMS processor context switch time is 10
-microseconds on the SIS benchmark platform when no floating
-point context is saved or restored. Additional execution time
-is required when a TASK_SWITCH user extension is configured.
-The use of the TASK_SWITCH extension is application dependent.
-Thus, its execution time is not considered part of the raw
-context switch time.
-
-Since RTEMS was designed specifically for embedded
-missile applications which are floating point intensive, the
-executive is optimized to avoid unnecessarily saving and
-restoring the state of the numeric coprocessor. The state of
-the numeric coprocessor is only saved when an FLOATING_POINT
-task is dispatched and that task was not the last task to
-utilize the coprocessor. In a system with only one
-FLOATING_POINT task, the state of the numeric coprocessor will
-never be saved or restored. When the first FLOATING_POINT task
-is dispatched, RTEMS does not need to save the current state of
-the numeric coprocessor.
-
-The following table summarizes the context switch
-times for the ERC32 benchmark platform:
-
diff --git a/doc/supplements/template/BSP_TIMES b/doc/supplements/template/BSP_TIMES
deleted file mode 100644
index c80ed37148..0000000000
--- a/doc/supplements/template/BSP_TIMES
+++ /dev/null
@@ -1,247 +0,0 @@
-#
-# CPU MODEL/BSP Timing and Size Information
-#
-# $Id$
-#
-
-#
-# CPU Model Information
-#
-RTEMS_BSP BSP_FOR_TIMES
-RTEMS_CPU_MODEL BSP_CPU_MODEL
-#
-# Interrupt Latency
-#
-# NOTE: In general, the text says it is hand-calculated to be
-# RTEMS_MAXIMUM_DISABLE_PERIOD at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
-# Mhz and this was last calculated for Release
-# RTEMS_VERSION_FOR_MAXIMUM_DISABLE_PERIOD.
-#
-RTEMS_MAXIMUM_DISABLE_PERIOD TBD
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ 20
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD 4.0.0
-#
-# Context Switch Times
-#
-RTEMS_NO_FP_CONTEXTS 35
-RTEMS_RESTORE_1ST_FP_TASK 39
-RTEMS_SAVE_INIT_RESTORE_INIT 66
-RTEMS_SAVE_IDLE_RESTORE_INIT 66
-RTEMS_SAVE_IDLE_RESTORE_IDLE 68
-#
-# Task Manager Times
-#
-RTEMS_TASK_CREATE_ONLY 148
-RTEMS_TASK_IDENT_ONLY 350
-RTEMS_TASK_START_ONLY 76
-RTEMS_TASK_RESTART_CALLING_TASK 95
-RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER 89
-RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER 124
-RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER 92
-RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER 125
-RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER 149
-RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER 142
-RTEMS_TASK_DELETE_CALLING_TASK 170
-RTEMS_TASK_DELETE_SUSPENDED_TASK 138
-RTEMS_TASK_DELETE_BLOCKED_TASK 143
-RTEMS_TASK_DELETE_READY_TASK 144
-RTEMS_TASK_SUSPEND_CALLING_TASK 71
-RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER 43
-RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER 45
-RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER 67
-RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY 31
-RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER 64
-RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER 106
-RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE 14
-RTEMS_TASK_MODE_NO_RESCHEDULE 16
-RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER 23
-RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER 60
-RTEMS_TASK_GET_NOTE_ONLY 33
-RTEMS_TASK_SET_NOTE_ONLY 33
-RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER 16
-RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER 56
-RTEMS_TASK_WAKE_WHEN_ONLY 117
-#
-# Interrupt Manager
-#
-RTEMS_INTR_ENTRY_RETURNS_TO_NESTED 12
-RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK 9
-RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK 9
-RTEMS_INTR_EXIT_RETURNS_TO_NESTED <1
-RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK 8
-RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK 54
-#
-# Clock Manager
-#
-RTEMS_CLOCK_SET_ONLY 86
-RTEMS_CLOCK_GET_ONLY 1
-RTEMS_CLOCK_TICK_ONLY 17
-#
-# Timer Manager
-#
-RTEMS_TIMER_CREATE_ONLY 28
-RTEMS_TIMER_IDENT_ONLY 343
-RTEMS_TIMER_DELETE_INACTIVE 43
-RTEMS_TIMER_DELETE_ACTIVE 47
-RTEMS_TIMER_FIRE_AFTER_INACTIVE 58
-RTEMS_TIMER_FIRE_AFTER_ACTIVE 61
-RTEMS_TIMER_FIRE_WHEN_INACTIVE 88
-RTEMS_TIMER_FIRE_WHEN_ACTIVE 88
-RTEMS_TIMER_RESET_INACTIVE 54
-RTEMS_TIMER_RESET_ACTIVE 58
-RTEMS_TIMER_CANCEL_INACTIVE 31
-RTEMS_TIMER_CANCEL_ACTIVE 34
-#
-# Semaphore Manager
-#
-RTEMS_SEMAPHORE_CREATE_ONLY 60
-RTEMS_SEMAPHORE_IDENT_ONLY 367
-RTEMS_SEMAPHORE_DELETE_ONLY 58
-RTEMS_SEMAPHORE_OBTAIN_AVAILABLE 38
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT 38
-RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS 109
-RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS 44
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER 66
-RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER 87
-#
-# Message Manager
-#
-RTEMS_MESSAGE_QUEUE_CREATE_ONLY 200
-RTEMS_MESSAGE_QUEUE_IDENT_ONLY 341
-RTEMS_MESSAGE_QUEUE_DELETE_ONLY 80
-RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS 97
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER 101
-RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER 123
-RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS 96
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER 101
-RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER 123
-RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS 53
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER 111
-RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER 133
-RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE 79
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT 43
-RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 114
-RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED 29
-RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED 39
-#
-# Event Manager
-#
-RTEMS_EVENT_SEND_NO_TASK_READIED 24
-RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER 60
-RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER 84
-RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS 1
-RTEMS_EVENT_RECEIVE_AVAILABLE 28
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT 23
-RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS 84
-#
-# Signal Manager
-#
-RTEMS_SIGNAL_CATCH_ONLY 15
-RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER 37
-RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF 55
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK 37
-RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK 54
-#
-# Partition Manager
-#
-RTEMS_PARTITION_CREATE_ONLY 70
-RTEMS_PARTITION_IDENT_ONLY 341
-RTEMS_PARTITION_DELETE_ONLY 42
-RTEMS_PARTITION_GET_BUFFER_AVAILABLE 35
-RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE 33
-RTEMS_PARTITION_RETURN_BUFFER_ONLY 43
-#
-# Region Manager
-#
-RTEMS_REGION_CREATE_ONLY 63
-RTEMS_REGION_IDENT_ONLY 348
-RTEMS_REGION_DELETE_ONLY 39
-RTEMS_REGION_GET_SEGMENT_AVAILABLE 52
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT 49
-RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS 123
-RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS 54
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER 114
-RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER 136
-#
-# Dual-Ported Memory Manager
-#
-RTEMS_PORT_CREATE_ONLY 35
-RTEMS_PORT_IDENT_ONLY 340
-RTEMS_PORT_DELETE_ONLY 39
-RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY 26
-RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY 27
-#
-# IO Manager
-#
-RTEMS_IO_INITIALIZE_ONLY 4
-RTEMS_IO_OPEN_ONLY 2
-RTEMS_IO_CLOSE_ONLY 1
-RTEMS_IO_READ_ONLY 2
-RTEMS_IO_WRITE_ONLY 3
-RTEMS_IO_CONTROL_ONLY 2
-#
-# Rate Monotonic Manager
-#
-RTEMS_RATE_MONOTONIC_CREATE_ONLY 32
-RTEMS_RATE_MONOTONIC_IDENT_ONLY 341
-RTEMS_RATE_MONOTONIC_CANCEL_ONLY 39
-RTEMS_RATE_MONOTONIC_DELETE_ACTIVE 51
-RTEMS_RATE_MONOTONIC_DELETE_INACTIVE 48
-RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER 54
-RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS 74
-RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS 31
-#
-# Size Information
-#
-#
-# xxx alloted for numbers
-#
-RTEMS_DATA_SPACE 723
-RTEMS_MINIMUM_CONFIGURATION 18,980
-RTEMS_MAXIMUM_CONFIGURATION 36,438
-# x,xxx alloted for numbers
-RTEMS_CORE_CODE_SIZE 12,674
-RTEMS_INITIALIZATION_CODE_SIZE 970
-RTEMS_TASK_CODE_SIZE 3,562
-RTEMS_INTERRUPT_CODE_SIZE 54
-RTEMS_CLOCK_CODE_SIZE 334
-RTEMS_TIMER_CODE_SIZE 1,110
-RTEMS_SEMAPHORE_CODE_SIZE 1,632
-RTEMS_MESSAGE_CODE_SIZE 1,754
-RTEMS_EVENT_CODE_SIZE 1,000
-RTEMS_SIGNAL_CODE_SIZE 418
-RTEMS_PARTITION_CODE_SIZE 1,164
-RTEMS_REGION_CODE_SIZE 1,494
-RTEMS_DPMEM_CODE_SIZE 724
-RTEMS_IO_CODE_SIZE 686
-RTEMS_FATAL_ERROR_CODE_SIZE 24
-RTEMS_RATE_MONOTONIC_CODE_SIZE 1,212
-RTEMS_MULTIPROCESSING_CODE_SIZE 6.952
-# xxx alloted for numbers
-RTEMS_TIMER_CODE_OPTSIZE 184
-RTEMS_SEMAPHORE_CODE_OPTSIZE 172
-RTEMS_MESSAGE_CODE_OPTSIZE 288
-RTEMS_EVENT_CODE_OPTSIZE 56
-RTEMS_SIGNAL_CODE_OPTSIZE 56
-RTEMS_PARTITION_CODE_OPTSIZE 132
-RTEMS_REGION_CODE_OPTSIZE 160
-RTEMS_DPMEM_CODE_OPTSIZE 132
-RTEMS_IO_CODE_OPTSIZE 00
-RTEMS_RATE_MONOTONIC_CODE_OPTSIZE 184
-RTEMS_MULTIPROCESSING_CODE_OPTSIZE 332
-# xxx alloted for numbers
-RTEMS_BYTES_PER_TASK 400
-RTEMS_BYTES_PER_TIMER 68
-RTEMS_BYTES_PER_SEMAPHORE 124
-RTEMS_BYTES_PER_MESSAGE_QUEUE 148
-RTEMS_BYTES_PER_REGION 144
-RTEMS_BYTES_PER_PARTITION 56
-RTEMS_BYTES_PER_PORT 36
-RTEMS_BYTES_PER_PERIOD 36
-RTEMS_BYTES_PER_EXTENSION 64
-RTEMS_BYTES_PER_FP_TASK 332
-RTEMS_BYTES_PER_NODE 48
-RTEMS_BYTES_PER_GLOBAL_OBJECT 20
-RTEMS_BYTES_PER_PROXY 124
-# x,xxx alloted for numbers
-RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS 8,872
diff --git a/doc/supplements/template/Makefile b/doc/supplements/template/Makefile
deleted file mode 100644
index 30aea5e334..0000000000
--- a/doc/supplements/template/Makefile
+++ /dev/null
@@ -1,154 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=template
-DISTRIBUTION_LEVEL=support
-
-include ../../Make.config
-
-REPLACE=../../tools/word-replace
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../../common/cpright.texi ../../common/setup.texi
-
-GENERATED_FILES=\
- cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \
- bsp.texi cputable.texi wksheets.texi timing.texi timeBSP.texi
-
-FILES= $(PROJECT).texi preface.texi \
- $(COMMON_FILES) $(GENERATED_FILES)
-
-info: dirs c_$(PROJECT)
- @echo NEED TO INSTALL THE INFO FILES
- #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL)
- #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL)
-
-c_$(PROJECT): $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/c_$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/c_$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT) $(PROJECT)-*
- rm -f c_$(PROJECT) c_$(PROJECT)-*
- rm -f wksheets.t wksheets_NOTIMES.t
- rm -f intr.t
- rm -f timeBSP_.t timing.t
- rm -f *.fixed _* $(GENERATED_FILES)
- rm -f timeBSP_.t
-
-#
-# Chapters which get automatic processing
-#
-cpumodel.texi: cpumodel.t Makefile
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Calling Conventions" ${*}.t
-
-callconv.texi: callconv.t Makefile
- $(BMENU) -p "CPU Model Dependent Features Another Optional Feature" \
- -u "Top" \
- -n "Memory Model" ${*}.t
-
-memmodel.texi: memmodel.t Makefile
- $(BMENU) -p "Calling Conventions User-Provided Routines" \
- -u "Top" \
- -n "Interrupt Processing" ${*}.t
-
-# Interrupt Chapter:
-# 1. Replace Times and Sizes
-# 2. Build Node Structure
-intr.t: intr_NOTIMES.t BSP_TIMES
- ${REPLACE} -p BSP_TIMES intr_NOTIMES.t
- mv intr_NOTIMES.t.fixed intr.t
-
-intr.texi: intr.t Makefile
- $(BMENU) -p "Memory Model Flat Memory Model" \
- -u "Top" \
- -n "Default Fatal Error Processing" ${*}.t
-
-fatalerr.texi: fatalerr.t Makefile
- $(BMENU) -p "Interrupt Processing Interrupt Stack" \
- -u "Top" \
- -n "Board Support Packages" ${*}.t
-
-bsp.texi: bsp.t Makefile
- $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \
- -u "Top" \
- -n "Processor Dependent Information Table" ${*}.t
-
-cputable.texi: cputable.t Makefile
- $(BMENU) -p "Board Support Packages Processor Initialization" \
- -u "Top" \
- -n "Memory Requirements" ${*}.t
-
-# Worksheets Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-wksheets_NOTIMES.t: ../../common/wksheets.t
- cp ../../common/wksheets.t wksheets_NOTIMES.t
-
-wksheets.t: wksheets_NOTIMES.t BSP_TIMES
- ${REPLACE} -p BSP_TIMES wksheets_NOTIMES.t
- mv wksheets_NOTIMES.t.fixed wksheets.t
-
-wksheets.texi: wksheets.t Makefile
- $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \
- -u "Top" \
- -n "Timing Specification" ${*}.t
-
-# Timing Specification Chapter:
-# 1. Copy the Shared File
-# 3. Build Node Structure
-
-timing.t: ../../common/timing.t
- cp ../../common/timing.t timing.t
-
-timing.texi: timing.t Makefile
- $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \
- -u "Top" \
- -n "BSP_FOR_TIMES Timing Data" ${*}.t
-
-# Timing Data for BSP Chapter:
-# 1. Copy the Shared File
-# 2. Replace Times and Sizes
-# 3. Build Node Structure
-
-timeBSP_.t: ../../common/timetbl.t timeBSP.t
- cat timeBSP.t ../../common/timetbl.t >timeBSP_.t
- @echo >>timeBSP_.t
- @echo "@tex" >>timeBSP_.t
- @echo "\\global\\advance \\smallskipamount by 4pt" >>timeBSP_.t
- @echo "@end tex" >>timeBSP_.t
-
-timeBSP.texi: timeBSP_.t Makefile
- $(BMENU) -p "Timing Specification Terminology" \
- -u "Top" \
- -n "Command and Variable Index" timeBSP_.t
- mv timeBSP_.t timeBSP.texi
diff --git a/doc/supplements/template/bsp.t b/doc/supplements/template/bsp.t
deleted file mode 100644
index 1f0de98d9d..0000000000
--- a/doc/supplements/template/bsp.t
+++ /dev/null
@@ -1,93 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Board Support Packages
-
-@section Introduction
-
-An RTEMS Board Support Package (BSP) must be designed
-to support a particular processor and target board combination.
-This chapter presents a discussion of XXX specific BSP
-issues. For more information on developing a BSP, refer to the
-chapter titled Board Support Packages in the RTEMS
-Applications User's Guide.
-
-@section System Reset
-
-An RTEMS based application is initiated or
-re-initiated when the XXX processor is reset. When the
-XXX is reset, the processor performs the following actions:
-
-@itemize @bullet
-@item The tracing bits of the status register are cleared to
-disable tracing.
-
-@item The supervisor interrupt state is entered by setting the
-supervisor (S) bit and clearing the master/interrupt (M) bit of
-the status register.
-
-@item The interrupt mask of the status register is set to
-level 7 to effectively disable all maskable interrupts.
-
-@item The vector base register (VBR) is set to zero.
-
-@item The cache control register (CACR) is set to zero to
-disable and freeze the processor cache.
-
-@item The interrupt stack pointer (ISP) is set to the value
-stored at vector 0 (bytes 0-3) of the exception vector table
-(EVT).
-
-@item The program counter (PC) is set to the value stored at
-vector 1 (bytes 4-7) of the EVT.
-
-@item The processor begins execution at the address stored in
-the PC.
-@end itemize
-
-@section Processor Initialization
-
-The address of the application's initialization code
-should be stored in the first vector of the EVT which will allow
-the immediate vectoring to the application code. If the
-application requires that the VBR be some value besides zero,
-then it should be set to the required value at this point. All
-tasks share the same XXX's VBR value. Because interrupts
-are enabled automatically by RTEMS as part of the initialize
-executive directive, the VBR MUST be set before this directive
-is invoked to insure correct interrupt vectoring. If processor
-caching is to be utilized, then it should be enabled during the
-reset application initialization code.
-
-In addition to the requirements described in the
-Board Support Packages chapter of the Applications User's
-Manual for the reset code which is executed before the call to
-initialize executive, the XXX version has the following
-specific requirements:
-
-@itemize @bullet
-@item Must leave the S bit of the status register set so that
-the XXX remains in the supervisor state.
-
-@item Must set the M bit of the status register to remove the
-XXX from the interrupt state.
-
-@item Must set the master stack pointer (MSP) such that a
-minimum stack size of MINIMUM_STACK_SIZE bytes is provided for
-the initialize executive directive.
-
-@item Must initialize the XXX's vector table.
-@end itemize
-
-Note that the BSP is not responsible for allocating
-or installing the interrupt stack. RTEMS does this
-automatically as part of initialization. If the BSP does not
-install an interrupt stack and -- for whatever reason -- an
-interrupt occurs before initialize_executive is invoked, then
-the results are unpredictable.
-
diff --git a/doc/supplements/template/callconv.t b/doc/supplements/template/callconv.t
deleted file mode 100644
index abdcce0304..0000000000
--- a/doc/supplements/template/callconv.t
+++ /dev/null
@@ -1,92 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Calling Conventions
-
-@section Introduction
-
-Each high-level language compiler generates
-subroutine entry and exit code based upon a set of rules known
-as the compiler's calling convention. These rules address the
-following issues:
-
-@itemize @bullet
-@item register preservation and usage
-@item parameter passing
-@item call and return mechanism
-@end itemize
-
-A compiler's calling convention is of importance when
-interfacing to subroutines written in another language either
-assembly or high-level. Even when the high-level language and
-target processor are the same, different compilers may use
-different calling conventions. As a result, calling conventions
-are both processor and compiler dependent.
-
-@section Processor Background
-
-The MC68xxx architecture supports a simple yet
-effective call and return mechanism. A subroutine is invoked
-via the branch to subroutine (@code{XXX}) or the jump to subroutine
-(@code{XXX}) instructions. These instructions push the return address
-on the current stack. The return from subroutine (@code{XXX})
-instruction pops the return address off the current stack and
-transfers control to that instruction. It is is important to
-note that the XXX call and return mechanism does not
-automatically save or restore any registers. It is the
-responsibility of the high-level language compiler to define the
-register preservation and usage convention.
-
-@section Calling Mechanism
-
-All RTEMS directives are invoked using either a @code{XXX}
-or @code{XXX} instruction and return to the user application via the
-@code{XXX} instruction.
-
-@section Register Usage
-
-As discussed above, the @code{XXX} and @code{XXX} instructions do
-not automatically save any registers. RTEMS uses the registers
-@b{D0}, @b{D1}, @b{A0}, and @b{A1} as scratch registers. These registers are
-not preserved by RTEMS directives therefore, the contents of
-these registers should not be assumed upon return from any RTEMS
-directive.
-
-@section Parameter Passing
-
-RTEMS assumes that arguments are placed on the
-current stack before the directive is invoked via the @code{XXX} or @code{XXX}
-instruction. The first argument is assumed to be closest to the
-return address on the stack. This means that the first argument
-of the C calling sequence is pushed last. The following
-pseudo-code illustrates the typical sequence used to call a
-RTEMS directive with three (3) arguments:
-
-@example
-@group
-push third argument
-push second argument
-push first argument
-invoke directive
-remove arguments from the stack
-@end group
-@end example
-
-The arguments to RTEMS are typically pushed onto the
-stack using a move instruction with a pre-decremented stack
-pointer as the destination. These arguments must be removed
-from the stack after control is returned to the caller. This
-removal is typically accomplished by adding the size of the
-argument list in bytes to the current stack pointer.
-
-@section User-Provided Routines
-
-All user-provided routines invoked by RTEMS, such as
-user extensions, device drivers, and MPCI routines, must also
-adhere to these calling conventions.
-
diff --git a/doc/supplements/template/cpumodel.t b/doc/supplements/template/cpumodel.t
deleted file mode 100644
index 3540c1dc02..0000000000
--- a/doc/supplements/template/cpumodel.t
+++ /dev/null
@@ -1,68 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter CPU Model Dependent Features
-
-@section Introduction
-
-Microprocessors are generally classified into
-families with a variety of CPU models or implementations within
-that family. Within a processor family, there is a high level
-of binary compatibility. This family may be based on either an
-architectural specification or on maintaining compatibility with
-a popular processor. Recent microprocessor families such as the
-SPARC or PA-RISC are based on an architectural specification
-which is independent or any particular CPU model or
-implementation. Older families such as the M68xxx and the iX86
-evolved as the manufacturer strived to produce higher
-performance processor models which maintained binary
-compatibility with older models.
-
-RTEMS takes advantage of the similarity of the
-various models within a CPU family. Although the models do vary
-in significant ways, the high level of compatibility makes it
-possible to share the bulk of the CPU dependent executive code
-across the entire family. Each processor family supported by
-RTEMS has a list of features which vary between CPU models
-within a family. For example, the most common model dependent
-feature regardless of CPU family is the presence or absence of a
-floating point unit or coprocessor. When defining the list of
-features present on a particular CPU model, one simply notes
-that floating point hardware is or is not present and defines a
-single constant appropriately. Conditional compilation is
-utilized to include the appropriate source code for this CPU
-model's feature set. It is important to note that this means
-that RTEMS is thus compiled using the appropriate feature set
-and compilation flags optimal for this CPU model used. The
-alternative would be to generate a binary which would execute on
-all family members using only the features which were always
-present.
-
-This chapter presents the set of features which vary
-across SPARC implementations and are of importance to RTEMS.
-The set of CPU model feature macros are defined in the file
-c/src/exec/score/cpu/XXX/XXX.h based upon the particular CPU
-model defined on the compilation command line.
-
-@section CPU Model Name
-
-The macro CPU_MODEL_NAME is a string which designates
-the name of this CPU model. For example, for the MODEL
-processor, this macro is set to the string "XXX".
-
-@section Floating Point Unit
-
-The macro XXX_HAS_FPU is set to 1 to indicate that
-this CPU model has a hardware floating point unit and 0
-otherwise. It does not matter whether the hardware floating
-point support is incorporated on-chip or is an external
-coprocessor.
-
-@section Another Optional Feature
-
-The macro XXX
diff --git a/doc/supplements/template/cputable.t b/doc/supplements/template/cputable.t
deleted file mode 100644
index a2164335aa..0000000000
--- a/doc/supplements/template/cputable.t
+++ /dev/null
@@ -1,111 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Processor Dependent Information Table
-
-@section Introduction
-
-Any highly processor dependent information required
-to describe a processor to RTEMS is provided in the CPU
-Dependent Information Table. This table is not required for all
-processors supported by RTEMS. This chapter describes the
-contents, if any, for a particular processor type.
-
-@section CPU Dependent Information Table
-
-The XXX version of the RTEMS CPU Dependent
-Information Table contains the information required to interface
-a Board Support Package and RTEMS on the XXX. This
-information is provided to allow RTEMS to interoperate
-effectively with the BSP. The C structure definition is given
-here:
-
-@example
-@group
-typedef struct @{
- void (*pretasking_hook)( void );
- void (*predriver_hook)( void );
- void (*postdriver_hook)( void );
- void (*idle_task)( void );
- boolean do_zero_of_workspace;
- unsigned32 idle_task_stack_size;
- unsigned32 interrupt_stack_size;
- unsigned32 extra_mpci_receive_server_stack;
- void * (*stack_allocate_hook)( unsigned32 );
- void (*stack_free_hook)( void* );
- /* end of fields required on all CPUs */
-
- /* XXX CPU family dependent stuff */
-@} rtems_cpu_table;
-@end group
-@end example
-
-@table @code
-@item pretasking_hook
-is the address of the
-user provided routine which is invoked once RTEMS initialization
-is complete but before interrupts and tasking are enabled. This
-field may be NULL to indicate that the hook is not utilized.
-
-@item predriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately before
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-but no device drivers are initialized. This field may be NULL to
-indicate that the hook is not utilized.
-
-@item postdriver_hook
-is the address of the user provided
-routine which is invoked with tasking enabled immediately after
-the MPCI and device drivers are initialized. RTEMS
-initialization is complete, interrupts and tasking are enabled,
-and the device drivers are initialized. This field may be NULL
-to indicate that the hook is not utilized.
-
-@item idle_task
-is the address of the optional user
-provided routine which is used as the system's IDLE task. If
-this field is not NULL, then the RTEMS default IDLE task is not
-used. This field may be NULL to indicate that the default IDLE
-is to be used.
-
-@item do_zero_of_workspace
-indicates whether RTEMS should
-zero the Workspace as part of its initialization. If set to
-TRUE, the Workspace is zeroed. Otherwise, it is not.
-
-@item idle_task_stack_size
-is the size of the RTEMS idle task stack in bytes.
-If this number is less than MINIMUM_STACK_SIZE, then the
-idle task's stack will be MINIMUM_STACK_SIZE in byte.
-
-@item interrupt_stack_size
-is the size of the RTEMS
-allocated interrupt stack in bytes. This value must be at least
-as large as MINIMUM_STACK_SIZE.
-
-@item extra_mpci_receive_server_stack
-is the extra stack space allocated for the RTEMS MPCI receive server task
-in bytes. The MPCI receive server may invoke nearly all directives and
-may require extra stack space on some targets.
-
-@item stack_allocate_hook
-is the address of the optional user provided routine which allocates
-memory for task stacks. If this hook is not NULL, then a stack_free_hook
-must be provided as well.
-
-@item stack_free_hook
-is the address of the optional user provided routine which frees
-memory for task stacks. If this hook is not NULL, then a stack_allocate_hook
-must be provided as well.
-
-@item XXX
-is where the CPU family dependent stuff goes.
-
-@end table
diff --git a/doc/supplements/template/fatalerr.t b/doc/supplements/template/fatalerr.t
deleted file mode 100644
index 4a3548ed8e..0000000000
--- a/doc/supplements/template/fatalerr.t
+++ /dev/null
@@ -1,31 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Default Fatal Error Processing
-
-@section Introduction
-
-Upon detection of a fatal error by either the
-application or RTEMS the fatal error manager is invoked. The
-fatal error manager will invoke the user-supplied fatal error
-handlers. If no user-supplied handlers are configured, the
-RTEMS provided default fatal error handler is invoked. If the
-user-supplied fatal error handlers return to the executive the
-default fatal error handler is then invoked. This chapter
-describes the precise operations of the default fatal error
-handler.
-
-@section Default Fatal Error Handler Operations
-
-The default fatal error handler which is invoked by
-the @code{rtems_fatal_error_occurred} directive when there is
-no user handler configured or the user handler returns control to
-RTEMS. The default fatal error handler disables processor interrupts,
-places the error code in @b{XXX}, and executes a @code{XXX}
-instruction to simulate a halt processor instruction.
-
diff --git a/doc/supplements/template/intr_NOTIMES.t b/doc/supplements/template/intr_NOTIMES.t
deleted file mode 100644
index deb645781a..0000000000
--- a/doc/supplements/template/intr_NOTIMES.t
+++ /dev/null
@@ -1,196 +0,0 @@
-@c
-@c Interrupt Stack Frame Picture
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Interrupt Processing
-
-@section Introduction
-
-Different types of processors respond to the
-occurrence of an interrupt in its own unique fashion. In
-addition, each processor type provides a control mechanism to
-allow for the proper handling of an interrupt. The processor
-dependent response to the interrupt modifies the current
-execution state and results in a change in the execution stream.
-Most processors require that an interrupt handler utilize some
-special control mechanisms to return to the normal processing
-stream. Although RTEMS hides many of the processor dependent
-details of interrupt processing, it is important to understand
-how the RTEMS interrupt manager is mapped onto the processor's
-unique architecture. Discussed in this chapter are the XXX's
-interrupt response and control mechanisms as they pertain to
-RTEMS.
-
-@section Vectoring of an Interrupt Handler
-
-Depending on whether or not the particular CPU
-supports a separate interrupt stack, the XXX family has two
-different interrupt handling models.
-
-@subsection Models Without Separate Interrupt Stacks
-
-Upon receipt of an interrupt the XXX family
-members without separate interrupt stacks automatically perform
-the following actions:
-
-@itemize @bullet
-@item To Be Written
-@end itemize
-
-@subsection Models With Separate Interrupt Stacks
-
-Upon receipt of an interrupt the XXX family
-members with separate interrupt stacks automatically perform the
-following actions:
-
-@itemize @bullet
-@item saves the current status register (SR),
-
-@item clears the master/interrupt (M) bit of the SR to
-indicate the switch from master state to interrupt state,
-
-@item sets the privilege mode to supervisor,
-
-@item suppresses tracing,
-
-@item sets the interrupt mask level equal to the level of the
-interrupt being serviced,
-
-@item pushes an interrupt stack frame (ISF), which includes
-the program counter (PC), the status register (SR), and the
-format/exception vector offset (FVO) word, onto the supervisor
-and interrupt stacks,
-
-@item switches the current stack to the interrupt stack and
-vectors to an interrupt service routine (ISR). If the ISR was
-installed with the interrupt_catch directive, then the RTEMS
-interrupt handler will begin execution. The RTEMS interrupt
-handler saves all registers which are not preserved according to
-the calling conventions and invokes the application's ISR.
-@end itemize
-
-A nested interrupt is processed similarly by these
-CPU models with the exception that only a single ISF is placed
-on the interrupt stack and the current stack need not be
-switched.
-
-The FVO word in the Interrupt Stack Frame is examined
-by RTEMS to determine when an outer most interrupt is being
-exited. Since the FVO is used by RTEMS for this purpose, the
-user application code MUST NOT modify this field.
-
-The following shows the Interrupt Stack Frame for
-XXX CPU models with separate interrupt stacks:
-
-@ifset use-ascii
-@example
-@group
- +----------------------+
- | Status Register | 0x0
- +----------------------+
- | Program Counter High | 0x2
- +----------------------+
- | Program Counter Low | 0x4
- +----------------------+
- | Format/Vector Offset | 0x6
- +----------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\strut\vrule#&
-\hbox to 2.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.50in{\enskip\hfil#\hfil}
-\cr
-\multispan{3}\hrulefill\cr
-& Status Register && 0x0\cr
-\multispan{3}\hrulefill\cr
-& Program Counter High && 0x2\cr
-\multispan{3}\hrulefill\cr
-& Program Counter Low && 0x4\cr
-\multispan{3}\hrulefill\cr
-& Format/Vector Offset && 0x6\cr
-\multispan{3}\hrulefill\cr
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=2 WIDTH="40%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Status Register</STRONG></TD>
- <TD ALIGN=center>0x0</TD></TR>
-<TR><TD ALIGN=center><STRONG>Program Counter High</STRONG></TD>
- <TD ALIGN=center>0x2</TD></TR>
-<TR><TD ALIGN=center><STRONG>Program Counter Low</STRONG></TD>
- <TD ALIGN=center>0x4</TD></TR>
-<TR><TD ALIGN=center><STRONG>Format/Vector Offset</STRONG></TD>
- <TD ALIGN=center>0x6</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@section Interrupt Levels
-
-Eight levels (0-7) of interrupt priorities are
-supported by XXX family members with level seven (7) being
-the highest priority. Level zero (0) indicates that interrupts
-are fully enabled. Interrupt requests for interrupts with
-priorities less than or equal to the current interrupt mask
-level are ignored.
-
-Although RTEMS supports 256 interrupt levels, the
-XXX family only supports eight. RTEMS interrupt levels 0
-through 7 directly correspond to XXX interrupt levels. All
-other RTEMS interrupt levels are undefined and their behavior is
-unpredictable.
-
-@section Disabling of Interrupts by RTEMS
-
-During the execution of directive calls, critical
-sections of code may be executed. When these sections are
-encountered, RTEMS disables interrupts to level seven (7) before
-the execution of this section and restores them to the previous
-level upon completion of the section. RTEMS has been optimized
-to insure that interrupts are disabled for less than
-RTEMS_MAXIMUM_DISABLE_PERIOD microseconds on a
-RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz XXX with
-zero wait states. These numbers will vary based the
-number of wait states and processor speed present on the target board.
-[NOTE: The maximum period with interrupts disabled is hand calculated. This
-calculation was last performed for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-Non-maskable interrupts (NMI) cannot be disabled, and
-ISRs which execute at this level MUST NEVER issue RTEMS system
-calls. If a directive is invoked, unpredictable results may
-occur due to the inability of RTEMS to protect its critical
-sections. However, ISRs that make no system calls may safely
-execute as non-maskable interrupts.
-
-@section Interrupt Stack
-
-RTEMS allocates the interrupt stack from the
-Workspace Area. The amount of memory allocated for the
-interrupt stack is determined by the interrupt_stack_size field
-in the CPU Configuration Table. During the initialization
-process, RTEMS will install its interrupt stack.
-
-The XXX port of RTEMS supports a software managed
-dedicated interrupt stack on those CPU models which do not
-support a separate interrupt stack in hardware.
-
-
diff --git a/doc/supplements/template/memmodel.t b/doc/supplements/template/memmodel.t
deleted file mode 100644
index 4cb46bab90..0000000000
--- a/doc/supplements/template/memmodel.t
+++ /dev/null
@@ -1,39 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Memory Model
-
-@section Introduction
-
-A processor may support any combination of memory
-models ranging from pure physical addressing to complex demand
-paged virtual memory systems. RTEMS supports a flat memory
-model which ranges contiguously over the processor's allowable
-address space. RTEMS does not support segmentation or virtual
-memory of any kind. The appropriate memory model for RTEMS
-provided by the targeted processor and related characteristics
-of that model are described in this chapter.
-
-@section Flat Memory Model
-
-The XXX family supports a flat 32-bit address
-space with addresses ranging from 0x00000000 to 0xFFFFFFFF (4
-gigabytes). Each address is represented by a 32-bit value and
-is byte addressable. The address may be used to reference a
-single byte, word (2-bytes), or long word (4 bytes). Memory
-accesses within this address space are performed in big endian
-fashion by the processors in this family.
-
-Some of the XXX family members such as the
-XXX, XXX, and XXX support virtual memory and
-segmentation. The XXX requires external hardware support
-such as the XXX Paged Memory Management Unit coprocessor
-which is typically used to perform address translations for
-these systems. RTEMS does not support virtual memory or
-segmentation on any of the XXX family members.
-
diff --git a/doc/supplements/template/preface.texi b/doc/supplements/template/preface.texi
deleted file mode 100644
index 05e8c3c4cd..0000000000
--- a/doc/supplements/template/preface.texi
+++ /dev/null
@@ -1,55 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, CPU Model Dependent Features, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-The Real Time Executive for Multiprocessor Systems (RTEMS)
-is designed to be portable across multiple processor
-architectures. However, the nature of real-time systems makes
-it essential that the application designer understand certain
-processor dependent implementation details. These processor
-dependencies include calling convention, board support package
-issues, interrupt processing, exact RTEMS memory requirements,
-performance data, header files, and the assembly language
-interface to the executive.
-
-This document discusses the VENDOR XXX
-architecture dependencies in this port of RTEMS. The XXX
-family has a wide variety of CPU models within it. The part
-numbers ...
-
-XXX fill in some things here
-
-It is highly recommended that the XXX
-RTEMS application developer obtain and become familiar with the
-documentation for the processor being used as well as the
-documentation for the family as a whole.
-
-@subheading Architecture Documents
-
-For information on the XXX architecture,
-refer to the following documents available from VENDOR
-(@file{http//www.XXX.com/}):
-
-@itemize @bullet
-@item @cite{XXX Family Reference, VENDOR, PART NUMBER}.
-@end itemize
-
-@subheading MODEL SPECIFIC DOCUMENTS
-
-For information on specific processor models and
-their associated coprocessors, refer to the following documents:
-
-@itemize @bullet
-@item @cite{XXX MODEL Manual, VENDOR, PART NUMBER}.
-@item @cite{XXX MODEL Manual, VENDOR, PART NUMBER}.
-@end itemize
-
diff --git a/doc/supplements/template/template.texi b/doc/supplements/template/template.texi
deleted file mode 100644
index 9f230acb21..0000000000
--- a/doc/supplements/template/template.texi
+++ /dev/null
@@ -1,121 +0,0 @@
-\input ../../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename c_template
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the Template Applications Supplement
-@c
-
-@include ../../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS Template Applications Supplement (template):
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Template Applications Supplement
-
-@setchapternewpage odd
-@settitle RTEMS Template Applications Supplement
-@titlepage
-@finalout
-
-@title RTEMS Template Applications Supplement
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-
-@include ../../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include cpumodel.texi
-@include callconv.texi
-@include memmodel.texi
-@include intr.texi
-@include fatalerr.texi
-@include bsp.texi
-@include cputable.texi
-@include wksheets.texi
-@include timing.texi
-@include timeBSP.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top c_template
-
-This is the online version of the RTEMS Template
-Applications Supplement.
-
-@menu
-* Preface::
-* CPU Model Dependent Features::
-* Calling Conventions::
-* Memory Model::
-* Interrupt Processing::
-* Default Fatal Error Processing::
-* Board Support Packages::
-* Processor Dependent Information Table::
-* Memory Requirements::
-* Timing Specification::
-* BSP_FOR_TIMES Timing Data::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, BSP_FOR_TIMES Timing Data Context Switch, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@c @contents
-@bye
-
diff --git a/doc/supplements/template/timeBSP.t b/doc/supplements/template/timeBSP.t
deleted file mode 100644
index 8b35c5de13..0000000000
--- a/doc/supplements/template/timeBSP.t
+++ /dev/null
@@ -1,108 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@include ../../common/timemac.texi
-@tex
-\global\advance \smallskipamount by -4pt
-@end tex
-
-@chapter BSP_FOR_TIMES Timing Data
-
-@section Introduction
-
-The timing data for the XXX version of RTEMS is
-provided along with the target dependent aspects concerning the
-gathering of the timing data. The hardware platform used to
-gather the times is described to give the reader a better
-understanding of each directive time provided. Also, provided
-is a description of the interrupt latency and the context switch
-times as they pertain to the XXX version of RTEMS.
-
-@section Hardware Platform
-
-All times reported except for the maximum period
-interrupts are disabled by RTEMS were measured using a Motorola
-BSP_FOR_TIMES CPU board. The BSP_FOR_TIMES is a 20Mhz board with one wait
-state dynamic memory and a XXX numeric coprocessor. The
-Zilog 8036 countdown timer on this board was used to measure
-elapsed time with a one-half microsecond resolution. All
-sources of hardware interrupts were disabled, although the
-interrupt level of the XXX allows all interrupts.
-
-The maximum period interrupts are disabled was
-measured by summing the number of CPU cycles required by each
-assembly language instruction executed while interrupts were
-disabled. The worst case times of the XXX microprocessor
-were used for each instruction. Zero wait state memory was
-assumed. The total CPU cycles executed with interrupts
-disabled, including the instructions to disable and enable
-interrupts, was divided by 20 to simulate a 20Mhz XXX. It
-should be noted that the worst case instruction times for the
-XXX assume that the internal cache is disabled and that no
-instructions overlap.
-
-@section Interrupt Latency
-
-The maximum period with interrupts disabled within
-RTEMS is less than RTEMS_MAXIMUM_DISABLE_PERIOD
-microseconds including the instructions
-which disable and re-enable interrupts. The time required for
-the XXX to vector an interrupt and for the RTEMS entry
-overhead before invoking the user's interrupt handler are a
-total of RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds. These combine to yield a worst case
-interrupt latency of less than
-RTEMS_MAXIMUM_DISABLE_PERIOD + RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
-microseconds at 20Mhz. [NOTE: The maximum period with interrupts
-disabled was last determined for Release
-RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
-
-It should be noted again that the maximum period with
-interrupts disabled within RTEMS is hand-timed and based upon
-worst case (i.e. CPU cache disabled and no instruction overlap)
-times for a 20Mhz XXX. The interrupt vector and entry
-overhead time was generated on an BSP_FOR_TIMES benchmark platform
-using the Multiprocessing Communications registers to generate
-as the interrupt source.
-
-@section Context Switch
-
-The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
-microseconds on the BSP_FOR_TIMES benchmark platform when no floating
-point context is saved or restored. Additional execution time
-is required when a TASK_SWITCH user extension is configured.
-The use of the TASK_SWITCH extension is application dependent.
-Thus, its execution time is not considered part of the raw
-context switch time.
-
-Since RTEMS was designed specifically for embedded
-missile applications which are floating point intensive, the
-executive is optimized to avoid unnecessarily saving and
-restoring the state of the numeric coprocessor. The state of
-the numeric coprocessor is only saved when an FLOATING_POINT
-task is dispatched and that task was not the last task to
-utilize the coprocessor. In a system with only one
-FLOATING_POINT task, the state of the numeric coprocessor will
-never be saved or restored. When the first FLOATING_POINT task
-is dispatched, RTEMS does not need to save the current state of
-the numeric coprocessor.
-
-The exact amount of time required to save and restore
-floating point context is dependent on whether an XXX or
-XXX is being used as well as the state of the numeric
-coprocessor. These numeric coprocessors define three operating
-states: initialized, idle, and busy. RTEMS places the
-coprocessor in the initialized state when a task is started or
-restarted. Once the task has utilized the coprocessor, it is in
-the idle state when floating point instructions are not
-executing and the busy state when floating point instructions
-are executing. The state of the coprocessor is task specific.
-
-The following table summarizes the context switch
-times for the BSP_FOR_TIMES benchmark platform:
-
diff --git a/doc/texinfo/texinfo.tex b/doc/texinfo/texinfo.tex
deleted file mode 100644
index 8fcde98a03..0000000000
--- a/doc/texinfo/texinfo.tex
+++ /dev/null
@@ -1,4426 +0,0 @@
-%% TeX macros to handle texinfo files
-
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
-
-%This texinfo.tex file is free software; you can redistribute it and/or
-%modify it under the terms of the GNU General Public License as
-%published by the Free Software Foundation; either version 2, or (at
-%your option) any later version.
-
-%This texinfo.tex file is distributed in the hope that it will be
-%useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-%of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%General Public License for more details.
-
-%You should have received a copy of the GNU General Public License
-%along with this texinfo.tex file; see the file COPYING. If not, write
-%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
-%USA.
-
-
-%In other words, you are welcome to use, share and improve this program.
-%You are forbidden to forbid anyone else to use, share and improve
-%what you give them. Help stamp out software-hoarding!
-
-
-% Send bug reports to bug-texinfo@prep.ai.mit.edu.
-% Please include a *precise* test case in each bug report.
-
-
-% Make it possible to create a .fmt file just by loading this file:
-% if the underlying format is not loaded, start by loading it now.
-% Added by gildea November 1993.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-
-% This automatically updates the version number based on RCS.
-\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision$
-\message{Loading texinfo package [Version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}\message{}
- \catcode`+=\active \catcode`\_=\active}
-
-% Save some parts of plain tex whose names we will redefine.
-
-\let\ptextilde=\~
-\let\ptexlbrace=\{
-\let\ptexrbrace=\}
-\let\ptexdots=\dots
-\let\ptexdot=\.
-\let\ptexstar=\*
-\let\ptexend=\end
-\let\ptexbullet=\bullet
-\let\ptexb=\b
-\let\ptexc=\c
-\let\ptexi=\i
-\let\ptext=\t
-\let\ptexl=\l
-\let\ptexL=\L
-
-% Be sure we're in horizontal mode when doing a tie, since we make space
-% equivalent to this in @example-like environments. Otherwise, a space
-% at the beginning of a line will start with \penalty -- and
-% since \penalty is valid in vertical mode, we'd end up putting the
-% penalty on the vertical list instead of in the new paragraph.
-{\catcode`@ = 11
- % Avoid using \@M directly, because that causes trouble
- % if the definition is written into an index file.
- \global\let\tiepenalty = \@M
- \gdef\tie{\leavevmode\penalty\tiepenalty\ }
-}
-\let\~ = \tie % And make it available as @~.
-
-\message{Basics,}
-\chardef\other=12
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Set up fixed words for English.
-\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi%
-\def\putwordInfo{Info}%
-\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi%
-\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi%
-\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi%
-\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi%
-\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi%
-\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi%
-\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi%
-\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi%
-\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\fi%
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-\hyphenation{ap-pen-dix}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{eshell}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen \bindingoffset \bindingoffset=0pt
-\newdimen \normaloffset \normaloffset=\hoffset
-\newdimen\pagewidth \newdimen\pageheight
-\pagewidth=\hsize \pageheight=\vsize
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{\tracingcommands2 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-
-%---------------------Begin change-----------------------
-%
-%%%% For @cropmarks command.
-% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\cornerlong \newdimen\cornerthick
-\newdimen \topandbottommargin
-\newdimen \outerhsize \newdimen \outervsize
-\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks
-\outerhsize=7in
-%\outervsize=9.5in
-% Alternative @smallbook page size is 9.25in
-\outervsize=9.25in
-\topandbottommargin=.75in
-%
-%---------------------End change-----------------------
-
-% \onepageout takes a vbox as an argument. Note that \pagecontents
-% does insertions itself, but you have to call it yourself.
-\chardef\PAGE=255 \output={\onepageout{\pagecontents\PAGE}}
-\def\onepageout#1{\hoffset=\normaloffset
-\ifodd\pageno \advance\hoffset by \bindingoffset
-\else \advance\hoffset by -\bindingoffset\fi
-{\escapechar=`\\\relax % makes sure backslash is used in output files.
-\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}%
-{\let\hsize=\pagewidth \makefootline}}}%
-\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
-
-%%%% For @cropmarks command %%%%
-
-% Here is a modification of the main output routine for Near East Publications
-% This provides right-angle cropmarks at all four corners.
-% The contents of the page are centerlined into the cropmarks,
-% and any desired binding offset is added as an \hskip on either
-% site of the centerlined box. (P. A. MacKay, 12 November, 1986)
-%
-\def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up
-{\escapechar=`\\\relax % makes sure backslash is used in output files.
- \shipout
- \vbox to \outervsize{\hsize=\outerhsize
- \vbox{\line{\ewtop\hfill\ewtop}}
- \nointerlineskip
- \line{\vbox{\moveleft\cornerthick\nstop}
- \hfill
- \vbox{\moveright\cornerthick\nstop}}
- \vskip \topandbottommargin
- \centerline{\ifodd\pageno\hskip\bindingoffset\fi
- \vbox{
- {\let\hsize=\pagewidth \makeheadline}
- \pagebody{#1}
- {\let\hsize=\pagewidth \makefootline}}
- \ifodd\pageno\else\hskip\bindingoffset\fi}
- \vskip \topandbottommargin plus1fill minus1fill
- \boxmaxdepth\cornerthick
- \line{\vbox{\moveleft\cornerthick\nsbot}
- \hfill
- \vbox{\moveright\cornerthick\nsbot}}
- \nointerlineskip
- \vbox{\line{\ewbot\hfill\ewbot}}
- }}
- \advancepageno
- \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
-%
-% Do @cropmarks to get crop marks
-\def\cropmarks{\let\onepageout=\croppageout }
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
- \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-%
-% Here are the rules for the cropmarks. Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
- {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
- {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1. The argument is the rest of
-% the input line (except we remove a trailing comment). #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg#1{%
- \let\next = #1%
- \begingroup
- \obeylines
- \futurelet\temp\parseargx
-}
-
-% If the next token is an obeyed space (from an @example environment or
-% the like), remove it and recurse. Otherwise, we're done.
-\def\parseargx{%
- % \obeyedspace is defined far below, after the definition of \sepspaces.
- \ifx\obeyedspace\temp
- \expandafter\parseargdiscardspace
- \else
- \expandafter\parseargline
- \fi
-}
-
-% Remove a single space (as the delimiter token to the macro call).
-{\obeyspaces %
- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
-{\obeylines %
- \gdef\parseargline#1^^M{%
- \endgroup % End of the group started in \parsearg.
- %
- % First remove any @c comment, then any @comment.
- % Result of each macro is put in \toks0.
- \argremovec #1\c\relax %
- \expandafter\argremovecomment \the\toks0 \comment\relax %
- %
- % Call the caller's macro, saved as \next in \parsearg.
- \expandafter\next\expandafter{\the\toks0}%
- }%
-}
-
-% Since all \c{,omment} does is throw away the argument, we can let TeX
-% do that for us. The \relax here is matched by the \relax in the call
-% in \parseargline; it could be more or less anything, its purpose is
-% just to delimit the argument to the \c.
-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
-
-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
-% @end itemize @c foo
-% will have two active spaces as part of the argument with the
-% `itemize'. Here we remove all active spaces from #1, and assign the
-% result to \toks0.
-%
-% This loses if there are any *other* active characters besides spaces
-% in the argument -- _ ^ +, for example -- since they get expanded.
-% Fortunately, Texinfo does not define any such commands. (If it ever
-% does, the catcode of the characters in questionwill have to be changed
-% here.) But this means we cannot call \removeactivespaces as part of
-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
-% that \parsearg gets might well have any character at all in it.
-%
-\def\removeactivespaces#1{%
- \begingroup
- \ignoreactivespaces
- \edef\temp{#1}%
- \global\toks0 = \expandafter{\temp}%
- \endgroup
-}
-
-% Change the active space to expand to nothing.
-%
-\begingroup
- \obeyspaces
- \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
-\endgroup
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment. Type Return to continue.}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
-
-% @begin foo is the same as @foo, for now.
-\newhelp\EMsimple{Type <Return> to continue.}
-
-\outer\def\begin{\parsearg\beginxxx}
-
-\def\beginxxx #1{%
-\expandafter\ifx\csname #1\endcsname\relax
-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
-\csname #1\endcsname\fi}
-
-% @end foo executes the definition of \Efoo.
-%
-\def\end{\parsearg\endxxx}
-\def\endxxx #1{%
- \removeactivespaces{#1}%
- \edef\endthing{\the\toks0}%
- %
- \expandafter\ifx\csname E\endthing\endcsname\relax
- \expandafter\ifx\csname \endthing\endcsname\relax
- % There's no \foo, i.e., no ``environment'' foo.
- \errhelp = \EMsimple
- \errmessage{Undefined command `@end \endthing'}%
- \else
- \unmatchedenderror\endthing
- \fi
- \else
- % Everything's ok; the right environment has been started.
- \csname E\endthing\endcsname
- \fi
-}
-
-% There is an environment #1, but it hasn't been started. Give an error.
-%
-\def\unmatchedenderror#1{%
- \errhelp = \EMsimple
- \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-}
-
-% Define the control sequence \E#1 to give an unmatched @end error.
-%
-\def\defineunmatchedend#1{%
- \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-}
-
-
-% Single-spacing is done by various environments (specifically, in
-% \nonfillstart and \quotations).
-\newskip\singlespaceskip \singlespaceskip = 12.5pt
-\def\singlespace{%
- % Why was this kern here? It messes up equalizing space above and below
- % environments. --karl, 6may93
- %{\advance \baselineskip by -\singlespaceskip
- %\kern \baselineskip}%
- \setleading \singlespaceskip
-}
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt \char '100}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-
-\def\mylbrace {{\tt \char '173}}
-\def\myrbrace {{\tt \char '175}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
-
-% @enddots{} is an end-of-sentence ellipsis.
-\gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp}$\spacefactor=3000}
-
-% @! is an end-of-sentence bang.
-\gdef\!{!\spacefactor=3000 }
-
-% @? is an end-of-sentence query.
-\gdef\?{?\spacefactor=3000 }
-
-% @w prevents a word break. Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line. According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0). If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-\def\group{\begingroup
- \ifnum\catcode13=\active \else
- \errhelp = \groupinvalidhelp
- \errmessage{@group invalid in context where filling is enabled}%
- \fi
- %
- % The \vtop we start below produces a box with normal height and large
- % depth; thus, TeX puts \baselineskip glue before it, and (when the
- % next line of text is done) \lineskip glue after it. (See p.82 of
- % the TeXbook.) Thus, space below is not quite equal to space
- % above. But it's pretty close.
- \def\Egroup{%
- \egroup % End the \vtop.
- \endgroup % End the \group.
- }%
- %
- \vtop\bgroup
- % We have to put a strut on the last line in case the @group is in
- % the midst of an example, rather than completely enclosing it.
- % Otherwise, the interline space between the last line of the group
- % and the first line afterwards is too small. But we can't put the
- % strut in \Egroup, since there it would be on a line by itself.
- % Hence this just inserts a strut at the beginning of each line.
- \everypar = {\strut}%
- %
- % Since we have a strut on every line, we don't need any of TeX's
- % normal interline spacing.
- \offinterlineskip
- %
- % OK, but now we have to do something about blank
- % lines in the input in @example-like environments, which normally
- % just turn into \lisppar, which will insert no space now that we've
- % turned off the interline space. Simplest is to make them be an
- % empty paragraph.
- \ifx\par\lisppar
- \edef\par{\leavevmode \par}%
- %
- % Reset ^^M's definition to new definition of \par.
- \obeylines
- \fi
- %
- % Do @comment since we are called inside an environment such as
- % @example, where each end-of-line in the input causes an
- % end-of-line in the output. We don't want the end-of-line after
- % the `@group' to put extra space in the output. Since @group
- % should appear on a line by itself (according to the Texinfo
- % manual), we don't worry about eating any user text.
- \comment
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil \mil=0.001in
-
-\def\need{\parsearg\needx}
-
-% Old definition--didn't work.
-%\def\needx #1{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\penalty 10000
-%\prevdepth=-1000pt
-%}}
-
-\def\needx#1{%
- % Go into vertical mode, so we don't make a big box in the middle of a
- % paragraph.
- \par
- %
- % Don't add any leading before our big empty box, but allow a page
- % break, since the best break might be right here.
- \allowbreak
- \nointerlineskip
- \vtop to #1\mil{\vfil}%
- %
- % TeX does not even consider page breaks if a penalty added to the
- % main vertical list is 10000 or more. But in order to see if the
- % empty box we just added fits on the page, we must make it consider
- % page breaks. On the other hand, we don't want to actually break the
- % page after the empty box. So we use a penalty of 9999.
- %
- % There is an extremely small chance that TeX will actually break the
- % page at this \penalty, if there are no other feasible breakpoints in
- % sight. (If the user is using lots of big @group commands, which
- % almost-but-not-quite fill up a page, TeX will have a hard time doing
- % good page breaking, for example.) However, I could not construct an
- % example where a page broke at this \penalty; if it happens in a real
- % document, then we can reconsider our strategy.
- \penalty9999
- %
- % Back up by the size of the box, whether we did a page break or not.
- \kern -#1\mil
- %
- % Do not allow a page break right after this kern.
- \nobreak
-}
-
-% @br forces paragraph break
-
-\let\br = \par
-
-% @dots{} output some dots
-
-\def\dots{$\ldots$}
-
-% @page forces the start of a new page
-
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\def\exdent{\parsearg\exdentyyy}
-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
-
-% This defn is used inside nofill environments such as @example.
-\def\nofillexdent{\parsearg\nofillexdentyyy}
-\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
-\leftline{\hskip\leftskip{\rm#1}}}}
-
-%\hbox{{\rm#1}}\hfil\break}}
-
-% @include file insert text of that file as input.
-
-\def\include{\parsearg\includezzz}
-%Use \input\thisfile to avoid blank after \input, which may be an active
-%char (in which case the blank would become the \input argument).
-%The grouping keeps the value of \thisfile correct even when @include
-%is nested.
-\def\includezzz #1{\begingroup
-\def\thisfile{#1}\input\thisfile
-\endgroup}
-
-\def\thisfile{}
-
-% @center line outputs that line, centered
-
-\def\center{\parsearg\centerzzz}
-\def\centerzzz #1{{\advance\hsize by -\leftskip
-\advance\hsize by -\rightskip
-\centerline{#1}}}
-
-% @sp n outputs n lines of vertical space
-
-\def\sp{\parsearg\spxxx}
-\def\spxxx #1{\par \vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore is another way to write a comment
-
-\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other%
-\parsearg \commentxxx}
-
-\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 }
-
-\let\c=\comment
-
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
-\let\chapter=\relax
-\let\unnumbered=\relax
-\let\top=\relax
-\let\unnumberedsec=\relax
-\let\unnumberedsection=\relax
-\let\unnumberedsubsec=\relax
-\let\unnumberedsubsection=\relax
-\let\unnumberedsubsubsec=\relax
-\let\unnumberedsubsubsection=\relax
-\let\section=\relax
-\let\subsec=\relax
-\let\subsubsec=\relax
-\let\subsection=\relax
-\let\subsubsection=\relax
-\let\appendix=\relax
-\let\appendixsec=\relax
-\let\appendixsection=\relax
-\let\appendixsubsec=\relax
-\let\appendixsubsection=\relax
-\let\appendixsubsubsec=\relax
-\let\appendixsubsubsection=\relax
-\let\contents=\relax
-\let\smallbook=\relax
-\let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-\def\ignoremorecommands{%
- \let\defcv = \relax
- \let\deffn = \relax
- \let\deffnx = \relax
- \let\defindex = \relax
- \let\defivar = \relax
- \let\defmac = \relax
- \let\defmethod = \relax
- \let\defop = \relax
- \let\defopt = \relax
- \let\defspec = \relax
- \let\deftp = \relax
- \let\deftypefn = \relax
- \let\deftypefun = \relax
- \let\deftypevar = \relax
- \let\deftypevr = \relax
- \let\defun = \relax
- \let\defvar = \relax
- \let\defvr = \relax
- \let\ref = \relax
- \let\xref = \relax
- \let\printindex = \relax
- \let\pxref = \relax
- \let\settitle = \relax
- \let\include = \relax
- \let\lowersections = \relax
- \let\down = \relax
- \let\raisesections = \relax
- \let\up = \relax
- \let\set = \relax
- \let\clear = \relax
- \let\item = \relax
- \let\message = \relax
-}
-
-% Ignore @ignore ... @end ignore.
-%
-\def\ignore{\doignore{ignore}}
-
-% Also ignore @ifinfo, @ifhtml, @html, @menu, and @direntry text.
-%
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\html{\doignore{html}}
-\def\menu{\doignore{menu}}
-\def\direntry{\doignore{direntry}}
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define a command to swallow text until we reach `@end #1'.
- \long\def\doignoretext##1\end #1{\enddoignore}%
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
- \catcode32 = 10
- %
- % And now expand that command.
- \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
- \ifwarnedobs\relax\else
- % We need to warn folks that they may have trouble with TeX 3.0.
- % This uses \immediate\write16 rather than \message to get newlines.
- \immediate\write16{}
- \immediate\write16{***WARNING*** for users of Unix TeX 3.0!}
- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
- \immediate\write16{If you are running another version of TeX, relax.}
- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
- \immediate\write16{ Then upgrade your TeX installation if you can.}
- \immediate\write16{If you are stuck with version 3.0, run the}
- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
- \immediate\write16{ to use a workaround.}
- \immediate\write16{}
- \warnedobstrue
- \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex. For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
- \obstexwarn
- % We must actually expand the ignored text to look for the @end
- % command, so that nested ignore constructs work. Thus, we put the
- % text into a \vbox and then do nothing with the result. To minimize
- % the change of memory overflow, we follow the approach outlined on
- % page 401 of the TeXbook: make the current font be a dummy font.
- %
- \setbox0 = \vbox\bgroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define `@end #1' to end the box, which will in turn undefine the
- % @end command again.
- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
- %
- % We are going to be parsing Texinfo commands. Most cause no
- % trouble when they are used incorrectly, but some commands do
- % complicated argument parsing or otherwise get confused, so we
- % undefine them.
- %
- % We can't do anything about stray @-signs, unfortunately;
- % they'll produce `undefined control sequence' errors.
- \ignoremorecommands
- %
- % Set the current font to be \nullfont, a TeX primitive, and define
- % all the font commands to also use \nullfont. We don't use
- % dummy.tfm, as suggested in the TeXbook, because not all sites
- % might have that installed. Therefore, math mode will still
- % produce output, but that should be an extremely small amount of
- % stuff compared to the main input.
- %
- \nullfont
- \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont
- \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont
- \let\tensf = \nullfont
- % Similarly for index fonts (mostly for their use in
- % smallexample)
- \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont
- \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont
- \let\indsf = \nullfont
- %
- % Don't complain when characters are missing from the fonts.
- \tracinglostchars = 0
- %
- % Don't bother to do space factor calculations.
- \frenchspacing
- %
- % Don't report underfull hboxes.
- \hbadness = 10000
- %
- % Do minimal line-breaking.
- \pretolerance = 10000
- %
- % Do not execute instructions in @tex
- \def\tex{\doignore{tex}}
-}
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it.
-%
-\def\set{\parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
- \def\temp{#2}%
- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
- \fi
-}
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-%
-\def\value#1{\expandafter
- \ifx\csname SET#1\endcsname\relax
- {\{No value for ``#1''\}}
- \else \csname SET#1\endcsname \fi}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-\def\ifset{\parsearg\ifsetxxx}
-\def\ifsetxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifsetfail
- \else
- \expandafter\ifsetsucceed
- \fi
-}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\ifclearxxx}
-\def\ifclearxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifclearsucceed
- \else
- \expandafter\ifclearfail
- \fi
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex always succeeds; we read the text following, through @end
-% iftex). But `@end iftex' should be valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\defineunmatchedend{iftex}
-
-% We can't just want to start a group at @iftex (for example) and end it
-% at @end iftex, since then @set commands inside the conditional have no
-% effect (they'd get reverted at the end of the group). So we must
-% define \Eiftex to redefine itself to be its previous value. (We can't
-% just define it to fail again with an ``unmatched end'' error, since
-% the @ifset might be nested.)
-%
-\def\conditionalsucceed#1{%
- \edef\temp{%
- % Remember the current value of \E#1.
- \let\nece{prevE#1} = \nece{E#1}%
- %
- % At the `@end #1', redefine \E#1 to be its previous value.
- \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
- }%
- \temp
-}
-
-% We need to expand lots of \csname's, but we don't want to expand the
-% control sequences after we've constructed them.
-%
-\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
-
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math means output in math mode.
-% We don't use $'s directly in the definition of \math because control
-% sequences like \math are expanded when the toc file is written. Then,
-% we read the toc file back, the $'s will be normal characters (as they
-% should be, according to the definition of Texinfo). So we must use a
-% control sequence to switch into and out of math mode.
-%
-% This isn't quite enough for @math to work properly in indices, but it
-% seems unlikely it will ever be needed there.
-%
-\let\implicitmath = $
-\def\math#1{\implicitmath #1\implicitmath}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{\implicitmath\ptexbullet\implicitmath}
-\def\minus{\implicitmath-\implicitmath}
-
-\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx [#1,]}
-\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
-\let\nwnode=\node
-\let\lastnode=\relax
-
-\def\donoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\setref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\def\unnumbnoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\def\appendixnoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\let\refill=\relax
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
- \readauxfile
- \opencontents
- \openindices
- \fixbackslash % Turn off hack to swallow `\input texinfo'.
- \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
- \comment % Ignore the actual filename.
-}
-
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
- node \samp{\ignorespaces#1{}}}
-
-\message{fonts,}
-
-% Font-change commands.
-
-% Texinfo supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
-\newfam\sffam
-\def\sf{\fam=\sffam \tensf}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-%% Try out Computer Modern fonts at \magstephalf
-\let\mainmagstep=\magstephalf
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-\def\setfont#1#2{\font#1=\fontprefix#2}
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
-\def\fontprefix{cm}
-\fi
-
-\ifx\bigger\relax
-\let\mainmagstep=\magstep1
-\setfont\textrm{r12}
-\setfont\texttt{tt12}
-\else
-\setfont\textrm{r10 scaled \mainmagstep}
-\setfont\texttt{tt10 scaled \mainmagstep}
-\fi
-% Instead of cmb10, you many want to use cmbx10.
-% cmbx10 is a prettier font on its own, but cmb10
-% looks better when embedded in a line with cmr10.
-\setfont\textbf{b10 scaled \mainmagstep}
-\setfont\textit{ti10 scaled \mainmagstep}
-\setfont\textsl{sl10 scaled \mainmagstep}
-\setfont\textsf{ss10 scaled \mainmagstep}
-\setfont\textsc{csc10 scaled \mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun, etc.
-\setfont\defbf{bx10 scaled \magstep1} %was 1314
-\setfont\deftt{tt10 scaled \magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-
-% Fonts for indices and small examples.
-% We actually use the slanted font rather than the italic,
-% because texinfo normally uses the slanted fonts for that.
-% Do not make many font distinctions in general in the index, since they
-% aren't very useful.
-\setfont\ninett{tt9}
-\setfont\indrm{r9}
-\setfont\indit{sl9}
-\let\indsl=\indit
-\let\indtt=\ninett
-\let\indsf=\indrm
-\let\indbf=\indrm
-\setfont\indsc{csc10 at 9pt}
-\font\indi=cmmi9
-\font\indsy=cmsy9
-
-% Fonts for headings
-\setfont\chaprm{bx12 scaled \magstep2}
-\setfont\chapit{ti12 scaled \magstep2}
-\setfont\chapsl{sl12 scaled \magstep2}
-\setfont\chaptt{tt12 scaled \magstep2}
-\setfont\chapsf{ss12 scaled \magstep2}
-\let\chapbf=\chaprm
-\setfont\chapsc{csc10 scaled\magstep3}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-
-\setfont\secrm{bx12 scaled \magstep1}
-\setfont\secit{ti12 scaled \magstep1}
-\setfont\secsl{sl12 scaled \magstep1}
-\setfont\sectt{tt12 scaled \magstep1}
-\setfont\secsf{ss12 scaled \magstep1}
-\setfont\secbf{bx12 scaled \magstep1}
-\setfont\secsc{csc10 scaled\magstep2}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-
-% \setfont\ssecrm{bx10 scaled \magstep1} % This size an font looked bad.
-% \setfont\ssecit{cmti10 scaled \magstep1} % The letters were too crowded.
-% \setfont\ssecsl{sl10 scaled \magstep1}
-% \setfont\ssectt{tt10 scaled \magstep1}
-% \setfont\ssecsf{ss10 scaled \magstep1}
-
-%\setfont\ssecrm{b10 scaled 1315} % Note the use of cmb rather than cmbx.
-%\setfont\ssecit{ti10 scaled 1315} % Also, the size is a little larger than
-%\setfont\ssecsl{sl10 scaled 1315} % being scaled magstep1.
-%\setfont\ssectt{tt10 scaled 1315}
-%\setfont\ssecsf{ss10 scaled 1315}
-
-%\let\ssecbf=\ssecrm
-
-\setfont\ssecrm{bx12 scaled \magstephalf}
-\setfont\ssecit{ti12 scaled \magstephalf}
-\setfont\ssecsl{sl12 scaled \magstephalf}
-\setfont\ssectt{tt12 scaled \magstephalf}
-\setfont\ssecsf{ss12 scaled \magstephalf}
-\setfont\ssecbf{bx12 scaled \magstephalf}
-\setfont\ssecsc{csc10 scaled \magstep1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled \magstep1
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
-
-% Fonts for title page:
-\setfont\titlerm{bx12 scaled \magstep3}
-\let\authorrm = \secrm
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families. Since
-% texinfo doesn't allow for producing subscripts and superscripts, we
-% don't bother to reset \scriptfont and \scriptscriptfont (which would
-% also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
- \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy
- \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf
- \textfont\ttfam = \tentt \textfont\sffam = \tensf
-}
-
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE. We do this so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current. Plain TeX does, for example,
-% \def\bf{\fam=\bffam \tenbf} By redefining \tenbf, we obviate the need
-% to redefine \bf itself.
-\def\textfonts{%
- \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
- \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
- \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
- \resetmathfonts}
-\def\chapfonts{%
- \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
- \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
- \resetmathfonts}
-\def\secfonts{%
- \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
- \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
- \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
- \resetmathfonts}
-\def\subsecfonts{%
- \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
- \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
- \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
- \resetmathfonts}
-\def\indexfonts{%
- \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
- \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
- \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy
- \resetmathfonts}
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\textfonts
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Fonts for short table of contents.
-\setfont\shortcontrm{r12}
-\setfont\shortcontbf{bx12}
-\setfont\shortcontsl{sl12}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
-\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\var=\smartitalic
-\let\dfn=\smartitalic
-\let\emph=\smartitalic
-\let\cite=\smartitalic
-
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph. Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-\def\t#1{%
- {\tt \rawbackslash \frenchspacing #1}%
- \null
-}
-\let\ttfont=\t
-\def\samp #1{`\tclose{#1}'\null}
-\def\key #1{{\tt \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-\let\file=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
-\def\tclose#1{%
- {%
- % Change normal interword space to be same as for the current font.
- \spaceskip = \fontdimen2\font
- %
- % Switch to typewriter.
- \tt
- %
- % But `\ ' produces the large typewriter interword space.
- \def\ {{\spaceskip = 0pt{} }}%
- %
- % Turn off hyphenation.
- \nohyphenation
- %
- \rawbackslash
- \frenchspacing
- #1%
- }%
- \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in \code.
-% Otherwise, it is too hard to avoid overful hboxes
-% in the Emacs manual, the Library manual, etc.
-
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate an a dash.
-% -- rms.
-{
-\catcode`\-=\active
-\catcode`\_=\active
-\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex}
-% The following is used by \doprintindex to insure that long function names
-% wrap around. It is necessary for - and _ to be active before the index is
-% read from the file, as \entry parses the arguments long before \code is
-% ever called. -- mycroft
-\global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder}
-}
-
-\def\realdash{-}
-\def\realunder{_}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{\normalunderscore\discretionary{}{}{}}
-\def\codex #1{\tclose{#1}\endgroup}
-
-%\let\exp=\tclose %Was temporary
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else\tclose{\look}\fi
-\else\tclose{\look}\fi}
-
-% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
-% argument is to make the input look right: @dmn{pt} instead of
-% @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
-\def\l#1{{\li #1}\null} %
-
-\def\r#1{{\rm #1}} % roman font
-% Use of \lowercase was suggested.
-\def\sc#1{{\smallcaps#1}} % smallcaps font
-\def\ii#1{{\it #1}} % italic font
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page. Must do @settitle before @titlepage.
-\def\titlefont#1{{\titlerm #1}}
-
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
-
-\def\titlepage{\begingroup \parindent=0pt \textfonts
- \let\subtitlerm=\tenrm
-% I deinstalled the following change because \cmr12 is undefined.
-% This change was not in the ChangeLog anyway. --rms.
-% \let\subtitlerm=\cmr12
- \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
- %
- \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
- %
- % Leave some space at the very top of the page.
- \vglue\titlepagetopglue
- %
- % Now you can print the title using @title.
- \def\title{\parsearg\titlezzz}%
- \def\titlezzz##1{\leftline{\titlefont{##1}}
- % print a rule at the page bottom also.
- \finishedtitlepagefalse
- \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
- % No rule at page bottom unless we print one at the top with @title.
- \finishedtitlepagetrue
- %
- % Now you can put text using @subtitle.
- \def\subtitle{\parsearg\subtitlezzz}%
- \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
- %
- % @author should come last, but may come many times.
- \def\author{\parsearg\authorzzz}%
- \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
- {\authorfont \leftline{##1}}}%
- %
- % Most title ``pages'' are actually two pages long, with space
- % at the top of the second. We don't want the ragged left on the second.
- \let\oldpage = \page
- \def\page{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- \oldpage
- \let\page = \oldpage
- \hbox{}}%
-% \def\page{\oldpage \hbox{}}
-}
-
-\def\Etitlepage{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- % It is important to do the page break before ending the group,
- % because the headline and footline are only empty inside the group.
- % If we use the new definition of \page, we always get a blank page
- % after the title page, which we certainly don't want.
- \oldpage
- \endgroup
- \HEADINGSon
-}
-
-\def\finishtitlepage{%
- \vskip4pt \hrule height 2pt width \hsize
- \vskip\titlepagebottomglue
- \finishedtitlepagetrue
-}
-
-%%% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks \evenheadline % Token sequence for heading line of even pages
-\newtoks \oddheadline % Token sequence for heading line of odd pages
-\newtoks \evenfootline % Token sequence for footing line of even pages
-\newtoks \oddfootline % Token sequence for footing line of odd pages
-
-% Now make Tex use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
- \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
- \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what @headings on does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\everyheading{\parsearg\everyheadingxxx}
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\everyfooting{\parsearg\everyfootingxxx}
-
-{\catcode`\@=0 %
-
-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyheadingxxx #1{\everyheadingyyy #1@|@|@|@|\finish}
-\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
-\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyfootingxxx #1{\everyfootingyyy #1@|@|@|@|\finish}
-\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
-\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-%
-}% unbind the catcode of @.
-
-% @headings double turns headings on for double-sided printing.
-% @headings single turns headings on for single-sided printing.
-% @headings off turns them off.
-% @headings on same as @headings double, retained for compatibility.
-% @headings after turns on double-sided headings after this page.
-% @headings doubleafter turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\HEADINGSoff{
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{
-%\pagealignmacro
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{
-%\pagealignmacro
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-
-% Subroutines used in generating headings
-% Produces Day Month Year style of output.
-\def\today{\number\day\space
-\ifcase\month\or
-January\or February\or March\or April\or May\or June\or
-July\or August\or September\or October\or November\or December\fi
-\space\number\year}
-
-% Use this if you want the Month Day, Year style of output.
-%\def\today{\ifcase\month\or
-%January\or February\or March\or April\or May\or June\or
-%July\or August\or September\or October\or November\or December\fi
-%\space\number\day, \number\year}
-
-% @settitle line... specifies the title of the document, for headings
-% It generates no output of its own
-
-\def\thistitle{No Title}
-\def\settitle{\parsearg\settitlezzz}
-\def\settitlezzz #1{\gdef\thistitle{#1}}
-
-\message{tables,}
-
-% @tabs -- simple alignment
-
-% These don't work. For one thing, \+ is defined as outer.
-% So these macros cannot even be defined.
-
-%\def\tabs{\parsearg\tabszzz}
-%\def\tabszzz #1{\settabs\+#1\cr}
-%\def\tabline{\parsearg\tablinezzz}
-%\def\tablinezzz #1{\+#1\cr}
-%\def\&{&}
-
-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
-
-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
-
-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
- \itemzzz {#1}}
-
-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
- \itemzzz {#1}}
-
-\def\itemzzz #1{\begingroup %
- \advance\hsize by -\rightskip
- \advance\hsize by -\tableindent
- \setbox0=\hbox{\itemfont{#1}}%
- \itemindex{#1}%
- \nobreak % This prevents a break before @itemx.
- %
- % Be sure we are not still in the middle of a paragraph.
- %{\parskip = 0in
- %\par
- %}%
- %
- % If the item text does not fit in the space we have, put it on a line
- % by itself, and do not allow a page break either before or after that
- % line. We do not start a paragraph here because then if the next
- % command is, e.g., @kindex, the whatsit would get put into the
- % horizontal list on a line by itself, resulting in extra blank space.
- \ifdim \wd0>\itemmax
- %
- % Make this a paragraph so we get the \parskip glue and wrapping,
- % but leave it ragged-right.
- \begingroup
- \advance\leftskip by-\tableindent
- \advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
- \leavevmode\unhbox0\par
- \endgroup
- %
- % We're going to be starting a paragraph, but we don't want the
- % \parskip glue -- logically it's part of the @item we just started.
- \nobreak \vskip-\parskip
- %
- % Stop a page break at the \parskip glue coming up. Unfortunately
- % we can't prevent a possible page break at the following
- % \baselineskip glue.
- \nobreak
- \endgroup
- \itemxneedsnegativevskipfalse
- \else
- % The item text fits into the space. Start a paragraph, so that the
- % following text (if any) will end up on the same line. Since that
- % text will be indented by \tableindent, we make the item text be in
- % a zero-width box.
- \noindent
- \rlap{\hskip -\tableindent\box0}\ignorespaces%
- \endgroup%
- \itemxneedsnegativevskiptrue%
- \fi
-}
-
-\def\item{\errmessage{@item while not in a table}}
-\def\itemx{\errmessage{@itemx while not in a table}}
-\def\kitem{\errmessage{@kitem while not in a table}}
-\def\kitemx{\errmessage{@kitemx while not in a table}}
-\def\xitem{\errmessage{@xitem while not in a table}}
-\def\xitemx{\errmessage{@xitemx while not in a table}}
-
-%% Contains a kludge to get @end[description] to work
-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
-
-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
-{\obeylines\obeyspaces%
-\gdef\tablex #1^^M{%
-\tabley\dontindex#1 \endtabley}}
-
-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
-{\obeylines\obeyspaces%
-\gdef\ftablex #1^^M{%
-\tabley\fnitemindex#1 \endtabley
-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
-{\obeylines\obeyspaces%
-\gdef\vtablex #1^^M{%
-\tabley\vritemindex#1 \endtabley
-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\dontindex #1{}
-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
-
-{\obeyspaces %
-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
-
-\def\tablez #1#2#3#4#5#6{%
-\aboveenvbreak %
-\begingroup %
-\def\Edescription{\Etable}% Necessary kludge.
-\let\itemindex=#1%
-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
-\ifnum 0#4>0 \tableindent=#4\mil \fi %
-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
-\def\itemfont{#2}%
-\itemmax=\tableindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \tableindent %
-\exdentamount=\tableindent
-\parindent = 0pt
-\parskip = \smallskipamount
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def\Etable{\endgraf\afterenvbreak\endgroup}%
-\let\item = \internalBitem %
-\let\itemx = \internalBitemx %
-\let\kitem = \internalBkitem %
-\let\kitemx = \internalBkitemx %
-\let\xitem = \internalBxitem %
-\let\xitemx = \internalBxitemx %
-}
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\def\itemize{\parsearg\itemizezzz}
-
-\def\itemizezzz #1{%
- \begingroup % ended by the @end itemsize
- \itemizey {#1}{\Eitemize}
-}
-
-\def\itemizey #1#2{%
-\aboveenvbreak %
-\itemmax=\itemindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \itemindent %
-\exdentamount=\itemindent
-\parindent = 0pt %
-\parskip = \smallskipamount %
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def#2{\endgraf\afterenvbreak\endgroup}%
-\def\itemcontents{#1}%
-\let\item=\itemizeitem}
-
-% Set sfcode to normal for the chars that usually have another value.
-% These are `.?!:;,'
-\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
- \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list. No
-% argument is the same as `1'.
-%
-\def\enumerate{\parsearg\enumeratezzz}
-\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
- \begingroup % ended by the @end enumerate
- %
- % If we were given no argument, pretend we were given `1'.
- \def\thearg{#1}%
- \ifx\thearg\empty \def\thearg{1}\fi
- %
- % Detect if the argument is a single token. If so, it might be a
- % letter. Otherwise, the only valid thing it can be is a number.
- % (We will always have one token, because of the test we just made.
- % This is a good thing, since \splitoff doesn't work given nothing at
- % all -- the first parameter is undelimited.)
- \expandafter\splitoff\thearg\endmark
- \ifx\rest\empty
- % Only one token in the argument. It could still be anything.
- % A ``lowercase letter'' is one whose \lccode is nonzero.
- % An ``uppercase letter'' is one whose \lccode is both nonzero, and
- % not equal to itself.
- % Otherwise, we assume it's a number.
- %
- % We need the \relax at the end of the \ifnum lines to stop TeX from
- % continuing to look for a <number>.
- %
- \ifnum\lccode\expandafter`\thearg=0\relax
- \numericenumerate % a number (we hope)
- \else
- % It's a letter.
- \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
- \lowercaseenumerate % lowercase letter
- \else
- \uppercaseenumerate % uppercase letter
- \fi
- \fi
- \else
- % Multiple tokens in the argument. We hope it's a number.
- \numericenumerate
- \fi
-}
-
-% An @enumerate whose labels are integers. The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
- \itemno = \thearg
- \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more lowercase letters in @enumerate; get a bigger
- alphabet}%
- \fi
- \char\lccode\itemno
- }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more uppercase letters in @enumerate; get a bigger
- alphabet}
- \fi
- \char\uccode\itemno
- }%
-}
-
-% Call itemizey, adding a period to the first argument and supplying the
-% common last two arguments. Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
- \advance\itemno by -1
- \itemizey{#1.}\Eenumerate\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{\in hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94
-%
-% @multitable ... @endmultitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble. Width
-% can be specified either with sample text given in a template line,
-% or in percent of \hsize, the current width of text on page.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-% @multitable @percentofhsize .2 .3 .5
-% @item ...
-%
-% Numbers following @percentofhsize are the percent of the total
-% current hsize to be used for each column. You may use as many
-% columns as desired.
-
-% Or use a template:
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item ...
-% using the widest term desired in each column.
-
-
-% Each new table line starts with @item, each subsequent new column
-% starts with @tab. Empty columns may be produced by supplying @tab's
-% with nothing between them for as many times as empty columns are needed,
-% ie, @tab@tab@tab will produce two empty columns.
-
-% @item, @tab, @multicolumn or @endmulticolumn do not need to be on their
-% own lines, but it will not hurt if they are.
-
-% Sample multitable:
-
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item first col stuff @tab second col stuff @tab third col
-% @item
-% first col stuff
-% @tab
-% second col stuff
-% @tab
-% third col
-% @item first col stuff @tab second col stuff
-% @tab Many paragraphs of text may be used in any column.
-%
-% They will wrap at the width determined by the template.
-% @item@tab@tab This will be in third column.
-% @endmultitable
-
-% Default dimensions may be reset by user.
-% @intableparskip will set vertical space between paragraphs in table.
-% @intableparindent will set paragraph indent in table.
-% @spacebetweencols will set horizontal space to be left between columns.
-% @spacebetweenlines will set vertical space to be left between lines.
-
-%%%%
-% Dimensions
-
-\newdimen\intableparskip
-\newdimen\intableparindent
-\newdimen\spacebetweencols
-\newdimen\spacebetweenlines
-\intableparskip=0pt
-\intableparindent=6pt
-\spacebetweencols=12pt
-\spacebetweenlines=12pt
-
-%%%%
-% Macros used to set up halign preamble:
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\percentofhsize\relax
-\def\xpercentofhsize{\percentofhsize}
-\newif\ifsetpercent
-
-\newcount\colcount
-\def\setuptable#1{\def\firstarg{#1}%
-\ifx\firstarg\xendsetuptable\let\go\relax%
-\else
- \ifx\firstarg\xpercentofhsize\global\setpercenttrue%
- \else
- \ifsetpercent
- \if#1.\else%
- \global\advance\colcount by1 %
- \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
- \fi
- \else
- \global\advance\colcount by1
- \setbox0=\hbox{#1}%
- \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
- \fi%
- \fi%
- \let\go\setuptable%
-\fi\go}
-%%%%
-% multitable syntax
-\def\tab{&}
-
-%%%%
-% @multitable ... @endmultitable definitions:
-
-\def\multitable#1\item{\bgroup
-\let\item\cr
-\tolerance=9500
-\hbadness=9500
-\parskip=\intableparskip
-\parindent=\intableparindent
-\overfullrule=0pt
-\global\colcount=0\relax%
-\def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%
- % To parse everything between @multitable and @item :
-\def\one{#1}\expandafter\setuptable\one\endsetuptable
- % Need to reset this to 0 after \setuptable.
-\global\colcount=0\relax%
- %
- % This preamble sets up a generic column definition, which will
- % be used as many times as user calls for columns.
- % \vtop will set a single line and will also let text wrap and
- % continue for many paragraphs if desired.
-\halign\bgroup&\global\advance\colcount by 1\relax%
-\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
- % In order to keep entries from bumping into each other
- % we will add a \leftskip of \spacebetweencols to all columns after
- % the first one.
- % If a template has been used, we will add \spacebetweencols
- % to the width of each template entry.
- % If user has set preamble in terms of percent of \hsize
- % we will use that dimension as the width of the column, and
- % the \leftskip will keep entries from bumping into each other.
- % Table will start at left margin and final column will justify at
- % right margin.
-\ifnum\colcount=1
-\else
- \ifsetpercent
- \else
- % If user has <not> set preamble in terms of percent of \hsize
- % we will advance \hsize by \spacebetweencols
- \advance\hsize by \spacebetweencols
- \fi
- % In either case we will make \leftskip=\spacebetweencols:
-\leftskip=\spacebetweencols
-\fi
-\noindent##}\cr%
- % \everycr will reset column counter, \colcount, at the end of
- % each line. Every column entry will cause \colcount to advance by one.
- % The table preamble
- % looks at the current \colcount to find the correct column width.
-\global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines
-\filbreak%% keeps underfull box messages off when table breaks over pages.
-\global\colcount=0\relax}}}
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
-
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index. The file's extension is foo.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
-
-\def\newindex #1{
-\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
-\noexpand\doindex {#1}}
-}
-
-% @defindex foo == \newindex{foo}
-
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-
-\def\newcodeindex #1{
-\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
-\noexpand\docodeindex {#1}}
-}
-
-\def\defcodeindex{\parsearg\newcodeindex}
-
-% @synindex foo bar makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-\def\synindex #1 #2 {%
-\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
-\expandafter\let\csname#1indfile\endcsname=\synindexfoo
-\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
-\noexpand\doindex {#2}}%
-}
-
-% @syncodeindex foo bar similar, but put all entries made for index foo
-% inside @code.
-\def\syncodeindex #1 #2 {%
-\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
-\expandafter\let\csname#1indfile\endcsname=\synindexfoo
-\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
-\noexpand\docodeindex {#2}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-% and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-\def\indexdummies{%
-% Take care of the plain tex accent commands.
-\def\"{\realbackslash "}%
-\def\`{\realbackslash `}%
-\def\'{\realbackslash '}%
-\def\^{\realbackslash ^}%
-\def\~{\realbackslash ~}%
-\def\={\realbackslash =}%
-\def\b{\realbackslash b}%
-\def\c{\realbackslash c}%
-\def\d{\realbackslash d}%
-\def\u{\realbackslash u}%
-\def\v{\realbackslash v}%
-\def\H{\realbackslash H}%
-% Take care of the plain tex special European modified letters.
-\def\oe{\realbackslash oe}%
-\def\ae{\realbackslash ae}%
-\def\aa{\realbackslash aa}%
-\def\OE{\realbackslash OE}%
-\def\AE{\realbackslash AE}%
-\def\AA{\realbackslash AA}%
-\def\o{\realbackslash o}%
-\def\O{\realbackslash O}%
-\def\l{\realbackslash l}%
-\def\L{\realbackslash L}%
-\def\ss{\realbackslash ss}%
-% Take care of texinfo commands likely to appear in an index entry.
-\def\_{{\realbackslash _}}%
-\def\w{\realbackslash w }%
-\def\bf{\realbackslash bf }%
-\def\rm{\realbackslash rm }%
-\def\sl{\realbackslash sl }%
-\def\sf{\realbackslash sf}%
-\def\tt{\realbackslash tt}%
-\def\gtr{\realbackslash gtr}%
-\def\less{\realbackslash less}%
-\def\hat{\realbackslash hat}%
-\def\char{\realbackslash char}%
-\def\TeX{\realbackslash TeX}%
-\def\dots{\realbackslash dots }%
-\def\copyright{\realbackslash copyright }%
-\def\tclose##1{\realbackslash tclose {##1}}%
-\def\code##1{\realbackslash code {##1}}%
-\def\samp##1{\realbackslash samp {##1}}%
-\def\t##1{\realbackslash r {##1}}%
-\def\r##1{\realbackslash r {##1}}%
-\def\i##1{\realbackslash i {##1}}%
-\def\b##1{\realbackslash b {##1}}%
-\def\cite##1{\realbackslash cite {##1}}%
-\def\key##1{\realbackslash key {##1}}%
-\def\file##1{\realbackslash file {##1}}%
-\def\var##1{\realbackslash var {##1}}%
-\def\kbd##1{\realbackslash kbd {##1}}%
-\def\dfn##1{\realbackslash dfn {##1}}%
-\def\emph##1{\realbackslash emph {##1}}%
-\unsepspaces
-}
-
-% If an index command is used in an @example environment, any spaces
-% therein should become regular spaces in the raw index file, not the
-% expansion of \tie (\\leavevmode \penalty \@M \ ).
-{\obeyspaces
- \gdef\unsepspaces{\obeyspaces\let =\space}}
-
-% \indexnofonts no-ops all font-change commands.
-% This is used when outputting the strings to sort the index by.
-\def\indexdummyfont#1{#1}
-\def\indexdummytex{TeX}
-\def\indexdummydots{...}
-
-\def\indexnofonts{%
-% Just ignore accents.
-\let\"=\indexdummyfont
-\let\`=\indexdummyfont
-\let\'=\indexdummyfont
-\let\^=\indexdummyfont
-\let\~=\indexdummyfont
-\let\==\indexdummyfont
-\let\b=\indexdummyfont
-\let\c=\indexdummyfont
-\let\d=\indexdummyfont
-\let\u=\indexdummyfont
-\let\v=\indexdummyfont
-\let\H=\indexdummyfont
-% Take care of the plain tex special European modified letters.
-\def\oe{oe}%
-\def\ae{ae}%
-\def\aa{aa}%
-\def\OE{OE}%
-\def\AE{AE}%
-\def\AA{AA}%
-\def\o{o}%
-\def\O{O}%
-\def\l{l}%
-\def\L{L}%
-\def\ss{ss}%
-\let\w=\indexdummyfont
-\let\t=\indexdummyfont
-\let\r=\indexdummyfont
-\let\i=\indexdummyfont
-\let\b=\indexdummyfont
-\let\emph=\indexdummyfont
-\let\strong=\indexdummyfont
-\let\cite=\indexdummyfont
-\let\sc=\indexdummyfont
-%Don't no-op \tt, since it isn't a user-level command
-% and is used in the definitions of the active chars like <, >, |...
-%\let\tt=\indexdummyfont
-\let\tclose=\indexdummyfont
-\let\code=\indexdummyfont
-\let\file=\indexdummyfont
-\let\samp=\indexdummyfont
-\let\kbd=\indexdummyfont
-\let\key=\indexdummyfont
-\let\var=\indexdummyfont
-\let\TeX=\indexdummytex
-\let\dots=\indexdummydots
-}
-
-% To define \realbackslash, we must make \ not be an escape.
-% We must first make another character (@) an escape
-% so we do not become unable to do a definition.
-
-{\catcode`\@=0 \catcode`\\=\other
-@gdef@realbackslash{\}}
-
-\let\indexbackslash=0 %overridden during \printindex.
-
-\let\SETmarginindex=\relax %initialize!
-% workhorse for all \fooindexes
-% #1 is name of index, #2 is stuff to put there
-\def\doind #1#2{%
-% Put the index entry in the margin if desired.
-\ifx\SETmarginindex\relax\else%
-\insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
-\fi%
-{\count10=\lastpenalty %
-{\indexdummies % Must do this here, since \bf, etc expand at this stage
-\escapechar=`\\%
-{\let\folio=0% Expand all macros now EXCEPT \folio
-\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
-% so it will be output as is; and it will print as backslash in the indx.
-%
-% Now process the index-string once, with all font commands turned off,
-% to get the string to sort the index by.
-{\indexnofonts
-\xdef\temp1{#2}%
-}%
-% Now produce the complete index entry. We process the index-string again,
-% this time with font commands expanded, to get what to print in the index.
-\edef\temp{%
-\write \csname#1indfile\endcsname{%
-\realbackslash entry {\temp1}{\folio}{#2}}}%
-\temp }%
-}\penalty\count10}}
-
-\def\dosubind #1#2#3{%
-{\count10=\lastpenalty %
-{\indexdummies % Must do this here, since \bf, etc expand at this stage
-\escapechar=`\\%
-{\let\folio=0%
-\def\rawbackslashxx{\indexbackslash}%
-%
-% Now process the index-string once, with all font commands turned off,
-% to get the string to sort the index by.
-{\indexnofonts
-\xdef\temp1{#2 #3}%
-}%
-% Now produce the complete index entry. We process the index-string again,
-% this time with font commands expanded, to get what to print in the index.
-\edef\temp{%
-\write \csname#1indfile\endcsname{%
-\realbackslash entry {\temp1}{\folio}{#2}{#3}}}%
-\temp }%
-}\penalty\count10}}
-
-% The index entry written in the file actually looks like
-% \entry {sortstring}{page}{topic}
-% or
-% \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-% \initial {c}
-% before the first topic whose initial is c
-% \entry {topic}{pagelist}
-% for a topic that is used without subtopics
-% \primary {topic}
-% for the beginning of a topic that is used with subtopics
-% \secondary {subtopic}{pagelist}
-% for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% This is what you call to cause a particular index to get printed.
-% Write
-% @unnumbered Function Index
-% @printindex fn
-
-\def\printindex{\parsearg\doprintindex}
-
-\def\doprintindex#1{%
- \tex
- \dobreak \chapheadingskip {10000}
- \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
- \catcode`\$=\other
- \catcode`\~=\other
- \indexbreaks
- %
- % The following don't help, since the chars were translated
- % when the raw index was written, and their fonts were discarded
- % due to \indexnofonts.
- %\catcode`\"=\active
- %\catcode`\^=\active
- %\catcode`\_=\active
- %\catcode`\|=\active
- %\catcode`\<=\active
- %\catcode`\>=\active
- % %
- \def\indexbackslash{\rawbackslashxx}
- \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
- \begindoublecolumns
- %
- % See if the index file exists and is nonempty.
- \openin 1 \jobname.#1s
- \ifeof 1
- % \enddoublecolumns gets confused if there is no text in the index,
- % and it loses the chapter title and the aux file entries for the
- % index. The easiest way to prevent this problem is to make sure
- % there is some text.
- (Index is nonexistent)
- \else
- %
- % If the index file exists but is empty, then \openin leaves \ifeof
- % false. We have to make TeX try to read something from the file, so
- % it can discover if there is anything in it.
- \read 1 to \temp
- \ifeof 1
- (Index is empty)
- \else
- \input \jobname.#1s
- \fi
- \fi
- \closein 1
- \enddoublecolumns
- \Etex
-}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-% Same as \bigskipamount except no shrink.
-% \balancecolumns gets confused if there is any shrink.
-\newskip\initialskipamount \initialskipamount 12pt plus4pt
-
-\def\initial #1{%
-{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
-\ifdim\lastskip<\initialskipamount
-\removelastskip \penalty-200 \vskip \initialskipamount\fi
-\line{\secbf#1\hfill}\kern 2pt\penalty10000}}
-
-% This typesets a paragraph consisting of #1, dot leaders, and then #2
-% flush to the right margin. It is used for index and table of contents
-% entries. The paragraph is indented by \leftskip.
-%
-\def\entry #1#2{\begingroup
- %
- % Start a new paragraph if necessary, so our assignments below can't
- % affect previous text.
- \par
- %
- % Do not fill out the last line with white space.
- \parfillskip = 0in
- %
- % No extra space above this paragraph.
- \parskip = 0in
- %
- % Do not prefer a separate line ending with a hyphen to fewer lines.
- \finalhyphendemerits = 0
- %
- % \hangindent is only relevant when the entry text and page number
- % don't both fit on one line. In that case, bob suggests starting the
- % dots pretty far over on the line. Unfortunately, a large
- % indentation looks wrong when the entry text itself is broken across
- % lines. So we use a small indentation and put up with long leaders.
- %
- % \hangafter is reset to 1 (which is the value we want) at the start
- % of each paragraph, so we need not do anything with that.
- \hangindent=2em
- %
- % When the entry text needs to be broken, just fill out the first line
- % with blank space.
- \rightskip = 0pt plus1fil
- %
- % Start a ``paragraph'' for the index entry so the line breaking
- % parameters we've set above will have an effect.
- \noindent
- %
- % Insert the text of the index entry. TeX will do line-breaking on it.
- #1%
- % The following is kludged to not output a line of dots in the index if
- % there are no page numbers. The next person who breaks this will be
- % cursed by a Unix daemon.
- \def\tempa{{\rm }}%
- \def\tempb{#2}%
- \edef\tempc{\tempa}%
- \edef\tempd{\tempb}%
- \ifx\tempc\tempd\ \else%
- %
- % If we must, put the page number on a line of its own, and fill out
- % this line with blank space. (The \hfil is overwhelmed with the
- % fill leaders glue in \indexdotfill if the page number does fit.)
- \hfil\penalty50
- \null\nobreak\indexdotfill % Have leaders before the page number.
- %
- % The `\ ' here is removed by the implicit \unskip that TeX does as
- % part of (the primitive) \par. Without it, a spurious underfull
- % \hbox ensues.
- \ #2% The page number ends the paragraph.
- \fi%
- \par
-\endgroup}
-
-% Like \dotfill except takes at least 1 em.
-\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-
-\def\secondary #1#2{
-{\parfillskip=0in \parskip=0in
-\hangindent =1in \hangafter=1
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
-}}
-
-%% Define two-column mode, which is used in indexes.
-%% Adapted from the TeXbook, page 416.
-\catcode `\@=11
-
-\newbox\partialpage
-
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup
- % Grab any single-column material above us.
- \output = {\global\setbox\partialpage
- =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}%
- \eject
- %
- % Now switch to the double-column output routine.
- \output={\doublecolumnout}%
- %
- % Change the page size parameters. We could do this once outside this
- % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
- % format, but then we repeat the same computation. Repeating a couple
- % of assignments once per index is clearly meaningless for the
- % execution time, so we may as well do it once.
- %
- % First we halve the line length, less a little for the gutter between
- % the columns. We compute the gutter based on the line length, so it
- % changes automatically with the paper format. The magic constant
- % below is chosen so that the gutter has the same value (well, +- <
- % 1pt) as it did when we hard-coded it.
- %
- % We put the result in a separate register, \doublecolumhsize, so we
- % can restore it in \pagesofar, after \hsize itself has (potentially)
- % been clobbered.
- %
- \doublecolumnhsize = \hsize
- \advance\doublecolumnhsize by -.04154\hsize
- \divide\doublecolumnhsize by 2
- \hsize = \doublecolumnhsize
- %
- % Double the \vsize as well. (We don't need a separate register here,
- % since nobody clobbers \vsize.)
- \vsize = 2\vsize
- \doublecolumnpagegoal
-}
-
-\def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage}
-
-\def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth
- \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage
- \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1}
- \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3}
- \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
- \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
-}
-\def\doublecolumnpagegoal{%
- \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@
-}
-\def\pagesofar{\unvbox\partialpage %
- \hsize=\doublecolumnhsize % have to restore this since output routine
- \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
-\def\doublecolumnout{%
- \setbox5=\copy255
- {\vbadness=10000 \doublecolumnsplit}
- \ifvbox255
- \setbox0=\vtop to\dimen@{\unvbox0}
- \setbox2=\vtop to\dimen@{\unvbox2}
- \onepageout\pagesofar \unvbox255 \penalty\outputpenalty
- \else
- \setbox0=\vbox{\unvbox5}
- \ifvbox0
- \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
- \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth
- {\vbadness=10000
- \loop \global\setbox5=\copy0
- \setbox1=\vsplit5 to\dimen@
- \setbox3=\vsplit5 to\dimen@
- \ifvbox5 \global\advance\dimen@ by1pt \repeat
- \setbox0=\vbox to\dimen@{\unvbox1}
- \setbox2=\vbox to\dimen@{\unvbox3}
- \global\setbox\partialpage=\vbox{\pagesofar}
- \doublecolumnpagegoal
- }
- \fi
- \fi
-}
-
-\catcode `\@=\other
-\message{sectioning,}
-% Define chapters, sections, etc.
-
-\newcount \chapno
-\newcount \secno \secno=0
-\newcount \subsecno \subsecno=0
-\newcount \subsubsecno \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount \appendixno \appendixno = `\@
-\def\appendixletter{\char\the\appendixno}
-
-\newwrite \contentsfile
-% This is called from \setfilename.
-\def\opencontents{\openout \contentsfile = \jobname.toc}
-
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it. @section does likewise
-
-\def\thischapter{} \def\thissection{}
-\def\seccheck#1{\if \pageno<0 %
-\errmessage{@#1 not allowed after generating table of contents}\fi
-%
-}
-
-\def\chapternofonts{%
-\let\rawbackslash=\relax%
-\let\frenchspacing=\relax%
-\def\result{\realbackslash result}
-\def\equiv{\realbackslash equiv}
-\def\expansion{\realbackslash expansion}
-\def\print{\realbackslash print}
-\def\TeX{\realbackslash TeX}
-\def\dots{\realbackslash dots}
-\def\copyright{\realbackslash copyright}
-\def\tt{\realbackslash tt}
-\def\bf{\realbackslash bf }
-\def\w{\realbackslash w}
-\def\less{\realbackslash less}
-\def\gtr{\realbackslash gtr}
-\def\hat{\realbackslash hat}
-\def\char{\realbackslash char}
-\def\tclose##1{\realbackslash tclose {##1}}
-\def\code##1{\realbackslash code {##1}}
-\def\samp##1{\realbackslash samp {##1}}
-\def\r##1{\realbackslash r {##1}}
-\def\b##1{\realbackslash b {##1}}
-\def\key##1{\realbackslash key {##1}}
-\def\file##1{\realbackslash file {##1}}
-\def\kbd##1{\realbackslash kbd {##1}}
-% These are redefined because @smartitalic wouldn't work inside xdef.
-\def\i##1{\realbackslash i {##1}}
-\def\cite##1{\realbackslash cite {##1}}
-\def\var##1{\realbackslash var {##1}}
-\def\emph##1{\realbackslash emph {##1}}
-\def\dfn##1{\realbackslash dfn {##1}}
-}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raise/lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \chapterzzz{#2}
-\or
- \seczzz{#2}
-\or
- \numberedsubseczzz{#2}
-\or
- \numberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \chapterzzz{#2}
- \else
- \numberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \appendixzzz{#2}
-\or
- \appendixsectionzzz{#2}
-\or
- \appendixsubseczzz{#2}
-\or
- \appendixsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \appendixzzz{#2}
- \else
- \appendixsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \unnumberedzzz{#2}
-\or
- \unnumberedseczzz{#2}
-\or
- \unnumberedsubseczzz{#2}
-\or
- \unnumberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \unnumberedzzz{#2}
- \else
- \unnumberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-
-\def\thischaptername{No Chapter Title}
-\outer\def\chapter{\parsearg\chapteryyy}
-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz #1{\seccheck{chapter}%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \chapno by 1 \message{\putwordChapter \the\chapno}%
-\chapmacro {#1}{\the\chapno}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-% We don't substitute the actual chapter name into \thischapter
-% because we don't want its macros evaluated now.
-\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
-{\chapternofonts%
-\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-}}
-
-\outer\def\appendix{\parsearg\appendixyyy}
-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz #1{\seccheck{appendix}%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \appendixno by 1 \message{Appendix \appendixletter}%
-\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
-{\chapternofonts%
-\edef\temp{{\realbackslash chapentry
- {#1}{\putwordAppendix{} \appendixletter}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\global\let\section = \appendixsec
-\global\let\subsection = \appendixsubsec
-\global\let\subsubsection = \appendixsubsubsec
-}}
-
-\outer\def\top{\parsearg\unnumberedyyy}
-\outer\def\unnumbered{\parsearg\unnumberedyyy}
-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz #1{\seccheck{unnumbered}%
-\secno=0 \subsecno=0 \subsubsecno=0
-%
-% This used to be simply \message{#1}, but TeX fully expands the
-% argument to \message. Therefore, if #1 contained @-commands, TeX
-% expanded them. For example, in `@unnumbered The @cite{Book}', TeX
-% expanded @cite (which turns out to cause errors because \cite is meant
-% to be executed, not expanded).
-%
-% Anyway, we don't want the fully-expanded definition of @cite to appear
-% as a result of the \message, we just want `@cite' itself. We use
-% \the<toks register> to achieve this: TeX expands \the<toks> only once,
-% simply yielding the contents of the <toks register>.
-\toks0 = {#1}\message{(\the\toks0)}%
-%
-\unnumbchapmacro {#1}%
-\gdef\thischapter{#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\global\let\section = \unnumberedsec
-\global\let\subsection = \unnumberedsubsec
-\global\let\subsubsection = \unnumberedsubsubsec
-}}
-
-\outer\def\numberedsec{\parsearg\secyyy}
-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
-\def\seczzz #1{\seccheck{section}%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash secentry %
-{#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appendixsection{\parsearg\appendixsecyyy}
-\outer\def\appendixsec{\parsearg\appendixsecyyy}
-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz #1{\seccheck{appendixsection}%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash secentry %
-{#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz #1{\seccheck{unnumberedsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz #1{\seccheck{subsection}%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsecentry %
-{#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz #1{\seccheck{appendixsubsec}%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsecentry %
-{#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz #1{\seccheck{subsubsection}%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsubsecentry %
- {#1}
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}
- {\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsubsecentry{#1}%
- {\appendixletter}
- {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they should now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-% NOTE on use of \vbox for chapter headings, section headings, and
-% such:
-% 1) We use \vbox rather than the earlier \line to permit
-% overlong headings to fold.
-% 2) \hyphenpenalty is set to 10000 because hyphenation in a
-% heading is obnoxious; this forbids it.
-% 3) Likewise, headings look best if no \parindent is used, and
-% if justification is not attempted. Hence \raggedright.
-
-
-\def\majorheading{\parsearg\majorheadingzzz}
-\def\majorheadingzzz #1{%
-{\advance\chapheadingskip by 10pt \chapbreak }%
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\chapheading{\parsearg\chapheadingzzz}
-\def\chapheadingzzz #1{\chapbreak %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\heading{\parsearg\secheadingi}
-
-\def\subheading{\parsearg\subsecheadingi}
-
-\def\subsubheading{\parsearg\subsubsecheadingi}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-%%% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-\def\CHAPFplain{
-\global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain}
-
-\def\chfplain #1#2{%
- \pchapsepmacro
- {%
- \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #2\enspace #1}%
- }%
- \bigskip
- \penalty5000
-}
-
-\def\unnchfplain #1{%
-\pchapsepmacro %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 10000 %
-}
-\CHAPFplain % The default
-
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 10000 %
-}
-
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-
-\def\CHAPFopen{
-\global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen}
-
-% Parameter controlling skip before section headings.
-
-\newskip \subsecheadingskip \subsecheadingskip = 17pt plus 8pt minus 4pt
-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
-
-\newskip \secheadingskip \secheadingskip = 21pt plus 8pt minus 4pt
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
-
-% @paragraphindent is defined for the Info formatting commands only.
-\let\paragraphindent=\comment
-
-% Section fonts are the base font at magstep2, which produces
-% a size a bit more than 14 points in the default situation.
-
-\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}}
-\def\plainsecheading #1{\secheadingi {#1}}
-\def\secheadingi #1{{\advance \secheadingskip by \parskip %
-\secheadingbreak}%
-{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
-
-
-% Subsection fonts are the base font at magstep1,
-% which produces a size of 12 points.
-
-\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}}
-\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip %
-\subsecheadingbreak}%
-{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
-
-\def\subsubsecfonts{\subsecfonts} % Maybe this should change:
- % Perhaps make sssec fonts scaled
- % magstep half
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}}
-\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip %
-\subsecheadingbreak}%
-{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000}
-
-
-\message{toc printing,}
-
-% Finish up the main text and prepare to read what we've written
-% to \contentsfile.
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\def\startcontents#1{%
- \pagealignmacro
- \immediate\closeout \contentsfile
- \ifnum \pageno>0
- \pageno = -1 % Request roman numbered pages.
- \fi
- % Don't need to put `Contents' or `Short Contents' in the headline.
- % It is abundantly clear what they are.
- \unnumbchapmacro{#1}\def\thischapter{}%
- \begingroup % Set up to handle contents files properly.
- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
- \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
- \raggedbottom % Worry more about breakpoints than the bottom.
- \advance\hsize by -\contentsrightmargin % Don't use the full line length.
-}
-
-
-% Normal (long) toc.
-\outer\def\contents{%
- \startcontents{\putwordTableofContents}%
- \input \jobname.toc
- \endgroup
- \vfill \eject
-}
-
-% And just the chapters.
-\outer\def\summarycontents{%
- \startcontents{\putwordShortContents}%
- %
- \let\chapentry = \shortchapentry
- \let\unnumbchapentry = \shortunnumberedentry
- % We want a true roman here for the page numbers.
- \secfonts
- \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
- \rm
- \advance\baselineskip by 1pt % Open it up a little.
- \def\secentry ##1##2##3##4{}
- \def\unnumbsecentry ##1##2{}
- \def\subsecentry ##1##2##3##4##5{}
- \def\unnumbsubsecentry ##1##2{}
- \def\subsubsecentry ##1##2##3##4##5##6{}
- \def\unnumbsubsubsecentry ##1##2{}
- \input \jobname.toc
- \endgroup
- \vfill \eject
-}
-\let\shortcontents = \summarycontents
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Chapter-level things, for both the long and short contents.
-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
-
-% See comments in \dochapentry re vbox and related settings
-\def\shortchapentry#1#2#3{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}%
-}
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
-% We could simplify the code here by writing out an \appendixentry
-% command in the toc file for appendices, instead of using \chapentry
-% for both, but it doesn't seem worth it.
-\setbox0 = \hbox{\shortcontrm \putwordAppendix }
-\newdimen\shortappendixwidth \shortappendixwidth = \wd0
-
-\def\shortchaplabel#1{%
- % We typeset #1 in a box of constant width, regardless of the text of
- % #1, so the chapter titles will come out aligned.
- \setbox0 = \hbox{#1}%
- \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
- %
- % This space should be plenty, since a single number is .5em, and the
- % widest letter (M) is 1em, at least in the Computer Modern fonts.
- % (This space doesn't include the extra space that gets added after
- % the label; that gets put in in \shortchapentry above.)
- \advance\dimen0 by 1.1em
- \hbox to \dimen0{#1\hfil}%
-}
-
-\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}}
-
-% Sections.
-\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
-
-% Subsections.
-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
-
-% And subsubsections.
-\def\subsubsecentry#1#2#3#4#5#6{%
- \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
-
-
-% This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 3pc
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we would want to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
- \penalty-300 \vskip\baselineskip
- \begingroup
- \chapentryfonts
- \tocentry{#1}{\dopageno{#2}}%
- \endgroup
- \nobreak\vskip .25\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
- \secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
- \subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
- \subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-% Final typesetting of a toc entry; we use the same \entry macro as for
-% the index entries, but we want to suppress hyphenation here. (We
-% can't do that in the \entry macro, since index entries might consist
-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-%
-% \turnoffactive is for the sake of @" used for umlauts.
-\def\tocentry#1#2{\begingroup
- \hyphenpenalty = 10000
- \entry{\turnoffactive #1}{\turnoffactive #2}%
-\endgroup}
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\let\subsecentryfonts = \textfonts
-\let\subsubsecentryfonts = \textfonts
-
-
-\message{environments,}
-
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-% Furthermore, these definitions must come after we define our fonts.
-\newbox\dblarrowbox \newbox\longdblarrowbox
-\newbox\pushcharbox \newbox\bullbox
-\newbox\equivbox \newbox\errorbox
-
-\let\ptexequiv = \equiv
-
-%{\tentt
-%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
-%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
-%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
-%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
-% Adapted from the manmac format (p.420 of TeXbook)
-%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
-% depth .1ex\hfil}
-%}
-
-\def\point{$\star$}
-
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% Adapted from the TeXbook's \boxit.
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-
-\global\setbox\errorbox=\hbox to \dimen0{\hfil
- \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
- \advance\hsize by -2\dimen2 % Rules.
- \vbox{
- \hrule height\dimen2
- \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
- \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
- \kern3pt\vrule width\dimen2}% Space to right.
- \hrule height\dimen2}
- \hfil}
-
-% The @error{} command.
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex escapes into raw Tex temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
-
-\def\tex{\begingroup
-\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
-\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
-\catcode `\%=14
-\catcode 43=12
-\catcode`\"=12
-\catcode`\==12
-\catcode`\|=12
-\catcode`\<=12
-\catcode`\>=12
-\escapechar=`\\
-%
-\let\~=\ptextilde
-\let\{=\ptexlbrace
-\let\}=\ptexrbrace
-\let\.=\ptexdot
-\let\*=\ptexstar
-\let\dots=\ptexdots
-\def\@{@}%
-\let\bullet=\ptexbullet
-\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl
-\let\L=\ptexL
-%
-\let\Etex=\endgroup}
-
-% Define @lisp ... @endlisp.
-% @lisp does a \begingroup so it can rebind things,
-% including the definition of @endlisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments. \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% Make each space character in the input produce a normal interword
-% space in the output. Don't allow a line break at this space, as this
-% is used only in environments like @example, where each line of input
-% should produce a line of output anyway.
-%
-{\obeyspaces %
-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
-% Define \obeyedspace to be our active space, whatever it is. This is
-% for use in \parsearg.
-{\sepspaces%
-\global\let\obeyedspace= }
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical. We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip
-%
-\def\aboveenvbreak{{\advance\envskipamount by \parskip
-\endgraf \ifdim\lastskip<\envskipamount
-\removelastskip \penalty-50 \vskip\envskipamount \fi}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
-\let\nonarrowing=\relax
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \cartouche: draw rectangle w/rounded corners around argument
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\def\cbl{{\circle\char'012\hskip -6pt}}
-\def\cbr{{\hskip 6pt\circle\char'011}}
-\def\carttop{\hbox to \cartouter{\hskip\lskip
- \ctl\leaders\hrule height\circthick\hfil\ctr
- \hskip\rskip}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
- \cbl\leaders\hrule height\circthick\hfil\cbr
- \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\long\def\cartouche{%
-\begingroup
- \lskip=\leftskip \rskip=\rightskip
- \leftskip=0pt\rightskip=0pt %we want these *outside*.
- \cartinner=\hsize \advance\cartinner by-\lskip
- \advance\cartinner by-\rskip
- \cartouter=\hsize
- \advance\cartouter by 18pt % allow for 3pt kerns on either
-% side, and for 6pt waste from
-% each corner char
- \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
- % Flag to tell @lisp, etc., not to narrow margin.
- \let\nonarrowing=\comment
- \vbox\bgroup
- \baselineskip=0pt\parskip=0pt\lineskip=0pt
- \carttop
- \hbox\bgroup
- \hskip\lskip
- \vrule\kern3pt
- \vbox\bgroup
- \hsize=\cartinner
- \kern3pt
- \begingroup
- \baselineskip=\normbskip
- \lineskip=\normlskip
- \parskip=\normpskip
- \vskip -\parskip
-\def\Ecartouche{%
- \endgroup
- \kern3pt
- \egroup
- \kern3pt\vrule
- \hskip\rskip
- \egroup
- \cartbot
- \egroup
-\endgroup
-}}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\def\nonfillstart{%
- \aboveenvbreak
- \inENV % This group ends at the end of the body
- \hfuzz = 12pt % Don't be fussy
- \sepspaces % Make spaces be word-separators rather than space tokens.
- \singlespace
- \let\par = \lisppar % don't ignore blank lines
- \obeylines % each line of input is a line of output
- \parskip = 0pt
- \parindent = 0pt
- \emergencystretch = 0pt % don't try to avoid overfull boxes
- % @cartouche defines \nonarrowing to inhibit narrowing
- % at next level down.
- \ifx\nonarrowing\relax
- \advance \leftskip by \lispnarrowing
- \exdentamount=\lispnarrowing
- \let\exdent=\nofillexdent
- \let\nonarrowing=\relax
- \fi
-}
-
-% To ending an @example-like environment, we first end the paragraph
-% (via \afterenvbreak's vertical glue), and then the group. That way we
-% keep the zero \parskip that the environments set -- \parskip glue
-% will be inserted at the beginning of the next paragraph in the
-% document, after the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}%
-
-% This macro is
-\def\lisp{\begingroup
- \nonfillstart
- \let\Elisp = \nonfillfinish
- \tt
- \rawbackslash % have \ input char produce \ char from current font
- \gobble
-}
-
-% Define the \E... control sequence only if we are inside the
-% environment, so the error checking in \end will work.
-%
-% We must call \lisp last in the definition, since it reads the
-% return following the @example (or whatever) command.
-%
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-\def\smallexample{\begingroup \def\Esmallexample{\nonfillfinish\endgroup}\lisp}
-\def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}\lisp}
-
-% @smallexample and @smalllisp. This is not used unless the @smallbook
-% command is given. Originally contributed by Pavel@xerox.
-%
-\def\smalllispx{\begingroup
- \nonfillstart
- \let\Esmalllisp = \nonfillfinish
- \let\Esmallexample = \nonfillfinish
- %
- % Smaller interline space and fonts for small examples.
- \setleading{10pt}%
- \indexfonts \tt
- \rawbackslash % make \ output the \ character from the current font (tt)
- \gobble
-}
-
-% This is @display; same as @lisp except use roman font.
-%
-\def\display{\begingroup
- \nonfillstart
- \let\Edisplay = \nonfillfinish
- \gobble
-}
-
-% This is @format; same as @display except don't narrow margins.
-%
-\def\format{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eformat = \nonfillfinish
- \gobble
-}
-
-% @flushleft (same as @format) and @flushright.
-%
-\def\flushleft{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eflushleft = \nonfillfinish
- \gobble
-}
-\def\flushright{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eflushright = \nonfillfinish
- \advance\leftskip by 0pt plus 1fill
- \gobble}
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
-%
-\def\quotation{%
- \begingroup\inENV %This group ends at the end of the @quotation body
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \singlespace
- \parindent=0pt
- % We have retained a nonzero parskip for the environment, since we're
- % doing normal filling. So to avoid extra space below the environment...
- \def\Equotation{\parskip = 0pt \nonfillfinish}%
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
- \ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
- \advance\rightskip by \lispnarrowing
- \exdentamount = \lispnarrowing
- \let\nonarrowing = \relax
- \fi
-}
-
-\message{defuns,}
-% Define formatter for defuns
-% First, allow user to change definition object font (\df) internally
-\def\setdeffont #1 {\csname DEF#1\endcsname}
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deftypemargin \deftypemargin=12pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-
-\newcount\parencount
-% define \functionparens, which makes ( and ) and & do special things.
-% \functionparens affects the group it is contained in.
-\def\activeparens{%
-\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
-\catcode`\[=\active \catcode`\]=\active}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
-
-% Be sure that we always have a definition for `(', etc. For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-\global\let(=\lparen \global\let)=\rparen
-\global\let[=\lbrack \global\let]=\rbrack
-
-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-% This is used to turn on special parens
-% but make & act ordinary (given that it's active).
-\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
-
-% Definitions of (, ) and & used in args for functions.
-% This is the definition of ( outside of all parentheses.
-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %
-\global\advance\parencount by 1 }
-%
-% This is the definition of ( when already inside a level of parens.
-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-%
-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
-% also in that case restore the outer-level definition of (.
-\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
-\global\advance \parencount by -1 }
-% If we encounter &foo, then turn on ()-hacking afterwards
-\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
-%
-\gdef\normalparens{\boldbrax\let&=\ampnr}
-} % End of definition inside \activeparens
-%% These parens (in \boldbrax) actually are a little bolder than the
-%% contained text. This is especially needed for [ and ]
-\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&}
-\def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}}
-
-% First, defname, which formats the header line itself.
-% #1 should be the function name.
-% #2 should be the type of definition, such as "Function".
-
-\def\defname #1#2{%
-% Get the values of \leftskip and \rightskip as they were
-% outside the @def...
-\dimen2=\leftskip
-\advance\dimen2 by -\defbodyindent
-\dimen3=\rightskip
-\advance\dimen3 by -\defbodyindent
-\noindent %
-\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
-\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
-\parshape 2 0in \dimen0 \defargsindent \dimen1 %
-% Now output arg 2 ("Function" or some such)
-% ending at \deftypemargin from the right margin,
-% but stuck inside a box of width 0 so it does not interfere with linebreaking
-{% Adjust \hsize to exclude the ambient margins,
-% so that \rightline will obey them.
-\advance \hsize by -\dimen2 \advance \hsize by -\dimen3
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}%
-% Make all lines underfull and no complaints:
-\tolerance=10000 \hbadness=10000
-\advance\leftskip by -\defbodyindent
-\exdentamount=\defbodyindent
-{\df #1}\enskip % Generate function name
-}
-
-% Actually process the body of a definition
-% #1 should be the terminating control sequence, such as \Edefun.
-% #2 should be the "another name" control sequence, such as \defunx.
-% #3 should be the control sequence that actually processes the header,
-% such as \defunheader.
-
-\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active % 61 is `='
-\obeylines\activeparens\spacesplit#3}
-
-\def\defmethparsebody #1#2#3#4 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
-
-\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
-
-% These parsing functions are similar to the preceding ones
-% except that they do not make parens into active characters.
-% These are used for "variables" since they have no arguments.
-
-\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active %
-\obeylines\spacesplit#3}
-
-% This is used for \def{tp,vr}parsebody. It could probably be used for
-% some of the others, too, with some judicious conditionals.
-%
-\def\parsebodycommon#1#2#3{%
- \begingroup\inENV %
- \medbreak %
- % Define the end token that this defining construct specifies
- % so that it will exit this group.
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines
-}
-
-\def\defvrparsebody#1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \spacesplit{#3{#4}}%
-}
-
-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
-% type is just `struct', because we lose the braces in `{struct
-% termios}' when \spacesplit reads its undelimited argument. Sigh.
-% \let\deftpparsebody=\defvrparsebody
-%
-% So, to get around this, we put \empty in with the type name. That
-% way, TeX won't find exactly `{...}' as an undelimited argument, and
-% won't strip off the braces.
-%
-\def\deftpparsebody #1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-}
-
-% Fine, but then we have to eventually remove the \empty *and* the
-% braces (if any). That's what this does, putting the result in \tptemp.
-%
-\def\removeemptybraces\empty#1\relax{\def\tptemp{#1}}%
-
-% After \spacesplit has done its work, this is called -- #1 is the final
-% thing to call, #2 the type name (which starts with \empty), and #3
-% (which might be empty) the arguments.
-%
-\def\parsetpheaderline#1#2#3{%
- \removeemptybraces#2\relax
- #1{\tptemp}{#3}%
-}%
-
-\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\spacesplit{#3{#5}}}
-
-% Split up #2 at the first space token.
-% call #1 with two arguments:
-% the first is all of #2 before the space token,
-% the second is all of #2 after that space token.
-% If #2 contains no space token, all of it is passed as the first arg
-% and the second is passed as empty.
-
-{\obeylines
-\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
-\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
-\ifx\relax #3%
-#1{#2}{}\else #1{#2}{#3#4}\fi}}
-
-% So much for the things common to all kinds of definitions.
-
-% Define @defun.
-
-% First, define the processing that is wanted for arguments of \defun
-% Use this to expand the args and terminate the paragraph they make up
-
-\def\defunargs #1{\functionparens \sl
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-\hyphenchar\tensl=0
-#1%
-\hyphenchar\tensl=45
-\ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi%
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
-}
-
-\def\deftypefunargs #1{%
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Use \boldbraxnoamp, not \functionparens, so that & is not special.
-\boldbraxnoamp
-\tclose{#1}% avoid \code because of side effects on active chars
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
-}
-
-% Do complete processing of one @defun or @defunx line already parsed.
-
-% @deffn Command forward-char nchars
-
-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
-
-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defun == @deffn Function
-
-\def\defun{\defparsebody\Edefun\defunx\defunheader}
-
-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Function}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefun int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
-
-% #1 is the data type. #2 is the name and args.
-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
-% #1 is the data type, #2 the name, #3 the args.
-\def\deftypefunheaderx #1#2 #3\relax{%
-\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}%
-\deftypefunargs {#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
-
-% \defheaderxcond#1\relax$$$
-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
-\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
-
-% #1 is the classification. #2 is the data type. #3 is the name and args.
-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
-\def\deftypefnheaderx #1#2#3 #4\relax{%
-\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup
-\normalparens % notably, turn off `&' magic, which prevents
-% at least some C++ text from working
-\defname {\defheaderxcond#2\relax$$$#3}{#1}%
-\deftypefunargs {#4}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defmac == @deffn Macro
-
-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
-
-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Macro}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defspec == @deffn Special Form
-
-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
-
-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Special Form}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% This definition is run if you use @defunx
-% anywhere other than immediately after a @defun or @defunx.
-
-\def\deffnx #1 {\errmessage{@deffnx in invalid context}}
-\def\defunx #1 {\errmessage{@defunx in invalid context}}
-\def\defmacx #1 {\errmessage{@defmacx in invalid context}}
-\def\defspecx #1 {\errmessage{@defspecx in invalid context}}
-\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}}
-
-% @defmethod, and so on
-
-% @defop {Funny Method} foo-class frobnicate argument
-
-\def\defop #1 {\def\defoptype{#1}%
-\defopparsebody\Edefop\defopx\defopheader\defoptype}
-
-\def\defopheader #1#2#3{%
-\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index
-\begingroup\defname {#2}{\defoptype{} on #1}%
-\defunargs {#3}\endgroup %
-}
-
-% @defmethod == @defop Method
-
-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-
-\def\defmethodheader #1#2#3{%
-\dosubind {fn}{\code{#2}}{on #1}% entry in function index
-\begingroup\defname {#2}{Method on #1}%
-\defunargs {#3}\endgroup %
-}
-
-% @defcv {Class Option} foo-class foo-flag
-
-\def\defcv #1 {\def\defcvtype{#1}%
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
-
-\def\defcvarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{\defcvtype{} of #1}%
-\defvarargs {#3}\endgroup %
-}
-
-% @defivar == @defcv {Instance Variable}
-
-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-
-\def\defivarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{Instance Variable of #1}%
-\defvarargs {#3}\endgroup %
-}
-
-% These definitions are run if you use @defmethodx, etc.,
-% anywhere other than immediately after a @defmethod, etc.
-
-\def\defopx #1 {\errmessage{@defopx in invalid context}}
-\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}}
-\def\defcvx #1 {\errmessage{@defcvx in invalid context}}
-\def\defivarx #1 {\errmessage{@defivarx in invalid context}}
-
-% Now @defvar
-
-% First, define the processing that is wanted for arguments of @defvar.
-% This is actually simple: just print them in roman.
-% This must expand the args and terminate the paragraph they make up
-\def\defvarargs #1{\normalparens #1%
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000}
-
-% @defvr Counter foo-count
-
-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
-
-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
-
-% @defvar == @defvr Variable
-
-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
-
-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{Variable}%
-\defvarargs {#2}\endgroup %
-}
-
-% @defopt == @defvr {User Option}
-
-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
-
-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{User Option}%
-\defvarargs {#2}\endgroup %
-}
-
-% @deftypevar int foobar
-
-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
-
-% #1 is the data type. #2 is the name.
-\def\deftypevarheader #1#2{%
-\doind {vr}{\code{#2}}% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}%
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000
-\endgroup}
-
-% @deftypevr {Global Flag} int enable
-
-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
-
-\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}%
-\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000
-\endgroup}
-
-% This definition is run if you use @defvarx
-% anywhere other than immediately after a @defvar or @defvarx.
-
-\def\defvrx #1 {\errmessage{@defvrx in invalid context}}
-\def\defvarx #1 {\errmessage{@defvarx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}}
-
-% Now define @deftp
-% Args are printed in bold, a slight difference from @defvar.
-
-\def\deftpargs #1{\bf \defvarargs{#1}}
-
-% @deftp Class window height width ...
-
-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
-
-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-
-% This definition is run if you use @deftpx, etc
-% anywhere other than immediately after a @deftp, etc.
-
-\def\deftpx #1 {\errmessage{@deftpx in invalid context}}
-
-\message{cross reference,}
-% Define cross-reference macros
-\newwrite \auxfile
-
-\newif\ifhavexrefs % True if xref values are known.
-\newif\ifwarnedxrefs % True if we warned once that they aren't known.
-
-% \setref{foo} defines a cross-reference point named foo.
-
-\def\setref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Ysectionnumberandtype}}
-
-\def\unnumbsetref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Ynothing}}
-
-\def\appendixsetref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Yappendixletterandtype}}
-
-% \xref, \pxref, and \ref generate cross-references to specified points.
-% For \xrefX, #1 is the node name, #2 the name of the Info
-% cross-reference, #3 the printed node name, #4 the name of the Info
-% file, #5 the name of the printed manual. All but the node name can be
-% omitted.
-%
-\def\href#1{\hrefX[#1,,,]}
-\def\hrefX[#1,#2,#3,#4]{#1}
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
- \def\printedmanual{\ignorespaces #5}%
- \def\printednodename{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual}%
- \setbox0=\hbox{\printednodename}%
- \ifdim \wd0 = 0pt
- % No printed node name was explicitly given.
- \ifx\SETxref-automatic-section-title\thisisundefined
- % Use the node name inside the square brackets.
- \def\printednodename{\ignorespaces #1}%
- \else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1>0pt%
- % It is in another manual, so we don't have it.
- \def\printednodename{\ignorespaces #1}%
- \else
- \ifhavexrefs
- % We know the real title if we have the xref values.
- \def\printednodename{\refx{#1-title}{}}%
- \else
- % Otherwise just copy the Info node name.
- \def\printednodename{\ignorespaces #1}%
- \fi%
- \fi
- \fi
- \fi
- %
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifdim \wd1 > 0pt
- \putwordsection{} ``\printednodename'' in \cite{\printedmanual}%
- \else
- % _ (for example) has to be the character _ for the purposes of the
- % control sequence corresponding to the node, but it has to expand
- % into the usual \leavevmode...\vrule stuff for purposes of
- % printing. So we \turnoffactive for the \refx-snt, back on for the
- % printing, back off for the \refx-pg.
- {\turnoffactive \refx{#1-snt}{}}%
- \space [\printednodename],\space
- \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
- \fi
-\endgroup}
-
-% \dosetq is the interface for calls from other macros
-
-% Use \turnoffactive so that punctuation chars such as underscore
-% work in node names.
-\def\dosetq #1#2{{\let\folio=0 \turnoffactive \auxhat%
-\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}%
-\next}}
-
-% \internalsetq {foo}{page} expands into
-% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
-% When the aux file is read, ' is the escape character
-
-\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
-
-% Things to be expanded by \internalsetq
-
-\def\Ypagenumber{\folio}
-
-\def\Ytitle{\thissection}
-
-\def\Ynothing{}
-
-\def\Ysectionnumberandtype{%
-\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
-\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\def\Yappendixletterandtype{%
-\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
-\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\gdef\xreftie{'tie}
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
- \let\linenumber = \empty % Non-3.0.
-\else
- \def\linenumber{\the\inputlineno:\space}
-\fi
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-
-\def\refx#1#2{%
- \expandafter\ifx\csname X#1\endcsname\relax
- % If not defined, say something at least.
- $\langle$un\-de\-fined$\rangle$%
- \ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
- \else
- \ifwarnedxrefs\else
- \global\warnedxrefstrue
- \message{Cross reference values unknown; you must run TeX again.}%
- \fi
- \fi
- \else
- % It's defined, so just use it.
- \csname X#1\endcsname
- \fi
- #2% Output the suffix in any case.
-}
-
-% Read the last existing aux file, if any. No error if none exists.
-
-% This is the macro invoked by entries in the aux file.
-\def\xrdef #1#2{
-{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}}
-
-\def\readauxfile{%
-\begingroup
-\catcode `\^^@=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\^^C=\other
-\catcode `\^^D=\other
-\catcode `\^^E=\other
-\catcode `\^^F=\other
-\catcode `\^^G=\other
-\catcode `\^^H=\other
-\catcode `\ =\other
-\catcode `\^^L=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode 26=\other
-\catcode `\^^[=\other
-\catcode `\^^\=\other
-\catcode `\^^]=\other
-\catcode `\^^^=\other
-\catcode `\^^_=\other
-\catcode `\@=\other
-\catcode `\^=\other
-\catcode `\~=\other
-\catcode `\[=\other
-\catcode `\]=\other
-\catcode`\"=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode `\$=\other
-\catcode `\#=\other
-\catcode `\&=\other
-% `\+ does not work, so use 43.
-\catcode 43=\other
-% Make the characters 128-255 be printing characters
-{%
- \count 1=128
- \def\loop{%
- \catcode\count 1=\other
- \advance\count 1 by 1
- \ifnum \count 1<256 \loop \fi
- }%
-}%
-% the aux file uses ' as the escape.
-% Turn off \ as an escape so we do not lose on
-% entries which were dumped with control sequences in their names.
-% For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
-% Reference to such entries still does not work the way one would wish,
-% but at least they do not bomb out when the aux file is read in.
-\catcode `\{=1 \catcode `\}=2
-\catcode `\%=\other
-\catcode `\'=0
-\catcode`\^=7 % to make ^^e4 etc usable in xref tags
-\catcode `\\=\other
-\openin 1 \jobname.aux
-\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue
-\global\warnedobstrue
-\fi
-% Open the new aux file. Tex will close it automatically at exit.
-\openout \auxfile=\jobname.aux
-\endgroup}
-
-
-% Footnotes.
-
-\newcount \footnoteno
-
-% The trailing space in the following definition for supereject is
-% vital for proper filling; pages come out unaligned when you do a
-% pagealignmacro call if that space before the closing brace is
-% removed.
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for info output only..
-\let\footnotestyle=\comment
-
-\let\ptexfootnote=\footnote
-
-{\catcode `\@=11
-%
-% Auto-number footnotes. Otherwise like plain.
-\gdef\footnote{%
- \global\advance\footnoteno by \@ne
- \edef\thisfootno{$^{\the\footnoteno}$}%
- %
- % In case the footnote comes at the end of a sentence, preserve the
- % extra spacing after we do the footnote number.
- \let\@sf\empty
- \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
- %
- % Remove inadvertent blank space before typesetting the footnote number.
- \unskip
- \thisfootno\@sf
- \footnotezzz
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter. Our footnotes don't need to be so general.
-%
-\long\gdef\footnotezzz#1{\insert\footins{%
- % We want to typeset this text as a normal paragraph, even if the
- % footnote reference occurs in (for example) a display environment.
- % So reset some parameters.
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox % top baseline for broken footnotes
- \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip
- \rightskip\z@skip
- \spaceskip\z@skip
- \xspaceskip\z@skip
- \parindent\defaultparindent
- %
- % Hang the footnote text off the number.
- \hang
- \textindent{\thisfootno}%
- %
- % Don't crash into the line above the footnote text. Since this
- % expands into a box, it must come within the paragraph, lest it
- % provide a place where TeX can split the footnote.
- \footstrut
- #1\strut}%
-}
-
-}%end \catcode `\@=11
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly. There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-\def\setleading#1{%
- \normalbaselineskip = #1\relax
- \normallineskip = \lineskipfactor\normalbaselineskip
- \normalbaselines
- \setbox\strutbox =\hbox{%
- \vrule width0pt height\strutheightpercent\baselineskip
- depth \strutdepthpercent \baselineskip
- }%
-}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt}
-
-
-% End of control word definitions.
-
-\message{and turning on texinfo input format.}
-
-\def\openindices{%
- \newindex{cp}%
- \newcodeindex{fn}%
- \newcodeindex{vr}%
- \newcodeindex{tp}%
- \newcodeindex{ky}%
- \newcodeindex{pg}%
-}
-
-% Set some numeric style parameters, for 8.5 x 11 format.
-
-%\hsize = 6.5in
-\newdimen\defaultparindent \defaultparindent = 15pt
-\parindent = \defaultparindent
-\parskip 18pt plus 1pt
-\setleading{15pt}
-\advance\topskip by 1.2cm
-
-% Prevent underfull vbox error messages.
-\vbadness=10000
-
-% Following George Bush, just get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything. We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize. This makes it come to about 9pt for the 8.5x11 format.
-%
-\ifx\emergencystretch\thisisundefined
- % Allow us to assign to \emergencystretch anyway.
- \def\emergencystretch{\dimen0}%
-\else
- \emergencystretch = \hsize
- \divide\emergencystretch by 45
-\fi
-
-% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25)
-\def\smallbook{
-
-% These values for secheadingskip and subsecheadingskip are
-% experiments. RJC 7 Aug 1992
-\global\secheadingskip = 17pt plus 6pt minus 3pt
-\global\subsecheadingskip = 14pt plus 6pt minus 3pt
-
-\global\lispnarrowing = 0.3in
-\setleading{12pt}
-\advance\topskip by -1cm
-\global\parskip 3pt plus 1pt
-\global\hsize = 5in
-\global\vsize=7.5in
-\global\tolerance=700
-\global\hfuzz=1pt
-\global\contentsrightmargin=0pt
-\global\deftypemargin=0pt
-\global\defbodyindent=.5cm
-
-\global\pagewidth=\hsize
-\global\pageheight=\vsize
-
-\global\let\smalllisp=\smalllispx
-\global\let\smallexample=\smalllispx
-\global\def\Esmallexample{\Esmalllisp}
-}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{
-\global\tolerance=700
-\global\hfuzz=1pt
-\setleading{12pt}
-\global\parskip 15pt plus 1pt
-
-\global\vsize= 53\baselineskip
-\advance\vsize by \topskip
-%\global\hsize= 5.85in % A4 wide 10pt
-\global\hsize= 6.5in
-\global\outerhsize=\hsize
-\global\advance\outerhsize by 0.5in
-\global\outervsize=\vsize
-\global\advance\outervsize by 0.6in
-
-\global\pagewidth=\hsize
-\global\pageheight=\vsize
-}
-
-% Allow control of the text dimensions. Parameters in order: textheight;
-% textwidth; \voffset; \hoffset (!); binding offset. All require a dimension;
-% header is additional; added length extends the bottom of the page.
-
-\def\changepagesizes#1#2#3#4#5{
- \global\vsize= #1
- \advance\vsize by \topskip
- \global\voffset= #3
- \global\hsize= #2
- \global\outerhsize=\hsize
- \global\advance\outerhsize by 0.5in
- \global\outervsize=\vsize
- \global\advance\outervsize by 0.6in
- \global\pagewidth=\hsize
- \global\pageheight=\vsize
- \global\normaloffset= #4
- \global\bindingoffset= #5}
-
-% This layout is compatible with Latex on A4 paper.
-
-\def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}}
-
-% Use @afourwide to print on European A4 paper in wide format.
-\def\afourwide{\afourpaper
-\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}}
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise. Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\the\font=0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt \char '042}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt \char '176}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def\auxhat{\def^{'hat}}
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}}
-
-\catcode`\|=\active
-\def|{{\tt \char '174}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-%\catcode 27=\active
-%\def^^[{$\diamondsuit$}
-
-% Set up an active definition for =, but don't enable it most of the time.
-{\catcode`\==\active
-\global\def={{\tt \char 61}}}
-
-\catcode`+=\active
-\catcode`\_=\active
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-\catcode`\@=0
-
-% \rawbackslashxx output one backslash character in current font
-\global\chardef\rawbackslashxx=`\\
-%{\catcode`\\=\other
-%@gdef@rawbackslashxx{\}}
-
-% \rawbackslash redefines \ as input to do \rawbackslashxx.
-{\catcode`\\=\active
-@gdef@rawbackslash{@let\=@rawbackslashxx }}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
-
-% Say @foo, not \foo, in error messages.
-\escapechar=`\@
-
-% \catcode 17=0 % Define control-q
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{@let"=@normaldoublequote
-@let\=@realbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus}
-
-@def@normalturnoffactive{@let"=@normaldoublequote
-@let\=@normalbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also back turn on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi
- @catcode`+=@active @catcode`@_=@active}
-
-%% These look ok in all fonts, so just make them not special. The @rm below
-%% makes sure that the current font starts out as the newly loaded cmr10
-@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other
-
-@textfonts
-@rm
-
-@c Local variables:
-@c page-delimiter: "^\\\\message"
-@c End:
diff --git a/doc/tools/bmenu/Makefile b/doc/tools/bmenu/Makefile
deleted file mode 100644
index 2a3d20ac3e..0000000000
--- a/doc/tools/bmenu/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-CC=gcc
-#CFLAGS=-O4 -fomit-frame-pointer
-CFLAGS=-g
-
-#TEXINPUTS=/home/gnu/work/binutils-2.6/texinfo:.
-PROG=bmenu
-
-all: $(PROG)
-
-$(BASE).txt: $(BASE).d ./$(PROG)
- ./$(PROG) $(BASE).d
-
-$(PROG): main.o chain.o
- gcc main.o chain.o -o $(PROG)
-
-main.o: main.c base.h
-
-chain.o: chain.c
-
-info: c_user.texinfo timer.texi
- makeinfo c_user.texinfo
-
-TESTER=init
-test: all
- #rm -f timer.txt
- #./bmenu -v timer.texi
- #cp ../user/$(TESTER).texi .
- ./bmenu -u "DOCS UP" -p "DOCS PREV" -n "DOCS NEXT" -v testdoc.txt
- #mv $(TESTER).txt $(TESTER).texi
- #makeinfo c_user.texinfo
-
-
-clean:
- rm -f *.o $(PROG) *.txt core *.html
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f c_user c_user-* _*
-
diff --git a/doc/tools/bmenu/address.h b/doc/tools/bmenu/address.h
deleted file mode 100644
index f4cd38b255..0000000000
--- a/doc/tools/bmenu/address.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* address.h
- *
- * This include file contains the information required to manipulate
- * physical addresses.
- *
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __ADDRESSES_h
-#define __ADDRESSES_h
-
-/*
- * _Addresses_Add_offset
- *
- * DESCRIPTION:
- *
- * This function is used to add an offset to a base address.
- * It returns the resulting address. This address is typically
- * converted to an access type before being used further.
- */
-
-STATIC INLINE void *_Addresses_Add_offset (
- void *base,
- unsigned32 offset
-);
-
-/*
- * _Addresses_Subtract_offset
- *
- * DESCRIPTION:
- *
- * This function is used to subtract an offset from a base
- * address. It returns the resulting address. This address is
- * typically converted to an access type before being used further.
- */
-
-STATIC INLINE void *_Addresses_Subtract_offset(
- void *base,
- unsigned32 offset
-);
-
-/*
- * _Addresses_Add
- *
- * DESCRIPTION:
- *
- * This function is used to add two addresses. It returns the
- * resulting address. This address is typically converted to an
- * access type before being used further.
- */
-
-STATIC INLINE void *_Addresses_Add (
- void *left,
- void *right
-);
-
-/*
- * _Addresses_Subtract
- *
- * DESCRIPTION:
- *
- * This function is used to subtract two addresses. It returns the
- * resulting offset.
- */
-
-STATIC INLINE unsigned32 _Addresses_Subtract (
- void *left,
- void *right
-);
-
-/*
- * _Addresses_Is_aligned
- *
- * DESCRIPTION:
- *
- * This function returns TRUE if the given address is correctly
- * aligned for this processor and FALSE otherwise. Proper alignment
- * is based on correctness and efficiency.
- */
-
-STATIC INLINE boolean _Addresses_Is_aligned (
- void *address
-);
-
-/*
- * _Addresses_Is_in_range
- *
- * DESCRIPTION:
- *
- * This function returns TRUE if the given address is within the
- * memory range specified and FALSE otherwise. base is the address
- * of the first byte in the memory range and limit is the address
- * of the last byte in the memory range. The base address is
- * assumed to be lower than the limit address.
- */
-
-STATIC INLINE boolean _Addresses_Is_in_range (
- void *address,
- void *base,
- void *limit
-);
-
-#include "address.inl"
-
-#endif
-/* end of include file */
diff --git a/doc/tools/bmenu/address.inl b/doc/tools/bmenu/address.inl
deleted file mode 100644
index ddb1f76264..0000000000
--- a/doc/tools/bmenu/address.inl
+++ /dev/null
@@ -1,105 +0,0 @@
-/* inline/address.inl
- *
- * This include file contains the bodies of the routines
- * about addresses which are inlined.
- *
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __INLINE_ADDRESSES_inl
-#define __INLINE_ADDRESSES_inl
-
-/*PAGE
- *
- * _Addresses_Add_offset
- *
- */
-
-STATIC INLINE void *_Addresses_Add_offset (
- void *base,
- unsigned32 offset
-)
-{
- return (base + offset);
-}
-
-/*PAGE
- *
- * _Addresses_Subtract_offset
- *
- */
-
-STATIC INLINE void *_Addresses_Subtract_offset (
- void *base,
- unsigned32 offset
-)
-{
- return (base - offset);
-}
-
-/*PAGE
- *
- * _Addresses_Add
- *
- * NOTE: The cast of an address to an unsigned32 makes this code
- * dependent on an addresses being thirty two bits.
- */
-
-STATIC INLINE void *_Addresses_Add (
- void *left,
- void *right
-)
-{
- return (left + (unsigned32)right);
-}
-
-/*PAGE
- *
- * _Addresses_Subtract
- *
- * NOTE: The cast of an address to an unsigned32 makes this code
- * dependent on an addresses being thirty two bits.
- */
-
-STATIC INLINE unsigned32 _Addresses_Subtract (
- void *left,
- void *right
-)
-{
- return (left - right);
-}
-
-/*PAGE
- *
- * _Addresses_Is_aligned
- *
- */
-
-STATIC INLINE boolean _Addresses_Is_aligned (
- void *address
-)
-{
- return ( ( (unsigned32)address % 4 ) == 0 );
-}
-
-/*PAGE
- *
- * _Addresses_Is_aligned
- *
- */
-
-STATIC INLINE boolean _Addresses_Is_in_range (
- void *address,
- void *base,
- void *limit
-)
-{
- return ( address >= base && address <= limit );
-}
-
-#endif
-/* end of include file */
diff --git a/doc/tools/bmenu/base.h b/doc/tools/bmenu/base.h
deleted file mode 100644
index f7c3999b69..0000000000
--- a/doc/tools/bmenu/base.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __PDL2AMI_h
-#define __PDL2AMI_h
-
-#include "system.h"
-#include "chain.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
-
-/*
- * Paragraph size should be kept down because it is allocated for each
- * Line_Control. If this number is large, the memory requirements for
- * the program increase significantly.
- */
-
-#define BUFFER_SIZE (2 * 1024)
-#define PARAGRAPH_SIZE (2 * 1024)
-
-#define NUMBER_ELEMENTS( _x ) (sizeof(_x) / sizeof _x[0])
-
-void exit_application(
- int status
-);
-
-void ProcessFile(
- char *inname,
- char *outname
-);
-
-void strtolower(
- char *dest,
- char *src
-);
-
-void strtoInitialCaps(
- char *dest,
- char *src
-);
-
-void StripBlanks( void );
-
-void MergeParagraphs( void );
-
-int CheckForIncomplete( void );
-
-int CheckOutline( void );
-
-int CheckSections( void );
-
-void GenerateLists( void );
-
-void GenerateAList(
- char *section,
- Chain_Control *the_list
-);
-
-void LookForInternalInconsistencies( void );
-
-int Match_Argument(
- char **array,
- int entries,
- char *users
-);
-
-void usage( void );
-
-void ReadFileIntoChain(
- char *inname
-);
-
-int MergeText( void );
-
-int CheckForBadWhiteSpace();
-
-void RemoveCopyright();
-
-void RemovePagebreaks();
-
-int RemoveExtraBlankLines();
-
-void FormatToTexinfo( void );
-
-void PrintFile(
- char *out
-);
-
-void DumpList(
- Chain_Control *the_list
-);
-
-void ReleaseFile();
-
-EXTERN boolean Verbose; /* status/debug msgs */
-EXTERN boolean BlankAsWarnings;
-EXTERN Chain_Control Lines;
-
-EXTERN int NumberOfAttributes;
-EXTERN int NumberOfAssociations;
-EXTERN int NumberOfAbstractTypes;
-EXTERN int NumberOfDataItems;
-EXTERN int NumberOfMethods;
-EXTERN int NumberOfTasks;
-
-#endif
diff --git a/doc/tools/bmenu/chain.c b/doc/tools/bmenu/chain.c
deleted file mode 100644
index 8ddc6add81..0000000000
--- a/doc/tools/bmenu/chain.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Chain Handler
- *
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#include "system.h"
-#include "address.h"
-#include "chain.h"
-#include "isr.h"
-
-/*PAGE
- *
- * _Chain_Initialize
- *
- * This kernel routine initializes a doubly linked chain.
- *
- * Input parameters:
- * the_chain - pointer to chain header
- * starting_address - starting address of first node
- * number_nodes - number of nodes in chain
- * node_size - size of node in bytes
- *
- * Output parameters: NONE
- */
-
-void _Chain_Initialize(
- Chain_Control *the_chain,
- void *starting_address,
- unsigned32 number_nodes,
- unsigned32 node_size
-)
-{
- unsigned32 count;
- Chain_Node *current;
- Chain_Node *next;
-
- count = number_nodes;
- current = _Chain_Head( the_chain );
- the_chain->permanent_null = NULL;
- next = (Chain_Node *)starting_address;
- while ( count-- ) {
- current->next = next;
- next->previous = current;
- current = next;
- next = (Chain_Node *)
- _Addresses_Add_offset( (void *) next, node_size );
- }
- current->next = _Chain_Tail( the_chain );
- the_chain->last = current;
-}
-
-/*PAGE
- *
- * _Chain_Get_first_unprotected
- */
-
-#ifndef USE_INLINES
-STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
- Chain_Control *the_chain
-)
-{
- Chain_Node *return_node;
- Chain_Node *new_first;
-
- return_node = the_chain->first;
- new_first = return_node->next;
- the_chain->first = new_first;
- new_first->previous = _Chain_Head( the_chain );
-
- return return_node;
-}
-#endif /* USE_INLINES */
-
-/*PAGE
- *
- * _Chain_Get
- *
- * This kernel routine returns a pointer to a node taken from the
- * given chain.
- *
- * Input parameters:
- * the_chain - pointer to chain header
- *
- * Output parameters:
- * return_node - pointer to node in chain allocated
- * CHAIN_END - if no nodes available
- *
- * INTERRUPT LATENCY:
- * only case
- */
-
-Chain_Node *_Chain_Get(
- Chain_Control *the_chain
-)
-{
- ISR_Level level;
- Chain_Node *return_node;
-
- return_node = NULL;
- _ISR_Disable( level );
- if ( !_Chain_Is_empty( the_chain ) )
- return_node = _Chain_Get_first_unprotected( the_chain );
- _ISR_Enable( level );
- return return_node;
-}
-
-/*PAGE
- *
- * _Chain_Append
- *
- * This kernel routine puts a node on the end of the specified chain.
- *
- * Input parameters:
- * the_chain - pointer to chain header
- * node - address of node to put at rear of chain
- *
- * Output parameters: NONE
- *
- * INTERRUPT LATENCY:
- * only case
- */
-
-void _Chain_Append(
- Chain_Control *the_chain,
- Chain_Node *node
-)
-{
- ISR_Level level;
-
- _ISR_Disable( level );
- _Chain_Append_unprotected( the_chain, node );
- _ISR_Enable( level );
-}
-
-/*PAGE
- *
- * _Chain_Extract
- *
- * This kernel routine deletes the given node from a chain.
- *
- * Input parameters:
- * node - pointer to node in chain to be deleted
- *
- * Output parameters: NONE
- *
- * INTERRUPT LATENCY:
- * only case
- */
-
-void _Chain_Extract(
- Chain_Node *node
-)
-{
- ISR_Level level;
-
- _ISR_Disable( level );
- _Chain_Extract_unprotected( node );
- _ISR_Enable( level );
-}
-
-/*PAGE
- *
- * _Chain_Insert
- *
- * This kernel routine inserts a given node after a specified node
- * a requested chain.
- *
- * Input parameters:
- * after_node - pointer to node in chain to be inserted after
- * node - pointer to node to be inserted
- *
- * Output parameters: NONE
- *
- * INTERRUPT LATENCY:
- * only case
- */
-
-void _Chain_Insert(
- Chain_Node *after_node,
- Chain_Node *node
-)
-{
- ISR_Level level;
-
- _ISR_Disable( level );
- _Chain_Insert_unprotected( after_node, node );
- _ISR_Enable( level );
-}
-
-/*PAGE
- *
- * _Chain_Insert_chain
- *
- * This routine inserts a chain after the specified node in another
- * chain. It is assumed that the insert after node is not on the
- * second chain.
- *
- * Input parameters:
- * insert_after - insert the chain after this node
- * to_insert - the chain to insert
- */
-
-void _Chain_Insert_chain(
- Chain_Node *insert_after,
- Chain_Control *to_insert
-)
-{
- Chain_Node *first;
- Chain_Node *last;
- Chain_Node *insert_after_next;
-
- first = to_insert->first;
- last = to_insert->last;
-
- insert_after_next = insert_after->next;
-
- insert_after->next = first;
- first->previous = insert_after;
-
- insert_after_next->previous = last;
- last->next = insert_after_next;
-
- _Chain_Initialize_empty( to_insert );
-}
diff --git a/doc/tools/bmenu/chain.h b/doc/tools/bmenu/chain.h
deleted file mode 100644
index b2c220516f..0000000000
--- a/doc/tools/bmenu/chain.h
+++ /dev/null
@@ -1,347 +0,0 @@
-/* chain.h
- *
- * This include file contains all the constants and structures associated
- * with the Doubly Linked Chain Handler.
- *
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __CHAIN_h
-#define __CHAIN_h
-
-#include "address.h"
-
-/*
- * This is used to manage each element (node) which is placed
- * on a chain.
- *
- * NOTE: Typically, a more complicated structure will use the
- * chain package. The more complicated structure will
- * include a chain node as the first element in its
- * control structure. It will then call the chain package
- * with a pointer to that node element. The node pointer
- * and the higher level structure start at the same address
- * so the user can cast the pointers back and forth.
- */
-
-typedef struct Chain_Node_struct Chain_Node;
-
-struct Chain_Node_struct {
- Chain_Node *next;
- Chain_Node *previous;
-};
-
-/*
- * This is used to manage a chain. A chain consists of a doubly
- * linked list of zero or more nodes.
- *
- * NOTE: This implementation does not require special checks for
- * manipulating the first and last elements on the chain.
- * To accomplish this the chain control structure is
- * treated as two overlapping chain nodes. The permanent
- * head of the chain overlays a node structure on the
- * first and permanent_null fields. The permanent tail
- * of the chain overlays a node structure on the
- * permanent_null and last elements of the structure.
- */
-
-typedef struct {
- Chain_Node *first;
- Chain_Node *permanent_null;
- Chain_Node *last;
-} Chain_Control;
-
-/*
- * _Chain_Initialize
- *
- * This routine initializes the_chain structure to manage the
- * contiguous array of number_nodes nodes which starts at
- * starting_address. Each node is of node_size bytes.
- */
-
-void _Chain_Initialize(
- Chain_Control *the_chain,
- void *starting_address,
- unsigned32 number_nodes,
- unsigned32 node_size
-);
-
-/*
- * _Chain_Initialize_empty
- *
- * This routine initializes the specified chain to contain zero nodes.
- */
-
-STATIC INLINE void _Chain_Initialize_empty(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Extract_unprotected
- *
- * This routine extracts the_node from the chain on which it resides.
- * It does NOT disable interrupts to insure the atomicity of the
- * extract operation.
- */
-
-STATIC INLINE void _Chain_Extract_unprotected(
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Extract
- *
- * This routine extracts the_node from the chain on which it resides.
- * It disables interrupts to insure the atomicity of the
- * extract operation.
- */
-
-void _Chain_Extract(
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Get_unprotected
- *
- * This function removes the first node from the_chain and returns
- * a pointer to that node. If the_chain is empty, then NULL is returned.
- * It does NOT disable interrupts to insure the atomicity of the
- * get operation.
- */
-
-STATIC INLINE Chain_Node *_Chain_Get_unprotected(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Get
- *
- * This function removes the first node from the_chain and returns
- * a pointer to that node. If the_chain is empty, then NULL is returned.
- * It disables interrupts to insure the atomicity of the
- * get operation.
- */
-
-Chain_Node *_Chain_Get(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Get_first_unprotected
- *
- * This function removes the first node from the_chain and returns
- * a pointer to that node. It does NOT disable interrupts to insure
- * the atomicity of the get operation.
- */
-
-STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Insert_unprotected
- *
- * This routine inserts the_node on a chain immediately following
- * after_node. It does NOT disable interrupts to insure the atomicity
- * of the extract operation.
- */
-
-STATIC INLINE void _Chain_Insert_unprotected(
- Chain_Node *after_node,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Insert
- *
- * This routine inserts the_node on a chain immediately following
- * after_node. It disables interrupts to insure the atomicity
- * of the extract operation.
- */
-
-void _Chain_Insert(
- Chain_Node *after_node,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Append_unprotected
- *
- * This routine appends the_node onto the end of the_chain.
- * It does NOT disable interrupts to insure the atomicity of the
- * append operation.
- */
-
-STATIC INLINE void _Chain_Append_unprotected(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Append
- *
- * This routine appends the_node onto the end of the_chain.
- * It disables interrupts to insure the atomicity of the
- * append operation.
- */
-
-void _Chain_Append(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Prepend_unprotected
- *
- * This routine prepends the_node onto the front of the_chain.
- * It does NOT disable interrupts to insure the atomicity of the
- * prepend operation.
- */
-
-STATIC INLINE void _Chain_Prepend_unprotected(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Prepend
- *
- * This routine prepends the_node onto the front of the_chain.
- * It disables interrupts to insure the atomicity of the
- * prepend operation.
- */
-
-STATIC INLINE void _Chain_Prepend(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Insert_chain
- *
- * This routine inserts a chain after the specified node in another
- * chain. It is assumed that the insert after node is not on the
- * second chain.
- */
-
-void _Chain_Insert_chain(
- Chain_Node *insert_after,
- Chain_Control *to_insert
-);
-
-/*
- * _Chain_Head
- *
- * This function returns a pointer to the first node on the chain.
- */
-
-STATIC INLINE Chain_Node *_Chain_Head(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Tail
- *
- * This function returns a pointer to the last node on the chain.
- */
-
-STATIC INLINE Chain_Node *_Chain_Tail(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Is_head
- *
- * This function returns TRUE if the_node is the head of the_chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_head(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Is_tail
- *
- * This function returns TRUE if the_node is the tail of the_chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_tail(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Is_first
- *
- * This function returns TRUE if the_node is the first node on a chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_first(
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Is_last
- *
- * This function returns TRUE if the_node is the last node on a chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_last(
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Is_empty
- *
- * This function returns TRUE if there a no nodes on the_chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_empty(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Has_only_one_node
- *
- * This function returns TRUE if there is only one node on the_chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Has_only_one_node(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Is_null
- *
- * This function returns TRUE if the_chain is NULL and FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_null(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Is_null_node
- *
- * This function returns TRUE if the_node is NULL and FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_null_node(
- Chain_Node *the_node
-);
-
-#include "chain.inl"
-
-#endif
-/* end of include file */
diff --git a/doc/tools/bmenu/chain.inl b/doc/tools/bmenu/chain.inl
deleted file mode 100644
index 4316f5e5b8..0000000000
--- a/doc/tools/bmenu/chain.inl
+++ /dev/null
@@ -1,271 +0,0 @@
-/* inline/chain.inl
- *
- * This include file contains the bodies of the routines which are
- * associated with doubly linked chains and inlined.
- *
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __INLINE_CHAIN_inl
-#define __INLINE_CHAIN_inl
-
-/*PAGE
- *
- * _Chain_Is_null
- */
-
-STATIC INLINE boolean _Chain_Is_null(
- Chain_Control *the_chain
-)
-{
- return ( the_chain == NULL );
-}
-
-/*PAGE
- *
- * _Chain_Is_null_node
- */
-
-STATIC INLINE boolean _Chain_Is_null_node(
- Chain_Node *the_node
-)
-{
- return ( the_node == NULL );
-}
-
-/*PAGE
- *
- * _Chain_Head
- */
-
-STATIC INLINE Chain_Node *_Chain_Head(
- Chain_Control *the_chain
-)
-{
- return (Chain_Node *) the_chain;
-}
-
-/*PAGE
- *
- * _Chain_Tail
- */
-
-STATIC INLINE Chain_Node *_Chain_Tail(
- Chain_Control *the_chain
-)
-{
- return (Chain_Node *) &the_chain->permanent_null;
-}
-
-/*PAGE
- *
- * _Chain_Is_empty
- */
-
-STATIC INLINE boolean _Chain_Is_empty(
- Chain_Control *the_chain
-)
-{
- return ( the_chain->first == _Chain_Tail( the_chain ) );
-}
-
-/*PAGE
- *
- * _Chain_Is_first
- */
-
-STATIC INLINE boolean _Chain_Is_first(
- Chain_Node *the_node
-)
-{
- return ( the_node->previous == NULL );
-}
-
-/*PAGE
- *
- * _Chain_Is_last
- */
-
-STATIC INLINE boolean _Chain_Is_last(
- Chain_Node *the_node
-)
-{
- return ( the_node->next == NULL );
-}
-
-/*PAGE
- *
- * _Chain_Has_only_one_node
- */
-
-STATIC INLINE boolean _Chain_Has_only_one_node(
- Chain_Control *the_chain
-)
-{
- return ( the_chain->first == the_chain->last );
-}
-
-/*PAGE
- *
- * _Chain_Is_head
- */
-
-STATIC INLINE boolean _Chain_Is_head(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- return ( the_node == _Chain_Head( the_chain ) );
-}
-
-/*PAGE
- *
- * _Chain_Is_tail
- */
-
-STATIC INLINE boolean _Chain_Is_tail(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- return ( the_node == _Chain_Tail( the_chain ) );
-}
-
-/*PAGE
- *
- * Chain_Initialize_empty
- */
-
-STATIC INLINE void _Chain_Initialize_empty(
- Chain_Control *the_chain
-)
-{
- the_chain->first = _Chain_Tail( the_chain );
- the_chain->permanent_null = NULL;
- the_chain->last = _Chain_Head( the_chain );
-}
-
-/*PAGE
- *
- * _Chain_Extract_unprotected
- */
-
-STATIC INLINE void _Chain_Extract_unprotected(
- Chain_Node *the_node
-)
-{
- Chain_Node *next;
- Chain_Node *previous;
-
- next = the_node->next;
- previous = the_node->previous;
- next->previous = previous;
- previous->next = next;
-}
-
-/*PAGE
- *
- * _Chain_Get_first_unprotected
- */
-
-STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
- Chain_Control *the_chain
-)
-{
- Chain_Node *return_node;
- Chain_Node *new_first;
-
- return_node = the_chain->first;
- new_first = return_node->next;
- the_chain->first = new_first;
- new_first->previous = _Chain_Head( the_chain );
-
- return return_node;
-}
-
-/*PAGE
- *
- * Chain_Get_unprotected
- */
-
-STATIC INLINE Chain_Node *_Chain_Get_unprotected(
- Chain_Control *the_chain
-)
-{
- if ( !_Chain_Is_empty( the_chain ) )
- return _Chain_Get_first_unprotected( the_chain );
- else
- return NULL;
-}
-
-/*PAGE
- *
- * _Chain_Insert_unprotected
- */
-
-STATIC INLINE void _Chain_Insert_unprotected(
- Chain_Node *after_node,
- Chain_Node *the_node
-)
-{
- Chain_Node *before_node;
-
- the_node->previous = after_node;
- before_node = after_node->next;
- after_node->next = the_node;
- the_node->next = before_node;
- before_node->previous = the_node;
-}
-
-/*PAGE
- *
- * _Chain_Append_unprotected
- */
-
-STATIC INLINE void _Chain_Append_unprotected(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- Chain_Node *old_last_node;
-
- the_node->next = _Chain_Tail( the_chain );
- old_last_node = the_chain->last;
- the_chain->last = the_node;
- old_last_node->next = the_node;
- the_node->previous = old_last_node;
-}
-
-/*PAGE
- *
- * _Chain_Prepend_unprotected
- */
-
-STATIC INLINE void _Chain_Prepend_unprotected(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- _Chain_Insert_unprotected( _Chain_Head( the_chain ), the_node );
-
-}
-
-/*PAGE
- *
- * _Chain_Prepend
- */
-
-STATIC INLINE void _Chain_Prepend(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- _Chain_Insert( _Chain_Head( the_chain ), the_node );
-}
-
-#endif
-/* end of include file */
diff --git a/doc/tools/bmenu/isr.h b/doc/tools/bmenu/isr.h
deleted file mode 100644
index 35a2e503cc..0000000000
--- a/doc/tools/bmenu/isr.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-
-#ifndef __ISR_h
-#define __ISR_h
-
-typedef unsigned32 ISR_Level;
-
-#define _ISR_Disable
-#define _ISR_Enable
-
-#endif
diff --git a/doc/tools/bmenu/main.c b/doc/tools/bmenu/main.c
deleted file mode 100644
index e0a5dc6ebd..0000000000
--- a/doc/tools/bmenu/main.c
+++ /dev/null
@@ -1,1048 +0,0 @@
-/*
- * main.c
- *
- * This program takes a texinfo file without node and menu commands,
- * build those commands and inserts them.
- *
- * It works by reading the input file into a linked list of lines
- * and then performing sweeps on that list until all formatting is
- * complete. After the program is run, there is still a little
- * clean up to be performed by hand. The following have to be fixed
- * by hand:
- * + previous of the first node
- * + next of the last node
- *
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#include <assert.h>
-#include <ctype.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* XXX -- just for testing -- these should be set by options */
-char TopString[] = "Top";
-char EmptyString[] = "";
-
-char *DocsNextNode;
-char *DocsPreviousNode;
-char *DocsUpNode;
-int NodeNameIncludesChapter = 1;
-
-extern int optind; /* Why is this not in <stdlib.h>? */
-extern char *optarg; /* Why is this not in <stdlib.h>? */
-
-#ifndef NAME_MAX
-#define NAME_MAX 14 /* Why is the one in limits.h not showing up? */
-#endif
-#define INIT_DATA
-#define EXTERN
-
-#include "base.h"
-
-FILE *OutFile = stdout;
-
-/*************************************************************************
- *************************************************************************
- ***** DATA TYPES AND CONSTANT TABLES *****
- *************************************************************************
- *************************************************************************/
-/*
- * Usage Information
- */
-
-char *Usage_Strings[] = {
- "\n",
- "usage: cmd [-cv] [-p prev] [-n next] [-u up] files ...\n",
- "\n",
- "EOF"
-};
-
-/*
- * The page separator is not really a keyword and will be purged before
- * it is seen elsewhere.
- */
-
-#define PAGE_SEPARATOR "#PAGE"
-
-/*
- * Section Delimiter Keywords
- */
-
-#define MAXIMUM_KEYWORD_LENGTH 32
-
-/*
- * Level indicates where in the format the delimiter is allowed to occur.
- * 1 indicates a major section divider (e.g. "ATTRIBUTE DESCRIPTIONS:").
- * 2 indicates a subsection (e.g. "ATTRIBUTE:").
- * 3 indicates a heading (e.g. "DESCRIPTION:").
- */
-
-#define TEXT 0
-#define SECTION 1
-#define SUBSECTION 2
-#define SUBSUBSECTION 3
-#define HEADING 4
-
-typedef enum {
- UNUSED, /* dummy 0 slot */
- KEYWORD_CHAPTER,
- KEYWORD_CHAPHEADING,
- KEYWORD_SECTION,
- KEYWORD_SUBSECTION,
- KEYWORD_SUBSUBSECTION,
- KEYWORD_RAISE,
- KEYWORD_LOWER,
- KEYWORD_OTHER,
- KEYWORD_END
-
-} Keyword_indices_t;
-
-#define KEYWORD_FIRST KEYOWRD_CHAPTER
-#define KEYWORD_LAST KEYWORD_END
-
-/*
- * Line Management Structure
- */
-
-typedef enum {
- NO_EXTRA_FORMATTING_INFO,
- RAW_OUTPUT,
- PARAGRAPH_OUTPUT
-} ExtraFormat_info_t;
-
-typedef struct {
- Chain_Node Node;
- Keyword_indices_t keyword; /* unused is unknown/undecided */
- ExtraFormat_info_t format;
- int number;
- int level;
- char Contents[ PARAGRAPH_SIZE ];
-} Line_Control;
-
-typedef enum {
- RT_FORBIDDEN, /* no text to right allowed */
- RT_OPTIONAL, /* text to right optional -- none below */
- RT_NONE, /* text to right is "none" or nothing -- none below */
- RT_REQUIRED, /* text to right required -- none below */
- RT_BELOW, /* text to right forbidden -- text below required */
- RT_NONE_OR_BELOW, /* text to right is "none" OR there is text below */
- RT_EITHER, /* text to right OR below */
- RT_BOTH /* text to right AND below */
-} Keywords_text_mode_t;
-
-typedef enum {
- BL_FORBIDDEN, /* text below forbidden */
- BL_FORMATTED, /* text below is to be formatted as paragraphs */
- BL_RAW, /* text below is to be unprocessed by this program */
-} Keywords_text_below_t;
-
-typedef (*Keyword_validater_t)( Line_Control * );
-
-typedef struct {
- char Name[ MAXIMUM_KEYWORD_LENGTH ];
- int level;
- Keywords_text_mode_t text_mode;
- Keywords_text_below_t text_below_mode;
- Keyword_validater_t keyword_validation_routine;
-} Keyword_info_t;
-
-Keyword_info_t Keywords[] = {
- { "unused", 0, 0, 0, NULL }, /* so 0 can be invalid */
- { "@chapter", SECTION, RT_FORBIDDEN, BL_FORBIDDEN, NULL },
- { "@chapheading", SECTION, RT_FORBIDDEN, BL_FORBIDDEN, NULL },
- { "@section", SECTION, RT_FORBIDDEN, BL_FORBIDDEN, NULL },
- { "@subsection", SUBSECTION, RT_FORBIDDEN, BL_FORBIDDEN, NULL },
- { "@subsubsection", SUBSUBSECTION, RT_FORBIDDEN, BL_FORBIDDEN, NULL },
- { "@raise", SUBSECTION, RT_FORBIDDEN, BL_FORBIDDEN, NULL },
- { "@lower", SUBSECTION, RT_FORBIDDEN, BL_FORBIDDEN, NULL },
- { "", HEADING, RT_FORBIDDEN, BL_FORBIDDEN, NULL },
- { "END OF FILE", SECTION, RT_FORBIDDEN, BL_FORBIDDEN, NULL }
-};
-
-#define NUMBER_OF_KEYWORDS \
- ( sizeof( Keywords ) / sizeof( Keyword_info_t ) ) - 2
-
-/*
- * exit_application
- */
-
-void exit_application(
- int status
-)
-{
- fprintf( stderr, "*** Error encountered ***\n" );
-/*
- fprintf( stderr, "*** Error encountered on line %d ***\n", CurrentLine );
-*/
- fclose( OutFile );
- exit( status );
-}
-
-/*************************************************************************
- *************************************************************************
- ***** LINE MANIPULATION ROUTINES *****
- *************************************************************************
- *************************************************************************/
-
-/*
- * PrintLine
- */
-
-void PrintLine(
- Line_Control *line
-)
-{
- assert( line );
-
- if ( line->number == -1 )
- fprintf( stderr, " " );
- else
- fprintf( stderr, "%5d", line->number );
-
-#if 0
- fprintf( stderr, "%s\n", line->Contents );
-#else
- /*
- * Include some debugging information
- */
- fprintf(
- stderr,
- "<%d,%d,%d>:%s\n",
- line->keyword,
- line->format,
- line->level,
- line->Contents
- );
-#endif
-}
-
-Chain_Control Line_Pool;
-
-/*
- * FillLinePool
- */
-
-void FillLinePool( void )
-{
- void *pool;
-
-#define LINE_POOL_FILL_COUNT 100
-
- pool = malloc( sizeof( Line_Control ) * LINE_POOL_FILL_COUNT );
- assert( pool );
-
- _Chain_Initialize(
- &Line_Pool,
- pool,
- LINE_POOL_FILL_COUNT,
- sizeof( Line_Control )
- );
-}
-
-/*
- * AllocateLine
- */
-
-Line_Control *AllocateLine( void )
-{
- Line_Control *new_line;
-
- new_line = (Line_Control *) _Chain_Get( &Line_Pool );
- if ( !new_line ) {
- FillLinePool();
- new_line = (Line_Control *) _Chain_Get( &Line_Pool );
- assert( new_line );
- }
-
-/*
- * This is commented out because although it is helpful during debug,
- * it consumes a significant percentage of the program's execution time.
-
- memset( new_line->Contents, '\0', sizeof( new_line->Contents ) );
-*/
- new_line->number = -1;
- new_line->level = -1;
-
- new_line->keyword = UNUSED;
- new_line->format = NO_EXTRA_FORMATTING_INFO;
-
- new_line->Node.next = NULL;
- new_line->Node.previous = NULL;
-
- return new_line;
-}
-
-/*
- * FreeLine
- */
-
-void FreeLine(
- Line_Control *line
-)
-{
- fflush( stdout );
- _Chain_Append( &Line_Pool, &line->Node );
-}
-
-/*
- * DeleteLine
- */
-
-Line_Control *DeleteLine(
- Line_Control *line
-)
-{
- Line_Control *next;
-
- next = (Line_Control *)line->Node.next;
- _Chain_Extract( &line->Node );
- FreeLine( line );
- return next;
-}
-
-/*
- * PrintSurroundingLines
- */
-
-void PrintSurroundingLines(
- Line_Control *line,
- int backward,
- int forward
-)
-{
- int i;
- int real_backward;
- Line_Control *local;
-
- for ( local=line, real_backward=0, i=1 ;
- i<=backward ;
- i++, real_backward++ ) {
- if ( &local->Node == Lines.first )
- break;
- local = (Line_Control *) local->Node.previous;
- }
-
- for ( i=1 ; i<=real_backward ; i++ ) {
- PrintLine( local );
- local = (Line_Control *) local->Node.next;
- }
-
- PrintLine( local );
-
- for ( i=1 ; i<=forward ; i++ ) {
- local = (Line_Control *) local->Node.next;
- if ( _Chain_Is_last( &local->Node ) )
- break;
- PrintLine( local );
- }
-
-}
-
-/*
- * SetLineFormat
- */
-
-void SetLineFormat(
- Line_Control *line,
- ExtraFormat_info_t format
-)
-{
- if ( line->format != NO_EXTRA_FORMATTING_INFO ) {
- fprintf( stderr, "Line %d is already formatted\n", line->number );
- PrintLine( line );
- assert( FALSE );
- }
-
- line->format = format;
-}
-
-/*
- * LineCopyFromRight
- */
-
-void LineCopyFromRight(
- Line_Control *line,
- char *dest
-)
-{
- char *p;
-
- for ( p=line->Contents ; *p != ' ' ; p++ )
- ;
- p++; /* skip the ' ' */
- for ( ; isspace( *p ) ; p++ )
- ;
-
- strcpy( dest, p );
-
-}
-
-/*
- * LineCopySectionName
- */
-
-void LineCopySectionName(
- Line_Control *line,
- char *dest
-)
-{
- char *p;
- char *d;
-
- p = line->Contents;
- d = dest;
-
- if ( *p == '@' ) { /* skip texinfo command */
- while ( !isspace( *p++ ) )
- ;
- }
-
- for ( ; *p ; )
- *d++ = *p++;
-
- *d = '\0';
-}
-
-/*************************************************************************
- *************************************************************************
- ***** END OF LINE MANIPULATION ROUTINES *****
- *************************************************************************
- *************************************************************************/
-
-/*
- * main
- */
-
-int main(
- int argc,
- char **argv
-)
-{
- int c;
- int index;
- boolean single_file_mode;
-
- Verbose = FALSE;
- DocsNextNode = EmptyString;
- DocsPreviousNode = TopString;
- DocsUpNode = TopString;
-
- while ((c = getopt(argc, argv, "vcp:n:u:")) != EOF) {
- switch (c) {
- case 'v':
- Verbose = TRUE;
- break;
- case 'c':
- NodeNameIncludesChapter = 0;
- break;
- case 'p':
- DocsPreviousNode = strdup(optarg);
- break;
- case 'n':
- DocsNextNode = strdup(optarg);
- break;
- case 'u':
- DocsUpNode = strdup(optarg);
- break;
-
- case '?':
- usage();
- return 0;
- }
- }
-
- if ( Verbose )
- fprintf( stderr, "Arguments successfully parsed\n" );
-
- FillLinePool();
-
- for ( index=optind ; index < argc ; index++ ) {
- ProcessFile( argv[ index ], NULL );
- }
-
- if ( Verbose )
- fprintf( stderr, "Exitting\n" );
-
- return 0;
-}
-
-/*
- * ProcessFile
- */
-
-void ProcessFile(
- char *inname,
- char *outname
-)
-{
- char out[ 256 ];
- int index;
-
- /*
- * Automatically generate the output file name.
- */
-
- if ( outname == NULL ) {
- for( index=0 ; inname[index] && inname[index] != '.' ; index++ ) {
- out[ index ] = inname[ index ];
- }
-
- if ( !strcmp( &inname[index], ".texi" ) ) {
- fprintf( stderr, "Input file already has .texi extension\n" );
- exit_application( 1 );
- }
-
- out[ index++ ] = '.';
- out[ index++ ] = 't';
- out[ index++ ] = 'e';
- out[ index++ ] = 'x';
- out[ index++ ] = 'i';
- out[ index ] = '\0';
- }
-
- /*
- * Read the file into our internal data structure
- */
-
- if ( Verbose )
- printf( "Processing (%s) -> (%s)\n", inname, out );
-
- ReadFileIntoChain( inname );
-
- if ( Verbose )
- fprintf( stderr, "-------->FILE READ IN\n" );
-
- /*
- * Remove any spaces before the keyword and mark each keyword line as
- * such. Also remove extra white space at the end of lines.
- */
-
- StripBlanks();
-
- if ( Verbose )
- fprintf( stderr, "-------->BLANKS BEFORE KEYWORDS STRIPPED\n" );
-
-
- FormatToTexinfo();
-
- if ( Verbose )
- fprintf( stderr, "-------->FILE FORMATTED TO TEXINFO\n" );
-
- /*
- * Print the file
- */
-
- PrintFile( out );
-
- if ( Verbose )
- fprintf( stderr, "-------->FILE PRINTED\n" );
-
- /*
- * Clean Up
- */
-
- ReleaseFile();
-
- if ( Verbose )
- fprintf( stderr, "-------->FILE RELEASED\n" );
-}
-
-/*
- * usage
- */
-
-void usage( void )
-{
- int index;
-
- for ( index=0 ; strcmp( Usage_Strings[ index ], "EOF" ) ; index++ )
- fprintf( stderr, Usage_Strings[ index ] );
-}
-
-/*
- * ReadFileIntoChain
- */
-
-void ReadFileIntoChain(
- char *inname
-)
-{
- FILE *InFile;
- int line_count;
- int max_length;
- char *line;
- char Buffer[ BUFFER_SIZE ];
- Line_Control *new_line;
-
- InFile = fopen( inname, "r" );
-
- if ( !InFile ) {
- fprintf( stderr, "Unable to open (%s)\n", inname );
- exit( 1 );
- }
- assert( InFile );
-
- max_length = 0;
- line_count = 0;
-
- _Chain_Initialize_empty( &Lines );
-
- for ( ;; ) {
- line = fgets( Buffer, BUFFER_SIZE, InFile );
- if ( !line )
- break;
-
- Buffer[ strlen( Buffer ) - 1 ] = '\0';
-
- new_line = AllocateLine();
-
- strcpy( new_line->Contents, Buffer );
-
- new_line->number = ++line_count;
-
- _Chain_Append( &Lines, &new_line->Node );
- }
-
- fclose( InFile );
-}
-
-/*
- * StripBlanks
- */
-
-void StripBlanks( void )
-{
- Line_Control *line;
- Keyword_indices_t index;
- int indentation;
- int length;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next
- ) {
-
- /*
- * Strip white space from the end of each line
- */
-
- length = strlen( line->Contents );
-
- while ( isspace( line->Contents[ --length ] ) )
- line->Contents[ length ] = '\0';
-
- if ( strstr( line->Contents, "@chapter" ) )
- line->keyword = KEYWORD_CHAPTER;
- else if ( strstr( line->Contents, "@chapheading" ) )
- line->keyword = KEYWORD_CHAPHEADING;
- else if ( strstr( line->Contents, "@section" ) )
- line->keyword = KEYWORD_SECTION;
- else if ( strstr( line->Contents, "@subsection" ) )
- line->keyword = KEYWORD_SUBSECTION;
- else if ( strstr( line->Contents, "@subsubsection" ) )
- line->keyword = KEYWORD_SUBSUBSECTION;
- else if ( strstr( line->Contents, "@raise" ) )
- line->keyword = KEYWORD_RAISE;
- else if ( strstr( line->Contents, "@lower" ) )
- line->keyword = KEYWORD_LOWER;
- else
- line->keyword = KEYWORD_OTHER;
-
- }
- line = AllocateLine();
- line->keyword = KEYWORD_END;
- _Chain_Append( &Lines, &line->Node );
-}
-
-/*
- * strIsAllSpace
- */
-
-boolean strIsAllSpace(
- char *s
-)
-{
- char *p;
-
- for ( p = s ; *p ; p++ )
- if ( !isspace( *p ) )
- return FALSE;
-
- return TRUE;
-}
-
-/*
- * BuildTexinfoNodes
- */
-
-void BuildTexinfoNodes( void )
-{
- char Buffer[ BUFFER_SIZE ];
- Line_Control *line;
- Line_Control *next_node;
- Line_Control *up_node;
- Line_Control *new_line;
- Line_Control *menu_insert_point;
- Line_Control *node_line;
- int next_found;
- int menu_items;
- Keyword_indices_t index;
- char ChapterName[ BUFFER_SIZE ];
- char NodeName[ BUFFER_SIZE ];
- char UpNodeName[ BUFFER_SIZE ];
- char NextNodeName[ BUFFER_SIZE ];
- char PreviousNodeName[ BUFFER_SIZE ];
-
- /*
- * Set Initial Previous Node Name
- */
-
- strcpy( PreviousNodeName, DocsPreviousNode );
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next
- ) {
-
- if ( line->level == -1 )
- continue;
-
- LineCopyFromRight( line, NodeName );
-
- if ( line->keyword == KEYWORD_CHAPTER ||
- line->keyword == KEYWORD_CHAPHEADING ) {
-
- strcpy( ChapterName, NodeName );
-
- } else if ( NodeNameIncludesChapter ) {
-
- sprintf( Buffer, "%s %s", ChapterName, NodeName );
- strcpy( NodeName, Buffer );
- }
-
- /*
- * Set Default Next Node Name
- */
-
- next_found = FALSE;
- strcpy( NextNodeName, DocsNextNode );
-
- /*
- * Go ahead and put it on the chain in the right order (ahead of
- * the menu) and we can fill it in later (after the menu is built).
- */
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "" ); /*"@ifinfo" ); */
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- node_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &node_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "" ); /* "@end ifinfo" ); */
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- next_node = (Line_Control *) line->Node.next;
- menu_insert_point = next_node;
- menu_items = 0;
-
- for ( ; ; ) {
- if ( next_node->keyword == KEYWORD_END )
- break;
-
- if ( next_node->level == -1 )
- goto continue_menu_loop;
-
- LineCopySectionName( next_node, Buffer );
- if ( !next_found ) {
- next_found = TRUE;
- if (NodeNameIncludesChapter)
- sprintf( NextNodeName, "%s %s", ChapterName, Buffer );
- else
- sprintf( NextNodeName, "%s", Buffer );
- }
-
- if ( next_node->level <= line->level )
- break;
-
- if ( next_node->level != (line->level + 1) )
- goto continue_menu_loop;
-
- if ( menu_items == 0 ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@ifinfo" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@menu" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
- }
-
- menu_items++;
-
- new_line = AllocateLine();
- if (NodeNameIncludesChapter)
- sprintf( new_line->Contents, "* %s %s::", ChapterName, Buffer );
- else
- sprintf( new_line->Contents, "* %s::", Buffer );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
-
-continue_menu_loop:
- next_node = (Line_Control *) next_node->Node.next;
- }
-
- /*
- * If menu items were generated, then insert the end of menu stuff.
- */
-
- if ( menu_items ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end menu" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end ifinfo" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
- }
-
- /*
- * Find the UpNodeName
- */
-
-/* DumpList( &Lines ); */
-
- if ( line->level == 0 ) {
- strcpy( UpNodeName, DocsUpNode );
- } else {
- for ( up_node = line;
- up_node && !_Chain_Is_first((Chain_Node *)up_node) ;
- up_node = (Line_Control *) up_node->Node.previous
- ) {
-
- if ( (up_node->level == -1) )
- continue;
-
- if ( up_node->level == (line->level - 1) ) {
- LineCopySectionName( up_node, Buffer );
- if (NodeNameIncludesChapter) {
- if (!strcmp(ChapterName, Buffer))
- sprintf( UpNodeName, "%s", Buffer );
- else
- sprintf( UpNodeName, "%s %s", ChapterName, Buffer );
- } else
- sprintf( UpNodeName, "%s", Buffer );
- break;
- }
- }
- }
-
- /*
- * Update the node information
- */
-
-#if 0
- fprintf(
- stderr,
- "@node %s, %s, %s, %s\n",
- NodeName,
- NextNodeName,
- PreviousNodeName,
- UpNodeName
- );
-#endif
-
- /* node_line was previously inserted */
- if (!NodeNameIncludesChapter) {
- sprintf(
- node_line->Contents,
- "@node %s, %s, %s, %s",
- NodeName,
- NextNodeName,
- PreviousNodeName,
- UpNodeName
- );
- } else {
- sprintf(
- node_line->Contents,
- "@node %s, %s, %s, %s",
- NodeName,
- NextNodeName,
- PreviousNodeName,
- UpNodeName
- );
- }
-
- strcpy( PreviousNodeName, NodeName );
-
- /* PrintLine( line ); */
- }
-}
-
-/*
- * FormatToTexinfo
- */
-
-void FormatToTexinfo( void )
-{
- Line_Control *line;
- int baselevel = 0;
- int currentlevel;
-
- if ( Verbose )
- fprintf( stderr, "-------->INSERTING TEXINFO MENUS\n" );
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next ) {
-
- switch (line->keyword) {
- case UNUSED:
- case KEYWORD_OTHER:
- case KEYWORD_END:
- line->level = -1;
- break;
- case KEYWORD_CHAPTER:
- case KEYWORD_CHAPHEADING:
- currentlevel = 0;
- line->level = baselevel + currentlevel;
- break;
- case KEYWORD_SECTION:
- currentlevel = 1;
- line->level = baselevel + currentlevel;
- break;
- case KEYWORD_SUBSECTION:
- currentlevel = 2;
- line->level = baselevel + currentlevel;
- break;
- case KEYWORD_SUBSUBSECTION:
- currentlevel = 3;
- line->level = baselevel + currentlevel;
- break;
- case KEYWORD_RAISE:
- assert( baselevel );
- baselevel--;
- line->level = -1;
- break;
- case KEYWORD_LOWER:
- baselevel++;
- line->level = -1;
- break;
- }
- }
-
- BuildTexinfoNodes();
-}
-
-/*
- * PrintFile
- */
-
-void PrintFile(
- char *out
-)
-{
- Line_Control *line;
-
- OutFile = fopen( out, "w+" );
-
- if ( !OutFile ) {
- fprintf( stderr, "Unable to open (%s) for output\n", out );
- exit_application( 1 );
- }
- assert( OutFile );
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next ) {
- fprintf( OutFile, "%s\n", line->Contents );
-/*
- fprintf(
- OutFile,
- "(%d,%d)%s\n",
- line->keyword,
- line->format,
- line->Contents
- );
-*/
- }
-}
-
-/*
- * DumpList
- */
-
-void DumpList(
- Chain_Control *the_list
-)
-{
- Line_Control *line;
-
- fprintf( stderr, "---> Dumping list (%p)\n", the_list );
-
- for ( line = (Line_Control *) the_list->first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next ) {
- /* if (line->level != -1) */
- PrintLine( line );
- /* fprintf( stderr, "%s\n", line->Contents ); */
- }
-}
-
-/*
- * ReleaseFile
- */
-
-void ReleaseFile()
-{
- Line_Control *line;
- Line_Control *next;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- ) {
- next = (Line_Control *) line->Node.next;
- line = next;
- }
-}
-
-/*
- * strtoInitialCaps
- */
-
-void strtoInitialCaps(
- char *dest,
- char *src
-)
-{
- char *source = src;
- char *destination = dest;
-
- source = src;
- destination = (dest) ? dest : src;
-
- while ( *source ) {
- while ( isspace( *source ) )
- *destination++ = *source++;
-
- if ( !*source )
- break;
-
- *destination++ = toupper( *source++ );
-
- for ( ; *source && !isspace( *source ) ; source++ )
- *destination++ = tolower( *source );
-
- if ( !*source )
- break;
- }
-
- *destination = '\0';
-}
diff --git a/doc/tools/bmenu/system.h b/doc/tools/bmenu/system.h
deleted file mode 100644
index 397c3afca2..0000000000
--- a/doc/tools/bmenu/system.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * COPYRIGHT (c) 1988-1998.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __SYSTEM_h
-#define __SYSTEM_h
-
-typedef unsigned int unsigned32;
-typedef unsigned short unsigned16;
-typedef unsigned char unsigned8;
-
-#define USE_INLINES
-#define STATIC static
-#define INLINE inline
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-typedef unsigned int boolean;
-
-#if !defined( TRUE ) || (TRUE != 1)
-#undef TRUE
-#define TRUE (1)
-#endif
-
-#if !defined( FALSE ) || (FALSE != 0)
-#undef FALSE
-#define FALSE 0
-#endif
-
-#endif
diff --git a/doc/tools/bmenu/testdoc.texi b/doc/tools/bmenu/testdoc.texi
deleted file mode 100644
index da56254117..0000000000
--- a/doc/tools/bmenu/testdoc.texi
+++ /dev/null
@@ -1,690 +0,0 @@
-@ifinfo
-@node Avenger Control Electronics System, Avenger Control Electronics System General System, DOCS PREV, DOCS UP
-@end ifinfo
-@chapter Avenger Control Electronics System
-@ifinfo
-@menu
-* Avenger Control Electronics System General System::
-* Avenger Control Electronics System System Modes::
-* Avenger Control Electronics System System BIT::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node General System, Avenger Control Electronics System Monitor and Control Avenger, Avenger Control Electronics System, DOCS UP
-@end ifinfo
-@section General System
-@ifinfo
-@menu
-* Avenger Control Electronics System Monitor and Control Avenger::
-* Avenger Control Electronics System Control Weapons::
-* Avenger Control Electronics System Handle Tone Signals::
-* Avenger Control Electronics System Provide AVDAS::
-* Avenger Control Electronics System Perform Initial Power-On Sequence::
-* Avenger Control Electronics System Perform Post-power-on Initialization -- Deleted::
-* Avenger Control Electronics System Update AVDAS Port::
-* Avenger Control Electronics System Handle Minor Faults::
-* Avenger Control Electronics System General Mode::
-* Avenger Control Electronics System Mode Transition::
-* Avenger Control Electronics System Boot BIT::
-* Avenger Control Electronics System Background BIT::
-@end menu
-@end ifinfo
-
-@ifinfo
-@node Monitor and Control Avenger, Avenger Control Electronics System Control Weapons, General System, Avenger Control Electronics System System Modes
-@end ifinfo
-@subsection Monitor and Control Avenger
-
-The AFCC shall be the main computer that monitors and controls all AVENGER
-system functions. [MNTMN 1-21.b, MNTMN 11-3]
-
-@ifinfo
-@node Control Weapons, Avenger Control Electronics System Handle Tone Signals, Monitor and Control Avenger, Avenger Control Electronics System System Modes
-@end ifinfo
-@subsection Control Weapons
-
-The AFCC shall be capable of tracking a single target, and controlling the
-missile and machine-gun systems. [FUNCTIONAL]
-
-@ifinfo
-@node Handle Tone Signals, Avenger Control Electronics System Provide AVDAS, Control Weapons, Avenger Control Electronics System System Modes
-@end ifinfo
-@subsection Handle Tone Signals
-
-The AFCC shall receive a tone signal from the IEA and IFF system. [MNTMN
-11-3.a(3), MNTMN 11-3.b(1)] The AFCC shall generate a test tone. [MNTMN
-11-3.a(3), MNTMN 11-3.b(2)] The AFCC shall also amplify the tone signals
-(target acquisition tone and IFF tone) from the IEA and IFF system and
-apply them to the communications system via the gunner's control box to
-the CVC helmet. [MNTMN 11-3.a(3), MNTMN 11-3.b(2)] The IFF audio tone
-shall be mixed with the missile acquisition tone and built-in-test tone
-inside the AFCC. [MNTMN 11-3.a(3), MNTMN 12-5.b(3&4)].
-
-@ifinfo
-@node Provide AVDAS, Avenger Control Electronics System Perform Initial Power-On Sequence, Handle Tone Signals, Avenger Control Electronics System System Modes
-@end ifinfo
-@subsection Provide AVDAS
-
-The AFCC shall provide system status information on the AVDAS serial test
-port. [FUNCTIONAL]
-
-@ifinfo
-@node Perform Initial Power-On Sequence, Avenger Control Electronics System Perform Post-power-on Initialization -- Deleted, Provide AVDAS, Avenger Control Electronics System System Modes
-@end ifinfo
-@subsection Perform Initial Power-On Sequence
-
-During power-on, the AFCC shall perform the following:
-
-@itemize @bullet
-
-@item initialize all software programmable peripherals,
-
-@item set all A/D output values to zero,
-
-@item safe the laser range finder by setting both first return and last return to a high state,
-
-@item safe the machine-gun system,
-
-@item set the turret drive to high speed mode,
-
-@item set the following outputs inactive
-
-@enumerate 1
-@item FLIR fire permit, missile active, RSO authorize, and uncage verify
-
-@item sight fire permit, missile active, RSO authorize, and uncage verify
-
-@item sight display active, and driven reticle
-
-@item power interlock
-
-@item FLIR field of view
-
-@item IFF challenge
-
-@item gunner palm grips and drift switch
-
-@item fire command
-
-@item uncage command
-
-@item BIT initiate command
-
-@item ATAS power on
-
-@item sequence command
-
-@item arm command
-
-@item activate command
-
-@item autotrack lock on command
-
-@item laser fire command,
-
-@end enumerate
-
-@item set the following inputs to the indicated state
-
-@enumerate 1
-@item uncage mode to AUTO
-
-@item helicopter mode to OFF
-
-@item track mode to MANUAL
-
-@item turret drive mode to STAB.
-@end enumerate
-
-@item initialize the missile range tables in RAM from values in EPROM,
-
-@item clear the north reference value and fire permit limits. [FUNCTIONAL]
-@end itemize
-
-@ifinfo
-@node Perform Post-power-on Initialization -- Deleted, Avenger Control Electronics System Update AVDAS Port, Perform Initial Power-On Sequence, Avenger Control Electronics System System Modes
-@end ifinfo
-@subsection Perform Post-power-on Initialization -- Deleted
-
-Requirement was deleted.
-
-@ifinfo
-@node Update AVDAS Port, Avenger Control Electronics System Handle Minor Faults, Perform Post-power-on Initialization -- Deleted, Avenger Control Electronics System System Modes
-@end ifinfo
-@subsection Update AVDAS Port
-
-The AFCC shall update the AVDAS port every 100ms. [FUNCTIONAL]
-
-@ifinfo
-@node Handle Minor Faults, Avenger Control Electronics System System Modes, Update AVDAS Port, Avenger Control Electronics System System Modes
-@end ifinfo
-@subsection Handle Minor Faults
-
-Detection of a minor fault shall cause an error message to be displayed on
-the CDT and the system fault light to be lit.
-
-
-@ifinfo
-@node System Modes, Avenger Control Electronics System General Mode, Handle Minor Faults, DOCS UP
-@end ifinfo
-@section System Modes
-@ifinfo
-@menu
-* Avenger Control Electronics System General Mode::
-* Avenger Control Electronics System Mode Transition::
-* Avenger Control Electronics System Boot BIT::
-* Avenger Control Electronics System Background BIT::
-@end menu
-@end ifinfo
-
-
-@ifinfo
-@node General Mode, Avenger Control Electronics System Process System Mode Periodically -- Deleted, System Modes, Avenger Control Electronics System System BIT
-@end ifinfo
-@subsection General Mode
-@ifinfo
-@menu
-* Avenger Control Electronics System Process System Mode Periodically -- Deleted::
-* Avenger Control Electronics System Determine System Mode::
-* Avenger Control Electronics System OFF Mode::
-* Avenger Control Electronics System COMM Mode::
-* Avenger Control Electronics System SAFE Mode::
-* Avenger Control Electronics System RUN Mode::
-* Avenger Control Electronics System ENGAGE Mode::
-* Avenger Control Electronics System Mode Fault::
-* Avenger Control Electronics System ENGAGE Mode Processing::
-* Avenger Control Electronics System Process Transition to OFF Mode::
-* Avenger Control Electronics System Process Transition to COMM Mode::
-* Avenger Control Electronics System Process Transition to SAFE Mode::
-* Avenger Control Electronics System Process Transition to RUN Mode::
-* Avenger Control Electronics System Process Transition to ENGAGE Mode::
-@end menu
-@end ifinfo
-
-
-@ifinfo
-@node Process System Mode Periodically -- Deleted, Avenger Control Electronics System Determine System Mode, General Mode, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection Process System Mode Periodically -- Deleted
-
-Requirement was deleted.
-
-@ifinfo
-@node Determine System Mode, Avenger Control Electronics System OFF Mode, Process System Mode Periodically -- Deleted, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection Determine System Mode
-
-The AFCC shall determine the system mode from the state of the system mode
-switch on the gunner's console and the remote mode indication from the
-remote terminal. [FUNCTIONAL]
-
-@ifinfo
-@node OFF Mode, Avenger Control Electronics System COMM Mode, Determine System Mode, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection OFF Mode
-
-If the system mode switch is in the OFF position, the system mode shall be
-OFF. [FUNCTIONAL]
-
-@ifinfo
-@node COMM Mode, Avenger Control Electronics System SAFE Mode, OFF Mode, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection COMM Mode
-
-If the system mode switch is in the COMM position, the system mode shall
-be COMM. [FUNCTIONAL]
-
-@ifinfo
-@node SAFE Mode, Avenger Control Electronics System RUN Mode, COMM Mode, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection SAFE Mode
-
-If the system mode switch is in the SAFE position, the system mode shall
-be SAFE. [FUNCTIONAL]
-
-@ifinfo
-@node RUN Mode, Avenger Control Electronics System ENGAGE Mode, SAFE Mode, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection RUN Mode
-
-If the system mode switch is in the RUN position, the system mode shall be
-RUN. [FUNCTIONAL]
-
-@ifinfo
-@node ENGAGE Mode, Avenger Control Electronics System Mode Fault, RUN Mode, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection ENGAGE Mode
-
-If the system mode switch is in the ENGAGE position, the system mode shall
-be ENGAGE or REMOTE. [FUNCTIONAL]
-
-@ifinfo
-@node Mode Fault, Avenger Control Electronics System ENGAGE Mode Processing, ENGAGE Mode, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection Mode Fault
-
-If the system mode switch is not in a valid position, the system mode
-shall remain unchanged and the AFCC shall output 'MODE FAULT' to the CDT.
-[FUNCTIONAL]
-
-@ifinfo
-@node ENGAGE Mode Processing, Avenger Control Electronics System Mode Transition, Mode Fault, Avenger Control Electronics System Mode Transition
-@end ifinfo
-@subsubsection ENGAGE Mode Processing
-
-When the system is in the ENGAGE mode, the AFCC shall:
-
-@itemize @bullet
-
-@item perform auto slew processing,
-
-@item perform lead angle processing,
-
-@item perform autotrack processing,
-
-@item output rate commands to the turret drive system,
-
-@item control the firing of the weapons systems. [FUNCTIONAL]
-
-@end itemize
-
-@ifinfo
-@node Mode Transition, Avenger Control Electronics System Process Transition to OFF Mode, ENGAGE Mode Processing, Avenger Control Electronics System System BIT
-@end ifinfo
-@subsection Mode Transition
-@ifinfo
-@menu
-* Avenger Control Electronics System Process Transition to OFF Mode::
-* Avenger Control Electronics System Process Transition to COMM Mode::
-* Avenger Control Electronics System Process Transition to SAFE Mode::
-* Avenger Control Electronics System Process Transition to RUN Mode::
-* Avenger Control Electronics System Process Transition to ENGAGE Mode::
-@end menu
-@end ifinfo
-
-The AFCC can operate in one of the following modes: OFF, COMM, SAFE, RUN,
-or ENGAGE. The mode transitions are depicted in Figure 3-1.
-
-@ifhtml
-@html
-<CENTER>
-<IMG SRC="modes.gif" ALT="Figure 3-1 Mode Transitions">
-</CENTER>
-@end html
-@end ifhtml
-
-@ifset use-ascii
-@example
-Figure 3-1 Mode Transitions - modes.gif
-@end example
-@end ifset
-
-@ifset use-tex
-@example
-Figure 3-1 Mode Transitions - modes.gif
-@end example
-@end ifset
-
-
-@ifinfo
-@node Process Transition to OFF Mode, Avenger Control Electronics System Process Transition to COMM Mode, Mode Transition, Avenger Control Electronics System Boot BIT
-@end ifinfo
-@subsubsection Process Transition to OFF Mode
-
-When the AFCC detects a valid transition to the OFF mode, the following
-actions shall be performed:
-
-@itemize @bullet
-
-@item update the elapsed time counter for the last mode the system was in,
-
-@item output 'OFF MODE' to the CDT,
-
-@item safe the laser by setting the last and first return to a high state,
-
-@item disable the turret drive system,
-
-@item disable the missile system,
-
-@item disable the machine-gun system,
-
-@item deactivate the sight and reticle,
-
-@item update the EEPROM with the current elapsed time and count values,
-
-@item disable continuous BIT,
-
-@item insure that the machine-gun cool down has completed before clearing the power hold circuit. [FUNCTIONAL]
-
-@end itemize
-
-
-@ifinfo
-@node Process Transition to COMM Mode, Avenger Control Electronics System Process Transition to SAFE Mode, Process Transition to OFF Mode, Avenger Control Electronics System Boot BIT
-@end ifinfo
-@subsubsection Process Transition to COMM Mode
-
-When the AFCC detects a valid transition to the COMM mode, the following
-actions shall be performed:
-
-@itemize @bullet
-
-@item update the elapsed time counter for the last mode the system was in,
-
-@item output `COMM MODE' to the CDT,
-
-@item safe the laser by setting the last and first return to a high state,
-
-@item disable the turret drive system,
-
-@item disable the missile system,
-
-@item disable the machine-gun system,
-
-@item deactivate the sight and reticle,
-
-@item reset the power hold circuit to insure power if the system is put in the OFF mode,
-
-@item enable current monitoring. [OPMAN 2-27.b(2), FUNCTIONAL]
-
-@end itemize
-
-@ifinfo
-@node Process Transition to SAFE Mode, Avenger Control Electronics System Process Transition to RUN Mode, Process Transition to COMM Mode, Avenger Control Electronics System Boot BIT
-@end ifinfo
-@subsubsection Process Transition to SAFE Mode
-
-When the AFCC detects a valid transition to the SAFE mode, the following
-actions shall be performed:
-
-@itemize @bullet
-
-@item update the elapsed time counter for the last mode the system was in,
-
-@item output `SAFE MODE' to the CDT,
-
-@item safe the laser by setting the last and first return to a high state,
-
-@item disable the turret drive system,
-
-@item disable the missile system,
-
-@item disable the machine-gun system,
-
-@item deactivate the sight and reticle,
-
-@item reset the power hold circuit to insure power if the system is put in the OFF mode,
-
-@item enable current monitoring. [FUNCTIONAL]
-
-@end itemize
-
-@ifinfo
-@node Process Transition to RUN Mode, Avenger Control Electronics System Process Transition to ENGAGE Mode, Process Transition to SAFE Mode, Avenger Control Electronics System Boot BIT
-@end ifinfo
-@subsubsection Process Transition to RUN Mode
-
-When the AFCC detects a valid transition to the RUN mode, the following
-actions shall be performed:
-
-@itemize @bullet
-
-@item update the elapsed time counter for the last mode the system was in,
-
-@item output `RUN MODE' to the CDT,
-
-@item safe the laser by setting the last and first return to a high state,
-
-@item enable the turret drive system,
-
-@item disable the missile system,
-
-@item disable the machine-gun system,
-
-@item deactivate the sight and reticle,
-
-@item reset the power hold circuit to insure power if the system is put in the OFF mode,
-
-@item enable current monitoring. [FUNCTIONAL]
-
-@end itemize
-
-@ifinfo
-@node Process Transition to ENGAGE Mode, Avenger Control Electronics System System BIT, Process Transition to RUN Mode, Avenger Control Electronics System Boot BIT
-@end ifinfo
-@subsubsection Process Transition to ENGAGE Mode
-
-When the AFCC detects a valid transition to the ENGAGE mode, the following
-actions shall be performed:
-
-@itemize @bullet
-
-@item update the elapsed time counter for the last mode the system was in,
-
-@item output `ENGAGE MODE' to the CDT,
-
-@item enable the turret drive system,
-
-@item enable the missile system power,
-
-@item reset the power hold circuit to insure power if the system is put in the OFF mode,
-
-@item enable current monitoring. [FUNCTIONAL]
-
-@end itemize
-
-@ifinfo
-@node System BIT, Avenger Control Electronics System Boot BIT, Process Transition to ENGAGE Mode, DOCS UP
-@end ifinfo
-@section System BIT
-@ifinfo
-@menu
-* Avenger Control Electronics System Boot BIT::
-* Avenger Control Electronics System Background BIT::
-@end menu
-@end ifinfo
-
-
-@ifinfo
-@node Boot BIT, Avenger Control Electronics System Perform ROM Checksum, System BIT, DOCS UP
-@end ifinfo
-@subsection Boot BIT
-@ifinfo
-@menu
-* Avenger Control Electronics System Perform ROM Checksum::
-* Avenger Control Electronics System Boot Test AFCC Boards::
-* Avenger Control Electronics System Boot Test CPU Board::
-* Avenger Control Electronics System Boot Test AFCC Controller Board DAC's::
-* Avenger Control Electronics System Boot Test Interface Board Discrete Inputs::
-* Avenger Control Electronics System Boot Test AFCC Controller Board Relay and Discrete Outputs::
-* Avenger Control Electronics System Boot Check Voltages::
-* Avenger Control Electronics System Boot Handle Fatal Error::
-* Avenger Control Electronics System Perform Background BIT::
-* Avenger Control Electronics System Background Process CPU and Software Exceptions::
-* Avenger Control Electronics System Background Test AFCC Controller Board DAC's::
-* Avenger Control Electronics System Background Test AFCC Controller Board Relay and Discrete Outputs::
-* Avenger Control Electronics System Perform RAM Checksum::
-* Avenger Control Electronics System Background Monitor Voltages::
-* Avenger Control Electronics System Background Handle Fatal Error::
-@end menu
-@end ifinfo
-
-
-@ifinfo
-@node Perform ROM Checksum, Avenger Control Electronics System Boot Test AFCC Boards, Boot BIT, Avenger Control Electronics System Background BIT
-@end ifinfo
-@subsubsection Perform ROM Checksum
-
-During initialization of the AFCC, the AFCC shall checksum the code image
-stored in ROM to insure that it is correct. If the checksum does not
-match the code image, the system shall halt.
-
-@ifinfo
-@node Boot Test AFCC Boards, Avenger Control Electronics System Boot Test CPU Board, Perform ROM Checksum, Avenger Control Electronics System Background BIT
-@end ifinfo
-@subsubsection Boot Test AFCC Boards
-
-During initialization of the AFCC, all boards shall be tested to determine
-their functional state. If all tests performed on a board pass, the board
-shall have a functional state of passed. If any test performed on a board
-fails, the board shall have a functional state of failed.
-
-@ifinfo
-@node Boot Test CPU Board, Avenger Control Electronics System Boot Test AFCC Controller Board DAC's, Boot Test AFCC Boards, Avenger Control Electronics System Background BIT
-@end ifinfo
-@subsubsection Boot Test CPU Board
-
-During initialization of the AFCC, the AFCC shall test the following CPU
-board components by invoking all non-destructive card-level diagnostic
-tests provided by the CPU board vendor. If any CPU board component fails
-diagnostic testing, a fatal error shall occur.
-
-@ifinfo
-@node Boot Test AFCC Controller Board DAC's, Avenger Control Electronics System Boot Test Interface Board Discrete Inputs, Boot Test CPU Board, Avenger Control Electronics System Background BIT
-@end ifinfo
-@subsubsection Boot Test AFCC Controller Board DAC's
-
-During initialization of the AFCC, the AFCC shall utilize the DAC test
-capability of the AFCC Controller board to verify that the DAC components
-of the AFCC Controller board are set to their initial values. If any DAC
-component is not properly set, a fatal error shall occur.
-
-@ifinfo
-@node Boot Test Interface Board Discrete Inputs, Avenger Control Electronics System Boot Test AFCC Controller Board Relay and Discrete Outputs, Boot Test AFCC Controller Board DAC's, Avenger Control Electronics System Background BIT
-@end ifinfo
-@subsubsection Boot Test Interface Board Discrete Inputs
-
-During initialization of the AFCC, the AFCC shall utilize the discrete
-input loopback capability of the AFCC Interface board to test that the
-discrete input components of the AFCC Interface board are working
-properly. If any discrete input component does not function properly, a
-fatal error shall occur.
-
-@ifinfo
-@node Boot Test AFCC Controller Board Relay and Discrete Outputs, Avenger Control Electronics System Boot Check Voltages, Boot Test Interface Board Discrete Inputs, Avenger Control Electronics System Background BIT
-@end ifinfo
-@subsubsection Boot Test AFCC Controller Board Relay and Discrete Outputs
-
-During initialization of the AFCC, the AFCC shall utilize the relay and
-discrete output test capability of the AFCC Controller board to verify
-that the relay and discrete output components of the AFCC Controller board
-are set to their initial values. If any relay or discrete output
-component is not properly set, a fatal error shall occur.
-
-@ifinfo
-@node Boot Check Voltages, Avenger Control Electronics System Boot Handle Fatal Error, Boot Test AFCC Controller Board Relay and Discrete Outputs, Avenger Control Electronics System Background BIT
-@end ifinfo
-@subsubsection Boot Check Voltages
-
-During initialization of the AFCC, the +5 volt, +15 volt, -15 volt, and
-+28 volt power supplies shall be checked to insure that they are within
-tolerance. If any of the power supplies are out of tolerance, a fatal
-error shall occur.
-
-@ifinfo
-@node Boot Handle Fatal Error, Avenger Control Electronics System Background BIT, Boot Check Voltages, Avenger Control Electronics System Background BIT
-@end ifinfo
-@subsubsection Boot Handle Fatal Error
-
-If a fatal error occurs during initialization, the AFCC shall attempt to
-output a diagnostic message to the CDT and halt initialization.
-
-@ifinfo
-@node Background BIT, Avenger Control Electronics System Perform Background BIT, Boot Handle Fatal Error, DOCS UP
-@end ifinfo
-@subsection Background BIT
-@ifinfo
-@menu
-* Avenger Control Electronics System Perform Background BIT::
-* Avenger Control Electronics System Background Process CPU and Software Exceptions::
-* Avenger Control Electronics System Background Test AFCC Controller Board DAC's::
-* Avenger Control Electronics System Background Test AFCC Controller Board Relay and Discrete Outputs::
-* Avenger Control Electronics System Perform RAM Checksum::
-* Avenger Control Electronics System Background Monitor Voltages::
-* Avenger Control Electronics System Background Handle Fatal Error::
-@end menu
-@end ifinfo
-
-
-@ifinfo
-@node Perform Background BIT, Avenger Control Electronics System Background Process CPU and Software Exceptions, Background BIT, DOCS UP
-@end ifinfo
-@subsubsection Perform Background BIT
-
-During normal operation of the AFCC, the AFCC shall perform background BIT
-of various system components. Background BIT shall be performed during
-system idle time.
-
-@ifinfo
-@node Background Process CPU and Software Exceptions, Avenger Control Electronics System Background Test AFCC Controller Board DAC's, Perform Background BIT, DOCS UP
-@end ifinfo
-@subsubsection Background Process CPU and Software Exceptions
-
-During normal operation of the AFCC, the AFCC shall recognize all CPU and
-software exceptions. If any exception occurs, a fatal error shall occur.
-
-@ifinfo
-@node Background Test AFCC Controller Board DAC's, Avenger Control Electronics System Background Test AFCC Controller Board Relay and Discrete Outputs, Background Process CPU and Software Exceptions, DOCS UP
-@end ifinfo
-@subsubsection Background Test AFCC Controller Board DAC's
-
-During background BIT, the AFCC shall utilize the DAC test capability of
-the AFCC Controller board to verify that the DAC components of the AFCC
-Controller board are set to their last written values. If any DAC
-component is not properly set, a fatal error shall occur.
-
-@ifinfo
-@node Background Test AFCC Controller Board Relay and Discrete Outputs, Avenger Control Electronics System Perform RAM Checksum, Background Test AFCC Controller Board DAC's, DOCS UP
-@end ifinfo
-@subsubsection Background Test AFCC Controller Board Relay and Discrete Outputs
-
-During background BIT, the AFCC shall utilize the relay and discrete
-output test capability of the AFCC Controller board to verify that the
-relay and discrete output components of the AFCC Controller board are set
-to their last written values. If any relay or discrete output component
-is not properly set, a fatal error shall occur.
-
-@ifinfo
-@node Perform RAM Checksum, Avenger Control Electronics System Background Monitor Voltages, Background Test AFCC Controller Board Relay and Discrete Outputs, DOCS UP
-@end ifinfo
-@subsubsection Perform RAM Checksum
-
-During background BIT, the AFCC shall checksum the code image to insure
-that it is correct. If the checksum does not match the code image, a
-fatal error shall occur.
-
-@ifinfo
-@node Background Monitor Voltages, Avenger Control Electronics System Background Handle Fatal Error, Perform RAM Checksum, DOCS UP
-@end ifinfo
-@subsubsection Background Monitor Voltages
-
-During background BIT, the AFCC shall monitor the +5 volt, +15 volt, -15
-volt, and +28 volt power supplies to insure that they are within
-tolerance. If any of the power supplies are out of tolerance, a fatal
-error shall occur.
-
-@ifinfo
-@node Background Handle Fatal Error, DOCS NEXT, Background Monitor Voltages, DOCS UP
-@end ifinfo
-@subsubsection Background Handle Fatal Error
-
-When the AFCC detects a fatal error, the following shall be attempted:
-
-@enumerate a
-
-@item light the fault light on the gunner console,
-
-@item stop the execution of all tasks,
-
-@item reset all hardware outputs to a safe state,
-
-@item store a failure code or message in the EEPROM,
-
-@item output a diagnostic message to the CDT and Console port,
-
-@item halt the system.
-
-@end enumerate
-
-
diff --git a/doc/tools/pdl2texi/Drive.d b/doc/tools/pdl2texi/Drive.d
deleted file mode 100644
index 82c3de020e..0000000000
--- a/doc/tools/pdl2texi/Drive.d
+++ /dev/null
@@ -1,890 +0,0 @@
-OBJECT: Drive
- DESCRIPTION:
- This object provides an interface to the elevation/azimuth
- drive system(ECA).
- THEORY OF OPERATION:
- This object encapsulates the turret drive. The object provides
- an interface to control the turret drive. A method is provided
- to set the azimuth and elevation rate of the drive. Methods are
- provided to request the drive to run in stabilized or power mode
- and set the drive speed to high or low. A method is also provided
- to allow for drift adjust.
-
- This object also tracks drive system on hours. It gets the hours
- from the EEPROM data, allows the hours to be set, updates the
- hours via the activation and deactivation of the drive, and
- provides access to the hours.
-
- + This is the first bullet.
- + This is the second bullet.
- + This is the third bullet.
- + This is the fourth bullet.
- + This is the fifth bullet.
-
- The object also provides methods to access azimuth and elevation
- displacement, and methods to process changes in the hardware
- discretes drive on, stabilized mode, thermal fault and fault.
-
- The object also provides methods to enable and disable
- both the remote and turret power interlocks which determine if
- the drive can be driven by the remote or turret handstation
- respectively.
-
-ATTRIBUTE DESCRIPTIONS:
-
-
-ATTRIBUTE: Azimuth_displacement
- DESCRIPTION:
- This attribute represents the current azimuth displacement
- of the turret.
- TYPE: floating point
- RANGE: 0-0
- UNITS: degrees
- REQUIREMENTS:
- AFS 8.2.11 Receive Azimuth Displacement and Elevation Displacement
- AIS 5.2.6 Azimuth Displacement analog
-
-
-ATTRIBUTE: Azimuth_rate
- DESCRIPTION:
- Azimuth rate command for movement of the turret.
- TYPE: floating point
- RANGE: X-Y
- UNITS: degrees / second
- DEFAULT: none
- REQUIREMENTS:
- AFS 8.2.3 Send Azimuth and Elevation Rate to ECA
- AIS 5.3.4 Elevation Rate analog
- AIS 5.3.5 Azimuth Rate analog
-
-
-ATTRIBUTE: Drift_adjust
- DESCRIPTION:
- This attribute represents the current drift adjustment mode
- of the ECA turret drive.
- TYPE: enumerated
- MEMBERS:
- ADJUST_OFF - drift adjust mode is OFF
- ADJUST_ON - drift adjust mode is ON
- REQUIREMENTS:
- AFS 8.2.6 Capable of turret drift adjustment
- AIS 5.3.1 Drift Adjust discrete
-
-
-ATTRIBUTE: Drive_on
- DESCRIPTION:
- Current status of the turret drive. The turret drive may either be
- switched on or off.
- TYPE: boolean
- MEMBERS:
- FALSE - turret drive is off
- TRUE - turret drive is on
- DEFAULT: FALSE
- REQUIREMENTS:
- AFS 8.2.9 Monitor Drive System On
- AIS 5.2.1 Drive System On discrete
-
-
-ATTRIBUTE: Drive_system_hours
- DESCRIPTION:
- Total number of hours drive has been activated.
- TYPE: integer
- RANGE: 0 - +INFINITY
- UNITS: seconds
- REQUIREMENTS:
- AFS 4.11 Respond to CDT elapsed time indicator key
-
-
-ATTRIBUTE: Elevation_displacement
- DESCRIPTION:
- This attribute represents the current elevation displacement
- of the turret.
- TYPE: floating point
- RANGE: 0-0
- UNITS: degrees
- REQUIREMENTS:
- AFS 8.2.11 Receive Azimuth Displacement and Elevation Displacement
- AIS 5.2.7 Elevation Displacement analog
-
-
-ATTRIBUTE: Elevation_rate
- DESCRIPTION:
- Elevation rate command for movement of the turret.
- TYPE: floating point
- RANGE: X - Y
- UNITS: degrees / second
- DEFAULT: none
- REQUIREMENTS:
- AFS 8.2.3 Send Azimuth and Elevation Rate to ECA
- AIS 5.3.4 Elevation Rate analog
- AIS 5.3.5 Azimuth Rate analog
-
-
-ATTRIBUTE: Fault
- DESCRIPTION:
- This attribute denotes whether a turret malfunction has occurred.
- TYPE: boolean
- MEMBERS:
- TRUE - a turret malfunction has occurred
- FALSE - no turret malfunction has occurred
- DEFAULT: FALSE
- REQUIREMENTS:
- AFS 8.2.7 Check for ECA failure indication
- AIS 5.2.4 Turret Drive Malfunction discrete
-
-
-ATTRIBUTE: Mode
- DESCRIPTION:
- Current requested drive mode.
- TYPE: enumerated
- MEMBERS:
- POWER - operate in POWER mode
- STAB - operate in STABILIZED mode
- DEFAULT: POWER
- REQUIREMENTS:
- bogus requirement
-
-
-ATTRIBUTE: Remote_power_interlock_position
- DESCRIPTION:
- This is the status of the remote's power interlock.
- TYPE: enumerated
- MEMBERS:
- OPEN - relay is open
- CLOSED - relay is closed
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
-
-
-ATTRIBUTE: Speed
- DESCRIPTION:
- Current speed mode of the ECA turret drive.
- TYPE: enumerated
- MEMBERS:
- LOW_SPEED - turret drive does not allow the maximum rate
- HIGH_SPEED - turret drive allows the maximum rate
- DEFAULT: HIGH
- REQUIREMENTS:
- AFS 8.2.5 Control Turret
- AIS 5.3.3 Turret High Speed Mode discrete
-
-
-ATTRIBUTE: Stabilized_mode
- DESCRIPTION:
- Current drive mode indicating whether the ECA electronics are
- operating in Stabilized mode or Power mode.
- TYPE: boolean
- MEMBERS:
- FALSE - not operating in STABILIZED mode
- TRUE - operating in STABILIZED mode
- DEFAULT: FALSE
- REQUIREMENTS:
- AFS 8.2.8 Monitor Turret Stab Mode Indicate
- AIS 5.2.3 Turret Stab Mode Indicate discrete
-
-
-ATTRIBUTE: State
- DESCRIPTION:
- Current state of the turret drive.
- TYPE: enumerated
- MEMBERS:
- ACTIVATED - turret drive is ON and active
- DEACTIVATED - turret drive is ON but deactivated
- DEFAULT: DEACTIVATED
- REQUIREMENTS:
- AFS 8.2.4 Set Plam Grips Active
- AIS 5.3.2 Palm Grips Active discrete
-
-
-ATTRIBUTE: Thermal_fault
- DESCRIPTION:
- This attribute denotes whether a turret thermal fault has occurred.
- TYPE: boolean
- MEMBERS:
- TRUE - a turret thermal fault has occurred
- FALSE - no turret thermal fault has occurred
- DEFAULT: FALSE
- REQUIREMENTS:
- AFS 8.2.7 Check for ECA failure indication
- AIS 5.2.2 Turret ECA Thermal Failure discrete
-
-
-ATTRIBUTE: Turret_power_interlock_position
- DESCRIPTION:
- This is the status of the turret's power interlock.
- TYPE: enumerated
- MEMBERS:
- OPEN - relay is open
- CLOSED - relay is closed
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
-
-
-ASSOCIATION DESCRIPTIONS: none
-
-ABSTRACT TYPE DESCRIPTIONS:
-
-ABSTRACT TYPE: Drift_adjust_t
- DESCRIPTION:
- This abstract type represents the current drift adjustment mode
- of the ECA turret drive.
- VISIBILITY: public
- DERIVATION: enumerated
- MEMBERS:
- ADJUST_OFF = 0 - drift adjust mode is OFF
- ADJUST_ON = 1 - drift adjust mode is ON
- REQUIREMENTS:
- AIS 5.3.1 Drift Adjust discrete
-
-ABSTRACT TYPE: Interlock_status
- DESCRIPTION:
- An interlock state being OPEN or CLOSED.
- VISIBILITY: private
- DERIVATION: enumerated
- MEMBERS:
- OPEN - interlock relay is in the open state
- CLOSED - interlock relay is in the closed state
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
-
-ABSTRACT TYPE: Mode
- DESCRIPTION:
- This type specifies the drive mode of the ECA turret drive.
- VISIBILITY: public
- DERIVATION: enumerated
- MEMBERS:
- POWER - operate in POWER mode
- STAB - operate in STABILIZED mode
-
-ABSTRACT TYPE: Speed
- DESCRIPTION:
- This type specifies the Speed mode of the ECA turret drive.
- VISIBILITY: public
- DERIVATION: enumerated
- MEMBERS:
- LOW_SPEED = 0 - turret drive does not allow the maximum rate
- HIGH_SPEED = 1 - turret drive allows the maximum rate
- REQUIREMENTS:
- AIS 5.3.3 Turret High Speed Mode discrete
-
-ABSTRACT TYPE: State_t
- DESCRIPTION:
- This type specifies the state of the turret drive.
- VISIBILITY: private
- DERIVATION: enumerated
- MEMBERS:
- DEACTIVATED - turret drive is ON but deactivated
- ACTIVATED - turret drive is ON and active
-
-DATA ITEM DESCRIPTIONS:
-
-DATA ITEM: Azimuth_displacement_control
- DESCRIPTION:
- This data item contains the Azimuth_displacement analog control
- information.
- TYPE: handle
-
-
-DATA ITEM: Azimuth_rate_control
- DESCRIPTION:
- This data item contains the Azimuth_rate analog control
- information.
- TYPE: handle
-
-
-DATA ITEM: Drift_adjust_control
- DESCRIPTION:
- This data item contains the Drift_adjust discrete control
- information.
- TYPE: handle
-
-
-DATA ITEM: Drive_activate_control
- DESCRIPTION:
- This data item contains the activate drive relay control information.
- TYPE: handle
-
-
-DATA ITEM: Drive_activated_timestamp
- DESCRIPTION:
- This data item stores the timestamp of the last time the drive was
- activated. It will be used to compute the activated time when a
- deactivate is received.
- TYPE: time_t
- DEFAULT: none
- NOTES:
- see C library for data type information
-
-
-DATA ITEM: Drive_on
- DESCRIPTION:
- The current status of the turret drive representing whether
- the drive is on or off.
- TYPE: boolean
- DEFAULT: FALSE
-
-
-DATA ITEM: Drive_on_control
- DESCRIPTION:
- This data item contains the Drive_on discrete flag control
- information.
- TYPE: handle
-
-
-DATA ITEM: Drive_system_hours
- DESCRIPTION:
- This data item stores the actual time the drive has been active.
- This value will be output by the Get_time method and will be set
- by the Set_time method.
- TYPE: integer
- RANGE: 0 - +INFINITY
- UNITS: seconds
- DEFAULT: 0
-
-
-DATA ITEM: Elevation_rate_control
- DESCRIPTION:
- This data item contains the Elevation_rate analog control
- information.
- TYPE: handle
-
-
-DATA ITEM: Elevation_displacement_control
- DESCRIPTION:
- This data item contains the Elevation_displacement analog control
- information.
- TYPE: handle
-
-
-DATA ITEM: Fault_control
- DESCRIPTION:
- This data item contains the Fault discrete flag control
- information.
- TYPE: handle
-
-
-DATA ITEM: Remote_power_interlock_control
- DESCRIPTION:
- This data item contains the Remote_power_interlock relay control
- information.
- TYPE: handle
-
-
-DATA ITEM: Stabilized_mode_control
- DESCRIPTION:
- This data item contains the Stabilized_mode discrete flag control
- information.
- TYPE: handle
-
-
-DATA ITEM: State
- DESCRIPTION:
- The current state of the turret drive representing an activated or
- deactivated drive.
- TYPE: State_t
- DEFAULT: DEACTIVATED
-
-
-DATA ITEM: Thermal_fault_control
- DESCRIPTION:
- This data item contains the Thermal_fault discrete flag control
- information.
- TYPE: handle
-
-
-DATA ITEM: Turret_power_interlock_control
- DESCRIPTION:
- This data item contains the Turret_power_interlock relay control
- information.
- TYPE: handle
-
-
-DATA ITEM: Turret_power_interlock_status
- DESCRIPTION:
- The accurate status of the turret power interlock relay. This value
- will be used to control the relay during a transition from the remote
- back to the turret console.
- TYPE: Interlock_status
- DEFAULT: none
-
-
-METHOD DESCRIPTIONS:
-
-METHOD: Activate
- DESCRIPTION:
- This method activates the turret drive system. A timestamp of the
- activation is recorded to keep a running count of hours the drive has
- been active.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.4 Set Palm Grips Active
- AIS 5.3.2 Palm Grips Active discrete
- PDL:
-
- if Drive_on
- if State is DEACTIVATED
- close the Drive_activate_control relay using the Relay object
- timestamp Drive_activated_timestamp for Drive_system_hours
- running total
- set State to ACTIVATED
- else
- already in the ACTIVATED state
-
-
-METHOD: Create
- DESCRIPTION:
- This method initializes the Turret Drive object. All monitors of
- turret drive signals are initialized and/or registered. All turret
- drive characteristics are set to their initial values.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- PDL:
-
- set State to DEACTIVATED
-
- get Drive_system_hours to initialize the elapsed drive time
- from the Statistics (eeprom database) object - this is
- stored upon shutdown in eeprom
-
- create Fault_control using Discrete_flag object with the
- following attributes
- true_sense - DISCRETE_FLAG_TRUE_IS_1
- is_buffered - false
- is_monitored - true
- period - 10ms
- change_routine - Change_fault
- change fault using initial value returned from create Fault_control
-
- create Thermal_fault_control using Discrete_flag object with
- the following attributes
- true_sense - DISCRETE_FLAG_TRUE_IS_0
- is_buffered - false
- is_monitored - true
- period - 10ms
- change_routine - Change_thermal_fault
- change thermal fault using initial value returned from create
- Thermal_fault_control
-
- create Stabilized_mode_control using Discrete_flag object with the
- following attributes
- true_sense - DISCRETE_FLAG_TRUE_IS_1
- is_buffered - false
- is_monitored - true
- period - 10ms
- change_routine - Change_stabilized_mode
- change stabilized mode using initial value returned from create
- Stabilized_mode_control
-
- create Drive_on_control using Discrete_flag object with the
- following attributes
- true_sense - DISCRETE_FLAG_TRUE_IS_1
- is_buffered - false
- is_monitored - true
- period - 10ms
- change_routine - Change_drive_on
- change drive on using initial value returned from create
- Drive_on_control
-
- create Azimuth_rate_control using the Linear_dac object
- with the following attributes:
- voltage_low - -10
- voltage_high - +10
- logical_low - -60
- logical_high - +60
- is_buffered - false
- period - none
- initial_value - 0
-
- create Elevation_rate_control using the Linear_dac object with the
- following attributes:
- voltage_low - -10
- voltage_high - +10
- logical_low - -60
- logical_high - +60
- is_buffered - false
- period - none
- initial_value - 0
-
- create Azimuth_displacement_control using the Linear_adc object with
- the following attributes:
- voltage low -
- voltage high -
- logical low -
- logical high -
- is_buffered - false
- is_monitored - false
- period - none
- change_routine - none
- delta - none
-
- create Elevation_displacement_control using the Linear_adc object
- with the following attributes:
- voltage low -
- voltage high -
- logical low -
- logical high -
- is_buffered - false
- is_monitored - false
- period - none
- change_routine - none
- delta - none
-
- create Drive_activate_control using the Relay object with the
- following attributes:
- open_sense - RELAY_OPEN_IS_0
- is_buffered - false
- period - none
- initial_state - RELAY_OPEN
-
- create Turret_power_interlock_control using the Relay object with
- the following attributes:
- open_sense - RELAY_OPEN_IS_0
- is_buffered - false
- period - none
- initial_state - RELAY_OPEN
- set Turret_power_interlock_status to OPEN
-
- create Remote_power_interlock_control using the Relay
- object with the following attributes:
- open_sense - RELAY_OPEN_IS_0
- is_buffered - false
- period - none
- initial_state - RELAY_OPEN
-
- create Drift_adjust_control using the Discrete_out object with
- following attributes:
- is_buffered - false
- period - 10ms
- initial_value - ADJUST_OFF
-
-
-METHOD: Deactivate
- DESCRIPTION:
- This method deactivates the turret drive system. A timestamp of the
- activation is recorded to keep a running count of hours the drive
- has been active.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.4 Set Plam Grips Active
- AIS 5.3.2 Palm Grips Active discrete
- PDL:
-
- if Drive_on
- if State is DEACTIVATED
- timestamp deactivate for Drive_system_hours running total
- deactivate drive by opening the Drive_activate_control relay
- using the Relay object
- compute running time since last activate
- add running time to Drive_system_hours
- set State to DEACTIVATED
- else
- already in the DEACTIVATED state
-
-
-METHOD: Disable_remote_power_interlock
- DESCRIPTION:
- This method disables the turret power interlock safety preventing
- the turret from being driven by the remote's handstation.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
- PDL:
-
- open the remote power interlock relay
- return the turret relay to its designated state defined by the
- Turret_power_interlock_status
-
-
-METHOD: Disable_turret_power_interlock
- DESCRIPTION:
- This method disables the turret power interlock safety preventing
- the turret from being driven by the turret's handstation.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
- PDL:
-
- Deactivate the Drive object
- open the turret power interlock relay
- set Turret_power_interlock_status to OPEN
-
-
-METHOD: Enable_remote_power_interlock
- DESCRIPTION:
- This method will enable the remote power interlock to allow
- the turret to be driven from the remote station.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
- NOTES:
- At this time the turret's power interlock is opened to avoid
- having both relays closed at a time.
- PDL:
-
- if Drive_on
- open the turret power interlock relay using the Relay object
- close the remote power interlock relay using the Relay object
-
-
-METHOD: Enable_turret_power_interlock
- DESCRIPTION:
- This method will enable the turret power interlock to allow
- the turret to be driven from the turret station.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
- NOTES:
- At this time the closed state is saved to allow the correct state
- to be returned to in the event a remote overrides the turret and the
- remote gives up its control, we must return to the previous state of
- the turret power interlock.
- PDL:
-
- if Drive_on
- close the turret power interlock relay using the Relay object
-
- set the Turret_power_interlock_status to CLOSED to return to
- when remote gives up control
-
-
-METHOD: Get_AZ_EL_displacement
- DESCRIPTION:
- This method returns the current azimuth displacement and elevation
- displacement from the ECA.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS:
- current azimuth displacement value
- current elevation displacement value
- REQUIREMENTS:
- AFS 8.2.11 Receive Azimuth Displacement and Elevation Displacement
- AIS 5.2.6 Azimuth Displacement analog
- AIS 5.2.7 Elevation Displacement analog
- NOTES:
- Currently supported as an on-demand type of signal. May change to a
- monitored analog signal.
- PDL:
-
- if Drive_on
- get and return current azimuth displacement and current elevation
- displacement from ECA using the Linear_ADC object
-
-
-METHOD: Get_hours
- DESCRIPTION:
- This method returns the current value contained in the elapsed
- turret drive active time.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS:
- elapsed turret drive time - the current elasped turret drive time
- REQUIREMENTS:
- bogus requirements
- REFERENCES:
- AFS 4.11 Respond to CDT elapsed time indicator key
- NOTES:
- bogus notes
- PDL:
-
- return the current value for Drive_system_hours
-
-
-METHOD: Set_drift_adjust
- DESCRIPTION:
- This method provides the ability to set the drift adjust to the
- value represented by the handstation. Drift adjust is either ON
- or OFF.
- VISIBILITY: public
- INPUTS:
- value - new drift adjust value
- ADJUST_OFF - drift adjust mode is OFF
- ADJUST_ON - drift adjust mode is ON
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.6 Capable of turret drift adjustment
- AIS 5.3.1 Drift Adjust discrete
- PDL:
-
- if Drive_on
- set drift adjust discrete to value using Discrete_out object
-
-METHOD: Set_hours
- DESCRIPTION:
- This method will set the turret drive activated elapsed time value
- to the specified value.
- VISIBILITY: public
- INPUTS:
- new_elapsed_time_value - specified turret drive elapsed time value
- OUTPUTS: none
- REQUIREMENTS:
- AFS 4.11 Respond to CDT elapsed time indicator key
- PDL:
-
- set the value of Drive_system_hours to the value specified by
- new_elapsed_time_value
-
-
-METHOD: Set_mode
- DESCRIPTION:
- This method sets the requested mode of the turret drive.
- VISIBILITY: public
- INPUTS:
- mode - new requested mode
- POWER - operating in POWER mode
- STAB - operating in STABILIZED mode
- OUTPUTS: none
- REQUIREMENTS:
- bogus requirements
- PDL:
- if mode is POWER
- set drive mode switchlight to PWR_LAMP using the Console object
- else if mode is STAB
- set drive mode switchlight to STB_LAMP using the Console object
-
-
-METHOD: Set_rate
- DESCRIPTION:
- This method provides the ability to send azimuth and elevation rates
- to the drive. Two parameters are used as input to designate the
- corresponding rates. These parameters must be in degrees per second.
- VISIBILITY: public
- INPUTS:
- azimuth rate - new azimuth rate in degress per second
- elevation rate - new elevation rate in degress per second
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.3 Send Azimuth and Elevation Rate to ECA
- AIS 5.3.4 Elevation Rate analog
- AIS 5.3.5 Azimuth Rate analog
- NOTES:
- May need to couple these analogs with an interface driver to close
- the window between writes and conversions.
- PDL:
-
- if Drive_on
- send the new azimuth rate to the Azimuth analog
- send the new elevation rate to Elevation analog
-
-
-METHOD: Set_speed
- DESCRIPTION:
- This method sets the turret drive speed mode to the specified value
- either high or low based on user input.
- VISIBILITY: public
- INPUTS:
- new_speed_value - new value to set the turret speed to
- LOW_SPEED - turret drive does not allow the maximum rate
- HIGH_SPEED - turret drive allows the maximum rate
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.5 Control Turret
- AIS 5.3.3 Turret High Speed Mode discrete
- PDL:
-
- if Drive_on
- set turret drive high speed mode discrete to the new_speed_value
- using Discrete_out object
-
-
-METHOD: Change_drive_on
- DESCRIPTION:
- This method will be used to report a transition of the drive system
- on discrete.
- VISIBILITY: private
- INPUTS:
- value - new drive system on value
- FALSE - indicates drive not on
- TRUE - indicates drive on
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.9 Monitor Drive System On
- AIS 5.2.1 Drive System On discrete
- REFERENCES:
- bogus references
- NOTES:
- bogus notes
- PDL:
-
- set Drive_on to value
- if Drive_on is FALSE
- deactivate the turret drive using the Drive object
-
-
-METHOD: Change_fault
- DESCRIPTION:
- This method will be used to indicate that a turret malfunction
- has been recognized by the turret drive.
- VISIBILITY: private
- INPUTS:
- value - new value resulting from a fault discrete change
- FALSE - indicates no fault
- TRUE - indicates fault
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.7 Check for ECA failure indication
- AIS 5.2.4 Turret Drive Malfunction discrete
- PDL:
-
- if value
- send turret fault message using the Display object
- else
- return
-
-
-METHOD: Change_stabilized_mode
- DESCRIPTION:
- This method will determine a transition from STAB mode to POWER mode.
- It will set the stab mode lamp on the console.
- VISIBILITY: private
- INPUTS:
- value - new value resulting from a stab mode discrete change
- FALSE - indicates not stabilized mode
- TRUE - indicates stabilized mode
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.8 Monitor Turret Stab Mode Indicate
- AIS 5.2.3 Turret Stab Mode Indicate discrete
- PDL:
-
- if value
- set STAB mode light to LAMP_ON using the Console object
- else value indicates not stabilized mode
- set STAB mode light to LAMP_OFF using the Console object
-
-
-METHOD: Change_thermal_fault
- DESCRIPTION:
- This method will be used to indicate that a thermal fault has been
- recognized by the turret drive.
- VISIBILITY: private
- INPUTS:
- value - new value resulting from a thermal fault discrete change
- FALSE - indicates no thermal fault
- TRUE - indicates thermal fault
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.7 Check for ECA failure indication
- AIS 5.2.2 Turret ECA Thermal Failure discrete
- PDL:
-
- if value
- send thermal fault message using the Display object
- else
- return
-
-TASK DESCRIPTIONS: none
-
-ENDOBJECT: Drive
diff --git a/doc/tools/pdl2texi/Makefile b/doc/tools/pdl2texi/Makefile
deleted file mode 100644
index f4867d32d6..0000000000
--- a/doc/tools/pdl2texi/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# COPYRIGHT (c) 1996-1997.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-CC=gcc
-#CFLAGS=-O4 -fomit-frame-pointer
-CFLAGS=-g
-
-PROJECT=afcc
-TEXINPUTS=/home/gnu/work/binutils-2.6/texinfo:.
-BASE=Drive
-FILES=afcc.texi $(BASE).txt
-PROG=pdl2texi
-
-all: $(PROG)
-
-$(BASE).texi: $(BASE).d ./$(PROG)
- ./$(PROG) $(BASE).d
-
-$(PROG): main.o chain.o
- gcc -static main.o chain.o -o $(PROG)
-
-drive: Drive
-Drive: $(BASE).txt
- /usr1/home/joel/tmp/makeinfo $(PROJECT).texi
-
-main.o: main.c base.h
-
-chain.o: chain.c
-
-dvi: $(PROJECT).dvi
-ps: $(PROJECT).ps
-info: Drive
-html: $(PROJECT).texi $(BASE).txt
- ../textools/texi2html $(PROJECT).texi
-
-$(BASE).txt: $(BASE).d
- ./$(PROG) -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
-
-$(PROJECT).dvi: $(FILES)
- texi2dvi $(PROJECT).texi
-
-view:
- test -r $(PROJECT).ps && ghostview $(PROJECT).ps
-
-tests: test test1
-
-test: $(PROG)
- rm -f $(BASE).texi
- ./$(PROG) -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d
-
-test1:
- rm -f t1.txt
- ./$(PROG) -v t1.d
-
-wtest:
- rm -f $(BASE).txt
- ./$(PROG) -w -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d
-
-enum:
- ./$(PROG) -w -v -p "Magic Subsystem" \
- -u "Magic Subsystem" test_cases/enum.d
- ./$(PROG) -w -v -p "Magic Subsystem" \
- -u "Magic Subsystem" test_cases/enumbad.d
-
-avdas:
- ./$(PROG) -v -p "Magic Subsystem" \
- -u "Magic Subsystem" test_cases/avdas.d
- ./$(PROG) -w -v -p "Magic Subsystem" \
- -u "Magic Subsystem" test_cases/avdas.d
-
-clean:
- rm -f *.o $(PROG) *.txt core *.html $(PROJECT) Drive.texi
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f test_cases/*.txt test_cases/*.texi
-
diff --git a/doc/tools/pdl2texi/address.h b/doc/tools/pdl2texi/address.h
deleted file mode 100644
index 82d73b917d..0000000000
--- a/doc/tools/pdl2texi/address.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* address.h
- *
- * This include file contains the information required to manipulate
- * physical addresses.
- *
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __ADDRESSES_h
-#define __ADDRESSES_h
-
-/*
- * _Addresses_Add_offset
- *
- * DESCRIPTION:
- *
- * This function is used to add an offset to a base address.
- * It returns the resulting address. This address is typically
- * converted to an access type before being used further.
- */
-
-STATIC INLINE void *_Addresses_Add_offset (
- void *base,
- unsigned32 offset
-);
-
-/*
- * _Addresses_Subtract_offset
- *
- * DESCRIPTION:
- *
- * This function is used to subtract an offset from a base
- * address. It returns the resulting address. This address is
- * typically converted to an access type before being used further.
- */
-
-STATIC INLINE void *_Addresses_Subtract_offset(
- void *base,
- unsigned32 offset
-);
-
-/*
- * _Addresses_Add
- *
- * DESCRIPTION:
- *
- * This function is used to add two addresses. It returns the
- * resulting address. This address is typically converted to an
- * access type before being used further.
- */
-
-STATIC INLINE void *_Addresses_Add (
- void *left,
- void *right
-);
-
-/*
- * _Addresses_Subtract
- *
- * DESCRIPTION:
- *
- * This function is used to subtract two addresses. It returns the
- * resulting offset.
- */
-
-STATIC INLINE unsigned32 _Addresses_Subtract (
- void *left,
- void *right
-);
-
-/*
- * _Addresses_Is_aligned
- *
- * DESCRIPTION:
- *
- * This function returns TRUE if the given address is correctly
- * aligned for this processor and FALSE otherwise. Proper alignment
- * is based on correctness and efficiency.
- */
-
-STATIC INLINE boolean _Addresses_Is_aligned (
- void *address
-);
-
-/*
- * _Addresses_Is_in_range
- *
- * DESCRIPTION:
- *
- * This function returns TRUE if the given address is within the
- * memory range specified and FALSE otherwise. base is the address
- * of the first byte in the memory range and limit is the address
- * of the last byte in the memory range. The base address is
- * assumed to be lower than the limit address.
- */
-
-STATIC INLINE boolean _Addresses_Is_in_range (
- void *address,
- void *base,
- void *limit
-);
-
-#include "address.inl"
-
-#endif
-/* end of include file */
diff --git a/doc/tools/pdl2texi/address.inl b/doc/tools/pdl2texi/address.inl
deleted file mode 100644
index fda92a9371..0000000000
--- a/doc/tools/pdl2texi/address.inl
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * This include file contains the bodies of the routines
- * about addresses which are inlined.
- *
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __INLINE_ADDRESSES_inl
-#define __INLINE_ADDRESSES_inl
-
-/*PAGE
- *
- * _Addresses_Add_offset
- *
- */
-
-STATIC INLINE void *_Addresses_Add_offset (
- void *base,
- unsigned32 offset
-)
-{
- return (base + offset);
-}
-
-/*PAGE
- *
- * _Addresses_Subtract_offset
- *
- */
-
-STATIC INLINE void *_Addresses_Subtract_offset (
- void *base,
- unsigned32 offset
-)
-{
- return (base - offset);
-}
-
-/*PAGE
- *
- * _Addresses_Add
- *
- * NOTE: The cast of an address to an unsigned32 makes this code
- * dependent on an addresses being thirty two bits.
- */
-
-STATIC INLINE void *_Addresses_Add (
- void *left,
- void *right
-)
-{
- return (left + (unsigned32)right);
-}
-
-/*PAGE
- *
- * _Addresses_Subtract
- *
- * NOTE: The cast of an address to an unsigned32 makes this code
- * dependent on an addresses being thirty two bits.
- */
-
-STATIC INLINE unsigned32 _Addresses_Subtract (
- void *left,
- void *right
-)
-{
- return (left - right);
-}
-
-/*PAGE
- *
- * _Addresses_Is_aligned
- *
- */
-
-STATIC INLINE boolean _Addresses_Is_aligned (
- void *address
-)
-{
- return ( ( (unsigned32)address % 4 ) == 0 );
-}
-
-/*PAGE
- *
- * _Addresses_Is_aligned
- *
- */
-
-STATIC INLINE boolean _Addresses_Is_in_range (
- void *address,
- void *base,
- void *limit
-)
-{
- return ( address >= base && address <= limit );
-}
-
-#endif
-/* end of include file */
diff --git a/doc/tools/pdl2texi/afcc.texi b/doc/tools/pdl2texi/afcc.texi
deleted file mode 100644
index ed5333b5be..0000000000
--- a/doc/tools/pdl2texi/afcc.texi
+++ /dev/null
@@ -1,94 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename afcc
-@settitle AFCC Internals Guide
-@paragraphindent 0
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1996-1997.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-@finalout
-
-@tex
-\global\parindent 0in
-\global\chapheadingskip = 15pt plus 4pt minus 2pt
-\global\secheadingskip = 12pt plus 4pt minus 2pt
-\global\subsecheadingskip = 9pt plus 4pt minus 2pt
-
-@ifclear smallbook
-\global\parskip 6pt plus 1pt
-@end ifclear
-@end tex
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* AFCC: . AFCC Objects
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-
-@c Joel's Questions
-@c
-@c 1. Why does paragraphindent only impact makeinfo?
-@c
-
-@setchapternewpage odd
-
-@c
-@c Master file for the C User's Guide
-@c
-@include Drive.texi
-@ifinfo
-
-@node Top, Turret Subsystem, Gunner Station Subsystem, (dir)
-@top afcc
-
-This is the info version of the object documentation for the AFCC.
-
-The following subsystems are in the AFCC:
-
-@menu
-* Turret Subsystem::
-* Vehicle Subsystem::
-* Gunner Station Subsystem::
-@end menu
-
-@node Turret Subsystem, , Top, Top
-
-The following objects are in the Turret Subsystem:
-
-@menu
-* Drive Object:: Drive Object
-@end menu
-
-@node Vehicle Subsystem, Gunner Station Subsystem, , Top
-
-@menu
-The following objects are in the Turret Subsystem:
-
-* ::
-@end menu
-
-@node Gunner Station Subsystem, Top, Vehicle Subsystem, Top
-@menu
-
-The following objects are in the Gunner Station Subsystem:
-
-* ::
-@end menu
-
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-@bye
diff --git a/doc/tools/pdl2texi/base.h b/doc/tools/pdl2texi/base.h
deleted file mode 100644
index 12d481b3c7..0000000000
--- a/doc/tools/pdl2texi/base.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __PDL2AMI_h
-#define __PDL2AMI_h
-
-#include "system.h"
-#include "chain.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
-
-/*
- * Paragraph size should be kept down because it is allocated for each
- * Line_Control. If this number is large, the memory requirements for
- * the program increase significantly.
- */
-
-#define BUFFER_SIZE (10 * 1024)
-#define PARAGRAPH_SIZE (8 * 1024)
-
-#define NUMBER_ELEMENTS( _x ) (sizeof(_x) / sizeof _x[0])
-
-void exit_application(
- int status
-);
-
-void ProcessFile(
- char *inname,
- char *outname
-);
-
-void strtolower(
- char *dest,
- char *src
-);
-
-void strtoInitialCaps(
- char *dest,
- char *src
-);
-
-void StripBlanks( void );
-
-void MergeParagraphs( void );
-
-int CheckForIncomplete( void );
-
-int CheckOutline( void );
-
-int CheckSections( void );
-
-void GenerateLists( void );
-
-void GenerateAList(
- char *section,
- Chain_Control *the_list
-);
-
-void LookForInternalInconsistencies( void );
-
-int Match_Argument(
- char **array,
- int entries,
- char *users
-);
-
-void usage( void );
-
-void ReadFileIntoChain(
- char *inname
-);
-
-int MergeText( void );
-
-int CheckForBadWhiteSpace();
-
-void RemoveCopyright();
-
-void RemovePagebreaks();
-
-int RemoveExtraBlankLines();
-
-void FormatToTexinfo( void );
-
-void FormatToWord( void );
-
-void PrintFile(
- char *out
-);
-
-void DumpList(
- Chain_Control *the_list
-);
-
-void ReleaseFile();
-
-EXTERN boolean Verbose; /* status/debug msgs */
-EXTERN boolean Statistics; /* statistics msgs */
-EXTERN boolean OutputWord; /* Output MS-Word */
-EXTERN boolean IncompletesAreErrors;
-EXTERN boolean InsertTBDs;
-EXTERN Chain_Control Lines;
-
-EXTERN int NumberOfAttributes;
-EXTERN int NumberOfAssociations;
-EXTERN int NumberOfAbstractTypes;
-EXTERN int NumberOfDataItems;
-EXTERN int NumberOfMethods;
-EXTERN int NumberOfTasks;
-
-
-#endif
diff --git a/doc/tools/pdl2texi/chain.c b/doc/tools/pdl2texi/chain.c
deleted file mode 100644
index 10c96308e9..0000000000
--- a/doc/tools/pdl2texi/chain.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Chain Handler
- *
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#include "system.h"
-#include "address.h"
-#include "chain.h"
-#include "isr.h"
-
-/*PAGE
- *
- * _Chain_Initialize
- *
- * This kernel routine initializes a doubly linked chain.
- *
- * Input parameters:
- * the_chain - pointer to chain header
- * starting_address - starting address of first node
- * number_nodes - number of nodes in chain
- * node_size - size of node in bytes
- *
- * Output parameters: NONE
- */
-
-void _Chain_Initialize(
- Chain_Control *the_chain,
- void *starting_address,
- unsigned32 number_nodes,
- unsigned32 node_size
-)
-{
- unsigned32 count;
- Chain_Node *current;
- Chain_Node *next;
-
- count = number_nodes;
- current = _Chain_Head( the_chain );
- the_chain->permanent_null = NULL;
- next = (Chain_Node *)starting_address;
- while ( count-- ) {
- current->next = next;
- next->previous = current;
- current = next;
- next = (Chain_Node *)
- _Addresses_Add_offset( (void *) next, node_size );
- }
- current->next = _Chain_Tail( the_chain );
- the_chain->last = current;
-}
-
-/*PAGE
- *
- * _Chain_Get_first_unprotected
- */
-
-#ifndef USE_INLINES
-STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
- Chain_Control *the_chain
-)
-{
- Chain_Node *return_node;
- Chain_Node *new_first;
-
- return_node = the_chain->first;
- new_first = return_node->next;
- the_chain->first = new_first;
- new_first->previous = _Chain_Head( the_chain );
-
- return return_node;
-}
-#endif /* USE_INLINES */
-
-/*PAGE
- *
- * _Chain_Get
- *
- * This kernel routine returns a pointer to a node taken from the
- * given chain.
- *
- * Input parameters:
- * the_chain - pointer to chain header
- *
- * Output parameters:
- * return_node - pointer to node in chain allocated
- * CHAIN_END - if no nodes available
- *
- * INTERRUPT LATENCY:
- * only case
- */
-
-Chain_Node *_Chain_Get(
- Chain_Control *the_chain
-)
-{
- ISR_Level level;
- Chain_Node *return_node;
-
- return_node = NULL;
- _ISR_Disable( level );
- if ( !_Chain_Is_empty( the_chain ) )
- return_node = _Chain_Get_first_unprotected( the_chain );
- _ISR_Enable( level );
- return return_node;
-}
-
-/*PAGE
- *
- * _Chain_Append
- *
- * This kernel routine puts a node on the end of the specified chain.
- *
- * Input parameters:
- * the_chain - pointer to chain header
- * node - address of node to put at rear of chain
- *
- * Output parameters: NONE
- *
- * INTERRUPT LATENCY:
- * only case
- */
-
-void _Chain_Append(
- Chain_Control *the_chain,
- Chain_Node *node
-)
-{
- ISR_Level level;
-
- _ISR_Disable( level );
- _Chain_Append_unprotected( the_chain, node );
- _ISR_Enable( level );
-}
-
-/*PAGE
- *
- * _Chain_Extract
- *
- * This kernel routine deletes the given node from a chain.
- *
- * Input parameters:
- * node - pointer to node in chain to be deleted
- *
- * Output parameters: NONE
- *
- * INTERRUPT LATENCY:
- * only case
- */
-
-void _Chain_Extract(
- Chain_Node *node
-)
-{
- ISR_Level level;
-
- _ISR_Disable( level );
- _Chain_Extract_unprotected( node );
- _ISR_Enable( level );
-}
-
-/*PAGE
- *
- * _Chain_Insert
- *
- * This kernel routine inserts a given node after a specified node
- * a requested chain.
- *
- * Input parameters:
- * after_node - pointer to node in chain to be inserted after
- * node - pointer to node to be inserted
- *
- * Output parameters: NONE
- *
- * INTERRUPT LATENCY:
- * only case
- */
-
-void _Chain_Insert(
- Chain_Node *after_node,
- Chain_Node *node
-)
-{
- ISR_Level level;
-
- _ISR_Disable( level );
- _Chain_Insert_unprotected( after_node, node );
- _ISR_Enable( level );
-}
-
-/*PAGE
- *
- * _Chain_Insert_chain
- *
- * This routine inserts a chain after the specified node in another
- * chain. It is assumed that the insert after node is not on the
- * second chain.
- *
- * Input parameters:
- * insert_after - insert the chain after this node
- * to_insert - the chain to insert
- */
-
-void _Chain_Insert_chain(
- Chain_Node *insert_after,
- Chain_Control *to_insert
-)
-{
- Chain_Node *first;
- Chain_Node *last;
- Chain_Node *insert_after_next;
-
- first = to_insert->first;
- last = to_insert->last;
-
- insert_after_next = insert_after->next;
-
- insert_after->next = first;
- first->previous = insert_after;
-
- insert_after_next->previous = last;
- last->next = insert_after_next;
-
- _Chain_Initialize_empty( to_insert );
-}
diff --git a/doc/tools/pdl2texi/chain.h b/doc/tools/pdl2texi/chain.h
deleted file mode 100644
index e9221aec60..0000000000
--- a/doc/tools/pdl2texi/chain.h
+++ /dev/null
@@ -1,347 +0,0 @@
-/* chain.h
- *
- * This include file contains all the constants and structures associated
- * with the Doubly Linked Chain Handler.
- *
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __CHAIN_h
-#define __CHAIN_h
-
-#include "address.h"
-
-/*
- * This is used to manage each element (node) which is placed
- * on a chain.
- *
- * NOTE: Typically, a more complicated structure will use the
- * chain package. The more complicated structure will
- * include a chain node as the first element in its
- * control structure. It will then call the chain package
- * with a pointer to that node element. The node pointer
- * and the higher level structure start at the same address
- * so the user can cast the pointers back and forth.
- */
-
-typedef struct Chain_Node_struct Chain_Node;
-
-struct Chain_Node_struct {
- Chain_Node *next;
- Chain_Node *previous;
-};
-
-/*
- * This is used to manage a chain. A chain consists of a doubly
- * linked list of zero or more nodes.
- *
- * NOTE: This implementation does not require special checks for
- * manipulating the first and last elements on the chain.
- * To accomplish this the chain control structure is
- * treated as two overlapping chain nodes. The permanent
- * head of the chain overlays a node structure on the
- * first and permanent_null fields. The permanent tail
- * of the chain overlays a node structure on the
- * permanent_null and last elements of the structure.
- */
-
-typedef struct {
- Chain_Node *first;
- Chain_Node *permanent_null;
- Chain_Node *last;
-} Chain_Control;
-
-/*
- * _Chain_Initialize
- *
- * This routine initializes the_chain structure to manage the
- * contiguous array of number_nodes nodes which starts at
- * starting_address. Each node is of node_size bytes.
- */
-
-void _Chain_Initialize(
- Chain_Control *the_chain,
- void *starting_address,
- unsigned32 number_nodes,
- unsigned32 node_size
-);
-
-/*
- * _Chain_Initialize_empty
- *
- * This routine initializes the specified chain to contain zero nodes.
- */
-
-STATIC INLINE void _Chain_Initialize_empty(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Extract_unprotected
- *
- * This routine extracts the_node from the chain on which it resides.
- * It does NOT disable interrupts to insure the atomicity of the
- * extract operation.
- */
-
-STATIC INLINE void _Chain_Extract_unprotected(
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Extract
- *
- * This routine extracts the_node from the chain on which it resides.
- * It disables interrupts to insure the atomicity of the
- * extract operation.
- */
-
-void _Chain_Extract(
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Get_unprotected
- *
- * This function removes the first node from the_chain and returns
- * a pointer to that node. If the_chain is empty, then NULL is returned.
- * It does NOT disable interrupts to insure the atomicity of the
- * get operation.
- */
-
-STATIC INLINE Chain_Node *_Chain_Get_unprotected(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Get
- *
- * This function removes the first node from the_chain and returns
- * a pointer to that node. If the_chain is empty, then NULL is returned.
- * It disables interrupts to insure the atomicity of the
- * get operation.
- */
-
-Chain_Node *_Chain_Get(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Get_first_unprotected
- *
- * This function removes the first node from the_chain and returns
- * a pointer to that node. It does NOT disable interrupts to insure
- * the atomicity of the get operation.
- */
-
-STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Insert_unprotected
- *
- * This routine inserts the_node on a chain immediately following
- * after_node. It does NOT disable interrupts to insure the atomicity
- * of the extract operation.
- */
-
-STATIC INLINE void _Chain_Insert_unprotected(
- Chain_Node *after_node,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Insert
- *
- * This routine inserts the_node on a chain immediately following
- * after_node. It disables interrupts to insure the atomicity
- * of the extract operation.
- */
-
-void _Chain_Insert(
- Chain_Node *after_node,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Append_unprotected
- *
- * This routine appends the_node onto the end of the_chain.
- * It does NOT disable interrupts to insure the atomicity of the
- * append operation.
- */
-
-STATIC INLINE void _Chain_Append_unprotected(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Append
- *
- * This routine appends the_node onto the end of the_chain.
- * It disables interrupts to insure the atomicity of the
- * append operation.
- */
-
-void _Chain_Append(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Prepend_unprotected
- *
- * This routine prepends the_node onto the front of the_chain.
- * It does NOT disable interrupts to insure the atomicity of the
- * prepend operation.
- */
-
-STATIC INLINE void _Chain_Prepend_unprotected(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Prepend
- *
- * This routine prepends the_node onto the front of the_chain.
- * It disables interrupts to insure the atomicity of the
- * prepend operation.
- */
-
-STATIC INLINE void _Chain_Prepend(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Insert_chain
- *
- * This routine inserts a chain after the specified node in another
- * chain. It is assumed that the insert after node is not on the
- * second chain.
- */
-
-void _Chain_Insert_chain(
- Chain_Node *insert_after,
- Chain_Control *to_insert
-);
-
-/*
- * _Chain_Head
- *
- * This function returns a pointer to the first node on the chain.
- */
-
-STATIC INLINE Chain_Node *_Chain_Head(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Tail
- *
- * This function returns a pointer to the last node on the chain.
- */
-
-STATIC INLINE Chain_Node *_Chain_Tail(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Is_head
- *
- * This function returns TRUE if the_node is the head of the_chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_head(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Is_tail
- *
- * This function returns TRUE if the_node is the tail of the_chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_tail(
- Chain_Control *the_chain,
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Is_first
- *
- * This function returns TRUE if the_node is the first node on a chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_first(
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Is_last
- *
- * This function returns TRUE if the_node is the last node on a chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_last(
- Chain_Node *the_node
-);
-
-/*
- * _Chain_Is_empty
- *
- * This function returns TRUE if there a no nodes on the_chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_empty(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Has_only_one_node
- *
- * This function returns TRUE if there is only one node on the_chain and
- * FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Has_only_one_node(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Is_null
- *
- * This function returns TRUE if the_chain is NULL and FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_null(
- Chain_Control *the_chain
-);
-
-/*
- * _Chain_Is_null_node
- *
- * This function returns TRUE if the_node is NULL and FALSE otherwise.
- */
-
-STATIC INLINE boolean _Chain_Is_null_node(
- Chain_Node *the_node
-);
-
-#include "chain.inl"
-
-#endif
-/* end of include file */
diff --git a/doc/tools/pdl2texi/chain.inl b/doc/tools/pdl2texi/chain.inl
deleted file mode 100644
index 7393fee7b8..0000000000
--- a/doc/tools/pdl2texi/chain.inl
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * This include file contains the bodies of the routines which are
- * associated with doubly linked chains and inlined.
- *
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __INLINE_CHAIN_inl
-#define __INLINE_CHAIN_inl
-
-/*PAGE
- *
- * _Chain_Is_null
- */
-
-STATIC INLINE boolean _Chain_Is_null(
- Chain_Control *the_chain
-)
-{
- return ( the_chain == NULL );
-}
-
-/*PAGE
- *
- * _Chain_Is_null_node
- */
-
-STATIC INLINE boolean _Chain_Is_null_node(
- Chain_Node *the_node
-)
-{
- return ( the_node == NULL );
-}
-
-/*PAGE
- *
- * _Chain_Head
- */
-
-STATIC INLINE Chain_Node *_Chain_Head(
- Chain_Control *the_chain
-)
-{
- return (Chain_Node *) the_chain;
-}
-
-/*PAGE
- *
- * _Chain_Tail
- */
-
-STATIC INLINE Chain_Node *_Chain_Tail(
- Chain_Control *the_chain
-)
-{
- return (Chain_Node *) &the_chain->permanent_null;
-}
-
-/*PAGE
- *
- * _Chain_Is_empty
- */
-
-STATIC INLINE boolean _Chain_Is_empty(
- Chain_Control *the_chain
-)
-{
- return ( the_chain->first == _Chain_Tail( the_chain ) );
-}
-
-/*PAGE
- *
- * _Chain_Is_first
- */
-
-STATIC INLINE boolean _Chain_Is_first(
- Chain_Node *the_node
-)
-{
- return ( the_node->previous == NULL );
-}
-
-/*PAGE
- *
- * _Chain_Is_last
- */
-
-STATIC INLINE boolean _Chain_Is_last(
- Chain_Node *the_node
-)
-{
- return ( the_node->next == NULL );
-}
-
-/*PAGE
- *
- * _Chain_Has_only_one_node
- */
-
-STATIC INLINE boolean _Chain_Has_only_one_node(
- Chain_Control *the_chain
-)
-{
- return ( the_chain->first == the_chain->last );
-}
-
-/*PAGE
- *
- * _Chain_Is_head
- */
-
-STATIC INLINE boolean _Chain_Is_head(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- return ( the_node == _Chain_Head( the_chain ) );
-}
-
-/*PAGE
- *
- * _Chain_Is_tail
- */
-
-STATIC INLINE boolean _Chain_Is_tail(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- return ( the_node == _Chain_Tail( the_chain ) );
-}
-
-/*PAGE
- *
- * Chain_Initialize_empty
- */
-
-STATIC INLINE void _Chain_Initialize_empty(
- Chain_Control *the_chain
-)
-{
- the_chain->first = _Chain_Tail( the_chain );
- the_chain->permanent_null = NULL;
- the_chain->last = _Chain_Head( the_chain );
-}
-
-/*PAGE
- *
- * _Chain_Extract_unprotected
- */
-
-STATIC INLINE void _Chain_Extract_unprotected(
- Chain_Node *the_node
-)
-{
- Chain_Node *next;
- Chain_Node *previous;
-
- next = the_node->next;
- previous = the_node->previous;
- next->previous = previous;
- previous->next = next;
-}
-
-/*PAGE
- *
- * _Chain_Get_first_unprotected
- */
-
-STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
- Chain_Control *the_chain
-)
-{
- Chain_Node *return_node;
- Chain_Node *new_first;
-
- return_node = the_chain->first;
- new_first = return_node->next;
- the_chain->first = new_first;
- new_first->previous = _Chain_Head( the_chain );
-
- return return_node;
-}
-
-/*PAGE
- *
- * Chain_Get_unprotected
- */
-
-STATIC INLINE Chain_Node *_Chain_Get_unprotected(
- Chain_Control *the_chain
-)
-{
- if ( !_Chain_Is_empty( the_chain ) )
- return _Chain_Get_first_unprotected( the_chain );
- else
- return NULL;
-}
-
-/*PAGE
- *
- * _Chain_Insert_unprotected
- */
-
-STATIC INLINE void _Chain_Insert_unprotected(
- Chain_Node *after_node,
- Chain_Node *the_node
-)
-{
- Chain_Node *before_node;
-
- the_node->previous = after_node;
- before_node = after_node->next;
- after_node->next = the_node;
- the_node->next = before_node;
- before_node->previous = the_node;
-}
-
-/*PAGE
- *
- * _Chain_Append_unprotected
- */
-
-STATIC INLINE void _Chain_Append_unprotected(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- Chain_Node *old_last_node;
-
- the_node->next = _Chain_Tail( the_chain );
- old_last_node = the_chain->last;
- the_chain->last = the_node;
- old_last_node->next = the_node;
- the_node->previous = old_last_node;
-}
-
-/*PAGE
- *
- * _Chain_Prepend_unprotected
- */
-
-STATIC INLINE void _Chain_Prepend_unprotected(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- _Chain_Insert_unprotected( _Chain_Head( the_chain ), the_node );
-
-}
-
-/*PAGE
- *
- * _Chain_Prepend
- */
-
-STATIC INLINE void _Chain_Prepend(
- Chain_Control *the_chain,
- Chain_Node *the_node
-)
-{
- _Chain_Insert( _Chain_Head( the_chain ), the_node );
-}
-
-#endif
-/* end of include file */
diff --git a/doc/tools/pdl2texi/drive.d b/doc/tools/pdl2texi/drive.d
deleted file mode 100644
index ff41d5ad38..0000000000
--- a/doc/tools/pdl2texi/drive.d
+++ /dev/null
@@ -1,874 +0,0 @@
-OBJECT: Drive
- DESCRIPTION:
- This object provides an interface to the elevation/azimuth
- drive system(ECA).
- THEORY OF OPERATION:
- This object encapsulates the turret drive. The object provides
- an interface to control the turret drive. A method is provided
- to set the azimuth and elevation rate of the drive. Methods are
- provided to request the drive to run in stabilized or power mode
- and set the drive speed to high or low. A method is also provided
- to allow for drift adjust.
-
- This object also tracks drive system on hours. It gets the hours
- from the EEPROM data, allows the hours to be set, updates the
- hours via the activation and deactivation of the drive, and
- provides access to the hours.
-
- The object also provides methods to access azimuth and elevation
- displacement, and methods to process changes in the hardware
- discretes drive on, stabilized mode, thermal fault and fault.
-
- The object also provides methods to enable and disable
- both the remote and turret power interlocks which determine if
- the drive can be driven by the remote or turret handstation
- respectively.
-
-ATTRIBUTE DESCRIPTIONS:
-
-
-ATTRIBUTE: Azimuth_displacement
- DESCRIPTION:
- This attribute represents the current azimuth displacement
- of the turret.
- TYPE: floating point
- RANGE: ???
- UNITS: degrees
- REQUIREMENTS:
- AFS 8.2.11 Receive Azimuth Displacement and Elevation Displacement
- AIS 5.2.6 Azimuth Displacement analog
-
-
-ATTRIBUTE: Azimuth_rate
- DESCRIPTION:
- Azimuth rate command for movement of the turret.
- TYPE: floating point
- UNITS: degrees / second
- DEFAULTS: none
- REQUIREMENTS:
- AFS 8.2.3 Send Azimuth and Elevation Rate to ECA
- AIS 5.3.4 Elevation Rate analog
- AIS 5.3.5 Azimuth Rate analog
-
-
-ATTRIBUTE: Drift_adjust
- DESCRIPTION:
- This attribute represents the current drift adjustment mode
- of the ECA turret drive.
- TYPE: enumerated
- MEMBERS:
- ADJUST_OFF - drift adjust mode is OFF
- ADJUST_ON - drift adjust mode is ON
- REQUIREMENTS:
- AFS 8.2.6 Capable of turret drift adjustment
- AIS 5.3.1 Drift Adjust discrete
-
-
-ATTRIBUTE: Drive_on
- DESCRIPTION:
- Current status of the turret drive. The turret drive may either be
- switched on or off.
- TYPE: boolean
- MEMBERS:
- FALSE - turret drive is off
- TRUE - turret drive is on
- DEFAULTS: FALSE
- REQUIREMENTS:
- AFS 8.2.9 Monitor Drive System On
- AIS 5.2.1 Drive System On discrete
-
-
-ATTRIBUTE: Drive_system_hours
- DESCRIPTION:
- Total number of hours drive has been activated.
- TYPE: integer
- RANGE: 0 - +INFINITY
- UNITS: seconds
- REQUIREMENTS:
- AFS 4.11 Respond to CDT elapsed time indicator key
-
-
-ATTRIBUTE: Elevation_displacement
- DESCRIPTION:
- This attribute represents the current elevation displacement
- of the turret.
- TYPE: floating point
- RANGE: ???
- UNITS: degrees
- REQUIREMENTS:
- AFS 8.2.11 Receive Azimuth Displacement and Elevation Displacement
- AIS 5.2.7 Elevation Displacement analog
-
-
-ATTRIBUTE: Elevation_rate
- DESCRIPTION:
- Elevation rate command for movement of the turret.
- TYPE: floating point
- UNITS: degrees / second
- DEFAULTS: none
- REQUIREMENTS:
- AFS 8.2.3 Send Azimuth and Elevation Rate to ECA
- AIS 5.3.4 Elevation Rate analog
- AIS 5.3.5 Azimuth Rate analog
-
-
-ATTRIBUTE: Fault
- DESCRIPTION:
- This attribute denotes whether a turret malfunction has occurred.
- TYPE: boolean
- MEMBERS:
- TRUE - a turret malfunction has occurred
- FALSE - no turret malfunction has occurred
- DEFAULTS: FALSE
- REQUIREMENTS:
- AFS 8.2.7 Check for ECA failure indication
- AIS 5.2.4 Turret Drive Malfunction discrete
-
-
-ATTRIBUTE: Mode
- DESCRIPTION:
- Current requested drive mode.
- TYPE: enumerated
- MEMBERS:
- POWER - operate in POWER mode
- STAB - operate in STABILIZED mode
- DEFAULTS: POWER
- REQUIREMENTS:
-
-
-ATTRIBUTE: Remote_power_interlock_position
- DESCRIPTION:
- This is the status of the remote's power interlock.
- TYPE: enumerated
- MEMBERS:
- OPEN - relay is open
- CLOSED - relay is closed
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
-
-
-ATTRIBUTE: Speed
- DESCRIPTION:
- Current speed mode of the ECA turret drive.
- TYPE: enumerated
- MEMBERS:
- LOW_SPEED - turret drive does not allow the maximum rate
- HIGH_SPEED - turret drive allows the maximum rate
- DEFAULTS: HIGH
- REQUIREMENTS:
- AFS 8.2.5 Control Turret
- AIS 5.3.3 Turret High Speed Mode discrete
-
-
-ATTRIBUTE: Stabilized_mode
- DESCRIPTION:
- Current drive mode indicating whether the ECA electronics are
- operating in Stabilized mode or Power mode.
- TYPE: boolean
- MEMBERS:
- FALSE - not operating in STABILIZED mode
- TRUE - operating in STABILIZED mode
- DEFAULTS: FALSE
- REQUIREMENTS:
- AFS 8.2.8 Monitor Turret Stab Mode Indicate
- AIS 5.2.3 Turret Stab Mode Indicate discrete
-
-
-ATTRIBUTE: State
- DESCRIPTION:
- Current state of the turret drive.
- TYPE: enumerated
- MEMBERS:
- ACTIVATED - turret drive is ON and active
- DEACTIVATED - turret drive is ON but deactivated
- DEFAULTS: DEACTIVATED
- REQUIREMENTS:
- AFS 8.2.4 Set Plam Grips Active
- AIS 5.3.2 Palm Grips Active discrete
-
-
-ATTRIBUTE: Thermal_fault
- DESCRIPTION:
- This attribute denotes whether a turret thermal fault has occurred.
- TYPE: boolean
- MEMBERS:
- TRUE - a turret thermal fault has occurred
- FALSE - no turret thermal fault has occurred
- DEFAULTS: FALSE
- REQUIREMENTS:
- AFS 8.2.7 Check for ECA failure indication
- AIS 5.2.2 Turret ECA Thermal Failure discrete
-
-
-ATTRIBUTE: Turret_power_interlock_position
- DESCRIPTION:
- This is the status of the turret's power interlock.
- TYPE: enumerated
- MEMBERS:
- OPEN - relay is open
- CLOSED - relay is closed
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
-
-
-ASSOCIATION DESCRIPTIONS: none
-
-ABSTRACT TYPE DESCRIPTIONS:
-
-ABSTRACT TYPE: Drift_adjust_t
- DESCRIPTION:
- This abstract type represents the current drift adjustment mode
- of the ECA turret drive.
- VISIBILITY: public
- DERIVATION: enumerated
- MEMBERS:
- ADJUST_OFF = 0 - drift adjust mode is OFF
- ADJUST_ON = 1 - drift adjust mode is ON
- REQUIREMENTS:
- AIS 5.3.1 Drift Adjust discrete
-
-ABSTRACT TYPE: Interlock_status
- DESCRIPTION:
- An interlock state being OPEN or CLOSED.
- VISIBILITY: private
- DERIVATION: enumerated
- MEMBERS:
- OPEN - interlock relay is in the open state
- CLOSED - interlock relay is in the closed state
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
-
-ABSTRACT TYPE: Mode
- DESCRIPTION:
- This type specifies the drive mode of the ECA turret drive.
- VISIBILITY: public
- DERIVATION: enumerated
- MEMBERS:
- POWER - operate in POWER mode
- STAB - operate in STABILIZED mode
-
-ABSTRACT TYPE: Speed
- DESCRIPTION:
- This type specifies the Speed mode of the ECA turret drive.
- VISIBILITY: public
- DERIVATION: enumerated
- MEMBERS:
- LOW_SPEED = 0 - turret drive does not allow the maximum rate
- HIGH_SPEED = 1 - turret drive allows the maximum rate
- REQUIREMENTS:
- AIS 5.3.3 Turret High Speed Mode discrete
-
-ABSTRACT TYPE: State_t
- DESCRIPTION:
- This type specifies the state of the turret drive.
- VISIBILITY: private
- DERIVATION: enumerated
- MEMBERS:
- DEACTIVATED - turret drive is ON but deactivated
- ACTIVATED - turret drive is ON and active
-
-DATA ITEM DESCRIPTIONS:
-
-DATA ITEM: Azimuth_displacement_control
- DESCRIPTION:
- This data item contains the Azimuth_displacement analog control
- information.
- TYPE: handle
-
-
-DATA ITEM: Azimuth_rate_control
- DESCRIPTION:
- This data item contains the Azimuth_rate analog control
- information.
- TYPE: handle
-
-
-DATA ITEM: Drift_adjust_control
- DESCRIPTION:
- This data item contains the Drift_adjust discrete control
- information.
- TYPE: handle
-
-
-DATA ITEM: Drive_activate_control
- DESCRIPTION:
- This data item contains the activate drive relay control information.
- TYPE: handle
-
-
-DATA ITEM: Drive_activated_timestamp
- DESCRIPTION:
- This data item stores the timestamp of the last time the drive was
- activated. It will be used to compute the activated time when a
- deactivate is received.
- TYPE: time_t
- DEFAULT: none
- NOTES:
- see C library for data type information ???
-
-
-DATA ITEM: Drive_on
- DESCRIPTION:
- The current status of the turret drive representing whether
- the drive is on or off.
- TYPE: boolean
- DEFAULT: FALSE
-
-
-DATA ITEM: Drive_on_control
- DESCRIPTION:
- This data item contains the Drive_on discrete flag control
- information.
- TYPE: handle
-
-
-DATA ITEM: Drive_system_hours
- DESCRIPTION:
- This data item stores the actual time the drive has been active.
- This value will be output by the Get_time method and will be set
- by the Set_time method.
- TYPE: integer
- RANGE: 0 - +INFINITY
- UNITS: seconds
- DEFAULT: 0
-
-
-DATA ITEM: Elevation_rate_control
- DESCRIPTION:
- This data item contains the Elevation_rate analog control
- information.
- TYPE: handle
-
-
-DATA ITEM: Elevation_displacement_control
- DESCRIPTION:
- This data item contains the Elevation_displacement analog control
- information.
- TYPE: handle
-
-
-DATA ITEM: Fault_control
- DESCRIPTION:
- This data item contains the Fault discrete flag control
- information.
- TYPE: handle
-
-
-DATA ITEM: Remote_power_interlock_control
- DESCRIPTION:
- This data item contains the Remote_power_interlock relay control
- information.
- TYPE: handle
-
-
-DATA ITEM: Stabilized_mode_control
- DESCRIPTION:
- This data item contains the Stabilized_mode discrete flag control
- information.
- TYPE: handle
-
-
-DATA ITEM: State
- DESCRIPTION:
- The current state of the turret drive representing an activated or
- deactivated drive.
- TYPE: State_t
- DEFAULT: DEACTIVATED
-
-
-DATA ITEM: Thermal_fault_control
- DESCRIPTION:
- This data item contains the Thermal_fault discrete flag control
- information.
- TYPE: handle
-
-
-DATA ITEM: Turret_power_interlock_control
- DESCRIPTION:
- This data item contains the Turret_power_interlock relay control
- information.
- TYPE: handle
-
-
-DATA ITEM: Turret_power_interlock_status
- DESCRIPTION:
- The accurate status of the turret power interlock relay. This value
- will be used to control the relay during a transition from the remote
- back to the turret console.
- TYPE: Interlock_status
- DEFAULT: none
-
-
-METHODS DESCRIPTIONS:
-
-METHOD: Activate
- DESCRIPTION:
- This method activates the turret drive system. A timestamp of the
- activation is recorded to keep a running count of hours the drive has
- been active.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.4 Set Palm Grips Active
- AIS 5.3.2 Palm Grips Active discrete
- PDL:
-
- if Drive_on
- if State is DEACTIVATED
- close the Drive_activate_control relay using the Relay object
- timestamp Drive_activated_timestamp for Drive_system_hours
- running total
- set State to ACTIVATED
- else
- already in the ACTIVATED state
-
-
-METHOD: Create
- DESCRIPTION:
- This method initializes the Turret Drive object. All monitors of
- turret drive signals are initialized and/or registered. All turret
- drive characteristics are set to their initial values.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- PDL:
-
- set State to DEACTIVATED
-
- get Drive_system_hours to initialize the elapsed drive time
- from the Statistics (eeprom database ???) object - this is
- stored upon shutdown in eeprom
-
- create Fault_control using Discrete_flag object with the
- following attributes
- true_sense - DISCRETE_FLAG_TRUE_IS_1
- is_buffered - false
- is_monitored - true
- period - 10ms
- change_routine - Change_fault
- change fault using initial value returned from create Fault_control
-
- create Thermal_fault_control using Discrete_flag object with
- the following attributes
- true_sense - DISCRETE_FLAG_TRUE_IS_0
- is_buffered - false
- is_monitored - true
- period - 10ms
- change_routine - Change_thermal_fault
- change thermal fault using initial value returned from create
- Thermal_fault_control
-
- create Stabilized_mode_control using Discrete_flag object with the
- following attributes
- true_sense - DISCRETE_FLAG_TRUE_IS_1
- is_buffered - false
- is_monitored - true
- period - 10ms
- change_routine - Change_stabilized_mode
- change stabilized mode using initial value returned from create
- Stabilized_mode_control
-
- create Drive_on_control using Discrete_flag object with the
- following attributes
- true_sense - DISCRETE_FLAG_TRUE_IS_1
- is_buffered - false
- is_monitored - true
- period - 10ms
- change_routine - Change_drive_on
- change drive on using initial value returned from create
- Drive_on_control
-
- create Azimuth_rate_control using the Linear_dac object
- with the following attributes:
- none voltage_low - -10
- voltage_high - +10
- logical_low - -60
- logical_high - +60
- is_buffered - false
- period - none
- initial_value - 0
-
- create Elevation_rate_control using the Linear_dac object with the
- following attributes:
- voltage_low - -10
- voltage_high - +10
- logical_low - -60
- logical_high - +60
- is_buffered - false
- period - none
- initial_value - 0
-
- create Azimuth_displacement_control using the Linear_adc object with
- the following attributes:
- voltage low -
- voltage high -
- logical low -
- logical high -
- is_buffered - false
- is_monitored - false
- period - none
- change_routine - none
- delta - none
-
- create Elevation_displacement_control using the Linear_adc object
- with the following attributes:
- voltage low -
- voltage high -
- logical low -
- logical high -
- is_buffered - false
- is_monitored - false
- period - none
- change_routine - none
- delta - none
-
- create Drive_activate_control using the Relay object with the
- following attributes:
- open_sense - RELAY_OPEN_IS_0
- is_buffered - false
- period - none
- initial_state - RELAY_OPEN
-
- create Turret_power_interlock_control using the Relay object with
- the following attributes:
- open_sense - RELAY_OPEN_IS_0
- is_buffered - false
- period - none
- initial_state - RELAY_OPEN
- set Turret_power_interlock_status to OPEN
-
- create Remote_power_interlock_control using the Relay
- object with the following attributes:
- open_sense - RELAY_OPEN_IS_0
- is_buffered - false
- period - none
- initial_state - RELAY_OPEN
-
- create Drift_adjust_control using the Discrete_out object with
- following attributes:
- is_buffered - false
- period - 10ms
- initial_value - ADJUST_OFF
-
-
-METHOD: Deactivate
- DESCRIPTION:
- This method deactivates the turret drive system. A timestamp of the
- activation is recorded to keep a running count of hours the drive
- has been active.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.4 Set Plam Grips Active
- AIS 5.3.2 Palm Grips Active discrete
- PDL:
-
- if Drive_on
- if State is DEACTIVATED
- timestamp deactivate for Drive_system_hours running total
- deactivate drive by opening the Drive_activate_control relay
- using the Relay object
- compute running time since last activate
- add running time to Drive_system_hours
- set State to DEACTIVATED
- else
- already in the DEACTIVATED state
-
-
-METHOD: Disable_remote_power_interlock
- DESCRIPTION:
- This method disables the turret power interlock safety preventing
- the turret from being driven by the remote's handstation.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
- PDL:
-
- open the remote power interlock relay
- return the turret relay to its designated state defined by the
- Turret_power_interlock_status
-
-
-METHOD: Disable_turret_power_interlock
- DESCRIPTION:
- This method disables the turret power interlock safety preventing
- the turret from being driven by the turret's handstation.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
- PDL:
-
- Deactivate the Drive object
- open the turret power interlock relay
- set Turret_power_interlock_status to OPEN
-
-
-METHOD: Enable_remote_power_interlock
- DESCRIPTION:
- This method will enable the remote power interlock to allow
- the turret to be driven from the remote station.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
- NOTES:
- At this time the turret's power interlock is opened to avoid
- having both relays closed at a time.
- PDL:
-
- if Drive_on
- open the turret power interlock relay using the Relay object
- close the remote power interlock relay using the Relay object
-
-
-METHOD: Enable_turret_power_interlock
- DESCRIPTION:
- This method will enable the turret power interlock to allow
- the turret to be driven from the turret station.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.12 Control Power Interlock
- NOTES:
- At this time the closed state is saved to allow the correct state
- to be returned to in the event a remote overrides the turret and the
- remote gives up its control, we must return to the previous state of
- the turret power interlock.
- PDL:
-
- if Drive_on
- close the turret power interlock relay using the Relay object
-
- set the Turret_power_interlock_status to CLOSED to return to
- when remote gives up control
-
-
-METHOD: Get_AZ_EL_displacement
- DESCRIPTION:
- This method returns the current azimuth displacement and elevation
- displacement from the ECA.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS:
- current azimuth displacement value
- current elevation displacement value
- REQUIREMENTS:
- AFS 8.2.11 Receive Azimuth Displacement and Elevation Displacement
- AIS 5.2.6 Azimuth Displacement analog
- AIS 5.2.7 Elevation Displacement analog
- NOTES:
- Currently supported as an on-demand type of signal. May change to a
- monitored analog signal.
- PDL:
-
- if Drive_on
- get and return current azimuth displacement and current elevation
- displacement from ECA using the Linear_ADC object
-
-
-METHOD: Get_hours
- DESCRIPTION:
- This method returns the current value contained in the elapsed
- turret drive active time.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS:
- elapsed turret drive time - the current elasped turret drive time
- REQUIREMENTS:
- REFERENCES:
- AFS 4.11 Respond to CDT elapsed time indicator key
- NOTES:
- PDL:
-
- return the current value for Drive_system_hours
-
-
-METHOD: Set_drift_adjust
- DESCRIPTION:
- This method provides the ability to set the drift adjust to the
- value represented by the handstation. Drift adjust is either ON
- or OFF.
- VISIBILITY: public
- INPUTS:
- value - new drift adjust value
- ADJUST_OFF - drift adjust mode is OFF
- ADJUST_ON - drift adjust mode is ON
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.6 Capable of turret drift adjustment
- AIS 5.3.1 Drift Adjust discrete
- PDL:
-
- if Drive_on
- set drift adjust discrete to value using Discrete_out object
-
-METHOD: Set_hours
- DESCRIPTION:
- This method will set the turret drive activated elapsed time value
- to the specified value.
- VISIBILITY: public
- INPUTS:
- new_elapsed_time_value - specified turret drive elapsed time value
- OUTPUTS: none
- REQUIREMENTS:
- AFS 4.11 Respond to CDT elapsed time indicator key
- PDL:
-
- set the value of Drive_system_hours to the value specified by
- new_elapsed_time_value
-
-
-METHOD: Set_mode
- DESCRIPTION:
- This method sets the requested mode of the turret drive.
- VISIBILITY: public
- INPUTS:
- mode - new requested mode
- POWER - operating in POWER mode
- STAB - operating in STABILIZED mode
- OUTPUTS: none
- REQUIREMENTS:
- PDL:
- if mode is POWER
- set drive mode switchlight to PWR_LAMP using the Console object
- else if mode is STAB
- set drive mode switchlight to STB_LAMP using the Console object
-
-
-METHOD: Set_rate
- DESCRIPTION:
- This method provides the ability to send azimuth and elevation rates
- to the drive. Two parameters are used as input to designate the
- corresponding rates. These parameters must be in degrees per second.
- VISIBILITY: public
- INPUTS:
- azimuth rate - new azimuth rate in degress per second
- elevation rate - new elevation rate in degress per second
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.3 Send Azimuth and Elevation Rate to ECA
- AIS 5.3.4 Elevation Rate analog
- AIS 5.3.5 Azimuth Rate analog
- NOTES:
- May need to couple these analogs with an interface driver to close
- the window between writes and conversions.
- PDL:
-
- if Drive_on
- send the new azimuth rate to the Azimuth analog
- send the new elevation rate to Elevation analog
-
-
-METHOD: Set_speed
- DESCRIPTION:
- This method sets the turret drive speed mode to the specified value
- either high or low based on user input.
- VISIBILITY: public
- INPUTS:
- new_speed_value - new value to set the turret speed to
- LOW_SPEED - turret drive does not allow the maximum rate
- HIGH_SPEED - turret drive allows the maximum rate
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.5 Control Turret
- AIS 5.3.3 Turret High Speed Mode discrete
- PDL:
-
- if Drive_on
- set turret drive high speed mode discrete to the new_speed_value
- using Discrete_out object
-
-
-METHOD: Change_drive_on
- DESCRIPTION:
- This method will be used to report a transition of the drive system
- on discrete.
- VISIBILITY: private
- INPUTS:
- value - new drive system on value
- FALSE - indicates drive not on
- TRUE - indicates drive on
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.9 Monitor Drive System On
- AIS 5.2.1 Drive System On discrete
- REFERENCES:
- NOTES:
- PDL:
-
- set Drive_on to value
- if Drive_on is FALSE
- deactivate the turret drive using the Drive object
-
-
-METHOD: Change_fault
- DESCRIPTION:
- This method will be used to indicate that a turret malfunction
- has been recognized by the turret drive.
- VISIBILITY: private
- INPUTS:
- value - new value resulting from a fault discrete change
- FALSE - indicates no fault
- TRUE - indicates fault
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.7 Check for ECA failure indication
- AIS 5.2.4 Turret Drive Malfunction discrete
- PDL:
-
- if value
- send turret fault message using the Display object
- else
- return
-
-
-METHOD: Change_stabilized_mode
- DESCRIPTION:
- This method will determine a transition from STAB mode to POWER mode.
- It will set the stab mode lamp on the console.
- VISIBILITY: private
- INPUTS:
- value - new value resulting from a stab mode discrete change
- FALSE - indicates not stabilized mode
- TRUE - indicates stabilized mode
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.8 Monitor Turret Stab Mode Indicate
- AIS 5.2.3 Turret Stab Mode Indicate discrete
- PDL:
-
- if value
- set STAB mode light to LAMP_ON using the Console object
- else value indicates not stabilized mode
- set STAB mode light to LAMP_OFF using the Console object
-
-
-METHOD: Change_thermal_fault
- DESCRIPTION:
- This method will be used to indicate that a thermal fault has been
- recognized by the turret drive.
- VISIBILITY: private
- INPUTS:
- value - new value resulting from a thermal fault discrete change
- FALSE - indicates no thermal fault
- TRUE - indicates thermal fault
- OUTPUTS: none
- REQUIREMENTS:
- AFS 8.2.7 Check for ECA failure indication
- AIS 5.2.2 Turret ECA Thermal Failure discrete
- PDL:
-
- if value
- send thermal fault message using the Display object
- else
- return
-
-END OBJECT: Drive
diff --git a/doc/tools/pdl2texi/isr.h b/doc/tools/pdl2texi/isr.h
deleted file mode 100644
index b9a78fabbc..0000000000
--- a/doc/tools/pdl2texi/isr.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-
-#ifndef __ISR_h
-#define __ISR_h
-
-typedef unsigned32 ISR_Level;
-
-#define _ISR_Disable
-#define _ISR_Enable
-
-#endif
diff --git a/doc/tools/pdl2texi/main.c b/doc/tools/pdl2texi/main.c
deleted file mode 100644
index 3c52d4871a..0000000000
--- a/doc/tools/pdl2texi/main.c
+++ /dev/null
@@ -1,3615 +0,0 @@
-/*
- * main.c
- *
- * This program error checks the OAR PDL and converts it into
- * It works by reading the input file into a linked list of lines
- * and then performing sweeps on that list until all formatting is
- * complete.
- *
- * FEATURES:
- * + rudimentary statistics
- * + forgiveness features
- * + output in Texinfo format
- * + output in a form that a sibling MS-Word VBA program can format
- *
- * CHECKS PERFORMED:
- * + unable to open file
- * + unexpected end of file
- * + line should have a colon
- * + basic text (to right or below) associated with keyword
- * improperly placed
- * + an "incomplete marker" is still in place
- * + missing keywords within a subsection
- * + duplicated keywords withing a subsection
- * + subsections in correct order
- * + section header indicates no subsections and there are subsections
- * + section header indicates subsections and there are no subsections
- * + inconsistent spacing in RAW text. This tends to be 1st line with
- * text is indented further than a subsequent line.
- * + missing components on line (incomplete)
- * + invalid repitition of a subsection
- * + type keyword validated for class, type, and spacing between
- * + both members and range are present
- * + neither members and range are present
- * + enumerated types and attributes have members
- * + non-enumerated types and attributes have ranges.
- * + Object name and end object have the same name
- * + booleans in attribute section list both true and false
- * + task synchronization keyword is checked. There must be a valid
- * type of synchronization primitive and a description when expected.
- * + sections in correct order
- *
- * INTERNAL ERRORS:
- * + attempting to reformat an already formatted line
- * + end of processing reached and no formatting assigned to line
- *
- * CHECKS NOT PERFORMED:
- *
- * TODO:
- *
- * IDEAS NOT IMPLEMENTED:
- * + smarter reporting of sections not in the right order
- * + task which uses multiple synchronization types
- * + improved error messages
- * + no introductions inserted to sections
- * + recognize special "symbols" like infinity, +-, etc.
- *
- * QUESTIONS:
- * + "what do I know" is actually a table and should not be reformatted.
- *
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#include <assert.h>
-#include <ctype.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* XXX -- just for testing -- these should be set by options */
-char DocsNextNode[256] = "";
-char DocsPreviousNode[256] = "";
-char DocsUpNode[256] = "";
-
-extern int optind; /* Why is this not in <stdlib.h>? */
-extern char *optarg; /* Why is this not in <stdlib.h>? */
-
-#ifndef NAME_MAX
-#define NAME_MAX 14 /* Why is the one in limits.h not showing up? */
-#endif
-#define INIT_DATA
-#define EXTERN
-
-#include "base.h"
-
-FILE *OutFile = stdout;
-
-/*************************************************************************
- *************************************************************************
- ***** DATA TYPES AND CONSTANT TABLES *****
- *************************************************************************
- *************************************************************************/
-/*
- * Usage Information
- */
-
-char *Usage_Strings[] = {
- "\n",
- "usage: cmd [-vti?] [-p previous_node] [-u up_node] files ...\n",
- "\n",
- "EOF"
-};
-
-/*
- * The page separator is not really a keyword and will be purged before
- * it is seen elsewhere.
- */
-
-#define PAGE_SEPARATOR "#PAGE"
-
-/*
- * Section Delimiter Keywords
- */
-
-#define MAXIMUM_KEYWORD_LENGTH 32
-
-/*
- * Level indicates where in the format the delimiter is allowed to occur.
- * 1 indicates a major section divider (e.g. "ATTRIBUTE DESCRIPTIONS:").
- * 2 indicates a subsection (e.g. "ATTRIBUTE:").
- * 3 indicates a heading (e.g. "DESCRIPTION:").
- */
-
-#define TEXT 0
-#define SECTION 1
-#define SUBSECTION 2
-#define HEADING 3
-
-typedef enum {
- UNUSED, /* dummy 0 slot */
- OBJECT, /* sections */
- ATTRIBUTE_DESCRIPTIONS,
- ASSOCIATION_DESCRIPTIONS,
- ABSTRACT_TYPE_DESCRIPTIONS,
- DATA_ITEM_DESCRIPTIONS,
- METHOD_DESCRIPTIONS,
- TASK_DESCRIPTIONS,
- END_OBJECT,
-
- ATTRIBUTE, /* subsections */
- ASSOCIATION,
- ABSTRACT_TYPE,
- DATA_ITEM,
- METHOD,
- TASK,
-
- DESCRIPTION, /* headings */
- COPYRIGHT,
- PORTING,
- THEORY_OF_OPERATION,
- DERIVATION,
- DEPENDENCIES,
- NOTES,
- TYPE,
- RANGE,
- MEMBERS,
- UNITS,
- SCALE_FACTOR,
- DEFAULT,
- TOLERANCE,
- REQUIREMENTS,
- REFERENCES,
- VISIBILITY,
- ASSOCIATED_WITH,
- MULTIPLICITY,
- INPUTS,
- OUTPUTS,
- PDL,
- SYNCHRONIZATION,
- TIMING,
-
- RAW_EXAMPLE, /* our own */
-
-} Keyword_indices_t;
-
-#define KEYWORD_FIRST OBJECT
-#define KEYWORD_LAST TIMING
-
-/*
- * Line Management Structure
- */
-
-typedef enum {
- NO_EXTRA_FORMATTING_INFO,
- RAW_OUTPUT,
- PARAGRAPH_OUTPUT,
- BULLET_OUTPUT,
-} ExtraFormat_info_t;
-
-typedef struct {
- Chain_Node Node;
- Keyword_indices_t keyword; /* unused is unknown/undecided */
- ExtraFormat_info_t format;
- int number;
- char Contents[ PARAGRAPH_SIZE ];
-} Line_Control;
-
-typedef enum {
- RT_NO_CHECK, /* don't do this at all */
- RT_FORBIDDEN, /* no text to right allowed */
- RT_OPTIONAL, /* text to right optional -- none below */
- RT_NONE, /* text to right is "none" or nothing -- none below */
- RT_REQUIRED, /* text to right required -- none below */
- RT_BELOW, /* text to right forbidden -- text below required */
- RT_NONE_OR_BELOW, /* text to right is "none" OR there is text below */
- RT_MAYBE_BELOW, /* text to right required -- text below optional */
- RT_EITHER, /* text to right OR below */
- RT_BOTH /* text to right AND below */
-} Keywords_text_mode_t;
-
-typedef enum {
- BL_FORBIDDEN, /* text below forbidden */
- BL_FORMATTED, /* text below is to be formatted as paragraphs */
- BL_RAW, /* text below is to be unprocessed by this program */
-} Keywords_text_below_t;
-
-typedef int (*Keyword_validater_t)( Line_Control * );
-
-typedef struct {
- char Name[ MAXIMUM_KEYWORD_LENGTH ];
- int level;
- Keywords_text_mode_t text_mode;
- Keywords_text_below_t text_below_mode;
- Keyword_validater_t keyword_validation_routine;
-} Keyword_info_t;
-
-/*
- * Keyword Validation Routines
- */
-
-int Validate_visibility(
- Line_Control *line
-);
-
-int Validate_synchronization(
- Line_Control *line
-);
-
-Keyword_info_t Keywords[] = {
- { "unused",
- 0, 0, 0, NULL }, /* so 0 can be invalid */
- { "OBJECT:",
- SECTION, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "ATTRIBUTE DESCRIPTIONS:",
- SECTION, RT_NONE, BL_FORBIDDEN, NULL },
- { "ASSOCIATION DESCRIPTIONS:",
- SECTION, RT_NONE, BL_FORBIDDEN, NULL },
- { "ABSTRACT TYPE DESCRIPTIONS:",
- SECTION, RT_NONE, BL_FORBIDDEN, NULL },
- { "DATA ITEM DESCRIPTIONS:",
- SECTION, RT_NONE, BL_FORBIDDEN, NULL },
- { "METHOD DESCRIPTIONS:",
- SECTION, RT_NONE, BL_FORBIDDEN, NULL },
- { "TASK DESCRIPTIONS:",
- SECTION, RT_NONE, BL_FORBIDDEN, NULL },
- { "ENDOBJECT:",
- SECTION, RT_REQUIRED, BL_FORBIDDEN, NULL },
-
- { "ATTRIBUTE:",
- SUBSECTION, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "ASSOCIATION:",
- SUBSECTION, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "ABSTRACT TYPE:",
- SUBSECTION, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "DATA ITEM:",
- SUBSECTION, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "METHOD:",
- SUBSECTION, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "TASK:",
- SUBSECTION, RT_REQUIRED, BL_FORBIDDEN, NULL },
-
- { "DESCRIPTION:",
- HEADING, RT_BELOW, BL_FORMATTED, NULL },
- { "COPYRIGHT:",
- HEADING, RT_BELOW, BL_FORMATTED, NULL },
- { "PORTING:",
- HEADING, RT_BELOW, BL_FORMATTED, NULL },
- { "THEORY OF OPERATION:",
- HEADING, RT_BELOW, BL_FORMATTED, NULL },
- { "DERIVATION:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "DEPENDENCIES:",
- HEADING, RT_BELOW, BL_FORMATTED, NULL },
- { "NOTES:",
- HEADING, RT_BELOW, BL_FORMATTED, NULL },
- { "TYPE:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "RANGE:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "MEMBERS:",
- HEADING, RT_BELOW, BL_RAW, NULL },
- { "UNITS:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "SCALE FACTOR:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "DEFAULT:",
- HEADING, RT_EITHER, BL_RAW, NULL },
- { "TOLERANCE:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "REQUIREMENTS:",
- HEADING, RT_BELOW, BL_RAW, NULL },
- { "REFERENCES:",
- HEADING, RT_BELOW, BL_RAW, NULL },
- { "VISIBILITY:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, Validate_visibility },
- { "ASSOCIATED WITH:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "MULTIPLICITY:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "INPUTS:",
- HEADING, RT_NONE_OR_BELOW, BL_RAW, NULL },
- { "OUTPUTS:",
- HEADING, RT_NONE_OR_BELOW, BL_RAW, NULL },
- { "PDL:",
- HEADING, RT_BELOW, BL_RAW, NULL },
- { "SYNCHRONIZATION:",
- HEADING, RT_MAYBE_BELOW, BL_RAW, Validate_synchronization },
- { "TIMING:",
- HEADING, RT_REQUIRED, BL_FORBIDDEN, NULL },
- { "",
- TEXT, RT_NO_CHECK, BL_RAW, NULL }
-};
-
-#define NUMBER_OF_KEYWORDS \
- ( sizeof( Keywords ) / sizeof( Keyword_info_t ) ) - 2
-
-/*
- * Section Descriptions
- */
-
-#define MAXIMUM_ELEMENTS 16
-
-typedef struct {
- Keyword_indices_t keyword;
- boolean is_required;
-} Element_info_t;
-
-typedef struct Section_info_struct_t Section_info_t;
-
-typedef (*Section_validater_t)(
- Section_info_t *,
- Line_Control *, /* start */
- Line_Control * /* next_section */
-);
-
-struct Section_info_struct_t {
- boolean repeats;
- Keyword_indices_t This_section;
- Keyword_indices_t Next_section;
- Section_validater_t section_validation_routine;
- Element_info_t Description[MAXIMUM_ELEMENTS];
-};
-
-int Validate_object(
- Section_info_t *section,
- Line_Control *start,
- Line_Control *next_section
-);
-
-int Validate_attribute(
- Section_info_t *section,
- Line_Control *start,
- Line_Control *next_section
-);
-
-int Validate_abstract_type(
- Section_info_t *section,
- Line_Control *start,
- Line_Control *next_section
-);
-
-
-Section_info_t ObjectSection = {
- FALSE, /* subsections repeat */
- OBJECT, /* this section */
- ATTRIBUTE_DESCRIPTIONS, /* next section */
- Validate_object, /* validation routine */
- {
- { OBJECT, TRUE }, /* 0 */
- { DESCRIPTION, TRUE }, /* 1 */
- { COPYRIGHT, FALSE }, /* 2 */
- { PORTING, FALSE }, /* 3 */
- { THEORY_OF_OPERATION, TRUE }, /* 4 */
- { DERIVATION, FALSE }, /* 5 */
- { DEPENDENCIES, FALSE }, /* 6 */
- { REQUIREMENTS, FALSE }, /* 7 */
- { REFERENCES, FALSE }, /* 8 */
- { NOTES, FALSE }, /* 9 */
- { UNUSED, FALSE }, /* 10 */
- { UNUSED, FALSE }, /* 11 */
- { UNUSED, FALSE }, /* 12 */
- { UNUSED, FALSE }, /* 13 */
- { UNUSED, FALSE }, /* 14 */
- { UNUSED, FALSE }, /* 15 */
- }
-};
-
-Section_info_t AttributeSection = {
- TRUE, /* subsections repeat */
- ATTRIBUTE_DESCRIPTIONS, /* this section */
- ASSOCIATION_DESCRIPTIONS, /* next section */
- Validate_attribute, /* validation routine */
- {
- { ATTRIBUTE, TRUE }, /* 0 */
- { DESCRIPTION, TRUE }, /* 1 */
- { TYPE, TRUE }, /* 2 */
- { MEMBERS, FALSE }, /* 3 */
- { RANGE, FALSE }, /* 4 */
- { UNITS, FALSE }, /* 5 */
- { SCALE_FACTOR, FALSE }, /* 6 */
- { DEFAULT, FALSE }, /* 7 */
- { TOLERANCE, FALSE }, /* 8 */
- { REQUIREMENTS, FALSE }, /* 9 */
- { REFERENCES, FALSE }, /* 10 */
- { NOTES, FALSE }, /* 11 */
- { UNUSED, FALSE }, /* 12 */
- { UNUSED, FALSE }, /* 13 */
- { UNUSED, FALSE }, /* 14 */
- { UNUSED, FALSE }, /* 15 */
- }
-};
-
-Section_info_t AssociationSection = {
- TRUE, /* subsections repeat */
- ASSOCIATION_DESCRIPTIONS, /* this section */
- ABSTRACT_TYPE_DESCRIPTIONS, /* next section */
- NULL, /* validation routine */
- {
- { ASSOCIATION, TRUE }, /* 0 */
- { DESCRIPTION, TRUE }, /* 1 */
- { VISIBILITY, TRUE }, /* 2 */
- { ASSOCIATED_WITH, TRUE }, /* 3 */
- { MULTIPLICITY, TRUE }, /* 4 */
- { REQUIREMENTS, FALSE }, /* 5 */
- { REFERENCES, FALSE }, /* 6 */
- { NOTES, FALSE }, /* 7 */
- { UNUSED, FALSE }, /* 8 */
- { UNUSED, FALSE }, /* 9 */
- { UNUSED, FALSE }, /* 10 */
- { UNUSED, FALSE }, /* 11 */
- { UNUSED, FALSE }, /* 12 */
- { UNUSED, FALSE }, /* 13 */
- { UNUSED, FALSE }, /* 14 */
- { UNUSED, FALSE }, /* 15 */
- }
-};
-
-Section_info_t AbstractTypeSection = {
- TRUE, /* subsections repeat */
- ABSTRACT_TYPE_DESCRIPTIONS, /* this section */
- DATA_ITEM_DESCRIPTIONS, /* next section */
- Validate_abstract_type, /* validation routine */
- {
- { ABSTRACT_TYPE, TRUE }, /* 0 */
- { DESCRIPTION, TRUE }, /* 1 */
- { VISIBILITY, TRUE }, /* 2 */
- { DERIVATION, TRUE }, /* 3 */
- { MEMBERS, FALSE }, /* 4 */
- { RANGE, FALSE }, /* 5 */
- { UNITS, FALSE }, /* 6 */
- { SCALE_FACTOR, FALSE }, /* 7 */
- { DEFAULT, FALSE }, /* 8 */
- { TOLERANCE, FALSE }, /* 9 */
- { REQUIREMENTS, FALSE }, /* 10 */
- { REFERENCES, FALSE }, /* 11 */
- { NOTES, FALSE }, /* 12 */
- { UNUSED, FALSE }, /* 13 */
- { UNUSED, FALSE }, /* 14 */
- { UNUSED, FALSE }, /* 15 */
- }
-};
-
-Section_info_t DataItemSection = {
- TRUE, /* subsections repeat */
- DATA_ITEM_DESCRIPTIONS, /* this section */
- METHOD_DESCRIPTIONS, /* next section */
- NULL, /* validation routine */
- {
- { DATA_ITEM, TRUE }, /* 0 */
- { DESCRIPTION, TRUE }, /* 1 */
- { TYPE, TRUE }, /* 2 */
- { UNITS, FALSE }, /* 3 */
- { SCALE_FACTOR, FALSE }, /* 4 */
- { DEFAULT, FALSE }, /* 5 */
- { TOLERANCE, FALSE }, /* 6 */
- { NOTES, FALSE }, /* 7 */
- { UNUSED, FALSE }, /* 8 */
- { UNUSED, FALSE }, /* 9 */
- { UNUSED, FALSE }, /* 10 */
- { UNUSED, FALSE }, /* 11 */
- { UNUSED, FALSE }, /* 12 */
- { UNUSED, FALSE }, /* 13 */
- { UNUSED, FALSE }, /* 14 */
- { UNUSED, FALSE }, /* 15 */
- }
-};
-
-Section_info_t MethodSection = {
- TRUE, /* subsections repeat */
- METHOD_DESCRIPTIONS, /* this section */
- TASK_DESCRIPTIONS, /* next section */
- NULL, /* validation routine */
- {
- { METHOD, TRUE }, /* 0 */
- { DESCRIPTION, TRUE }, /* 1 */
- { VISIBILITY, TRUE }, /* 2 */
- { INPUTS, TRUE }, /* 3 */
- { OUTPUTS, TRUE }, /* 4 */
- { REQUIREMENTS, FALSE }, /* 5 */
- { REFERENCES, FALSE }, /* 6 */
- { NOTES, FALSE }, /* 7 */
- { PDL, TRUE }, /* 8 */
- { UNUSED, FALSE }, /* 9 */
- { UNUSED, FALSE }, /* 10 */
- { UNUSED, FALSE }, /* 11 */
- { UNUSED, FALSE }, /* 12 */
- { UNUSED, FALSE }, /* 13 */
- { UNUSED, FALSE }, /* 14 */
- { UNUSED, FALSE }, /* 15 */
- }
-};
-
-Section_info_t TaskSection = {
- TRUE, /* subsections repeat */
- TASK_DESCRIPTIONS, /* this section */
- END_OBJECT, /* next section */
- NULL, /* validation routine */
- {
- { METHOD, TRUE }, /* 0 */
- { DESCRIPTION, TRUE }, /* 1 */
- { VISIBILITY, TRUE }, /* 2 */
- { INPUTS, TRUE }, /* 3 */
- { SYNCHRONIZATION, TRUE }, /* 4 */
- { TIMING, TRUE }, /* 5 */
- { REQUIREMENTS, FALSE }, /* 6 */
- { REFERENCES, FALSE }, /* 7 */
- { NOTES, FALSE }, /* 8 */
- { PDL, TRUE }, /* 9 */
- { UNUSED, FALSE }, /* 10 */
- { UNUSED, FALSE }, /* 11 */
- { UNUSED, FALSE }, /* 12 */
- { UNUSED, FALSE }, /* 13 */
- { UNUSED, FALSE }, /* 14 */
- { UNUSED, FALSE }, /* 15 */
- }
-};
-
-
-Section_info_t *Sections[] = {
- &ObjectSection,
- &AttributeSection,
- &AssociationSection,
- &AbstractTypeSection,
- &DataItemSection,
- &MethodSection,
- &TaskSection
-};
-
-/*
- * exit_application
- */
-
-void exit_application(
- int status
-)
-{
- fprintf( stderr, "*** Error encountered ***\n" );
-/*
- fprintf( stderr, "*** Error encountered on line %d ***\n", CurrentLine );
-*/
- fclose( OutFile );
- exit( 1 );
-}
-
-/*************************************************************************
- *************************************************************************
- ***** LINE MANIPULATION ROUTINES *****
- *************************************************************************
- *************************************************************************/
-
-/*
- * PrintLine
- */
-
-void PrintLine(
- Line_Control *line
-)
-{
- assert( line );
-
- if ( line->number == -1 )
- fprintf( stderr, " " );
- else
- fprintf( stderr, "%5d", line->number );
-
-#if 0
- fprintf( stderr, "%s\n", line->Contents );
-#else
- /*
- * Include some debugging information
- */
- fprintf(
- stderr,
- "<%d,%d>:%s\n",
- line->keyword,
- line->format,
- line->Contents
- );
-#endif
-}
-
-Chain_Control Line_Pool;
-
-/*
- * FillLinePool
- */
-
-void FillLinePool( void )
-{
- void *pool;
-
-#define LINE_POOL_FILL_COUNT 100
-
- pool = malloc( sizeof( Line_Control ) * LINE_POOL_FILL_COUNT );
- assert( pool );
-
- _Chain_Initialize(
- &Line_Pool,
- pool,
- LINE_POOL_FILL_COUNT,
- sizeof( Line_Control )
- );
-}
-
-/*
- * AllocateLine
- */
-
-Line_Control *AllocateLine( void )
-{
- Line_Control *new_line;
-
- new_line = (Line_Control *) _Chain_Get( &Line_Pool );
- if ( !new_line ) {
- FillLinePool();
- new_line = (Line_Control *) _Chain_Get( &Line_Pool );
- assert( new_line );
- }
-
-/*
- * This is commented out because although it is helpful during debug,
- * it consumes a significant percentage of the program's execution time.
- */
-
- memset( new_line->Contents, '\0', sizeof( new_line->Contents ) );
- new_line->number = -1;
-
- new_line->keyword = UNUSED;
- new_line->format = NO_EXTRA_FORMATTING_INFO;
-
- new_line->Node.next = NULL;
- new_line->Node.previous = NULL;
-
- return new_line;
-}
-
-/*
- * FreeLine
- */
-
-void FreeLine(
- Line_Control *line
-)
-{
- fflush( stdout );
- _Chain_Append( &Line_Pool, &line->Node );
-}
-
-/*
- * DeleteLine
- */
-
-Line_Control *DeleteLine(
- Line_Control *line
-)
-{
- Line_Control *next;
-
- next = (Line_Control *)line->Node.next;
- _Chain_Extract( &line->Node );
- FreeLine( line );
- return next;
-}
-
-/*
- * PrintSurroundingLines
- */
-
-void PrintSurroundingLines(
- Line_Control *line,
- int backward,
- int forward
-)
-{
- int i;
- int real_backward;
- Line_Control *local;
-
- for ( local=line, real_backward=0, i=1 ;
- i<=backward ;
- i++, real_backward++ ) {
- if ( &local->Node == Lines.first )
- break;
- local = (Line_Control *) local->Node.previous;
- }
-
- for ( i=1 ; i<=real_backward ; i++ ) {
- PrintLine( local );
- local = (Line_Control *) local->Node.next;
- }
-
- PrintLine( local );
-
- for ( i=1 ; i<=forward ; i++ ) {
- local = (Line_Control *) local->Node.next;
- if ( _Chain_Is_last( &local->Node ) )
- break;
- PrintLine( local );
- }
-
-}
-
-/*
- * SetLineFormat
- */
-
-void SetLineFormat(
- Line_Control *line,
- ExtraFormat_info_t format
-)
-{
- if ( line->format != NO_EXTRA_FORMATTING_INFO ) {
- fprintf( stderr, "Line %d is already formatted\n", line->number );
- PrintLine( line );
- assert( FALSE );
- }
-
- line->format = format;
-}
-
-/*
- * LineCopyFromRight
- */
-
-void LineCopyFromRight(
- Line_Control *line,
- char *dest
-)
-{
- char *p;
-
- for ( p=line->Contents ; *p != ':' ; p++ )
- ;
- p++; /* skip the ':' */
- for ( ; isspace( *p ) ; p++ )
- ;
-
- strcpy( dest, p );
-
-}
-
-/*
- * LineCopySectionName
- */
-
-void LineCopySectionName(
- Line_Control *line,
- char *dest
-)
-{
- char *p;
- char *d;
-
- p = line->Contents;
- d = dest;
-
- if ( *p == '@' ) { /* skip texinfo command */
- while ( !isspace( *p++ ) )
- ;
- }
-
- for ( ; *p != ':' ; )
- *d++ = *p++;
-
- *d = '\0';
-}
-
-/*
- * FormatParagraph
- */
-
-Line_Control *FormatParagraph(
- Line_Control *starting
-)
-{
- Chain_Node *insert_after;
- Line_Control *to_add;
- Line_Control *new_line;
- char Paragraph[ PARAGRAPH_SIZE ];
- int starting_line;
- char *src;
- char *dest;
- boolean do_loop;
- boolean is_bullet;
- int length;
- int i;
-
- length = 0;
-
- starting_line = starting->number;
- insert_after = starting->Node.previous;
- to_add = starting;
-
- dest = Paragraph;
-
- is_bullet = FALSE;
-
- for ( ; ; ) {
- src = to_add->Contents;
-
- for ( ; *src && isspace( *src ) ; src++ ); /* skip leading spaces */
-
- if ( !strncmp( src, "@table", 6 ) ) {
-
- to_add = DeleteLine( to_add );
- src = to_add->Contents;
- for ( i=4 ; *src && isspace( *src ) && i-- ; src++ );
- /* skip leading spaces */
-
- for ( ; ; ) {
- if ( _Chain_Is_last( &to_add->Node ) ) {
- fprintf(
- stderr,
- "Missing end table for table starting at line %d\n",
- starting_line
- );
- exit_application( 1 );
- }
- if ( !strncmp( src, "@end table", 10 ) ) {
- to_add = DeleteLine( to_add );
- return to_add;
- }
- strcpy( Paragraph, src );
- strcpy( to_add->Contents, Paragraph );
- SetLineFormat( to_add, PARAGRAPH_OUTPUT );
- to_add->keyword = RAW_EXAMPLE;
- to_add = (Line_Control *) to_add->Node.next;
-
- src = to_add->Contents;
- for ( i=4 ; *src && isspace( *src ) && i-- ; src++ );
- /* skip leading spaces */
-
- }
- }
-
- if ( *src == '+' ) {
- if ( is_bullet == TRUE )
- break;
- is_bullet = TRUE;
- for ( src++ ; isspace(*src) ; src++ ) ;
- }
-
- do_loop = TRUE;
- while ( *src && do_loop == TRUE ) {
-
- if ( isspace( *src ) ) { /* convert multiple spaces to 1 */
-
- if ( *(dest-1) == '.' ) { /* two spaces after period */
- *dest++ = ' ';
- length++;
- }
-
- assert( length < PARAGRAPH_SIZE );
-
- *dest++ = ' ';
- length++;
-
- assert( length < PARAGRAPH_SIZE );
-
- for ( ; isspace( *src ) ; src++ )
- if ( !*src ) {
- do_loop = FALSE;
- break;
- }
-
- continue;
-
- } else {
- *dest++ = *src;
- length++;
- assert( length < PARAGRAPH_SIZE );
- src++;
- }
- }
-
- to_add = DeleteLine( to_add );
-
- if ( _Chain_Is_last( &to_add->Node ) )
- break;
-
- if ( !strlen( to_add->Contents ) )
- break;
-
- if ( to_add->keyword )
- break;
-
- if ( !isspace( *(dest-1) ) ) {
- if ( *(dest-1) == '.' ) {
- *dest++ = ' ';
- length++;
- assert( length < PARAGRAPH_SIZE );
- }
- *dest++ = ' ';
- length++;
- assert( length < PARAGRAPH_SIZE );
- }
- }
-
- new_line = AllocateLine();
-
- SetLineFormat( new_line, (is_bullet) ? BULLET_OUTPUT : PARAGRAPH_OUTPUT );
-
- *dest = '\0';
-
- strcpy( new_line->Contents, Paragraph );
-
- new_line->number = starting_line;
-
- _Chain_Insert( insert_after, &new_line->Node );
-
- return new_line;
-}
-
-/*
- * FormatMultipleParagraphs
- */
-
-Line_Control *FormatMultipleParagraphs(
- Line_Control *starting
-)
-{
- Line_Control *line = starting;
-
- if ( _Chain_Is_last( &line->Node ) ) {
- fprintf( stderr, "end of file reached when expecting text\n" );
- exit_application( 0 );
- }
-
- if ( line->keyword ) {
- line = (Line_Control *) line->Node.next;
-
- if ( _Chain_Is_last( &line->Node ) ) {
- fprintf( stderr, "end of file reached when expecting text\n" );
- exit_application( 0 );
- }
- }
-
- for ( ;; ) {
- assert( line );
-
- if ( _Chain_Is_last( &line->Node ) )
- break;
-
- if ( line->keyword )
- break;
-
- if ( !strlen( line->Contents ) ) {
- line = DeleteLine( line );
- continue;
- }
-
- line = FormatParagraph( line );
- line = (Line_Control *) line->Node.next;
- }
-}
-
-/*************************************************************************
- *************************************************************************
- ***** END OF LINE MANIPULATION ROUTINES *****
- *************************************************************************
- *************************************************************************/
-
-/*
- * CountKeywordOccurrences
- */
-
-int CountKeywordOccurrences(
- Keyword_indices_t keyword
-)
-{
- int count = 0;
- Line_Control *line;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next ) {
- if ( line->keyword == keyword )
- count += 1;
- }
-
- return count;
-}
-
-/*
- * main
- */
-
-int main(
- int argc,
- char **argv
-)
-{
- int c;
- int index;
- boolean single_file_mode;
-
- Verbose = FALSE;
- Statistics = FALSE;
- OutputWord = FALSE;
- IncompletesAreErrors = TRUE;
- InsertTBDs = FALSE;
-
- while ((c = getopt(argc, argv, "istvw?n:p:u:")) != EOF) {
- switch (c) {
- case 'i':
- IncompletesAreErrors = FALSE;
- break;
- case 't':
- InsertTBDs = TRUE;
- break;
- case 'v':
- Verbose = TRUE;
- break;
- case 'n':
- strcpy( DocsNextNode, optarg );
- break;
- case 'p':
- strcpy( DocsPreviousNode, optarg );
- break;
- case 'u':
- strcpy( DocsUpNode, optarg );
- break;
- case 's':
- Statistics = TRUE;
- break;
- case 'w':
- OutputWord = TRUE;
- break;
- case '?':
- usage();
- return 0;
- }
- }
-
- if ( Verbose ) {
- fprintf( stderr, "Arguments successfully parsed\n" );
- fprintf( stderr, "Next Node = (%s)\n", DocsNextNode );
- fprintf( stderr, "Previous Node = (%s)\n", DocsPreviousNode );
- fprintf( stderr, "Up Node = (%s)\n", DocsUpNode );
- fprintf( stderr, "Output Format = (%s)\n", (OutputWord) ? "Word" : "Texi" );
- }
-
- FillLinePool();
-
- for ( index=optind ; index < argc ; index++ ) {
- ProcessFile( argv[ index ], NULL );
- }
-
- if ( Verbose )
- fprintf( stderr, "Exitting\n" );
-
- return 0;
-}
-
-/*
- * ProcessFile
- */
-
-void ProcessFile(
- char *inname,
- char *outname
-)
-{
- char out[ 256 ];
- int index;
- int out_index;
-
- /*
- * Automatically generate the output file name.
- */
-
- if ( outname == NULL ) {
- out_index = 0;
- for( index=0 ; inname[index] && inname[index] != '.' ; index++ ) {
-/*
- if ( inname[ index ] != '_' )
-*/
- out[ out_index++ ] = inname[ index ];
- }
-
- if ( OutputWord ) {
- out[ out_index++ ] = '.';
- out[ out_index++ ] = 't';
- out[ out_index++ ] = 'x';
- out[ out_index++ ] = 't';
- } else {
- out[ out_index++ ] = '.';
- out[ out_index++ ] = 't';
- out[ out_index++ ] = 'e';
- out[ out_index++ ] = 'x';
- out[ out_index++ ] = 'i';
- }
- out[ out_index ] = '\0';
-
- }
-
- /*
- * Read the file into our internal data structure
- */
-
- if ( Verbose )
- printf( "Processing (%s) -> (%s)\n", inname, out );
-
- ReadFileIntoChain( inname );
-
- if ( Verbose )
- fprintf( stderr, "-------->FILE READ IN\n" );
-
- /*
- * Remove any spaces before the keyword and mark each keyword line as
- * such. Also remove extra white space at the end of lines.
- */
-
- StripBlanks();
-
- if ( Verbose )
- fprintf( stderr, "-------->BLANKS BEFORE KEYWORDS STRIPPED\n" );
-
- /*
- * Count the number of each type of thing
- */
-
- NumberOfAttributes = CountKeywordOccurrences( ATTRIBUTE );
- NumberOfAssociations = CountKeywordOccurrences( ASSOCIATION );
- NumberOfAbstractTypes = CountKeywordOccurrences( ABSTRACT_TYPE );
- NumberOfDataItems = CountKeywordOccurrences( DATA_ITEM );
- NumberOfMethods = CountKeywordOccurrences( METHOD );
- NumberOfTasks = CountKeywordOccurrences( TASK );
-
- if ( Verbose || Statistics ) {
- fprintf( stderr, "NUMBER OF ATTRIBUTES = %d\n", NumberOfAttributes );
- fprintf( stderr, "NUMBER OF ASSOCIATIONS = %d\n", NumberOfAssociations );
- fprintf( stderr, "NUMBER OF ABSTRACT TYPES = %d\n", NumberOfAbstractTypes);
- fprintf( stderr, "NUMBER OF DATA ITEMS = %d\n", NumberOfDataItems );
- fprintf( stderr, "NUMBER OF METHODS = %d\n", NumberOfMethods );
- fprintf( stderr, "NUMBER OF TASKS = %d\n", NumberOfTasks );
- }
-
- /*
- * 1. Merge paragraphs entered as multiple lines into a single node
- * on the chain.
- * 2. Clean up "colon lines".
- */
-
- if ( MergeText() == -1 )
- exit_application( 1 );
-
- if ( Verbose )
- fprintf( stderr, "-------->PARAGRAPHS MERGED\n" );
-
- RemovePagebreaks();
-
- /*
- * Remove extraneous white space
- */
-
- if ( Verbose )
- fprintf( stderr, "-------->PAGEBREAKS REMOVED\n" );
-
- /*
- * At this point, the only unmarked lines should be empty or errors.
- * This deletes empty unmarked lines and flags the others as errors.
- */
-
- if ( RemoveExtraBlankLines() == -1 )
- exit_application( 1 );
-
- if ( Verbose )
- fprintf( stderr, "-------->EXTRA BLANK LINES REMOVED\n" );
-
- /*
- * Now report which lines do not appear to be complete
- */
-
- if ( CheckForIncomplete() == -1 )
- exit_application( 1 );
-
- if ( Verbose )
- fprintf( stderr, "-------->CHECKED FOR INCOMPLETE KEYWORDS\n" );
-
- /*
- * Check that all the required sections are present.
- */
-
- if ( CheckOutline() == -1 )
- exit_application( 1 );
-
- if ( Verbose )
- fprintf( stderr, "-------->CHECKED FOR HIGH LEVEL SECTION PROBLEMS\n" );
-
- /*
- * Check for problems in each section.
- */
-
- if ( CheckSections() == -1 )
- exit_application( 1 );
-
- if ( Verbose )
- fprintf( stderr, "-------->CHECKED FOR INTERNAL SECTION PROBLEMS\n" );
-
- /*
- * Look for Internal Consistencies
- */
-
- if ( Verbose )
- fprintf( stderr, "-------->LOOKING FOR ERRORS\n" );
-
- LookForInternalInconsistencies();
-
- /*
- * Formatting the file
- */
-
- if ( OutputWord ) {
- FormatToWord();
- if ( Verbose )
- fprintf( stderr, "-------->FILE FORMATTED TO WORD\n" );
- } else {
- FormatToTexinfo();
- if ( Verbose )
- fprintf( stderr, "-------->FILE FORMATTED TO TEXINFO\n" );
- }
-
- /*
- * Print the file
- */
-
- PrintFile( out );
-
- if ( Verbose )
- fprintf( stderr, "-------->FILE PRINTED\n" );
-
- /*
- * Clean Up
- */
-
- ReleaseFile();
-
- if ( Verbose )
- fprintf( stderr, "-------->FILE RELEASED\n" );
-}
-
-/*
- * LookForInternalInconsistencies
- *
- * This routine looks for lines with no formatting information and
- * lines with too much formatting information.
- */
-
-void LookForInternalInconsistencies( void )
-{
- Line_Control *line;
- int i;
- int errors = 0;
- char *src;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *)line->Node.next
- ) {
- if ( !line->keyword && line->format == NO_EXTRA_FORMATTING_INFO ) {
- fprintf(
- stderr,
- "\nLine %d has no keyword or formatting:\n",
- line->number
- );
- PrintSurroundingLines( line, 3, 3 );
- errors++;
- }
- }
-
- if ( errors )
- exit_application( 1 );
-}
-
-/*
- * usage
- */
-
-void usage( void )
-{
- int index;
-
- for ( index=0 ; strcmp( Usage_Strings[ index ], "EOF" ) ; index++ )
- fprintf( stderr, Usage_Strings[ index ] );
-}
-
-/*
- * ReadFileIntoChain
- */
-
-void ReadFileIntoChain(
- char *inname
-)
-{
- FILE *InFile;
- int line_count;
- int max_length;
- char *line;
- char Buffer[ BUFFER_SIZE ];
- Line_Control *new_line;
-
- InFile = fopen( inname, "r" );
-
- if ( !InFile ) {
- fprintf( stderr, "Unable to open (%s)\n", inname );
- exit( 1 );
- }
- assert( InFile );
-
- max_length = 0;
- line_count = 0;
-
- _Chain_Initialize_empty( &Lines );
-
- for ( ;; ) {
- line = fgets( Buffer, BUFFER_SIZE, InFile );
- if ( !line )
- break;
-
- Buffer[ strlen( Buffer ) - 1 ] = '\0';
-
- new_line = AllocateLine();
-
- strcpy( new_line->Contents, Buffer );
-
- new_line->number = ++line_count;
-
- _Chain_Append( &Lines, &new_line->Node );
- }
-
- fclose( InFile );
-}
-
-/*
- * StripBlanks
- */
-
-void StripBlanks( void )
-{
- Line_Control *line;
- Keyword_indices_t index;
- int indentation;
- int length;
- Keyword_info_t *key;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next
- ) {
-
- /*
- * Strip white space from the end of each line
- */
-
- length = strlen( line->Contents );
-
- while ( isspace( line->Contents[ --length ] ) )
- line->Contents[ length ] = '\0';
-
- /*
- * Strip white space from the front of each keyword line.
- */
-
- for ( index=KEYWORD_FIRST ; index <= KEYWORD_LAST ; index++ ) {
- key = &Keywords[ index ];
-
- switch ( key->level ) {
- case SECTION: indentation = 0; break;
- case SUBSECTION: indentation = 0; break;
- case HEADING: indentation = 2; break;
- default: assert( FALSE );
- }
-
- if ( !strncmp( &line->Contents[ indentation ], key->Name,
- strlen( key->Name ) ) ) {
- if ( indentation )
- strcpy( line->Contents, &line->Contents[ indentation ] );
- line->keyword = index;
- break;
- }
- }
- }
-}
-
-/*
- * CrunchRight
- */
-
-boolean CrunchRight(
- Line_Control *line
-)
-{
- char Buffer[ PARAGRAPH_SIZE ];
- char *src;
- char *dest;
- boolean is_text_to_right = FALSE;
-
- src = line->Contents;
- dest = Buffer;
-
- while( *src != ':' ) {
- if ( !*src ) {
- fprintf(
- stderr,
- "Line %d should have had a colon\n",
- line->number
- );
- exit_application( 1 );
- }
- *dest++ = *src++;
- }
-
- *dest++ = *src++; /* this is the ':' */
-
- if ( *src ) {
- *dest++ = ' ';
- while ( *src && isspace( *src ) )
- src++;
-
- if ( *src )
- is_text_to_right = TRUE;
-
- while ( *src )
- *dest++ = *src++;
- }
-
- *dest = '\0';
-
- strcpy( line->Contents, Buffer );
-
- return is_text_to_right;
-}
-
-/*
- * CrunchBelow
- */
-
-void CrunchBelow(
- Line_Control *start_line,
- Keywords_text_below_t text_below_mode
-)
-{
- Line_Control *line;
- int i;
- int leading_white;
- int length;
-
- switch ( text_below_mode ) {
- case BL_FORBIDDEN:
- assert( FALSE );
- case BL_FORMATTED:
- (void) FormatMultipleParagraphs( start_line );
- break;
- case BL_RAW:
- for ( line = (Line_Control *) start_line->Node.next;
- !_Chain_Is_last( &line->Node ) ;
- ) {
- if ( strlen( line->Contents ) )
- break;
- line = DeleteLine( line );
- }
-
- for ( i=0 ; isspace( line->Contents[ i ] ) ; i++ )
- ;
-
- leading_white = i;
-
- for ( ;
- !_Chain_Is_last( &line->Node ) ;
- ) {
-
- assert( line );
-
- if ( line->keyword )
- break;
-
- assert( !_Chain_Is_last( &line->Node ) );
-
- length = strlen( line->Contents );
-
- if ( length ) {
- if ( length < leading_white ) {
- fprintf(
- stderr,
- "\nLine %d %s:\n",
- line->number,
- "has inconsistent spacing -- is too short -- see 1st line of text"
- );
- PrintSurroundingLines( line, 0, 0 );
- fprintf( stderr, "\n" );
-
- }
- for ( i=0 ; i < leading_white ; i++ ) {
- if ( !isspace( line->Contents[ i ] ) ) {
- fprintf(
- stderr,
- "\nLine %d %s:\n",
- line->number,
- "has inconsistent spacing -- see 1st line of text"
- );
- PrintSurroundingLines( line, 0, 0 );
- fprintf( stderr, "\n" );
- break;
- }
- }
-
- strcpy( line->Contents, &line->Contents[ leading_white ] );
-
- SetLineFormat( line, RAW_OUTPUT );
- line = (Line_Control *) line->Node.next;
- } else {
- SetLineFormat( line, RAW_OUTPUT );
- /* line = DeleteLine( line ); */
- line = (Line_Control *) line->Node.next;
- }
- }
- break;
- }
-}
-
-/*
- * MergeText
- */
-
-/* XXX expand this and address the error numbers */
-char *Format_Errors[] = {
- /* unused */ "no formatting error",
- /* RT_NO_CHECK */ "why am I here",
- /* RT_FORBIDDEN */ "no text allowed to right or below",
- /* RT_OPTIONAL */ "text to right optional -- none below",
- /* RT_NONE */ "text to right is \"none\" or nothing -- none below",
- /* RT_REQUIRED */ "text to right required -- none below",
- /* RT_BELOW */ "text to right forbidden -- text below required",
- /* RT_NONE_OR_BELOW */ "text to right is \"none\" OR there is text below",
- /* RT_MAYBE_BELOW */ "text to right required -- text below optional",
- /* RT_EITHER */ "text to right OR below",
- /* RT_BOTH */ "text to right AND below"
-};
-
-
-int MergeText( void )
-{
- Line_Control *line;
- Line_Control *next;
- Line_Control *new_line;
- Keyword_info_t *key;
- boolean is_text_to_right;
- boolean is_text_below;
- boolean add_text_to_right;
- boolean add_text_below;
- int errors = 0;
- int error_code = 0;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- ) {
-
- if ( error_code ) {
-
- fprintf(
- stderr,
- "\nLine %d %s:\n",
- line->number,
- Format_Errors[ error_code ]
- );
- PrintSurroundingLines( line, 0, 3 );
- fprintf( stderr, "\n" );
- error_code = 0;
- line = (Line_Control *) line->Node.next;
- }
-
- key = &Keywords[ line->keyword ];
-
- if ( !line->keyword || key->text_mode == RT_NO_CHECK ) {
- line = (Line_Control *) line->Node.next;
- continue;
- }
-
- /*
- * Figure out where the text is for this keyword. It is a pretty
- * ugly thing to look ahead for text below because of intermediate
- * blank lines which we are not allowed to remove.
- */
-
- add_text_to_right = FALSE;
- add_text_below = FALSE;
-
- is_text_to_right = CrunchRight( line );
-
- is_text_below = FALSE;
-
- for ( next = (Line_Control *) line->Node.next ;
- !_Chain_Is_last( &next->Node ) ;
- next = (Line_Control *) next->Node.next ) {
-
- if ( next->keyword )
- break;
-
- if ( strlen( next->Contents ) ) {
- is_text_below = TRUE;
- break;
- }
- }
-
- switch ( key->text_mode ) {
- case RT_NO_CHECK: /* no requirements */
- break;
-
- case RT_FORBIDDEN: /* no text to right or below allowed */
- if ( is_text_to_right || is_text_below ) {
- error_code = 1;
- errors++;
- continue;
- }
- break;
-
- case RT_OPTIONAL: /* text to right optional -- none below */
- if ( is_text_below ) {
- error_code = 2;
- errors++;
- continue;
- }
- break;
-
- case RT_NONE: /* text to right is "none" or nothing -- none below */
- if ( (is_text_to_right && !strstr( line->Contents, "none" )) ||
- is_text_below ) {
- error_code = 3;
- errors++;
- continue;
- }
- break;
-
- case RT_REQUIRED: /* text to right required -- none below */
- if ( is_text_below ) {
- error_code = 4;
- errors++;
- continue;
- }
-
- if ( !is_text_to_right ) {
- if ( !InsertTBDs ) {
- error_code = 4;
- errors++;
- continue;
- } else
- add_text_to_right = TRUE;
- }
- break;
-
- case RT_BELOW: /* text to right forbidden -- text below required */
- if ( is_text_to_right ) {
- error_code = 5;
- errors++;
- continue;
- }
-
- if ( !is_text_below ) {
- if ( !InsertTBDs ) {
- error_code = 5;
- errors++;
- continue;
- } else
- add_text_below = TRUE;
- }
- break;
-
- case RT_NONE_OR_BELOW: /* text to right is "none" OR text below */
-
- if ( is_text_to_right ) {
- if ( strstr( line->Contents, "none" ) )
- break;
- error_code = 6;
- errors++;
- continue;
- }
-
- if ( !is_text_below ) {
- if ( !InsertTBDs ) {
- error_code = 6;
- errors++;
- continue;
- } else
- add_text_to_right = TRUE;
- }
- break;
- /* text to right required -- text below optional */
- case RT_MAYBE_BELOW:
- if ( !is_text_to_right ) {
- error_code = 7;
- errors++;
- continue;
- }
- break;
-
- case RT_EITHER: /* text to right OR below */
- if ( !(is_text_to_right || is_text_below) ) {
- if ( !InsertTBDs ) {
- error_code = 8;
- errors++;
- continue;
- } else
- add_text_to_right = TRUE;
- }
- break;
-
- case RT_BOTH: /* text to right AND below */
- if ( !(is_text_to_right && is_text_below) ) {
- if ( !InsertTBDs ) {
- error_code = 9;
- errors++;
- continue;
- } else {
- add_text_to_right = TRUE;
- add_text_below = TRUE;
- }
- }
- break;
- }
-
- if ( add_text_to_right )
- strcat( line->Contents, " TBD" );
-
- if ( add_text_below ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "TBD" );
- _Chain_Insert( &line->Node, &new_line->Node );
- is_text_below = TRUE;
- }
-
- if ( is_text_below )
- CrunchBelow( line, key->text_below_mode );
-
- line = (Line_Control *) line->Node.next;
- }
- return (errors) ? -1 : 0;
-}
-
-/*
- * CheckForIncomplete
- */
-
-char *IncompleteMarkers[] = {
- "??",
- "xxx",
- "XXX",
- "xyz",
- "XYZ"
-};
-
-int CheckForIncomplete()
-{
- Line_Control *line;
- int i;
- int errors = 0;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next
- ) {
- for ( i=0 ; i < NUMBER_ELEMENTS( IncompleteMarkers ) ; i++ ) {
- if ( !strstr( line->Contents, IncompleteMarkers[ i ] ) )
- continue;
-
- fprintf(
- stderr,
- "\nLine %d %s:\n",
- line->number,
- "appears to be incomplete"
- );
- PrintSurroundingLines( line, 0, 0 );
- fprintf( stderr, "\n" );
- if ( IncompletesAreErrors )
- errors++;
- break;
- }
- }
- return ( errors ) ? -1 : 0;
-}
-
-/*
- * CheckOutline
- *
- * Insure all section headers are present.
- * Check sections which say "none", really have subsections.
- * Check sections which have subsections, don't say none.
- */
-
-int CheckOutline( void )
-{
- Line_Control *line;
- int count;
- int errors = 0;
- void *none_present;
- boolean KeywordsPresent[ KEYWORD_LAST + 1 ];
- Keyword_indices_t keyword;
-
- for ( keyword=0 ; keyword <= KEYWORD_LAST ; keyword++ )
- KeywordsPresent[ keyword ] = FALSE;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next
- ) {
-
- KeywordsPresent[ line->keyword ] = TRUE;
-
- switch ( line->keyword ) {
- case ATTRIBUTE_DESCRIPTIONS:
- count = NumberOfAttributes;
- break;
- case ASSOCIATION_DESCRIPTIONS:
- count = NumberOfAssociations;
- break;
- case ABSTRACT_TYPE_DESCRIPTIONS:
- count = NumberOfAbstractTypes;
- break;
- case DATA_ITEM_DESCRIPTIONS:
- count = NumberOfDataItems;
- break;
- case METHOD_DESCRIPTIONS:
- count = NumberOfMethods;
- break;
- case TASK_DESCRIPTIONS:
- count = NumberOfTasks;
- break;
- default:
- count = -1;
- break;
- }
- if ( count == -1 )
- continue;
-
- none_present = strstr( line->Contents, "none" );
-
- /* valid cases are (none_present && !count) AND (!none_present && count) */
- if ( none_present && count ) {
- fprintf(
- stderr,
- "\nLine %d : %s\n",
- line->number,
- "section header says \"none\" and there are subsections"
- );
- PrintSurroundingLines( line, 0, 0 );
- fprintf( stderr, "\n" );
- errors++;
- }
- if ( !none_present && !count ) {
- fprintf(
- stderr,
- "\nLine %d : %s\n",
- line->number,
- "section header does not say \"none\" and there are no subsections"
- );
- PrintSurroundingLines( line, 0, 0 );
- fprintf( stderr, "\n" );
- errors++;
- }
- }
-
- for ( keyword=0 ; keyword <= KEYWORD_LAST ; keyword++ ) {
- if ( Keywords[ keyword ].level != SECTION )
- continue;
-
- if ( !KeywordsPresent[ keyword ] ) {
- fprintf(
- stderr,
- "Section (%s) is missing\n",
- Keywords[ keyword ].Name
- );
- errors++;
- }
- }
-
- return (errors) ? -1 : 0;
-}
-
-/*
- * ReportMissingKeywords
- */
-
-int ReportMissingKeywords(
- Section_info_t *section,
- Line_Control *line,
- int elements_present[ MAXIMUM_ELEMENTS ]
-)
-{
- int i;
- int errors = 0;
- int last_found;
-
-#ifdef SECTION_DEBUG
- PrintLine( line );
- for ( i=0 ; i < MAXIMUM_ELEMENTS ; i++ )
- fprintf( stderr, "%d ", elements_present[ i ] );
- fprintf( stderr, "\n" );
-#endif
-
- /*
- * Check for missing sections
- */
-
- for ( i=0 ; i < MAXIMUM_ELEMENTS ; i++ ) {
- if ( section->Description[ i ].keyword == UNUSED )
- break;
-
-#ifdef SECTION_DEBUG
- fprintf(
- stderr,
- "%d %d %s\n",
- section->Description[ i ].is_required,
- elements_present[ i ],
- Keywords[ section->Description[ i ].keyword ].Name
- );
-#endif
-
- if ( section->Description[ i ].is_required && elements_present[i] == -1 ) {
- fprintf(
- stderr,
- "Section starting at line %d is missing the %s keyword\n",
- line->number,
- Keywords[ section->Description[ i ].keyword ].Name
- );
- errors++;
- }
- }
-
- last_found = -1;
-
- for ( i=0 ; i < MAXIMUM_ELEMENTS ; i++ ) {
- if ( section->Description[ i ].keyword == UNUSED )
- break;
-
- if ( elements_present[i] == -1 )
- continue;
-
- if ( elements_present[i] > last_found ) {
- last_found = elements_present[i];
- continue;
- }
-
- fprintf(
- stderr,
- "Keywords in the section starting at line %d are in the wrong order\n",
- line->number
- );
- errors++;
- break;
-
- }
-
- return errors;
-}
-
-/*
- * ScanForNextSection
- */
-
-Line_Control *ScanForNextSection(
- Line_Control *start_line,
- Section_info_t *section
-)
-{
- Line_Control *line;
- Element_info_t *Elements;
-
- line = start_line;
- Elements = section->Description;
-
- for ( ;; ) {
- line = (Line_Control *) line->Node.next;
-
- if ( line->keyword == END_OBJECT )
- break;
-
- assert( line );
- assert( !_Chain_Is_last( &line->Node ) );
-
- if ( Keywords[ line->keyword ].level == SECTION &&
- section->Next_section != line->keyword ) {
-
- fprintf(
- stderr,
- "Sections appear to be out of order at line %d\n",
- start_line->number
- );
- return NULL;
- }
-
- if ( section->Next_section == line->keyword ) /* next section */
- break;
-
- if ( Elements[ 0 ].keyword == line->keyword ) /* repeating subsection */
- break;
- }
-
- return line;
-}
-
-/*
- * CheckSections
- */
-
-int CheckSections( void )
-{
- Line_Control *line;
- Line_Control *scan_line;
- Section_info_t *section;
- Keyword_info_t *key;
- Element_info_t *Elements;
- int elements_present[ MAXIMUM_ELEMENTS ];
- boolean stay_in_subsection;
- int i;
- int errors;
- int subsection;
- int element;
- int keyword_count;
- Line_Control *next_section;
-
- errors = 0;
- line = (Line_Control *) Lines.first;
-
- for ( i=0 ; i < NUMBER_ELEMENTS( Sections ) ; i++ ) {
- section = Sections[ i ];
- Elements = section->Description;
- subsection = 0;
-
- if ( strstr( line->Contents, "none" ) ) {
- next_section = ScanForNextSection( line, section );
- if ( !next_section ) {
- errors++;
- goto end_object;
- }
- line = next_section;
- if ( line->keyword == END_OBJECT )
- goto end_object;
- continue;
- }
-
- while ( Elements[ 0 ].keyword != line->keyword ) {
- if ( line->keyword == END_OBJECT )
- goto end_object;
-
- if( !line || _Chain_Is_last( &line->Node ) ) {
- fprintf( stderr, "out of sync -- aborting\n" );
- errors++;
- goto end_object;
- }
- line = (Line_Control *) line->Node.next;
- }
-
-repeating_subsection:
-
-#ifdef SECTION_DEBUG
- fprintf( stderr, "Checking Section %d Subsection %d\n", i, subsection );
-#endif
- assert( line );
- assert( !_Chain_Is_last( &line->Node ) );
-
- /*
- * Per Subsection Initialization
- */
-
- subsection++;
-
- keyword_count = 0;
-
- next_section = ScanForNextSection( line, section );
- if ( !next_section ) {
- errors++;
- goto end_object;
- }
-
- for ( element=0 ; element < MAXIMUM_ELEMENTS ; element++ )
- elements_present[ element ] = -1;
-
- /*
- * Do a subsection
- */
-
- /* validate each keyword */
-
- for ( scan_line = line ; ; ) {
-
- if ( !scan_line->keyword ) {
- scan_line = (Line_Control *) scan_line->Node.next;
- continue;
- }
-
- if ( scan_line == next_section )
- break;
-
- if ( *Keywords[ scan_line->keyword ].keyword_validation_routine ) {
- if ( (*Keywords[ scan_line->keyword ].keyword_validation_routine )(
- scan_line
- ) ) errors++;
- }
-
- scan_line = (Line_Control *) scan_line->Node.next;
- }
-
- /* scan subsection for keywords */
-
- for ( scan_line = line ; ; ) {
-
- if ( !scan_line->keyword ) {
- scan_line = (Line_Control *) scan_line->Node.next;
- continue;
- }
-
- if ( scan_line == next_section )
- break;
-
- for ( element=0 ; element < MAXIMUM_ELEMENTS ; element++ ) {
- if ( scan_line->keyword == Elements[ element ].keyword ) {
- if ( elements_present[ element ] != -1 ) {
- fprintf(
- stderr,
- "Section starting at line %d has the %s keyword more than once\n",
- line->number,
- Keywords[ Elements[ i ].keyword ].Name
- );
- errors++;
- }
-
-#ifdef SECTION_DEBUG
- fprintf( stderr, "FOUND %s %d %d\n",
- Keywords[ Elements[ element ].keyword ].Name,
- element, keyword_count );
-#endif
- elements_present[ element ] = keyword_count++;
- break;
- }
- if ( Elements[ element ].keyword == UNUSED )
- break;
- }
-
- scan_line = (Line_Control *) scan_line->Node.next;
- }
- errors += ReportMissingKeywords( section, line, elements_present );
-
- /*
- * Validate the section as a whole
- */
-
- if ( section->section_validation_routine ) {
- if ( (*section->section_validation_routine)(section, line, next_section) )
- errors++;
- }
-
-scan_for_next_section:
- /*
- * Scan forward until next subsection or next section
- */
-
-#ifdef SECTION_DEBUG
- fprintf( stderr, "End of Subsection\n" );
-#endif
- line = next_section;
- if ( line->keyword == END_OBJECT ) {
- goto end_object;
- }
-
- if ( Elements[ 0 ].keyword == line->keyword ) { /* repeating subsection */
- if ( !section->repeats ) {
- fprintf(
- stderr,
- "Invalid repeating subsection starting at line %d\n",
- line->number
- );
- errors++;
- goto end_object;
- }
- goto repeating_subsection;
- }
-
- }
-
-end_object:
- return (errors) ? -1 : 0;
-}
-/*
- * RemovePagebreaks
- */
-
-void RemovePagebreaks()
-{
- Line_Control *line;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- ) {
- if ( !strcmp( line->Contents, PAGE_SEPARATOR ) )
- line = DeleteLine( line );
- else
- line = (Line_Control *) line->Node.next;
- }
-}
-
-/*
- * strIsAllSpace
- */
-
-boolean strIsAllSpace(
- char *s
-)
-{
- char *p;
-
- for ( p = s ; *p ; p++ )
- if ( !isspace( *p ) )
- return FALSE;
-
- return TRUE;
-}
-
-/*
- * RemoveExtraBlankLines
- *
- * NOTE: Be careful not remove to remove white space in raw text.
- */
-
-int RemoveExtraBlankLines()
-{
- Line_Control *line;
- Line_Control *previous;
- int errors;
-
- errors = 0;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next
- ) {
- if ( line->keyword || line->format )
- continue;
-
- if ( !strlen( line->Contents ) ) {
- line = DeleteLine( line );
- line = (Line_Control *) line->Node.previous;
- continue;
- }
-
- fprintf(
- stderr,
- "\nLine %d is not associated with a keyword:\n",
- line->number
- );
- PrintSurroundingLines( line, 0, 0 );
- fprintf( stderr, "\n" );
- errors++;
- }
- return ( errors ) ? -1 : 0;
-}
-
-/*
- * strCopyToColon
- */
-
-void strCopyToColon(
- char *src,
- char *dest
-)
-{
- char *s = src;
- char *d = dest;
-
- for ( ; *s && *s != ':' ; )
- *d++ = *s++;
- *d ='\0';
-}
-
-/*
- * BuildTexinfoNodes
- */
-
-void BuildTexinfoNodes( void )
-{
- Line_Control *line;
- Line_Control *new_line;
- Line_Control *next_node;
- char Buffer[ BUFFER_SIZE ];
- char ObjectName[ BUFFER_SIZE ];
- char NodeName[ BUFFER_SIZE ];
- char NextNode[ BUFFER_SIZE ];
- char NextNodeName[ BUFFER_SIZE ];
- char PreviousNodeName[ BUFFER_SIZE ];
- char UpNodeName[ BUFFER_SIZE ];
- char SectionName[ BUFFER_SIZE ];
- char MenuBuffer[ BUFFER_SIZE ];
- Line_Control *menu_insert_point;
- Line_Control *node_line;
- boolean next_found;
- int menu_items;
-
- strcpy( PreviousNodeName, DocsPreviousNode );
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next
- ) {
- menu_insert_point = (Line_Control *) line->Node.next;
-
- switch ( Keywords[ line->keyword ].level ) {
- case TEXT:
- case HEADING:
- break;
- case SECTION:
- if ( line->keyword == END_OBJECT )
- goto bottom;
-
- if ( line->keyword == OBJECT ) {
- LineCopyFromRight( line, Buffer );
- sprintf( ObjectName, "%s Object", Buffer );
- strcpy( NodeName, ObjectName );
- strcpy( UpNodeName, DocsUpNode );
- } else {
- LineCopySectionName( line, Buffer );
- sprintf( NodeName, "%s %s", ObjectName, Buffer );
- strcpy( UpNodeName, ObjectName );
- }
- strtoInitialCaps( NULL, NodeName );
- strtoInitialCaps( NULL, UpNodeName );
- strcpy( SectionName, NodeName );
-
- /*
- * Go ahead and put it on the chain in the right order (ahead of
- * the menu) and we can fill it in later (after the menu is built).
- */
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@ifinfo" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- node_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &node_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end ifinfo" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- menu_items = 0;
-
- if ( line->keyword == OBJECT ) {
- next_node = (Line_Control *) line->Node.next;
- next_found = FALSE;
- for ( ; ; ) {
- if ( next_node->keyword == END_OBJECT )
- break;
- if ( Keywords[ next_node->keyword ].level == SECTION ) {
- LineCopySectionName( next_node, Buffer );
- strtoInitialCaps( NULL, Buffer );
-
- if ( !next_found ) {
- next_found = TRUE;
- sprintf( NextNodeName, "%s %s", ObjectName, Buffer );
- }
- if ( menu_items == 0 ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@ifinfo" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@menu" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
- }
-
- menu_items++;
-
- new_line = AllocateLine();
- sprintf( new_line->Contents, "* %s %s::", ObjectName, Buffer );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node);
- }
- next_node = (Line_Control *) next_node->Node.next;
- }
- } else {
- next_node = (Line_Control *) line->Node.next;
-
- next_found = FALSE;
- for ( ; ; ) {
- if ( Keywords[ next_node->keyword ].level == SECTION ) {
- if ( !next_found ) {
- if ( next_node->keyword == END_OBJECT ) {
- strcpy( NextNodeName, DocsNextNode );
- } else {
- LineCopySectionName( next_node, Buffer );
- sprintf( NextNodeName, "%s %s", ObjectName, Buffer );
- strtoInitialCaps( NULL, NextNodeName );
- }
- next_found = TRUE;
- }
- break;
- } else if ( Keywords[ next_node->keyword ].level == SUBSECTION ) {
- LineCopySectionName( next_node, Buffer );
- strtoInitialCaps( NULL, Buffer );
- sprintf( MenuBuffer, "%s %s - ", ObjectName, Buffer );
- LineCopyFromRight( next_node, Buffer );
- strcat( MenuBuffer, Buffer );
-
- if ( menu_items == 0 ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@ifinfo" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@menu" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
- }
-
- menu_items++;
-
- new_line = AllocateLine();
- sprintf( new_line->Contents, "* %s::", MenuBuffer );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
-
- if ( !next_found ) {
- next_found = TRUE;
- strcpy( NextNodeName, MenuBuffer );
- }
- }
- next_node = (Line_Control *) next_node->Node.next;
- }
- }
-
- if ( menu_items ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end menu" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end ifinfo" );
- _Chain_Insert( menu_insert_point->Node.previous, &new_line->Node );
- }
-
-#if 0
- fprintf(
- stderr,
- "@node %s, %s, %s, %s\n",
- NodeName,
- NextNodeName,
- PreviousNodeName,
- UpNodeName
- );
-#endif
- /* node_line was previously inserted */
- sprintf(
- node_line->Contents,
- "@node %s, %s, %s, %s",
- NodeName,
- NextNodeName,
- PreviousNodeName,
- UpNodeName
- );
-
- strcpy( PreviousNodeName, NodeName );
- break;
-
- case SUBSECTION:
- strcpy( UpNodeName, SectionName );
-
- LineCopySectionName( line, Buffer );
- strtoInitialCaps( NULL, Buffer );
- sprintf( NodeName, "%s %s - ", ObjectName, Buffer );
- LineCopyFromRight( line, Buffer );
- strcat( NodeName, Buffer );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@ifinfo" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- next_node = (Line_Control *) line->Node.next;
- for ( ; ; ) {
- if ( Keywords[ next_node->keyword ].level == SECTION ) {
- if ( next_node->keyword == END_OBJECT ) {
- strcpy( NextNodeName, DocsNextNode );
- } else {
- LineCopySectionName( next_node, Buffer );
- sprintf( NextNodeName, "%s %s", ObjectName, Buffer );
- strtoInitialCaps( NULL, NextNodeName );
- }
- break;
- } else if ( Keywords[ next_node->keyword ].level == SUBSECTION ) {
- LineCopySectionName( next_node, Buffer );
- strtoInitialCaps( NULL, Buffer );
- sprintf( NextNodeName, "%s %s - ", ObjectName, Buffer );
- LineCopyFromRight( next_node, Buffer );
- strcat( NextNodeName, Buffer );
- break;
- }
- next_node = (Line_Control *) next_node->Node.next;
- }
-
-#if 0
- fprintf(
- stderr,
- "@node %s, %s, %s, %s\n",
- NodeName,
- NextNodeName,
- PreviousNodeName,
- UpNodeName
- );
-#endif
- new_line = AllocateLine();
- sprintf(
- new_line->Contents,
- "@node %s, %s, %s, %s",
- NodeName,
- NextNodeName,
- PreviousNodeName,
- UpNodeName
- );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end ifinfo" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- strcpy( PreviousNodeName, NodeName );
- break;
- }
- }
-bottom:
-}
-
-/*
- * FormatToTexinfo
- */
-
-char *Texinfo_Headers[] = {
- "\\input texinfo @c -*-texinfo-*-",
- "@c %**start of header",
- "@setfilename ",
- "@settitle ",
- "@paragraphindent 0",
- "@c %**end of header",
- "",
- "@c",
- "@c COPYRIGHT (c) 1996.",
- "@c On-Line Applications Research Corporation (OAR).",
- "@c All rights reserved.",
- "@c",
- "@c This file is automatically generated. DO NOT EDIT!!",
- "@c",
- "",
- "@c This prevents a black box from being printed on overfull lines.",
- "@c The alternative is to rework a sentence to avoid this problem.",
- "@finalout",
- "",
- "@tex",
- "\\global\\parindent 0in",
- "\\global\\chapheadingskip = 15pt plus 4pt minus 2pt",
- "\\global\\secheadingskip = 12pt plus 4pt minus 2pt",
- "\\global\\subsecheadingskip = 9pt plus 4pt minus 2pt",
- "",
- "@ifclear smallbook",
- "\\global\\parskip 6pt plus 1pt",
- "@end ifclear",
- "@end tex",
- "@setchapternewpage odd",
- "@ifinfo",
- "@top ",
- "@node Top, (dir), (dir), (dir)",
- "@end ifinfo",
- "@c ",
- "@c This is the end of the header block",
- "@c "
-};
-
-void FormatToTexinfo( void )
-{
- Line_Control *line;
- Line_Control *new_line;
- char Buffer[ PARAGRAPH_SIZE ];
- int i;
- char ChapterTitle[ PARAGRAPH_SIZE ];
- char InfoFile[ PARAGRAPH_SIZE ];
- char *p;
- boolean new_section;
- boolean in_bullets;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- ) {
-
- switch ( line->keyword ) {
- case UNUSED:
- line = (Line_Control *) line->Node.next;
- break;
-
- case OBJECT:
- LineCopyFromRight( line, ChapterTitle );
- strcpy( InfoFile, ChapterTitle );
-
- for ( p=InfoFile ; *p ; *p++ ) /* turn this into a file name */
- if ( isspace( *p ) )
- *p = '_';
-
- sprintf( Buffer, "@chapter %s", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- break;
-
- case ATTRIBUTE_DESCRIPTIONS:
- case ASSOCIATION_DESCRIPTIONS:
- case ABSTRACT_TYPE_DESCRIPTIONS:
- case DATA_ITEM_DESCRIPTIONS:
- case METHOD_DESCRIPTIONS:
- case TASK_DESCRIPTIONS:
- sprintf( Buffer, "@section %s", line->Contents );
- strcpy( line->Contents, Buffer );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@page" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- line = (Line_Control *) line->Node.next;
- new_section = TRUE;
- break;
-
- case END_OBJECT:
- line->Contents[ 0 ] = '\0';
- goto bottom;
-
- case ATTRIBUTE:
- case ASSOCIATION:
- case ABSTRACT_TYPE:
- case DATA_ITEM:
- if ( !new_section ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@need 4000" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
- }
- new_section = FALSE;
- sprintf( Buffer, "@subsection %s", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- break;
-
- case METHOD:
- case TASK:
- if ( !new_section ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@page" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
- }
- new_section = FALSE;
- sprintf( Buffer, "@subsection %s", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- break;
-
- case DESCRIPTION:
- case COPYRIGHT:
- case PORTING:
- case THEORY_OF_OPERATION:
- case DEPENDENCIES:
- case NOTES:
- sprintf( Buffer, "@subheading %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
-
- /* now take care of the paragraphs which are here */
-
- in_bullets = FALSE;
- do {
- line = (Line_Control *) line->Node.next;
- if ( line->format == BULLET_OUTPUT ) {
- if ( !in_bullets ) {
- in_bullets = TRUE;
-
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@itemize @bullet" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
- }
- sprintf( Buffer, "@item %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
- } else if ( in_bullets ) {
- in_bullets = FALSE;
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end itemize" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- } else {
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- }
- } while ( !line->keyword );
-
- break;
-
- case DERIVATION:
- case TYPE:
- case RANGE:
- case UNITS:
- case SCALE_FACTOR:
- case TOLERANCE:
- case VISIBILITY:
- case ASSOCIATED_WITH:
- case MULTIPLICITY:
- case TIMING:
- sprintf( Buffer, "@subheading %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- break;
-
- case MEMBERS:
- case DEFAULT:
- case REQUIREMENTS:
- case REFERENCES:
- case INPUTS:
- case OUTPUTS:
- case PDL:
- case SYNCHRONIZATION:
- sprintf( Buffer, "@subheading %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
-
- /* now take care of the raw text which is here */
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@example" );
- _Chain_Insert( &line->Node, &new_line->Node );
-
- do {
- line = (Line_Control *) line->Node.next;
- if ( !strlen( line->Contents ) ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end example" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@example" );
- _Chain_Insert( &line->Node, &new_line->Node );
-
- }
- } while ( !line->keyword );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end example" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
- /* at this point line points to the next keyword */
- break;
-
- case RAW_EXAMPLE:
-
- /* now take care of the raw text which is here */
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@example" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- while ( line->keyword == RAW_EXAMPLE ) {
- line = (Line_Control *) line->Node.next;
- }
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@end example" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- /* at this point line points to the next keyword */
- break;
-
- }
- }
-
-bottom:
-#if 0
- for ( i=NUMBER_ELEMENTS( Texinfo_Headers ) - 1 ; i >= 0 ; i-- ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, Texinfo_Headers[ i ] );
- if ( !strcmp( "@setfilename ", new_line->Contents ) )
- strcat( new_line->Contents, ChapterTitle );
- else if ( !strcmp( "@settitle ", new_line->Contents ) )
- strcat( new_line->Contents, InfoFile );
- else if ( !strcmp( "@top ", new_line->Contents ) )
- strcat( new_line->Contents, InfoFile );
- _Chain_Insert( _Chain_Head( &Lines ), &new_line->Node );
- }
-
- /*
- * Remove the special end of object string. No one wants to see
- * it in the printed output and the node is already marked "END_OBJECT".
- */
-
- ((Line_Control *)Lines.last)->Contents[ 0 ] = '\0';
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@bye" );
- _Chain_Append( &Lines, &new_line->Node );
-
-#endif
- if ( Verbose )
- fprintf( stderr, "-------->INSERTING TEXINFO MENUS\n" );
-
- BuildTexinfoNodes();
-}
-
-/*
- * FormatToWord
- */
-
-void FormatToWord( void )
-{
- Line_Control *line;
- Line_Control *new_line;
- char Buffer[ PARAGRAPH_SIZE ];
- int i;
- int length;
- char ChapterTitle[ PARAGRAPH_SIZE ];
- char InfoFile[ PARAGRAPH_SIZE ];
- char *p;
- boolean new_section;
- boolean in_bullets;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- ) {
-
- switch ( line->keyword ) {
- case UNUSED:
- line = (Line_Control *) line->Node.next;
- break;
-
- case OBJECT:
- LineCopyFromRight( line, ChapterTitle );
- strcpy( InfoFile, ChapterTitle );
-
- for ( p=InfoFile ; *p ; *p++ ) /* turn this into a file name */
- if ( isspace( *p ) )
- *p = '_';
-
- sprintf( Buffer, "@Chapter = %s", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- break;
-
- case ATTRIBUTE_DESCRIPTIONS:
- case ASSOCIATION_DESCRIPTIONS:
- case ABSTRACT_TYPE_DESCRIPTIONS:
- case DATA_ITEM_DESCRIPTIONS:
- case METHOD_DESCRIPTIONS:
- case TASK_DESCRIPTIONS:
- sprintf( Buffer, "@Section = %s", line->Contents );
- strcpy( line->Contents, Buffer );
-
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@Page" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
-
- line = (Line_Control *) line->Node.next;
- new_section = TRUE;
- break;
-
- case END_OBJECT:
- line->Contents[ 0 ] = '\0';
- goto bottom;
-
- case ATTRIBUTE:
- case ASSOCIATION:
- case ABSTRACT_TYPE:
- case DATA_ITEM:
- if ( !new_section ) {
- /*
- * Do something with the style to keep subsection
- * contents together
- */
- ;
- }
- new_section = FALSE;
- sprintf( Buffer, "@Subsection = %s", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- break;
-
- case METHOD:
- case TASK:
- if ( !new_section ) {
- new_line = AllocateLine();
- strcpy( new_line->Contents, "@Page" );
- _Chain_Insert( line->Node.previous, &new_line->Node );
- }
- new_section = FALSE;
- sprintf( Buffer, "@Subsection = %s", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- break;
-
- case DESCRIPTION:
- case COPYRIGHT:
- case PORTING:
- case THEORY_OF_OPERATION:
- case DEPENDENCIES:
- case NOTES:
- sprintf( Buffer, "@Subheading = %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
-
- /* now take care of the paragraphs which are here */
-
- in_bullets = FALSE;
- do {
- line = (Line_Control *) line->Node.next;
- if ( line->format == BULLET_OUTPUT ) {
- if ( !in_bullets ) {
- in_bullets = TRUE;
-
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- }
- sprintf( Buffer, "@Bullet = %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
- } else if ( in_bullets ) {
- in_bullets = FALSE;
-
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- } else {
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- }
- } while ( !line->keyword );
-
- break;
-
- case DERIVATION:
- case TYPE:
- case RANGE:
- case UNITS:
- case SCALE_FACTOR:
- case TOLERANCE:
- case VISIBILITY:
- case ASSOCIATED_WITH:
- case MULTIPLICITY:
- case TIMING:
- sprintf( Buffer, "@Subheading = %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- break;
-
- case MEMBERS:
- case DEFAULT:
- case REQUIREMENTS:
- case REFERENCES:
- case INPUTS:
- case OUTPUTS:
- case PDL:
- case SYNCHRONIZATION:
- sprintf( Buffer, "@Subheading = %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
-
- /* now take care of the raw text which is here */
-
-#if 0
- while ( !line->keyword ) {
- sprintf( Buffer, "@Example = %s\n", line->Contents );
- strcpy( line->Contents, Buffer );
- line = (Line_Control *) line->Node.next;
- }
-
- /* at this point line points to the next keyword */
-#endif
-
- /* now take care of the raw text which is here */
-
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- strcpy( new_line->Contents, "@Example = " );
-
- while ( !line->keyword ) {
- if ( strlen( line->Contents ) ) {
- new_line->keyword = line->keyword;
- new_line->format = line->format;
- length = strlen(new_line->Contents);
- if ( (length + strlen(line->Contents) + 12) > PARAGRAPH_SIZE ) {
- fprintf( stderr, "Output line too long at %d\n", line->number );
- exit_application( 1 );
- }
-
- strcat( new_line->Contents, line->Contents );
- strcat( new_line->Contents, "<@ManualCR>" );
- line = DeleteLine( line );
- } else {
- line = (Line_Control *) line->Node.next;
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- strcpy( new_line->Contents, "@Example = " );
- }
- }
-
- /* at this point line points to the next keyword */
- break;
-
- case RAW_EXAMPLE:
-
- /* now take care of the raw text which is here */
-
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- strcpy( new_line->Contents, "@Example = " );
-
-
- while ( line->keyword == RAW_EXAMPLE ) {
- if ( strlen( line->Contents ) ) {
- new_line->keyword = line->keyword;
- new_line->format = line->format;
- length = strlen(new_line->Contents);
- if ( (length + strlen(line->Contents) + 12) > PARAGRAPH_SIZE ) {
- fprintf( stderr, "Output line too long at %d\n", line->number );
- exit_application( 1 );
- }
-
- strcat( new_line->Contents, line->Contents );
- strcat( new_line->Contents, "<@ManualCR>" );
- line = DeleteLine( line );
- } else {
- line = (Line_Control *) line->Node.next;
- new_line = AllocateLine();
- _Chain_Insert( line->Node.previous, &new_line->Node );
- strcpy( new_line->Contents, "@Example = " );
- }
- }
-
- /* at this point line points to the next keyword */
- break;
-
- }
- }
-
-bottom:
-}
-
-/*
- * PrintFile
- */
-
-void PrintFile(
- char *out
-)
-{
- Line_Control *line;
-
- OutFile = fopen( out, "w+" );
-
- if ( !OutFile ) {
- fprintf( stderr, "Unable to open (%s) for output\n", out );
- exit_application( 1 );
- }
- assert( OutFile );
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next ) {
- fprintf( OutFile, "%s\n", line->Contents );
-/*
- fprintf(
- OutFile,
- "(%d,%d)%s\n",
- line->keyword,
- line->format,
- line->Contents
- );
-*/
- }
-}
-
-/*
- * DumpList
- */
-
-void DumpList(
- Chain_Control *the_list
-)
-{
- Line_Control *line;
-
- fprintf( stderr, "---> Dumping list (%p)\n", the_list );
-
- for ( line = (Line_Control *) the_list->first ;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next ) {
- fprintf( stderr, "%s\n", line->Contents );
- }
-}
-
-/*
- * ReleaseFile
- */
-
-void ReleaseFile()
-{
- Line_Control *line;
- Line_Control *next;
-
- for ( line = (Line_Control *) Lines.first ;
- !_Chain_Is_last( &line->Node ) ;
- ) {
- next = (Line_Control *) line->Node.next;
- line = next;
- }
-}
-
-/*
- * strtoInitialCaps
- */
-
-void strtoInitialCaps(
- char *dest,
- char *src
-)
-{
- char *source = src;
- char *destination = dest;
-
- if ( !dest )
- return;
- strcpy( dest, src );
-#if 0
- source = src;
- destination = (dest) ? dest : src;
-
- while ( *source ) {
- while ( isspace( *source ) )
- *destination++ = *source++;
-
- if ( !*source )
- break;
-
- *destination++ = toupper( *source++ );
-
- for ( ; *source && !isspace( *source ) ; source++ )
- *destination++ = tolower( *source );
-
- if ( !*source )
- break;
- }
-
- *destination = '\0';
-#endif
-}
-
-/*
- * Validate_visibility
- */
-
-char *Valid_visibilities[] = {
- "public",
- "private"
-};
-
-int Validate_visibility(
- Line_Control *line
-)
-{
- char *s;
- char *d;
- char Buffer[ BUFFER_SIZE ];
- char Visibility[ BUFFER_SIZE ];
- int i;
- boolean found;
- int errors = 0;
-
- LineCopyFromRight( line, Buffer );
-
- memset( Visibility, '\0', sizeof( Visibility ) );
- s = Buffer;
-
- for ( d=Visibility ; ; s++, d++ ) {
- *d = *s;
- if ( !*s || isspace(*s) )
- break;
- }
- *d = '\0';
-
- if ( isspace(*s) ) {
- fprintf(
- stderr,
- "Unexpected white space on line %d -- are there multiple words?\n",
- line->number
- );
- errors++;
- }
-
- /*
- * Check out the type part of this keyword
- */
-
- for ( found=FALSE, i=0 ; i<NUMBER_ELEMENTS(Valid_visibilities) ; i++ ) {
- if ( !strcmp( Valid_visibilities[ i ], Visibility ) ) {
- found = TRUE;
- break;
- }
- }
-
- if ( !found ) {
- if ( !(InsertTBDs && !strcmp( Visibility, "TBD" )) ) {
- fprintf(
- stderr,
- "Invalid visibility type (%s) on line %d\n",
- Visibility,
- line->number
- );
- errors++;
- }
- }
-
- return (errors) ? -1 : 0;
-}
-
-/*
- * Validate_synchronization
- */
-
-char *Valid_synchronization[] = {
- "delay",
- "event",
- "mutex",
- "semaphore",
- "message",
- "signal",
- "period"
-};
-
-boolean Valid_synchronization_text_below[] = {
- FALSE, /* delay */
- TRUE, /* event */
- TRUE, /* mutex */
- TRUE, /* semaphore */
- TRUE, /* message */
- TRUE, /* signal */
- FALSE /* period */
-};
-
-int Validate_synchronization(
- Line_Control *line
-)
-{
- char *s;
- char *d;
- char Buffer[ BUFFER_SIZE ];
- char Synchronization[ BUFFER_SIZE ];
- int i;
- boolean found;
- int errors = 0;
-
- LineCopyFromRight( line, Buffer );
-
- memset( Synchronization, '\0', sizeof( Synchronization ) );
- s = Buffer;
-
- for ( d=Synchronization ; ; s++, d++ ) {
- *d = *s;
- if ( !*s || isspace(*s) )
- break;
- }
- *d = '\0';
-
- if ( isspace(*s) ) {
- fprintf(
- stderr,
- "Unexpected white space on line %d -- invalid use of multiple words\n",
- line->number
- );
- errors++;
- }
-
- /*
- * Check out the type part of this keyword
- */
-
- for ( found=FALSE, i=0 ; i<NUMBER_ELEMENTS(Valid_synchronization) ; i++ ) {
- if ( !strcmp( Valid_synchronization[ i ], Synchronization ) ) {
- found = TRUE;
- break;
- }
- }
-
- if ( !found ) {
- fprintf(
- stderr,
- "Invalid synchronization type (%s) on line %d\n",
- Synchronization,
- line->number
- );
- errors++;
- }
-
- if ( line->keyword && !Valid_synchronization_text_below[ i ] ) {
- fprintf(
- stderr,
- "Expected text below synchronization type (%s) on line %d\n",
- Synchronization,
- line->number
- );
- errors++;
- }
-
- return (errors) ? -1 : 0;
-}
-
-/*
- * Validate_abstract_type
- *
- * presence of range or members but not both
- */
-
-int Validate_abstract_type(
- Section_info_t *section,
- Line_Control *start,
- Line_Control *next_section
-)
-{
- boolean range_found = FALSE;
- boolean members_found = FALSE;
- boolean enumerated_found = FALSE;
- boolean no_range_or_members = FALSE;
- boolean true_found = FALSE;
- boolean false_found = FALSE;
- Line_Control *line;
- int errors = 0;
-
- for ( line = start;
- line != next_section ;
- line = (Line_Control *) line->Node.next ) {
- if ( line->keyword == RANGE )
- range_found = TRUE;
- else if ( line->keyword == MEMBERS ) {
- members_found = TRUE;
- } else if ( line->keyword == TYPE ) {
- if ( strstr( line->Contents, "enumerated" ) ||
- strstr( line->Contents, "structure" ) )
- enumerated_found = TRUE;
- } else if ( line->keyword == DERIVATION ) {
- if ( strstr( line->Contents, "enumerated" ) ||
- strstr( line->Contents, "structure" ) ) {
- enumerated_found = TRUE;
- } else if ( strstr( line->Contents, "handle" ) ||
- strstr( line->Contents, "array" ) ||
- strstr( line->Contents, "string" ) ) {
- no_range_or_members = TRUE;
- }
- }
- }
-
- if ( no_range_or_members ) {
-/* This code does not like:
-
-ABSTRACT TYPE: Times
- DESCRIPTION:
- This type specifies mode elapsed times.
- VISIBILITY: public
- DERIVATION: array of Elapsed_Seconds of Timeutil
- RANGE: COMM - ENGAGE of Current_mode_t
-
- if ( range_found ) {
- fprintf(
- stderr,
- "Range should not be specified in subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-*/
- if ( members_found ) {
- fprintf(
- stderr,
- "Members should not be specified in subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
- } else {
- if ( !range_found && !members_found ) {
- fprintf(
- stderr,
- "Neither range nor members keyword present in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-
- if ( !enumerated_found && !range_found ) {
- fprintf(
- stderr,
- "Type does not have range specified in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-
- }
-
- if ( !InsertTBDs ) {
- if ( range_found && members_found ) {
- fprintf(
- stderr,
- "Both range and members keyword present in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
- }
-
- if ( enumerated_found && !members_found ) {
- fprintf(
- stderr,
- "Enumerated type without list of members in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-
- return (errors) ? -1 : 0;
-}
-
-/*
- * Validate_attribute
- *
- * presence of range or members but not both
- */
-
-int Validate_attribute(
- Section_info_t *section,
- Line_Control *start,
- Line_Control *next_section
-)
-{
- boolean range_found = FALSE;
- boolean members_found = FALSE;
- boolean enumerated_found = FALSE;
- boolean boolean_found = FALSE;
- boolean true_found = FALSE;
- boolean false_found = FALSE;
- Line_Control *line;
- int errors = 0;
-
- for ( line = start;
- line != next_section ;
- line = (Line_Control *) line->Node.next ) {
- if ( line->keyword == RANGE )
- range_found = TRUE;
- else if ( line->keyword == MEMBERS ) {
- members_found = TRUE;
- if ( boolean_found == TRUE ) {
- line = (Line_Control *) line->Node.next;
- while ( !_Chain_Is_last( &line->Node ) ) {
- if ( line->keyword )
- break;
- if ( strstr( line->Contents, "FALSE" ) )
- false_found = TRUE;
- else if ( strstr( line->Contents, "TRUE" ) )
- true_found = TRUE;
- line = (Line_Control *) line->Node.next;
- }
- line = (Line_Control *) line->Node.previous;
- }
- } else if ( line->keyword == TYPE || line->keyword == DERIVATION ) {
- if ( strstr( line->Contents, "enumerated" ) )
- enumerated_found = TRUE;
- else if ( strstr( line->Contents, "boolean" ) ) {
- enumerated_found = TRUE;
- boolean_found = TRUE;
- }
- }
- }
-
- if ( !range_found && !members_found ) {
- fprintf(
- stderr,
- "Neither range nor members keyword present in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-
- if ( !InsertTBDs ) {
- if ( range_found && members_found ) {
- fprintf(
- stderr,
- "Both range and members keyword present in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
- }
-
- if ( enumerated_found && !members_found ) {
- fprintf(
- stderr,
- "Enumerated type without list of members in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-
- if ( !enumerated_found && !range_found ) {
- fprintf(
- stderr,
- "Type does not have range specified in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-
- if ( boolean_found && !true_found ) {
- fprintf(
- stderr,
- "Boolean without a TRUE case specified in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-
- if ( boolean_found && !false_found ) {
- fprintf(
- stderr,
- "Boolean without a FALSE case specified in "
- "subsection starting at line %d\n",
- start->number
- );
- errors++;
- }
-
- return (errors) ? -1 : 0;
-}
-
-/*
- * Validate_object
- *
- * presence of range or members but not both
- */
-
-int Validate_object(
- Section_info_t *section,
- Line_Control *start,
- Line_Control *next_section
-)
-{
- char ObjectName[ BUFFER_SIZE ];
- char EndObjectName[ BUFFER_SIZE ];
- Line_Control *line;
- int errors = 0;
-
-
- LineCopyFromRight( start, ObjectName );
-
- for ( line = start;
- !_Chain_Is_last( &line->Node ) ;
- line = (Line_Control *) line->Node.next ) {
- if ( line->keyword == END_OBJECT ) {
- LineCopyFromRight( line, EndObjectName );
- break;
- }
- }
-
- if ( strcmp( ObjectName, EndObjectName ) ) {
- fprintf(
- stderr,
- "Object and End Object names do not match\n"
- );
- errors++;
- }
-
- return (errors) ? -1 : 0;
-}
-
diff --git a/doc/tools/pdl2texi/s.d b/doc/tools/pdl2texi/s.d
deleted file mode 100644
index a434bf4523..0000000000
--- a/doc/tools/pdl2texi/s.d
+++ /dev/null
@@ -1,129 +0,0 @@
-
-OBJECT: Object_name
- DESCRIPTION:
- This object ...
- (briefly describe the object's primary responsibility or purpose)
- COPYRIGHT:
- Copyright (c) 1995, On-Line Applications Research Corporation (OAR)
- PORTING:
- THEORY OF OPERATION:
- DERIVATION:
- DEPENDENCIES:
- NOTES:
-
-ATTRIBUTE DESCRIPTIONS:
-
-ATTRIBUTE: An_attribute
- DESCRIPTION:
- This attribute ...
- (briefly describe the attribute's primary purpose)
- TYPE: float [constant]|integer [constant]
- (indicate one of the above)
- RANGE|MEMBERS: 0 - +INFINITY or MEMBER1, MEMBER2, MEMBER3
- (indicate RANGE or MEMBERS and specify, MEMBERS should be listed
- in all caps, RANGE can use +/-INFINITY)
- UNITS:
- SCALE FACTOR:
- DEFAULTS:
- TOLERANCE:
- REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- REFERENCES:
- NOTES:
-
-ASSOCIATION DESCRIPTIONS:
-
-ASSOCIATION:
- DESCRIPTION:
- VISIBILTY:
- ASSOCIATED WITH:
- MULTIPLICITY:
- REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- REFERENCES:
- NOTES:
-
-ABSTRACT TYPE DESCRIPTIONS:
-
-ABSTRACT TYPE:
- DESCRIPTION:
- This type ...
- (briefly describe the type's primary purpose)
- VISIBILITY: private|public
- (indicate one of the above)
- DERIVATION:
- MEMBERS|RANGE: 0 - +INFINITY or MEMBER1, MEMBER2, MEMBER3
- (indicate RANGE or MEMBERS and specify, MEMBERS should be listed
- in all caps, RANGE can use +/-INFINITY)
- UNITS:
- SCALE FACTOR:
- DEFAULTS:
- TOLERANCE:
- REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- REFERENCES:
- NOTES:
-
-DATA ITEM DESCRIPTIONS:
-
-DATA ITEM:
- DESCRIPTION:
- This data item ...
- (briefly describe the data item's primary purpose)
- TYPE:
- UNITS:
- SCALE FACTOR:
- DEFAULTS:
- TOLERANCE:
- NOTES:
-
-METHODS DESCRIPTIONS:
- (List methods alphabetically grouping public methods followed
- by private methods.)
-
-METHOD: Some_method
- DESCRIPTION:
- This method ...
- (briefly describe the method's primary responsibility)
- VISIBILITY: private|public
- (indicate one of the above)
- INPUTS:
- input_one - the first and only input
- (specify the logical inputs followed by a description,
- indicate 'none' if there are no inputs)
- OUTPUTS:
- output_one - the first and only output
- (specify the logical outputs followed by a description,
- indicate 'none' if there are no outputs, use 'result' if the
- method is a boolean function)
- REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- REFERENCES:
- NOTES:
- PDL:
-
-TASK DESCRIPTIONS:
-
-TASK:
- DESCRIPTION:
- This task ...
- (briefly describe the task's primary responsibility)
- INPUTS:
- SYNCHRONIZATION: delay|event|message|semaphore|signal|period
- (indicate one or more of the above and list any events,
- messages, or signals that can be received)
- TIMING:
- (specify any timing information that is related to the
- synchronization specified above)
- REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- REFERENCES:
- NOTES:
- PDL:
-
-ENDOBJECT: Object_name
diff --git a/doc/tools/pdl2texi/sample.d b/doc/tools/pdl2texi/sample.d
deleted file mode 100644
index c381cb3de2..0000000000
--- a/doc/tools/pdl2texi/sample.d
+++ /dev/null
@@ -1,136 +0,0 @@
-(All fields marked with an '*' are optional and can be deleted if
- there is no applicable information.
- All entity names (OBJECT, ATTRIBUTE, METHOD, etc.) are proper nouns
- and thus should only have the first letter capitalized.)
-
-OBJECT: Object_name
- DESCRIPTION:
- This object ...
- (briefly describe the object's primary responsibility or purpose)
- *COPYRIGHT:
- Copyright (c) 1995, On-Line Applications Research Corporation (OAR)
- *PORTING:
- THEORY OF OPERATION:
- *DERIVATION:
- *DEPENDENCIES:
- *NOTES:
-
-ATTRIBUTE DESCRIPTIONS:
-
-ATTRIBUTE: An_attribute
- DESCRIPTION:
- This attribute ...
- (briefly describe the attribute's primary purpose)
- TYPE: float [constant]|integer [constant]
- (indicate one of the above)
- MEMBERS|RANGE: 0 - +INFINITY or MEMBER1, MEMBER2, MEMBER3
- (indicate RANGE or MEMBERS and specify, MEMBERS should be listed
- in all caps, RANGE can use +/-INFINITY)
- *UNITS:
- *SCALE FACTOR:
- *DEFAULTS:
- *TOLERANCE:
- *REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- *REFERENCES:
- *NOTES:
-
-ASSOCIATION DESCRIPTIONS:
-
-ASSOCIATION: name
- DESCRIPTION:
- This association ...
- (briefly describe the association's primary purpose)
- VISIBILITY: private|public
- (indicate one of the above)
- ASSOCIATED WITH: object_name
- MULTIPLICITY:
- *REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- *REFERENCES:
- *NOTES:
-
-ABSTRACT TYPE DESCRIPTIONS:
-
-ABSTRACT TYPE: name
- DESCRIPTION:
- This type ...
- (briefly describe the type's primary purpose)
- VISIBILITY: private|public
- (indicate one of the above)
- DERIVATION:
- MEMBERS|RANGE: 0 - +INFINITY or MEMBER1, MEMBER2, MEMBER3
- (indicate RANGE or MEMBERS and specify, MEMBERS should be listed
- in all caps, RANGE can use +/-INFINITY)
- *UNITS:
- *SCALE FACTOR:
- *DEFAULTS:
- *TOLERANCE:
- *REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- *REFERENCES:
- *NOTES:
-
-DATA ITEM DESCRIPTIONS:
-
-DATA ITEM: name
- DESCRIPTION:
- This data item ...
- (briefly describe the data item's primary purpose)
- TYPE:
- *UNITS:
- *SCALE FACTOR:
- *DEFAULTS:
- *TOLERANCE:
- *NOTES:
-
-METHOD DESCRIPTIONS:
- (List methods alphabetically grouping public methods followed
- by private methods.)
-
-METHOD: Some_method
- DESCRIPTION:
- This method ...
- (briefly describe the method's primary responsibility)
- VISIBILITY: private|public
- (indicate one of the above)
- INPUTS:
- input_one - the first and only input
- (specify the logical inputs followed by a description,
- indicate 'none' if there are no inputs)
- OUTPUTS:
- output_one - the first and only output
- (specify the logical outputs followed by a description,
- indicate 'none' if there are no outputs, use 'result' if the
- method is a boolean function)
- *REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- *REFERENCES:
- *NOTES:
- PDL:
-
-TASK DESCRIPTIONS:
-
-TASK: name
- DESCRIPTION:
- This task ...
- (briefly describe the task's primary responsibility)
- INPUTS:
- SYNCHRONIZATION: delay|event|message|semaphore|signal|period
- (indicate one or more of the above and list any events,
- messages, or signals that can be received)
- TIMING:
- (specify any timing information that is related to the
- synchronization specified above)
- *REQUIREMENTS:
- ABCD 3.2.4 A paragraph title
- (indicate document, paragraph number, paragraph title)
- *REFERENCES:
- *NOTES:
- PDL:
-
-ENDOBJECT: Object_name
diff --git a/doc/tools/pdl2texi/system.h b/doc/tools/pdl2texi/system.h
deleted file mode 100644
index 173e48ce04..0000000000
--- a/doc/tools/pdl2texi/system.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * COPYRIGHT (c) 1997.
- * On-Line Applications Research Corporation (OAR).
- * All rights reserved.
- *
- * $Id$
- */
-
-#ifndef __SYSTEM_h
-#define __SYSTEM_h
-
-typedef unsigned int unsigned32;
-typedef unsigned short unsigned16;
-typedef unsigned char unsigned8;
-
-#define USE_INLINES
-#define STATIC static
-#define INLINE inline
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-typedef unsigned int boolean;
-
-#if !defined( TRUE ) || (TRUE != 1)
-#undef TRUE
-#define TRUE (1)
-#endif
-
-#if !defined( FALSE ) || (FALSE != 0)
-#undef FALSE
-#define FALSE 0
-#endif
-
-#endif
diff --git a/doc/tools/pdl2texi/t1.d b/doc/tools/pdl2texi/t1.d
deleted file mode 100644
index 4f54e74738..0000000000
--- a/doc/tools/pdl2texi/t1.d
+++ /dev/null
@@ -1,52 +0,0 @@
-OBJECT: Drive
- DESCRIPTION:
- This object provides an interface to the elevation/azimuth
- drive system(ECA).
- THEORY OF OPERATION:
- This object encapsulates the turret drive. The object provides
- an interface to control the turret drive. A method is provided
- to set the azimuth and elevation rate of the drive. Methods are
- provided to request the drive to run in stabilized or power mode
- and set the drive speed to high or low. A method is also provided
- to allow for drift adjust.
-
- This object also tracks drive system on hours. It gets the hours
- from the EEPROM data, allows the hours to be set, updates the
- hours via the activation and deactivation of the drive, and
- provides access to the hours.
-
- The object also provides methods to access azimuth and elevation
- displacement, and methods to process changes in the hardware
- discretes drive on, stabilized mode, thermal fault and fault.
-
- The object also provides methods to enable and disable
- both the remote and turret power interlocks which determine if
- the drive can be driven by the remote or turret handstation
- respectively.
-
-ATTRIBUTE DESCRIPTIONS:
-
-
-ATTRIBUTE: Azimuth_displacement
- DESCRIPTION:
- This attribute represents the current azimuth displacement
- of the turret.
- TYPE: float constant
- RANGE: 0-0
- UNITS: degrees
- REQUIREMENTS:
- AFS 8.2.11 Receive Azimuth Displacement and Elevation Displacement
- AIS 5.2.6 Azimuth Displacement analog
-
-
-ASSOCIATION DESCRIPTIONS: none
-
-ABSTRACT TYPE DESCRIPTIONS: none
-
-DATA ITEM DESCRIPTIONS: none
-
-METHOD DESCRIPTIONS: none
-
-TASK DESCRIPTIONS: none
-
-END OBJECT: Drive
diff --git a/doc/tools/pdl2texi/test_cases/avdas.d b/doc/tools/pdl2texi/test_cases/avdas.d
deleted file mode 100644
index 1d79a319f1..0000000000
--- a/doc/tools/pdl2texi/test_cases/avdas.d
+++ /dev/null
@@ -1,260 +0,0 @@
-OBJECT: AVDAS
- DESCRIPTION:
- This object collects various values from other objects in the system
- and outputs the values in a message on a serial interface. The message
- can be read and used as diagnostic information.
- THEORY OF OPERATION:
- This object contains a Server task which periodically collects
- diagnostic values from other objects in the system and outputs the
- values in a message on a serial interface. The diagnostic values
- collected and formatted reflect system status.
- NOTES:
- The following engineering note consists of a chart to aid in the
- decision making process of whether the AVDAS should reflect System
- status or Switch status. As it is right now, it was decided to
- reflect System status.
-
- @table
- System Switch
- Gun Manual Weapon_control Gunner_console
- Gun Air ------- -------
- Gun Ground ------- -------
- *Remote Status Remote Remote
- *Msl Armed Indicate Missiles Missiles
- *Rain Mode FOV FOV
- *Msl Uncage Verified Missiles Missiles
- *Msl Activate Status Missiles Missiles
- *RSO Status Weapon_control Weapon_control
- *Fire Permit Weapon_control_(new) Weapon_control_(new)
- *Stab Mode Status Drive_(new) Drive_(new)
- Uncage Mode Status Weapon_control Gunner_console_(new)
- Engage Mode Status Mode Gunner_console_(new)
- *Palm Grip Status Gunner_handstation Gunner_handstation
- *System Fault Status Fault (Add) Fault_(new)
- FLIR FOV Status FOV Gunner_console
- *Autotrack Status Video_tracker Video_tracker
- Arm Switch Status Weapon_control Gunner_console
- *Uncage Switch Status Gunner_handstation Gunner_handstation
- *Trig Switch Status Gunner_handstation Gunner_handstation
- *Msl Fire Cmd Status Missiles_(new) Missiles_(new)
- Helicopter Mode Weapon_control Gunner_console_(new)
- IFF Challenge Switch IFF_(new) Gunner_console
- *Auto Slew Status Autoslew_Is_on Autoslew_Is_on
-
- @end table
-
- Message bytes 26 through 29 are not set at this time pending
- completion of the Super Elevate object.
-
-ATTRIBUTE DESCRIPTIONS: none
-
-ASSOCIATION DESCRIPTIONS: none
-
-ABSTRACT TYPE DESCRIPTIONS: none
-
-DATA ITEM DESCRIPTIONS:
-
-DATA ITEM: Message
- DESCRIPTION:
- This data item is the buffer used to build an AVDAS data message.
- The first two bytes are place-holders for the header bytes. The
- last byte is a place-holder for the checksum byte.
- DERIVATION: array[ 36 ]
- TYPE: bytes
- DEFAULT:
- all bytes = 0x00
-
-DATA ITEM: The_Channel
- DESCRIPTION:
- This data item contains the handle to the AVDAS channel.
- TYPE: Channel_Control handle
- DEFAULT: NULL
-
-METHOD DESCRIPTIONS:
-
-METHOD: Break_Up
- DESCRIPTION:
- This method converts a floating point number to two ascii bytes
- based on an input range and weighting factor.
- VISIBILITY: private
- INPUTS:
- max_range
- min_range
- value
- weight_factor
- OUTPUTS:
- lower_byte
- upper_byte
- PDL:
- if value between 0 and min_range
- set temp2 to min_range
- set bit_ratio to absolute value( temp2 / 0x8000 )
- else if value between 0 and max_range
- set temp2 to max_range
- set bit_ratio to absolute value( temp2 / 0x7FF0 )
-
- set temp3 to (value / temp2) * weight_factor
-
- set temp4 to temp3 converted to unsigned 16 bit value
-
- set temp4 to two's compliment of temp4
-
- set lower_byte to lower 8 bits of temp4
-
- set upper_byte to upper 8 bits of temp4
-
-METHOD: Create
- DESCRIPTION:
- This method performs the necessary actions to create this object.
- VISIBILITY: public
- INPUTS: none
- OUTPUTS: none
- PDL:
- initialize Message to default
-
- get AVDAS protocol information using the AVDAS_protocol object
- create a channel for the AVDAS interface using the Channel object
- attach the channel to the AVDAS interface using the Channel object
- with the following parameters:
- flush - FALSE
- major_number - CONFIGURATION_AVDAS_MAJOR
- minor_number - CONFIGURATION_AVDAS_MINOR
-
-TASK DESCRIPTIONS:
-
-TASK: Server
- DESCRIPTION:
- This task periodically collects diagnostic values and outputs the
- values in a message on a serial interface.
- INPUTS: none
- SYNCHRONIZATION: period
- TIMING: 100 ms
- REQUIREMENTS:
- AFS 3.1.4 Provide AVDAS
- AFS 3.1.7 Update AVDAS port
- PDL:
- create a period
-
- wait for completion using the Initialization object
-
- loop forever
- wait for period to expire
-
- initialize Message
-
- get absolute azimuth using the Turret object
- format absolute azimuth and store in Message[2] and Message[3]
-
- get elevation using the Turret object
- format elevation and store in Message[4] and Message[5]
-
- get drive rate using the Drive object
- format azimuth rate and store in Message[6] and Message[7]
- format elevation rate and store in Message[8] and Message[9]
-
- get drive displacement using the Drive object
- format azimuth displacement and store in Message[10] and Message[11]
- format elevation displacement and
- store in Message[12] and Message[13]
-
- get seeker position error using the Seeker object
- format azimuth position error and
- store in Message[14] and Message[15]
- format elevation position error and
- store in Message[16] and Message[17]
-
- get range using the Laser object
- format range and store in Message[18] and Message[19]
-
- get north reference using the Turret object
- format north reference and store in Message[20] and Message[21]
-
- get video tracker position error using the Video_tracker object
- format azimuth position error and
- store in Message[22] and Message[23]
- format elevation position error and
- store in Message[24] and Message[25]
-
- ?get lead command?
-
- get gun mode switch using the Weapon_control object
- format gun mode switch and store in Message[30]
-
- determine if remote is active using the Remote object
- format remote active and store in Message[30]
-
- determine if missile is safed using the Missiles object
- format missile safed and store in Message[30]
-
- determine if rain mode is active using the FOV object
- format rain mode active and store in Message[30]
-
- get missile inventory using the Missiles object
- format present indicators and store in Message[31]
- format selected indicators and store in Message[32]
-
- determine if missile uncage verified using the Missiles object
- format missile uncage verified and store in Message[32]
-
- determine if missile activated using the Missiles object
- format missile activated and store in Message[32]
-
- determine if RSO is authorized using the Weapon_control object
- format RSO authorized and store in Message[32]
-
- determine if fire permit using the Weapon_control object
- format fire permit and store in Message[32]
-
- determine if stab mode using the Drive object
- format stab mode and store in Message[33]
-
- determine if uncage mode is WEAPON_CONTROL_MANUAL_UNCAGE using
- the Weapon_control object
- format uncage mode and store in Message[33]
-
- determine if current mode is MODE_ENGAGE using the Mode object
- format current mode and store in Message[33]
-
- determine if palmgrip switch is pressed using the
- Gunner_handstation object
- format palmgrip switch pressed and store in Message[33]
-
- determine if fault is active using the Fault object
- format fault active and store in Message[33]
-
- determine if FOV FLIR zoom is FOV_ZOOM_NARROW using the FOV object
- format FOV FLIR zoom and store in Message[33]
-
- determine if video tracker is on using the Video_tracker object
- format video tracker on and store in Message[34]
-
- determine if armed using the Weapon_control object
- format armed and store in Message[34]
-
- determine if uncage trigger switch pressed using the
- Gunner_handstation object
- format uncage trigger switch pressed and store in Message[34]
-
- determine if fire trigger switch pressed using the
- Gunner_handstation object
- format fire trigger switch pressed and store in Message[34]
-
- determine if missiles is firing using the Missiles object
- format missiles firing and store in Message[34]
-
- determine if helicopter mode is WEAPON_CONTROL_ON using the
- Weapon_control object
- format helicopter mode and store in Message[34]
-
- determine if IFF challenge using the IFF object
- format IFF challenge and store in Message[34]
-
- determine if autoslew is on using the Autoslew object
- format autoslew is on and store in Message[34]
-
- loop until successful
- write Message using the Channel object
- if unsuccessful
- reset the Channel object
-
-ENDOBJECT: AVDAS
diff --git a/doc/tools/pdl2texi/test_cases/enum.d b/doc/tools/pdl2texi/test_cases/enum.d
deleted file mode 100644
index fc03c04f44..0000000000
--- a/doc/tools/pdl2texi/test_cases/enum.d
+++ /dev/null
@@ -1,44 +0,0 @@
-OBJECT: Testfile
- DESCRIPTION:
- This file contains one abstract type without a range and two
- abstract types with filler ranges.
- THEORY OF OPERATION:
- This file will be used to test the .d compiler.
-
-ATTRIBUTE DESCRIPTIONS: none
-
-ASSOCIATION DESCRIPTIONS: none
-
-ABSTRACT TYPE DESCRIPTIONS:
-
-ABSTRACT TYPE: ID
- DESCRIPTION:
- This type defines an identifier for an event set that may be manipulated.
- VISIBILITY: public
- DERIVATION: Bin_type handle
-
-ABSTRACT TYPE: Test_ID
- DESCRIPTION:
- This is the abstract type with the range made optional.
- VISIBILITY: public
- DERIVATION: Bin_type handle
-
-ABSTRACT TYPE: Input_Buffer
- DESCRIPTION:
- This type indicates the maximum input buffer.
- VISIBILITY: public
- DERIVATION: string
-
-ABSTRACT TYPE: Image_t
- DESCRIPTION:
- This type specifies the data maintained for the screen.
- VISIBILITY: public
- DERIVATION: array [LINES][COLUMNS] of character
-
-DATA ITEM DESCRIPTIONS: none
-
-METHOD DESCRIPTIONS: none
-
-TASK DESCRIPTIONS: none
-
-ENDOBJECT: Testfile
diff --git a/doc/tools/pdl2texi/test_cases/enumbad.d b/doc/tools/pdl2texi/test_cases/enumbad.d
deleted file mode 100644
index 8bcd9f823e..0000000000
--- a/doc/tools/pdl2texi/test_cases/enumbad.d
+++ /dev/null
@@ -1,48 +0,0 @@
-OBJECT: Testfile
- DESCRIPTION:
- This file contains one abstract type without a range and two
- abstract types with filler ranges.
- THEORY OF OPERATION:
- This file will be used to test the .d compiler.
-
-ATTRIBUTE DESCRIPTIONS: none
-
-ASSOCIATION DESCRIPTIONS: none
-
-ABSTRACT TYPE DESCRIPTIONS:
-
-ABSTRACT TYPE: ID
- DESCRIPTION:
- This type defines an identifier for an event set that may be manipulated.
- VISIBILITY: public
- DERIVATION: Bin_type handle
- RANGE: 99 - 99
-
-ABSTRACT TYPE: Test_ID
- DESCRIPTION:
- This is the abstract type with the range made optional.
- VISIBILITY: public
- DERIVATION: Bin_type handle
-
-ABSTRACT TYPE: Input_Buffer
- DESCRIPTION:
- This type indicates the maximum input buffer.
- VISIBILITY: public
- DERIVATION: string
- RANGE: 99 - 99
-
-ABSTRACT TYPE: Image_t
- DESCRIPTION:
- This type specifies the data maintained for the screen.
- VISIBILITY: public
- DERIVATION: array [LINES][COLUMNS] of character
- RANGE: 0 - 1 QQQ
-
-DATA ITEM DESCRIPTIONS: none
-
-METHOD DESCRIPTIONS: none
-
-TASK DESCRIPTIONS: none
-
-ENDOBJECT: Testfile
-
diff --git a/doc/tools/pdl2texi/test_cases/table.d b/doc/tools/pdl2texi/test_cases/table.d
deleted file mode 100644
index 954a9b419b..0000000000
--- a/doc/tools/pdl2texi/test_cases/table.d
+++ /dev/null
@@ -1,27 +0,0 @@
-OBJECT: AVDAS
- DESCRIPTION:
- This file contains a test case which blows up pdl2texi when optimization
- is enabled. See the makefile for details.
- THEORY OF OPERATION:
- This object ..
- NOTES:
- The following blows up pdl2texi when -O is set.
-
-@table
- System Switch
-
-@end table
-
-ATTRIBUTE DESCRIPTIONS: none
-
-ASSOCIATION DESCRIPTIONS: none
-
-ABSTRACT TYPE DESCRIPTIONS: none
-
-DATA ITEM DESCRIPTIONS: none
-
-METHOD DESCRIPTIONS: none
-
-TASK DESCRIPTIONS: none
-
-ENDOBJECT: AVDAS
diff --git a/doc/tools/src2html/Makefile b/doc/tools/src2html/Makefile
deleted file mode 100644
index 208f901559..0000000000
--- a/doc/tools/src2html/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-CC=gcc
-CFLAGS=-g
-
-PROGS=ctags-wr ctags-new ctags src2html
-
-SRC2HTMLDIR=src2html1.4a
-
-all: tools
-
-tools: $(PROGS)
- chmod +x $(PROGS)
-
-ctags-wr:
- cp ../$(SRC2HTMLDIR)/ctags-wr .
-
-ctags-new:
- cd ../$(SRC2HTMLDIR)/Ctags ; gmake
- cp ../$(SRC2HTMLDIR)/Ctags/ctags-new .
-
-# EMACS ctags with Ada awareness
-ctags:
- cp ../$(SRC2HTMLDIR)/ctags-emacs/ctags ctags
-
-src2html:
- cp ../$(SRC2HTMLDIR)/src2html .
-
-clean:
- rm -f $(PROGS)
- cd ../$(SRC2HTMLDIR)/Ctags ; gmake clean
-
diff --git a/doc/tools/src2html1.4a/Ctags/C.c b/doc/tools/src2html1.4a/Ctags/C.c
deleted file mode 100644
index f091fcedad..0000000000
--- a/doc/tools/src2html1.4a/Ctags/C.c
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * Copyright (c) 1987 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)C.c 5.5 (Berkeley) 2/26/91";
-#endif /* not lint */
-
-#include <stdio.h>
-#include <string.h>
-#include "ctags.h"
-
-static int func_entry(), str_entry();
-static void hash_entry();
-
-/*
- * c_entries --
- * read .c and .h files and call appropriate routines
- */
-c_entries()
-{
- extern int tflag; /* -t: create tags for typedefs */
- register int c, /* current character */
- level; /* brace level */
- register char *sp; /* buffer pointer */
- int token, /* if reading a token */
- t_def, /* if reading a typedef */
- t_level; /* typedef's brace level */
- char tok[MAXTOKEN]; /* token buffer */
- int st; /* Symbol type */
- int rparen; /* State of last rparen */
-
- lineftell = ftell(inf);
- sp = tok; token = t_def = NO; t_level = -1; level = 0; lineno = 1;
- rparen=0;
- while (GETC(!=,EOF)) {
- rparen--;
- switch ((char)c) {
- /*
- * Here's where it DOESN'T handle:
- * foo(a)
- * {
- * #ifdef notdef
- * }
- * #endif
- * if (a)
- * puts("hello, world");
- * }
- */
- case '{':
- ++level;
- goto endtok;
- case '}':
- /*
- * if level goes below zero, try and fix
- * it, even though we've already messed up
- */
- if (--level < 0)
- level = 0;
- goto endtok;
-
- case '\n':
- SETLINE;
- /*
- * the above 3 cases are similar in that they
- * are special characters that also end tokens.
- */
-endtok: if (sp > tok) {
- *sp = EOS;
- token = YES;
- sp = tok;
- }
- else
- token = NO;
- continue;
-
- /* we ignore quoted strings and comments in their entirety */
- case '"':
- case '\'':
- (void)skip_key(c);
- break;
- /* We ignore everything between [] */
- case '[':
- (void)skip_key(']');
- goto storec;
-
- /*
- * comments can be fun; note the state is unchanged after
- * return, in case we found:
- * "foo() XX comment XX { int bar; }"
- */
- case '/':
- if (GETC(==,'*')) {
- skip_comment();
- continue;
- }
- (void)ungetc(c,inf);
- c = '/';
- goto storec;
-
- /* hash marks flag #define's. */
- case '#':
- if (sp == tok) {
- hash_entry();
- break;
- }
- goto storec;
-
- /*
- * if we have a current token, parenthesis on
- * level zero indicates a function.
- */
- case '(':
- if (!level && token) {
- int curline;
-
- if (sp != tok)
- *sp = EOS;
- /*
- * grab the line immediately, we may
- * already be wrong, for example,
- * foo\n
- * (arg1,
- */
- getline();
- curline = lineno;
- if (func_entry()) {
- ++level;
- pfnote(tok,curline,SY_FUN);
- } else rparen=2;
- break;
- }
- goto storec;
-
- /*
- * semi-colons indicate the end of a typedef; if we find a
- * typedef we search for the next semi-colon of the same
- * level as the typedef. Ignoring "structs", they are
- * tricky, since you can find:
- *
- * "typedef long time_t;"
- * "typedef unsigned int u_int;"
- * "typedef unsigned int u_int [10];"
- *
- * If looking at a typedef, we save a copy of the last token
- * found. Then, when we find the ';' we take the current
- * token if it starts with a valid token name, else we take
- * the one we saved. There's probably some reasonable
- * alternative to this...
- */
- case ';':
- if (t_def && level == t_level) {
- t_def = NO;
- getline();
- if (sp != tok)
- *sp = EOS;
- pfnote(tok,lineno,SY_TYP);
- break;
- }
- /*
- * Catch global variables by the fact that they end in ; or ,
- * and they are at level zero.
- */
- case ',':
- if (sp != tok) *sp = EOS;
- if (level==0 && rparen!=1) {
- pfnote(tok,lineno,SY_VAR);
- break;
- }
- goto storec;
-
- /*
- * store characters until one that can't be part of a token
- * comes along; check the current token against certain
- * reserved words.
- */
- default:
-storec: if (!intoken(c)) {
- if (sp == tok)
- break;
- *sp = EOS;
- if (tflag) {
- /* no typedefs inside typedefs */
- if (!t_def && !bcmp(tok,"typedef",8)) {
- t_def = YES;
- t_level = level;
- break;
- }
- /* catch "typedef struct" */
- if ((!t_def || t_level < level)
- && (!bcmp(tok,"struct",7)
- || !bcmp(tok,"union",6)
- || !bcmp(tok,"enum",5))) {
- /* Get type of symbol */
- st=0;
- switch (*tok) {
- case 's' : st= SY_STR; break;
- case 'u' : st= SY_UNI; break;
- case 'e' : st= SY_ENU; break;
- }
- /*
- * get line immediately;
- * may change before '{'
- */
- getline();
- if (str_entry(c,st))
- ++level;
- break;
- }
- }
- sp = tok;
- }
- else if (sp != tok || begtoken(c)) {
- *sp++ = c;
- token = YES;
- }
- continue;
- }
- sp = tok;
- token = NO;
- }
-}
-
-/*
- * func_entry --
- * handle a function reference
- */
-static
-func_entry()
-{
- register int c; /* current character */
-
- /*
- * we assume that the character after a function's right paren
- * is a token character if it's a function and a non-token
- * character if it's a declaration. Comments don't count...
- */
- (void)skip_key((int)')');
- for (;;) {
- while (GETC(!=,EOF) && iswhite(c))
- if (c == (int)'\n')
- SETLINE;
- if (intoken(c) || c == (int)'{')
- break;
- if (c == (int)'/' && GETC(==,'*'))
- skip_comment();
- else { /* don't ever "read" '/' */
- (void)ungetc(c,inf);
- return(NO);
- }
- }
- if (c != (int)'{')
- (void)skip_key((int)'{');
- return(YES);
-}
-
-/*
- * hash_entry --
- * handle a line starting with a '#'
- */
-static void
-hash_entry()
-{
- extern int dflag; /* -d: non-macro defines */
- register int c, /* character read */
- curline; /* line started on */
- register char *sp; /* buffer pointer */
- char tok[MAXTOKEN]; /* storage buffer */
-
- curline = lineno;
- for (sp = tok;;) { /* get next token */
- if (GETC(==,EOF))
- return;
- if (iswhite(c))
- break;
- *sp++ = c;
- }
- *sp = EOS;
- if (bcmp(tok,"define",6)) /* only interested in #define's */
- goto skip;
- for (;;) { /* this doesn't handle "#define \n" */
- if (GETC(==,EOF))
- return;
- if (!iswhite(c))
- break;
- }
- for (sp = tok;;) { /* get next token */
- *sp++ = c;
- if (GETC(==,EOF))
- return;
- /*
- * this is where it DOESN'T handle
- * "#define \n"
- */
- if (!intoken(c))
- break;
- }
- *sp = EOS;
- if (dflag || c == (int)'(') { /* only want macros */
- getline();
- if (c == (int)'(') pfnote(tok,curline,SY_MAC);
- else pfnote(tok,curline,SY_DEF);
- }
-skip: if (c == (int)'\n') { /* get rid of rest of define */
- SETLINE
- if (*(sp - 1) != '\\')
- return;
- }
- (void)skip_key((int)'\n');
-}
-
-/*
- * str_entry --
- * handle a struct, union or enum entry
- */
-static
-str_entry(c,st)
- register int c; /* current character */
- int st; /* type of symbol */
-{
- register char *sp; /* buffer pointer */
- int curline; /* line started on */
- char tok[BUFSIZ]; /* storage buffer */
-
- curline = lineno;
- while (iswhite(c))
- if (GETC(==,EOF))
- return(NO);
- if (c == (int)'{') /* it was "struct {" */
- return(YES);
- for (sp = tok;;) { /* get next token */
- *sp++ = c;
- if (GETC(==,EOF))
- return(NO);
- if (!intoken(c))
- break;
- }
- switch ((char)c) {
- case '{': /* it was "struct foo{" */
- --sp;
- break;
- case '\n': /* it was "struct foo\n" */
- SETLINE;
- /*FALLTHROUGH*/
- default: /* probably "struct foo " */
- while (GETC(!=,EOF))
- if (!iswhite(c))
- break;
- if (c != (int)'{') {
- (void)ungetc(c, inf);
- return(NO);
- }
- }
- *sp = EOS;
- pfnote(tok,curline,st);
- return(YES);
-}
-
-/*
- * skip_comment --
- * skip over comment
- */
-skip_comment()
-{
- register int c, /* character read */
- star; /* '*' flag */
-
- for (star = 0;GETC(!=,EOF);)
- switch((char)c) {
- /* comments don't nest, nor can they be escaped. */
- case '*':
- star = YES;
- break;
- case '/':
- if (star)
- return;
- break;
- case '\n':
- SETLINE;
- /*FALLTHROUGH*/
- default:
- star = NO;
- }
-}
-
-/*
- * skip_key --
- * skip to next char "key"
- */
-skip_key(key)
- register int key;
-{
- register int c,
- skip,
- retval;
-
- for (skip = retval = NO;GETC(!=,EOF);)
- switch((char)c) {
- case '\\': /* a backslash escapes anything */
- skip = !skip; /* we toggle in case it's "\\" */
- break;
- case ';': /* special case for yacc; if one */
- case '|': /* of these chars occurs, we may */
- retval = YES; /* have moved out of the rule */
- break; /* not used by C */
- case '\n':
- SETLINE;
- /*FALLTHROUGH*/
- default:
- if (c == key && !skip)
- return(retval);
- skip = NO;
- }
- return(retval);
-}
diff --git a/doc/tools/src2html1.4a/Ctags/Makefile b/doc/tools/src2html1.4a/Ctags/Makefile
deleted file mode 100644
index c6dd7f0d6a..0000000000
--- a/doc/tools/src2html1.4a/Ctags/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# @(#)Makefile 5.6 (Berkeley) 5/11/90
-
-CC=gcc
-
-PROG= ctags-new
-CFLAGS+=-I. -g
-
-SRCS= C.c ctags.c fortran.c lisp.c print.c tree.c yacc.c strerror.c
-
-ctags: C.o ctags.o fortran.o lisp.o print.o tree.o yacc.o strerror.o
- $(CC) -o ctags-new C.o ctags.o fortran.o lisp.o print.o tree.o yacc.o \
- strerror.o
-
-clean:
- rm -f *.o ctags-new
diff --git a/doc/tools/src2html1.4a/Ctags/ctags.1 b/doc/tools/src2html1.4a/Ctags/ctags.1
deleted file mode 100644
index aea23f9826..0000000000
--- a/doc/tools/src2html1.4a/Ctags/ctags.1
+++ /dev/null
@@ -1,225 +0,0 @@
-.\" Ctags-new is a modified version of the ctags produced by UCB and
-.\" distributed in their BSD distributions.
-.\" You should be able to diff this version against theirs to see what I
-.\" have changed.
-.\" Warren Toomey
-.\"
-.\" Copyright (c) 1987, 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)ctags.1 6.8 (Berkeley) 4/24/91
-.\"
-.Dd April 24, 1991
-.Dt CTAGS 1
-.Os BSD 4
-.Sh NAME
-.Nm ctags-new
-.Nd create a tags file
-.Sh SYNOPSIS
-.Nm ctags-new
-.Op Fl BFadtuwvx
-.Op Fl f Ar tagsfile
-.Ar name ...
-.Sh DESCRIPTION
-.Nm Ctags-new
-makes a tags file for
-.Xr ex 1
-from the specified C,
-Pascal, Fortran,
-.Tn YACC ,
-lex, and lisp sources. A tags file gives the
-locations of specified objects in a group of files. Each line of the
-tags file contains the object name, the file in which it is defined,
-and a search pattern for the object definition, separated by white-space.
-Using the
-.Ar tags
-file,
-.Xr ex 1
-can quickly locate these object
-definitions. Depending on the options provided to
-.Nm ctags-new ,
-objects will consist of subroutines, typedefs, defines, structs,
-enums and unions.
-.Bl -tag -width Ds
-.It Fl B
-use backward searching patterns
-.Pq Li ?...? .
-.It Fl F
-use forward searching patterns
-.Pq Li /.../
-(the default).
-.It Fl a
-append to
-.Ar tags
-file.
-.It Fl d
-create tags for
-.Li #defines
-that don't take arguments;
-.Li #defines
-that take arguments are tagged automatically.
-.It Fl f
-Places the tag descriptions in a file called
-.Ar tagsfile .
-The default behaviour is to place them in a file
-.Ar tags .
-.It Fl t
-create tags for typedefs, structs, unions, and enums.
-.It Fl u
-update the specified files in the
-.Ar tags
-file, that is, all
-references to them are deleted, and the new values are appended to the
-file. (Beware: this option is implemented in a way which is rather
-slow; it is usually faster to simply rebuild the
-.Ar tags
-file.)
-.It Fl v
-An index of the form expected by
-.Xr vgrind 1
-is produced on the standard output. This listing
-contains the object name, file name, and page number (assuming 64
-line pages). Since the output will be sorted into lexicographic order,
-it may be desired to run the output through
-.Xr sort 1 .
-Sample use:
-.Bd -literal -offset indent
-ctags-new \-v files \&| sort \-f > index
-vgrind \-x index
-.Ed
-.It Fl y
-Yet another output format. This produces lines with the information:
-symbol, line number, file name, type of symbol, each separated by whitespace.
-This is used by the
-.Xr src2html 1L
-program.
-.It Fl w
-suppress warning diagnostics.
-.It Fl x
-.Nm ctags-new
-produces a list of object
-names, the line number and file name on which each is defined, as well
-as the text of that line and prints this on the standard output. This
-is a simple index which can be printed out as an off-line readable
-function index.
-.El
-.Pp
-Files whose names end in
-.Nm \&.c
-or
-.Nm \&.h
-are assumed to be C
-source files and are searched for C style routine and macro definitions.
-Files whose names end in
-.Nm \&.y
-are assumed to be
-.Tn YACC
-source files.
-Files whose names end in
-.Nm \&.l
-are assumed to be lisp files if their
-first non-blank character is `;', `(', or `[',
-otherwise, they are
-treated as lex files. Other files are first examined to see if they
-contain any Pascal or Fortran routine definitions, and, if not, are
-searched for C style definitions.
-.Pp
-The tag
-.Li main
-is treated specially in C programs. The tag formed
-is created by prepending
-.Ar M
-to the name of the file, with the
-trailing
-.Nm \&.c
-and any leading pathname components removed. This
-makes use of
-.Nm ctags-new
-practical in directories with more than one
-program.
-.Pp
-Yacc and lex files each have a special tag.
-.Ar Yyparse
-is the start
-of the second section of the yacc file, and
-.Ar yylex
-is the start of
-the second section of the lex file.
-.Sh FILES
-.Bl -tag -width tags -compact
-.It Pa tags
-default output tags file
-.El
-.Sh DIAGNOSTICS
-.Nm Ctags-new
-exits with a value of 1 if an error occurred, where
-duplicate objects are not considered errors, 0 otherwise.
-.Sh SEE ALSO
-.Xr ex 1 ,
-.Xr vi 1
-.Sh BUGS
-Recognition of
-.Nm functions ,
-.Nm subroutines
-and
-.Nm procedures
-for
-.Tn FORTRAN
-and Pascal is done is a very simpleminded way. No attempt
-is made to deal with block structure; if you have two Pascal procedures
-in different blocks with the same name you lose.
-.Nm Ctags-new
-doesn't
-understand about Pascal types.
-.Pp
-The method of deciding whether to look for C, Pascal or
-.Tn FORTRAN
-functions is a hack.
-.Pp
-.Nm Ctags-new
-relies on the input being well formed, and any syntactical
-errors will completely confuse it. It also finds some legal syntax
-confusing; for example, as it doesn't understand
-.Li #ifdef Ns 's ,
-(incidentally, that's a feature, not a bug) any code with unbalanced
-braces inside
-.Li #ifdef Ns 's
-will cause it to become somewhat disoriented.
-In a similar fashion, multiple line changes within a definition will
-cause it to enter the last line of the object, rather than the first, as
-the searching pattern. The last line of multiple line
-.Li typedef Ns 's
-will similarly be noted.
-.Sh HISTORY
-The
-.Nm
-command appeared in
-.Bx 3.0 .
diff --git a/doc/tools/src2html1.4a/Ctags/ctags.c b/doc/tools/src2html1.4a/Ctags/ctags.c
deleted file mode 100644
index 08d01a2ba0..0000000000
--- a/doc/tools/src2html1.4a/Ctags/ctags.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (c) 1987 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-char copyright[] =
-"@(#) Copyright (c) 1987 The Regents of the University of California.\n\
- All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)ctags.c 5.8 (Berkeley) 2/26/91";
-#endif /* not lint */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "ctags.h"
-
-/*
- * ctags: create a tags file
- */
-
-NODE *head; /* head of the sorted binary tree */
-
- /* boolean "func" (see init()) */
-bool _wht[0177],_etk[0177],_itk[0177],_btk[0177],_gd[0177];
-
-FILE *inf, /* ioptr for current input file */
- *outf; /* ioptr for tags file */
-
-long lineftell; /* ftell after getc( inf ) == '\n' */
-
-int lineno, /* line number of current line */
- dflag, /* -d: non-macro defines */
- tflag, /* -t: create tags for typedefs */
- wflag, /* -w: suppress warnings */
- vflag, /* -v: vgrind style index output */
- xflag, /* -x: cxref style output */
- yflag; /* -y: yet another style output */
-
-char *curfile, /* current input file name */
- searchar = '/', /* use /.../ searches by default */
- lbuf[BUFSIZ];
-
-main(argc,argv)
- int argc;
- char **argv;
-{
- extern char *optarg; /* getopt arguments */
- extern int optind;
- static char *outfile = "tags"; /* output file */
- int aflag, /* -a: append to tags */
- uflag, /* -u: update tags */
- exit_val, /* exit value */
- step, /* step through args */
- ch; /* getopts char */
- char cmd[100]; /* too ugly to explain */
-
- aflag = uflag = NO;
- while ((ch = getopt(argc,argv,"BFadf:tuwvxy")) != EOF)
- switch((char)ch) {
- case 'B':
- searchar = '?';
- break;
- case 'F':
- searchar = '/';
- break;
- case 'a':
- aflag++;
- break;
- case 'd':
- dflag++;
- break;
- case 'f':
- outfile = optarg;
- break;
- case 't':
- tflag++;
- break;
- case 'u':
- uflag++;
- break;
- case 'w':
- wflag++;
- break;
- case 'v':
- vflag++;
- case 'x':
- xflag++;
- break;
- case 'y':
- yflag++;
- break;
- case '?':
- default:
- goto usage;
- }
- argv += optind;
- argc -= optind;
- if (!argc) {
-usage: puts("Usage: ctags [-BFadtuwvx] [-f tagsfile] file ...");
- exit(1);
- }
-
- init();
-
- for (exit_val = step = 0;step < argc;++step)
- if (!(inf = fopen(argv[step],"r"))) {
- perror(argv[step]);
- exit_val = 1;
- }
- else {
- curfile = argv[step];
- find_entries(argv[step]);
- (void)fclose(inf);
- }
-
- if (head)
- if (xflag)
- put_entries(head);
- else {
- if (uflag) {
- for (step = 0;step < argc;step++) {
- (void)sprintf(cmd,"mv %s OTAGS;fgrep -v '\t%s\t' OTAGS >%s;rm OTAGS",outfile,argv[step],outfile);
- system(cmd);
- }
- ++aflag;
- }
- if (!(outf = fopen(outfile, aflag ? "a" : "w"))) {
- perror(outfile);
- exit(exit_val);
- }
- put_entries(head);
- (void)fclose(outf);
- if (uflag) {
- (void)sprintf(cmd,"sort %s -o %s",outfile,outfile);
- system(cmd);
- }
- }
- exit(exit_val);
-}
-
-/*
- * init --
- * this routine sets up the boolean psuedo-functions which work by
- * setting boolean flags dependent upon the corresponding character.
- * Every char which is NOT in that string is false with respect to
- * the pseudo-function. Therefore, all of the array "_wht" is NO
- * by default and then the elements subscripted by the chars in
- * CWHITE are set to YES. Thus, "_wht" of a char is YES if it is in
- * the string CWHITE, else NO.
- */
-init()
-{
- register int i;
- register char *sp;
-
- for (i = 0; i < 0177; i++) {
- _wht[i] = _etk[i] = _itk[i] = _btk[i] = NO;
- _gd[i] = YES;
- }
-#define CWHITE " \f\t\n"
- for (sp = CWHITE; *sp; sp++) /* white space chars */
- _wht[*sp] = YES;
-#define CTOKEN " \t\n\"'#()[]{}=-+%*/&|^~!<>;,.:?"
- for (sp = CTOKEN; *sp; sp++) /* token ending chars */
- _etk[*sp] = YES;
-#define CINTOK "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz0123456789"
- for (sp = CINTOK; *sp; sp++) /* valid in-token chars */
- _itk[*sp] = YES;
-#define CBEGIN "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
- for (sp = CBEGIN; *sp; sp++) /* token starting chars */
- _btk[*sp] = YES;
-#define CNOTGD ",;"
- for (sp = CNOTGD; *sp; sp++) /* invalid after-function chars */
- _gd[*sp] = NO;
-}
-
-/*
- * find_entries --
- * this routine opens the specified file and calls the function
- * which searches the file.
- */
-find_entries(file)
- char *file;
-{
- register char *cp;
-
- lineno = 0; /* should be 1 ?? KB */
- if (cp = rindex(file, '.')) {
- if (cp[1] == 'l' && !cp[2]) {
- register int c;
-
- for (;;) {
- if (GETC(==,EOF))
- return;
- if (!iswhite(c)) {
- rewind(inf);
- break;
- }
- }
-#define LISPCHR ";(["
-/* lisp */ if (index(LISPCHR,(char)c)) {
- l_entries();
- return;
- }
-/* lex */ else {
- /*
- * we search all 3 parts of a lex file
- * for C references. This may be wrong.
- */
- toss_yysec();
- (void)strcpy(lbuf,"%%$");
- pfnote("yylex",lineno);
- rewind(inf);
- }
- }
-/* yacc */ else if (cp[1] == 'y' && !cp[2]) {
- /*
- * we search only the 3rd part of a yacc file
- * for C references. This may be wrong.
- */
- toss_yysec();
- (void)strcpy(lbuf,"%%$");
- pfnote("yyparse",lineno);
- y_entries();
- }
-/* fortran */ else if ((cp[1] != 'c' && cp[1] != 'h') && !cp[2]) {
- if (PF_funcs())
- return;
- rewind(inf);
- }
- }
-/* C */ c_entries();
-}
diff --git a/doc/tools/src2html1.4a/Ctags/ctags.h b/doc/tools/src2html1.4a/Ctags/ctags.h
deleted file mode 100644
index 7b28018714..0000000000
--- a/doc/tools/src2html1.4a/Ctags/ctags.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 1987 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)ctags.h 5.4 (Berkeley) 2/26/91
- */
-
-#include <strings.h>
-#define bool char
-
-#define YES 1
-#define NO 0
-#define EOS '\0'
-
-#define ENDLINE 50 /* max length of pattern */
-#define MAXTOKEN 250 /* max size of single token */
-
-#define SETLINE {++lineno;lineftell = ftell(inf);}
-#define GETC(op,exp) ((c = getc(inf)) op (int)exp)
-
-#define iswhite(arg) (_wht[arg]) /* T if char is white */
-#define begtoken(arg) (_btk[arg]) /* T if char can start token */
-#define intoken(arg) (_itk[arg]) /* T if char can be in token */
-#define endtoken(arg) (_etk[arg]) /* T if char ends tokens */
-#define isgood(arg) (_gd[arg]) /* T if char can be after ')' */
-
- /* Symbol types */
-#define SY_MAC 1 /* Preprocessor Macros */
-#define SY_DEF 2 /* Preprocessor Defines */
-#define SY_FUN 3 /* C Functions */
-#define SY_VAR 4 /* C Variables */
-#define SY_STR 5 /* C Structs */
-#define SY_UNI 6 /* C Unions */
-#define SY_TYP 7 /* C Typedefs */
-#define SY_ENU 8 /* C Enums */
-
-typedef struct nd_st { /* sorting structure */
- struct nd_st *left,
- *right; /* left and right sons */
- char *entry, /* function or type name */
- *file, /* file name */
- *pat; /* search pattern */
- int symbtype; /* Type of symbol */
- int lno; /* for -x option */
- bool been_warned; /* set if noticed dup */
-} NODE;
-
-extern FILE *inf; /* ioptr for current input file */
-extern long lineftell; /* ftell after getc( inf ) == '\n' */
-extern int lineno, /* line number of current line */
- xflag; /* -x: cxref style output */
-extern bool _wht[0177],_etk[0177],_itk[0177],_btk[0177],_gd[0177];
-extern char lbuf[BUFSIZ];
diff --git a/doc/tools/src2html1.4a/Ctags/fortran.c b/doc/tools/src2html1.4a/Ctags/fortran.c
deleted file mode 100644
index 025a204b6b..0000000000
--- a/doc/tools/src2html1.4a/Ctags/fortran.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 1987 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)fortran.c 5.5 (Berkeley) 2/26/91";
-#endif /* not lint */
-
-#include <stdio.h>
-#include <string.h>
-#include "ctags.h"
-
-static void takeprec();
-
-char *lbp; /* line buffer pointer */
-
-PF_funcs()
-{
- register bool pfcnt; /* pascal/fortran functions found */
- register char *cp;
- char tok[MAXTOKEN],
- *gettoken();
-
- for (pfcnt = NO;;) {
- lineftell = ftell(inf);
- if (!fgets(lbuf,sizeof(lbuf),inf))
- return(pfcnt);
- ++lineno;
- lbp = lbuf;
- if (*lbp == '%') /* Ratfor escape to fortran */
- ++lbp;
- for (;isspace(*lbp);++lbp);
- if (!*lbp)
- continue;
- switch (*lbp | ' ') { /* convert to lower-case */
- case 'c':
- if (cicmp("complex") || cicmp("character"))
- takeprec();
- break;
- case 'd':
- if (cicmp("double")) {
- for (;isspace(*lbp);++lbp);
- if (!*lbp)
- continue;
- if (cicmp("precision"))
- break;
- continue;
- }
- break;
- case 'i':
- if (cicmp("integer"))
- takeprec();
- break;
- case 'l':
- if (cicmp("logical"))
- takeprec();
- break;
- case 'r':
- if (cicmp("real"))
- takeprec();
- break;
- }
- for (;isspace(*lbp);++lbp);
- if (!*lbp)
- continue;
- switch (*lbp | ' ') {
- case 'f':
- if (cicmp("function"))
- break;
- continue;
- case 'p':
- if (cicmp("program") || cicmp("procedure"))
- break;
- continue;
- case 's':
- if (cicmp("subroutine"))
- break;
- default:
- continue;
- }
- for (;isspace(*lbp);++lbp);
- if (!*lbp)
- continue;
- for (cp = lbp + 1;*cp && intoken(*cp);++cp);
- if (cp = lbp + 1)
- continue;
- *cp = EOS;
- (void)strcpy(tok,lbp);
- getline(); /* process line for ex(1) */
- pfnote(tok,lineno);
- pfcnt = YES;
- }
- /*NOTREACHED*/
-}
-
-/*
- * cicmp --
- * do case-independent strcmp
- */
-cicmp(cp)
- register char *cp;
-{
- register int len;
- register char *bp;
-
- for (len = 0,bp = lbp;*cp && (*cp &~ ' ') == (*bp++ &~ ' ');
- ++cp,++len);
- if (!*cp) {
- lbp += len;
- return(YES);
- }
- return(NO);
-}
-
-static void
-takeprec()
-{
- for (;isspace(*lbp);++lbp);
- if (*lbp == '*') {
- for (++lbp;isspace(*lbp);++lbp);
- if (!isdigit(*lbp))
- --lbp; /* force failure */
- else
- while (isdigit(*++lbp));
- }
-}
diff --git a/doc/tools/src2html1.4a/Ctags/lisp.c b/doc/tools/src2html1.4a/Ctags/lisp.c
deleted file mode 100644
index 652313d4fe..0000000000
--- a/doc/tools/src2html1.4a/Ctags/lisp.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 1987 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)lisp.c 5.5 (Berkeley) 2/26/91";
-#endif /* not lint */
-
-#include <stdio.h>
-#include <string.h>
-#include "ctags.h"
-
-extern char *lbp; /* pointer shared with fortran */
-
-/*
- * lisp tag functions
- * just look for (def or (DEF
- */
-l_entries()
-{
- register int special;
- register char *cp,
- savedc;
- char tok[MAXTOKEN];
-
- for (;;) {
- lineftell = ftell(inf);
- if (!fgets(lbuf,sizeof(lbuf),inf))
- return;
- ++lineno;
- lbp = lbuf;
- if (!cicmp("(def"))
- continue;
- special = NO;
- switch(*lbp | ' ') {
- case 'm':
- if (cicmp("method"))
- special = YES;
- break;
- case 'w':
- if (cicmp("wrapper") || cicmp("whopper"))
- special = YES;
- }
- for (;!isspace(*lbp);++lbp);
- for (;isspace(*lbp);++lbp);
- for (cp = lbp;*cp && *cp != '\n';++cp);
- *cp = EOS;
- if (special) {
- if (!(cp = index(lbp,')')))
- continue;
- for (;cp >= lbp && *cp != ':';--cp);
- if (cp < lbp)
- continue;
- lbp = cp;
- for (;*cp && *cp != ')' && *cp != ' ';++cp);
- }
- else
- for (cp = lbp + 1;
- *cp && *cp != '(' && *cp != ' ';++cp);
- savedc = *cp;
- *cp = EOS;
- (void)strcpy(tok,lbp);
- *cp = savedc;
- getline();
- pfnote(tok,lineno);
- }
- /*NOTREACHED*/
-}
diff --git a/doc/tools/src2html1.4a/Ctags/print.c b/doc/tools/src2html1.4a/Ctags/print.c
deleted file mode 100644
index 1c1c545ab6..0000000000
--- a/doc/tools/src2html1.4a/Ctags/print.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 1987 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)print.c 5.4 (Berkeley) 2/26/91";
-#endif /* not lint */
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ctags.h"
-
-extern char searchar; /* ex search character */
-
-/*
- * getline --
- * get the line the token of interest occurred on,
- * prepare it for printing.
- */
-getline()
-{
- register long saveftell;
- register int c,
- cnt;
- register char *cp;
-
- saveftell = ftell(inf);
- (void)fseek(inf,lineftell,SEEK_SET);
- if (xflag)
- for (cp = lbuf;GETC(!=,'\n');*cp++ = c);
- /*
- * do all processing here, so we don't step through the
- * line more than once; means you don't call this routine
- * unless you're sure you've got a keeper.
- */
- else for (cnt = 0,cp = lbuf;GETC(!=,EOF) && cnt < ENDLINE;++cnt) {
- if (c == (int)'\\') { /* backslashes */
- if (cnt > ENDLINE - 2)
- break;
- *cp++ = '\\'; *cp++ = '\\';
- ++cnt;
- }
- else if (c == (int)searchar) { /* search character */
- if (cnt > ENDLINE - 2)
- break;
- *cp++ = '\\'; *cp++ = c;
- ++cnt;
- }
- else if (c == (int)'\n') { /* end of keep */
- *cp++ = '$'; /* can find whole line */
- break;
- }
- else
- *cp++ = c;
- }
- *cp = EOS;
- (void)fseek(inf,saveftell,SEEK_SET);
-}
-
-char *symtype[]= {
- "Unknown",
- "Preprocessor macro",
- "Preprocessor define",
- "C function",
- "C variable",
- "C struct",
- "C union",
- "C typedef",
- "C enum"
-};
-
-/*
- * put_entries --
- * write out the tags
- */
-put_entries(node)
- register NODE *node;
-{
- extern FILE *outf; /* ioptr for tags file */
- extern int vflag; /* -v: vgrind style output */
- extern int yflag; /* -y: yet another style output */
-
- if (node->left)
- put_entries(node->left);
- if (vflag)
- printf("%s %s %d\n",
- node->entry,node->file,(node->lno + 63) / 64);
- else if (xflag)
- printf("%-16s %4d %-16s %s\n",
- node->entry,node->lno,node->file,node->pat);
- else if (yflag)
- printf("%-16s %4d %-16s %s\n",
- node->entry,node->lno,node->file,symtype[node->symbtype]);
- else
- fprintf(outf,"%s\t%s\t%c^%s%c\n",
- node->entry,node->file,searchar,node->pat,searchar);
- if (node->right)
- put_entries(node->right);
-}
diff --git a/doc/tools/src2html1.4a/Ctags/strerror.c b/doc/tools/src2html1.4a/Ctags/strerror.c
deleted file mode 100644
index 7a82b869bf..0000000000
--- a/doc/tools/src2html1.4a/Ctags/strerror.c
+++ /dev/null
@@ -1,6 +0,0 @@
-char *strerror(i)
- int i;
- {
- extern char *sys_errlist[];
- return sys_errlist[i];
- }
diff --git a/doc/tools/src2html1.4a/Ctags/tree.c b/doc/tools/src2html1.4a/Ctags/tree.c
deleted file mode 100644
index e82c72c404..0000000000
--- a/doc/tools/src2html1.4a/Ctags/tree.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 1987 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)tree.c 5.5 (Berkeley) 2/26/91";
-#endif /* not lint */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ctags.h"
-
-/*
- * pfnote --
- * enter a new node in the tree
- */
-pfnote(name,ln,type)
- char *name;
- int ln;
- int type;
-{
- extern NODE *head; /* head of the sorted binary tree */
- extern char *curfile; /* current input file name */
- register NODE *np;
- register char *fp;
- char nbuf[MAXTOKEN];
-
- /*NOSTRICT*/
- if (!(np = (NODE *)malloc(sizeof(NODE)))) {
- fputs("ctags: too many entries to sort\n",stderr);
- put_entries(head);
- free_tree(head);
- /*NOSTRICT*/
- if (!(head = np = (NODE *)malloc(sizeof(NODE)))) {
- fputs("ctags: out of space.\n",stderr);
- exit(1);
- }
- }
- if (!xflag && !strcmp(name,"main")) {
- if (!(fp = rindex(curfile,'/')))
- fp = curfile;
- else
- ++fp;
- (void)sprintf(nbuf,"M%s",fp);
- fp = rindex(nbuf,'.');
- if (fp && !fp[2])
- *fp = EOS;
- name = nbuf;
- }
- if (!(np->entry = strdup(name))) {
- (void)fprintf(stderr, "ctags: %s\n", strerror(errno));
- exit(1);
- }
- np->file = curfile;
- np->lno = ln; np->symbtype= type;
- np->left = np->right = 0;
- if (!(np->pat = strdup(lbuf))) {
- (void)fprintf(stderr, "ctags: %s\n", strerror(errno));
- exit(1);
- }
- if (!head)
- head = np;
- else
- add_node(np,head);
-}
-
-add_node(node,cur_node)
- register NODE *node,
- *cur_node;
-{
- extern int wflag; /* -w: suppress warnings */
- register int dif;
-
- dif = strcmp(node->entry,cur_node->entry);
- if (!dif) {
- if (node->file == cur_node->file) {
- if (!wflag)
- fprintf(stderr,"Duplicate entry in file %s, line %d: %s\nSecond entry ignored\n",node->file,lineno,node->entry);
- return;
- }
- if (!cur_node->been_warned)
- if (!wflag)
- fprintf(stderr,"Duplicate entry in files %s and %s: %s (Warning only)\n",node->file,cur_node->file,node->entry);
- cur_node->been_warned = YES;
- }
- else if (dif < 0)
- if (cur_node->left)
- add_node(node,cur_node->left);
- else
- cur_node->left = node;
- else if (cur_node->right)
- add_node(node,cur_node->right);
- else
- cur_node->right = node;
-}
-
-free_tree(node)
- register NODE *node;
-{
- NODE *nl;
- while (node) {
- if (node->right)
- free_tree(node->right);
- nl= node->left; free(node);
- node = nl;
- }
-}
diff --git a/doc/tools/src2html1.4a/Ctags/yacc.c b/doc/tools/src2html1.4a/Ctags/yacc.c
deleted file mode 100644
index f073f2bb7c..0000000000
--- a/doc/tools/src2html1.4a/Ctags/yacc.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 1987 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)yacc.c 5.6 (Berkeley) 2/26/91";
-#endif /* not lint */
-
-#include <stdio.h>
-#include <string.h>
-#include "ctags.h"
-
-/*
- * y_entries:
- * find the yacc tags and put them in.
- */
-y_entries()
-{
- register int c;
- register char *sp;
- register bool in_rule;
- char tok[MAXTOKEN];
-
- while (GETC(!=,EOF))
- switch ((char)c) {
- case '\n':
- SETLINE;
- /* FALLTHROUGH */
- case ' ':
- case '\f':
- case '\r':
- case '\t':
- break;
- case '{':
- if (skip_key((int)'}'))
- in_rule = NO;
- break;
- case '\'':
- case '"':
- if (skip_key(c))
- in_rule = NO;
- break;
- case '%':
- if (GETC(==,'%'))
- return;
- (void)ungetc(c,inf);
- break;
- case '/':
- if (GETC(==,'*'))
- skip_comment();
- else
- (void)ungetc(c,inf);
- break;
- case '|':
- case ';':
- in_rule = NO;
- break;
- default:
- if (in_rule || !isalpha(c) && c != (int)'.'
- && c != (int)'_')
- break;
- sp = tok;
- *sp++ = c;
- while (GETC(!=,EOF) && (intoken(c) || c == (int)'.'))
- *sp++ = c;
- *sp = EOS;
- getline(); /* may change before ':' */
- while (iswhite(c)) {
- if (c == (int)'\n')
- SETLINE;
- if (GETC(==,EOF))
- return;
- }
- if (c == (int)':') {
- pfnote(tok,lineno);
- in_rule = YES;
- }
- else
- (void)ungetc(c,inf);
- }
-}
-
-/*
- * toss_yysec --
- * throw away lines up to the next "\n%%\n"
- */
-toss_yysec()
-{
- register int c, /* read character */
- state;
-
- /*
- * state == 0 : waiting
- * state == 1 : received a newline
- * state == 2 : received first %
- * state == 3 : recieved second %
- */
- lineftell = ftell(inf);
- for (state = 0;GETC(!=,EOF);)
- switch ((char)c) {
- case '\n':
- ++lineno;
- lineftell = ftell(inf);
- if (state == 3) /* done! */
- return;
- state = 1; /* start over */
- break;
- case '%':
- if (state) /* if 1 or 2 */
- ++state; /* goto 3 */
- break;
- default:
- state = 0; /* reset */
- }
-}
diff --git a/doc/tools/src2html1.4a/Ctags/z.c b/doc/tools/src2html1.4a/Ctags/z.c
deleted file mode 100644
index 4c90e6ec95..0000000000
--- a/doc/tools/src2html1.4a/Ctags/z.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#define fred 23
-#define jim(a) (a+2)
-
-int helo;
-
-struct thing {
- int v;
-} doris;
-
-union what {
- int v;
- char q;
-} mary;
-
-enum thinddd { 1,2,3,4,5 } zoo;
-
-typedef unsigned int uinty;
-
-int rain()
- { printf("Hello world\n"); }
diff --git a/doc/tools/src2html1.4a/FreeBSD/FreeBSD.hdr b/doc/tools/src2html1.4a/FreeBSD/FreeBSD.hdr
deleted file mode 100644
index 6c2f8e185c..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/FreeBSD.hdr
+++ /dev/null
@@ -1,25 +0,0 @@
-Welcome to the hyperlinked source code tree for FreeBSD-2.1.0. This is an
-attempt at a WWW document that allows you to find functions, structs
-etc. in the FreeBSD source code by name.<p>
-
-If you are interested in a particular type of symbols (e.g functions), use
-the type links below. If you are interested in a particular directory in
-FreeBSD, choose the directory link below.<p>
-
-Follow the links until you reach the source code you are interested in.<p>
-
-<h3>Bugs and Missing Features</h3>
-
-I am using ctags and perl to find the symbols and produce the html documents.
-My parsing of the ctags output (especially for variables) seems slightly
-wrong. I'd appreciate a better way of doing things.<p>
-
-The final code should have hyperlinks that allow you to follow references
-to other symbols in the tree (e.g calls to bread() etc). This is difficult
-given C's scoping rules, and I don't want to write a C grammar parser.
-Until I can think of a clean way, I'll omit the desired hyperlinks.<p>
-
-<author>
-<a href="http://minnie.cs.adfa.oz.au/warren.html">Warren Toomey</a>
-wkt@cs.adfa.oz.au, January 1996
-</author>
diff --git a/doc/tools/src2html1.4a/FreeBSD/FreeBSD.s2h b/doc/tools/src2html1.4a/FreeBSD/FreeBSD.s2h
deleted file mode 100644
index 925eefeb58..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/FreeBSD.s2h
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-#
-# Input description for the FreeBSD 2.1.0 source tree
-# Place this file and all the .hdr files in a directory,
-# cd into that directory, and say `src2html FreeBSD.s2h'.
-#
-set Formdir /cgi-bin
-set Htmldir FreeBSD-srctree
-set Htmlroot .
-set Newsrctree newsrc
-set Srctree sys
-#
-dir conf Kernel configuration parameters
-dir ddb Kernel debugging routines
-dir dev/aic7xxx Adaptec AIC7770/AIC7870 sequencer code
-dir dev/vn Vnode disk driver
-dir gnu/i386/fpemul GNU's i387 floating point emulator
-dir gnu/i386/isa Device drivers with GNU licensing
-dir gnu/isdn An ISDN driver
-dir i386/apm i386-specific power management
-dir i386/apm/apm_init i386-specific power management
-dir i386/boot/biosboot i386-specific boot code
-dir i386/boot/dosboot i386-specific boot code
-dir i386/boot/kzipboot i386-specific boot code
-dir i386/boot/netboot i386-specific boot code
-dir i386/eisa Device drivers for peripherals on the EISA bus
-dir i386/i386 i386-specific code
-dir i386/ibcs2 Intel Unix Binary Compatibility code
-dir i386/include i386-specific C-language include files
-dir i386/include/pc i386-specific C-language include files
-dir i386/isa Device drivers for peripherals on the ISA bus
-dir i386/isa/ic Device drivers for peripherals on the ISA bus
-dir i386/isa/matcd Matsushita device driver
-dir i386/isa/pcvt VT-220 emulation code
-dir i386/isa/sound Device drivers for sound peripherals on the ISA bus
-dir i386/linux Linux binaries support
-dir i386/scsi Device drivers for SCSI peripherals on the ISA bus
-dir isofs/cd9660 ISO CD9660 file-system code
-dir kern The core OS routines: processes, scheduling, syscalls
-dir libkern The kernel library
-dir miscfs/deadfs Miscellaneous file systems
-dir miscfs/devfs Miscellaneous file systems
-dir miscfs/fdesc Miscellaneous file systems
-dir miscfs/fifofs Miscellaneous file systems
-dir miscfs/kernfs Miscellaneous file systems
-dir miscfs/nullfs Miscellaneous file systems
-dir miscfs/portal Miscellaneous file systems
-dir miscfs/procfs Miscellaneous file systems
-dir miscfs/specfs Miscellaneous file systems
-dir miscfs/umapfs Miscellaneous file systems
-dir miscfs/union Miscellaneous file systems
-dir msdosfs The MS-DOS file system code
-dir net Routing and general network interfaces
-dir netccitt CCITT Networking code
-dir netinet Internet protocols
-dir netiso ISO Networking code
-dir netiso/xebec ISO Networking code
-dir netns Xerox NS Networking code
-dir nfs The Network File System
-dir pccard Interface code for PC-CARD controllers.
-dir pci Device drivers for peripherals on the PCI bus
-dir scsi Device drivers for peripherals on the SCSI bus
-dir sys Widely used C-language include files
-dir ufs/ffs The Berkeley Fast Filesystem
-dir ufs/lfs The Log Filesystem
-dir ufs/mfs The Memory Filesystem
-dir ufs/ufs The Unix Filesystem
-dir vm The Virtual Memory Management subsystem
diff --git a/doc/tools/src2html1.4a/FreeBSD/conf.hdr b/doc/tools/src2html1.4a/FreeBSD/conf.hdr
deleted file mode 100644
index 103742dbe2..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/conf.hdr
+++ /dev/null
@@ -1,9 +0,0 @@
-The <tt>conf</tt> directory holds miscellaneous files, such as the list of
-files which are needed/optional in the OS. The main file of concern is
-<tt>param.c</tt>, which describes the system-dependent configuration
-parameters of FreeBSD.
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-doesn't really cover this directory. It is vaguely covered in Chapter 8 of
-the "System Performance Tuning" Nutshell book by Mike Loukides.
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/ddb.hdr b/doc/tools/src2html1.4a/FreeBSD/ddb.hdr
deleted file mode 100644
index 2882f3dfa8..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/ddb.hdr
+++ /dev/null
@@ -1,6 +0,0 @@
-The <tt>ddb</tt> directory holds routines used to debug the kernel.
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-doesn't really cover this directory. However, some information has been
-presented by Kirk KcKusick and Keith Bostic in their "UNIX Kernel Internals"
-notes, which they have presented in many places in the past few years.
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/i386.i386.hdr b/doc/tools/src2html1.4a/FreeBSD/i386.i386.hdr
deleted file mode 100644
index 72ea58d1f1..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/i386.i386.hdr
+++ /dev/null
@@ -1,5 +0,0 @@
-The <tt>i386/i386</tt> directory holds the routines that deal with the Intel
-386/486 CPU in the PC architecture.
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-doesn't describe this anywhere at all, because this is machine-specific.
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/i386.include.hdr b/doc/tools/src2html1.4a/FreeBSD/i386.include.hdr
deleted file mode 100644
index 7acfb0ec1b..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/i386.include.hdr
+++ /dev/null
@@ -1,5 +0,0 @@
-The <tt>i386/include</tt> directory holds C-language include files that
-define things that are specific about the PC architecture.<p>
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-doesn't describe this anywhere at all. <p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/i386.isa.hdr b/doc/tools/src2html1.4a/FreeBSD/i386.isa.hdr
deleted file mode 100644
index ec13230f00..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/i386.isa.hdr
+++ /dev/null
@@ -1,10 +0,0 @@
-The <tt>i386/isa</tt> directory holds the routines that deal with the ISA
-I/O bus in the PC architecture.
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-doesn't describe this anywhere at all, because this is machine-specific.
-You can however glean some information from the following chapter:
-
-<dl>
-<dt> <b>Chapter 8</b>, pp 225-256 <i>Device Drivers</i>.
-</dl>
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/i386.stand.hdr b/doc/tools/src2html1.4a/FreeBSD/i386.stand.hdr
deleted file mode 100644
index c548c044b0..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/i386.stand.hdr
+++ /dev/null
@@ -1,14 +0,0 @@
-The <tt>i386/stand</tt> directory holds functions that are useful, but cannot
-be called from the kernel. For example printf() is great, but if the kernel
-called printf() it would generate a TRAP and wind up back in the kernel.<p>
-
-The functions here emulate these functions by dealing directly with the
-hardware on the system.<p>
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-covers machine-independent <tt>stand</tt> functionality in:
-
-<dl>
-<dt> <b>Chapter 13.2</b>, pg 394 <i>Bootstrapping</i>.
-</dl>
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/kern.hdr b/doc/tools/src2html1.4a/FreeBSD/kern.hdr
deleted file mode 100644
index f8ec13e4a1..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/kern.hdr
+++ /dev/null
@@ -1,18 +0,0 @@
-The <tt>kern</tt> directory holds the core functionality of FreeBSD:
-system startup, core system calls and syscall dispatching, process
-management, scheduling, signals, file descriptors, top-level filesystem
-code, interprocess communication and terminal handling.<p>
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-covers <tt>kern</tt> in:
-
-<dl>
-<dt> <b>Chapter 2</b>, pp 19-42 <i>Overview of the Kernel</i>.
-<dt> <b>Chapter 3</b>, pp 43-66 <i>Kernel Services</i>.
-<dt> <b>Chapter 4</b>, pp 69-108 <i>Process Management</i>.
-<dt> <b>Chapter 6</b>, pp 169-186 <i>I/O System Overview</i>.
-<dt> <b>Chapter 9</b>, pp 259-278 <i>Terminal Handling</i>.
-<dt> <b>Chapter 10</b>, pp 281-309 <i>Interprocess Communication</i>.
-<dt> <b>Chapter 13</b>, pp 393-411 <i>System Startup</i>.
-</dl>
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/net.hdr b/doc/tools/src2html1.4a/FreeBSD/net.hdr
deleted file mode 100644
index 59c1f67741..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/net.hdr
+++ /dev/null
@@ -1,11 +0,0 @@
-The <tt>net</tt> directory holds the network functionality of FreeBSD that
-deals with routing and generic interfaces: SLIP, PPP, Ethernet, packet
-filters.
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-covers <tt>kern</tt> in:
-
-<dl>
-<dt> <b>Chapter 11</b>, pp 311-341 <i>Network Communication</i>.
-</dl>
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/netinet.hdr b/doc/tools/src2html1.4a/FreeBSD/netinet.hdr
deleted file mode 100644
index 19cdffa577..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/netinet.hdr
+++ /dev/null
@@ -1,10 +0,0 @@
-The <tt>netinet</tt> directory holds the code for the Internet network
-protocols used in FreeBSD: TCP, IP, ICMP, ARP.<p>
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-covers <tt>netinet</tt> in:
-
-<dl>
-<dt> <b>Chapter 12</b>, pp 343-389 <i>Network Protocols</i>.
-</dl>
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/nfs.hdr b/doc/tools/src2html1.4a/FreeBSD/nfs.hdr
deleted file mode 100644
index f9aeab2bbb..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/nfs.hdr
+++ /dev/null
@@ -1,7 +0,0 @@
-The <tt>nfs</tt> directory holds the code for the Network File System.
-The code was developed from a specification of NFS from Sun Microsystems.<p>
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-doesn't cover <tt>nfs</tt>. You probably don't really want to delve into
-it too much, but there is an RFC around describing the protocol, but not
-the code here. <p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/stand.hdr b/doc/tools/src2html1.4a/FreeBSD/stand.hdr
deleted file mode 100644
index 9e7df8861f..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/stand.hdr
+++ /dev/null
@@ -1,14 +0,0 @@
-The <tt>stand</tt> directory holds functions that are useful, but cannot be
-called from the kernel. For example printf() is great, but if the kernel
-called printf() it would generate a TRAP and wind up back in the kernel.<p>
-
-The functions here emulate these functions by dealing directly with the
-hardware on the system.<p>
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-covers <tt>stand</tt> in:
-
-<dl>
-<dt> <b>Chapter 13.2</b>, pg 394 <i>Bootstrapping</i>.
-</dl>
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/sys.hdr b/doc/tools/src2html1.4a/FreeBSD/sys.hdr
deleted file mode 100644
index 2624741a87..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/sys.hdr
+++ /dev/null
@@ -1,6 +0,0 @@
-The <tt>sys</tt> directory holds C-language include files that are used
-by all parts of the FreeBSD source tree.<p>
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-doesn't cover these files specifically, but discussion of their contents
-crops up everywhere.<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/ufs.hdr b/doc/tools/src2html1.4a/FreeBSD/ufs.hdr
deleted file mode 100644
index 8cec8cddac..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/ufs.hdr
+++ /dev/null
@@ -1,10 +0,0 @@
-The <tt>ufs</tt> directory holds the code for the Berkeley Fast Filesystem,
-which is the filesystem used on locally mounted hard and floppy disks.<p>
-
-The 4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman
-covers <tt>ufs</tt> in:
-
-<dl>
-<dt> <b>Chapter 7</b>, pp 187-223 <i>The Filesystem</i>.
-</dl>
-<p>
diff --git a/doc/tools/src2html1.4a/FreeBSD/vm.hdr b/doc/tools/src2html1.4a/FreeBSD/vm.hdr
deleted file mode 100644
index 26205175a8..0000000000
--- a/doc/tools/src2html1.4a/FreeBSD/vm.hdr
+++ /dev/null
@@ -1,9 +0,0 @@
-The <tt>vm</tt> directory holds the virtual memory subsystem used by
-FreeBSD. This was derived from the VM system used in the Mach kernel,
-with the interface to the rest of the kernel rewritten. As such, it is
-not described in the
-4.3BSD Internals book by Leffler, McKusick, Karels and Quarterman,
-but it is described by Kirk KcKusick and Keith Bostic in their
-"UNIX Kernel Internals"
-notes, which they have presented in many places in the past few years.
-<p>
diff --git a/doc/tools/src2html1.4a/Readme b/doc/tools/src2html1.4a/Readme
deleted file mode 100644
index 2153411891..0000000000
--- a/doc/tools/src2html1.4a/Readme
+++ /dev/null
@@ -1,65 +0,0 @@
- src2html - Hyperlink a C source code tree using HTML, Version 1.3-alpha
-
- Warren Toomey wkt@cs.adfa.oz.au June 1995
-
-
-Src2html is a program which takes a C source tree and creates a set of
-HTML hypertext documents that allows the most important symbols in the
-source tree to be found easily. As well, a HTML version of the source
-tree is created, with the symbols given in bold font where they are defined
-in the source.
-
-
-REQUIREMENTS
-
-You will need:
-
- + Perl 4.x
- + a standard Unix sort(1) command.
- + a mkdir(1) that supports recursive creation of directories.
- src2html is configured to use `mkdir -p' to do this.
- + an egrep(1) if you're going to use the search facility.
- + httpd(1) if you're going to use the search facility.
- + Ctags-new, which is bundled with src2html, and a C compiler
- to compile it.
-
-
-INSTALLATION
-
-Extract the src2html archive, including the Ctags-new and Example directories;
-you probably have already done that. Go into the Ctags-new directory and make
-ctags-new. This should be very straight-forward.
-
-Install ctags-new and src2html in a directory on your path, make them
-executable and install their man pages as well. If your mkdir(1) uses a
-different option to -p, edit src2html to fix this.
-
-If you want to use the search facility, you need to install src2html.cgi
-in your httpd script directory, and edit it to reflect the root of your
-HTML documents, as set in DirectryRoot in conf/srm.conf.
-
-Make sure that ctags-new, src2html and src2html.cgi are executable, and
-that the latter two can find the Perl interpreter. Installation is complete.
-
-
-USING SRC2HTML
-
-Using src2html is pretty straight-forward. Print out and read the man page
-before trying anything. In the FreeBSD directory I have included the config
-file and header files for my src2html conversion of the FreeBSD-2.0.5 source
-tree; read the man page and FreeBSD/FreeBSD.s2h in tandem. The root document of
-this HTML tree is at http://minnie.cs.adfa.oz.au/FreeBSD-srctree/FreeBSD.html.
-
-
-COMMENTS AND QUESTIONS
-
-Surprisingly, src2html is reasonably fast even on large source trees. This was
-my first Perl program, so it could probably be made faster and smaller. I've
-placed comments in the source to give you an idea of what each section does. If
-you have any questions or comments, please email them to me at
-wkt@cs.adfa.oz.au. Now that it's finished I'm not that keen on overhauling it
-etc. I consider it as a good prototype. Getting inter-source hyperlinks done
-would be great, but I really don't want to write a C parser myself.
-
-Cheers,
- Warren Toomey
diff --git a/doc/tools/src2html1.4a/ctags-emacs/README b/doc/tools/src2html1.4a/ctags-emacs/README
deleted file mode 100644
index 83415c92f4..0000000000
--- a/doc/tools/src2html1.4a/ctags-emacs/README
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# $Id$
-#
-
-Included in this directory is a patch for the file lib-src/etags.c
-from emacs-20.2. This patch and the following instructions may
-or may not work for any other emacs version.
-
-mkdir work
-tar xzf ..../emacs-20.2.tar.gz
-cd emacs-20.2/lib-src
-patch <...../etags.c-ada-patch
-cd ../..
-mkdir build
-cd build
-../emacs-20.2/configure
-cd lib-src
-gmake ctags
-
-The ctags file in this directory is a pre-compiled binary.
diff --git a/doc/tools/src2html1.4a/ctags-emacs/ctags b/doc/tools/src2html1.4a/ctags-emacs/ctags
deleted file mode 100644
index 7fc51e6e9c..0000000000
--- a/doc/tools/src2html1.4a/ctags-emacs/ctags
+++ /dev/null
Binary files differ
diff --git a/doc/tools/src2html1.4a/ctags-emacs/etags.c-ada-patch b/doc/tools/src2html1.4a/ctags-emacs/etags.c-ada-patch
deleted file mode 100644
index 7f660ce864..0000000000
--- a/doc/tools/src2html1.4a/ctags-emacs/etags.c-ada-patch
+++ /dev/null
@@ -1,424 +0,0 @@
-*** etags.c.orig Wed Aug 6 02:09:19 1997
---- etags.c Wed Nov 5 13:30:11 1997
-***************
-*** 31,37 ****
- * Francesco Potorti` (F.Potorti@cnuce.cnr.it) is the current maintainer.
- */
-
-! char pot_etags_version[] = "@(#) pot revision number is 12.11";
-
- #define TRUE 1
- #define FALSE 0
---- 31,37 ----
- * Francesco Potorti` (F.Potorti@cnuce.cnr.it) is the current maintainer.
- */
-
-! char pot_etags_version[] = "@(#) pot revision number is 12.11/patched for Ada";
-
- #define TRUE 1
- #define FALSE 0
-***************
-*** 182,193 ****
---- 182,195 ----
- char *relative_filename (), *absolute_filename (), *absolute_dirname ();
- void grow_linebuffer ();
- long *xmalloc (), *xrealloc ();
-+ char *basename_no_extension ();
-
- typedef void Lang_function ();
- /* Many compilers barf on this:
- Lang_function Asm_labels;
- so let's write it this way */
- void Asm_labels ();
-+ void Ada_funcs ();
- void C_entries ();
- void default_C_entries ();
- void plain_C_entries ();
-***************
-*** 300,305 ****
---- 302,309 ----
- bool cxref_style; /* -x: create cxref style output */
- bool cplusplus; /* .[hc] means C++, not C */
- bool noindentypedefs; /* -I: ignore indentation in C */
-+ bool packages_only; /* -P: only ada packages */
-+ bool do_filename_tags; /* -F: insert a tag for the filename */
-
- #ifdef LONG_OPTIONS
- struct option longopts[] =
-***************
-*** 330,335 ****
---- 334,341 ----
- { "update", no_argument, NULL, 'u' },
- { "version", no_argument, NULL, 'V' },
- { "vgrind", no_argument, NULL, 'v' },
-+ { "packages-only", no_argument, NULL, 'P' },
-+ { "do-filename-tags", no_argument, NULL, 'F' },
- { 0 }
- };
- #endif /* LONG_OPTIONS */
-***************
-*** 371,376 ****
---- 377,386 ----
- NULL
- };
-
-+ /* Ada code */
-+ char *Ada_suffixes [] =
-+ { "ads", "adb", "ada", NULL };
-+
- /* Note that .c and .h can be considered C++, if the --c++ flag was
- given. That is why default_C_entries is called here. */
- char *default_C_suffixes [] =
-***************
-*** 445,450 ****
---- 455,461 ----
- struct lang_entry lang_names [] =
- {
- { "asm", Asm_labels, Asm_suffixes, NULL },
-+ { "Ada", Ada_funcs, Ada_suffixes, NULL },
- { "c", default_C_entries, default_C_suffixes, NULL },
- { "c++", Cplusplus_entries, Cplusplus_suffixes, NULL },
- { "c*", Cstar_entries, Cstar_suffixes, NULL },
-***************
-*** 609,614 ****
---- 620,631 ----
- which you like.");
- }
-
-+ puts ("-P, --packages-only\n\
-+ For Ada files, generates tags entries only for packages.");
-+
-+ puts ("-F, --do-filename-tags\n\
-+ Generates a tag entry with tagname being file basename without suffix.");
-+
- puts ("-V, --version\n\
- Print the version of the program.\n\
- -h, --help\n\
-***************
-*** 816,824 ****
- char *optstring;
-
- #ifdef ETAGS_REGEXPS
-! optstring = "-aCdDf:Il:o:r:RStTi:BuvxwVhH";
- #else
-! optstring = "-aCdDf:Il:o:StTi:BuvxwVhH";
- #endif /* ETAGS_REGEXPS */
-
- #ifndef LONG_OPTIONS
---- 833,841 ----
- char *optstring;
-
- #ifdef ETAGS_REGEXPS
-! optstring = "-aCdDf:Il:o:r:RStTi:BuvxwVhHPF";
- #else
-! optstring = "-aCdDf:Il:o:StTi:BuvxwVhHPF";
- #endif /* ETAGS_REGEXPS */
-
- #ifndef LONG_OPTIONS
-***************
-*** 892,897 ****
---- 909,923 ----
- case 'T':
- typedefs = typedefs_and_cplusplus = TRUE;
- break;
-+
-+ case 'P':
-+ packages_only++;
-+ break;
-+
-+ case 'F':
-+ do_filename_tags++;
-+ break;
-+
- #if (!CTAGS)
- /* Etags options */
- case 'i':
-***************
-*** 1169,1174 ****
---- 1195,1201 ----
- if (!CTAGS)
- {
- char *filename;
-+ char *tagfilename;
-
- if (absolutefn (file))
- {
-***************
-*** 1181,1186 ****
---- 1208,1220 ----
- to the directory of the tags file. */
- filename = relative_filename (file, tagfiledir);
- }
-+ if (do_filename_tags)
-+ {
-+ tagfilename = basename_no_extension(filename);
-+ pfnote(savestr(tagfilename), FALSE, tagfilename, 0, 1, 0);
-+ free (tagfilename);
-+ }
-+
- fprintf (tagf, "\f\n%s,%d\n", filename, total_size_of_entries (head));
- free (filename);
- put_entries (head);
-***************
-*** 2954,2959 ****
---- 2988,3198 ----
- C_entries (YACC, inf);
- }
-
-+ /* ada parsing */
-+
-+ char *adbp;
-+ int apfcnt;
-+
-+ void
-+ Ada_funcs(fi)
-+ FILE *fi;
-+ {
-+ int inquote;
-+
-+ inquote = 0;
-+ lineno = 0;
-+ charno = 0;
-+ apfcnt = 0;
-+
-+ while (!feof (fi))
-+ {
-+ if (adbp == NULL || *adbp == 0)
-+ {
-+ lineno++;
-+ linecharno = charno;
-+ charno += readline (&lb, fi) + 1;
-+ adbp = lb.buffer;
-+ }
-+ if (*adbp == '-')
-+ {
-+ adbp++ ;
-+ if (*adbp == '-')
-+ {
-+ while (*adbp)
-+ adbp++;
-+ continue;
-+ }
-+ }
-+ if (*adbp == '\'')
-+ {
-+ adbp++ ;
-+ if (*adbp) adbp++;
-+ continue;
-+ }
-+ if (inquote || (*adbp == '"'))
-+ {
-+ inquote = 1;
-+ adbp++ ;
-+ while (*adbp && *adbp != '"')
-+ adbp++;
-+ if (*adbp == '"')
-+ {
-+ adbp++;
-+ inquote = 0;
-+ }
-+ continue;
-+ }
-+ while (*adbp && !begtoken(*adbp))
-+ {
-+ if ((*adbp == '-') || (*adbp == '"') || (*adbp == '\''))
-+ break;
-+ adbp++;
-+ }
-+ if ((*adbp == '-') || (*adbp == '"') || (*adbp == '\''))
-+ continue;
-+ if (*adbp == 0)
-+ continue;
-+ switch (*adbp)
-+ {
-+ case 'f':
-+ case 'F':
-+ if (adatail("function") && !packages_only)
-+ adagetit(fi, "/f");
-+ else
-+ adaskip();
-+ continue;
-+ case 'p':
-+ case 'P':
-+ if (adatail("procedure") && !packages_only)
-+ adagetit(fi, "/p");
-+ else if (adatail("package"))
-+ adagetit(fi, "/s");
-+ else
-+ adaskip();
-+ continue;
-+ case 't':
-+ case 'T':
-+ if (adatail("task") && !packages_only)
-+ adagetit(fi, "/k");
-+ else if (typedefs && adatail("type") && !packages_only)
-+ adagetit(fi, "/t");
-+ else
-+ adaskip();
-+ continue;
-+
-+ default:
-+ adaskip();
-+ continue;
-+ }
-+ }
-+ }
-+ adaskip()
-+ {
-+ while (*adbp && !endtoken(*adbp))
-+ adbp++;
-+ while (*adbp && !begtoken(*adbp))
-+ {
-+ if ((*adbp == '"') || (*adbp == '\'') || (*adbp == '-'))
-+ return;
-+ adbp++;
-+ }
-+ }
-+
-+ adatail(cp)
-+ char *cp;
-+ {
-+ register int len = 0;
-+
-+ while (*cp && (*cp == tolower(*(adbp+len))))
-+ cp++, len++;
-+ if (*cp == 0)
-+ {
-+ adbp += len;
-+ if (intoken(*adbp))
-+ return (0);
-+ else
-+ return (1);
-+ }
-+ return (0);
-+ }
-+
-+ adagetit(fi, name_qualifier)
-+ FILE *fi;
-+ char *name_qualifier;
-+
-+ {
-+ register char *cp;
-+ char c;
-+ char nambuf[BUFSIZ];
-+ char * local_name_qualifier;
-+
-+ local_name_qualifier = name_qualifier;
-+
-+ while (!feof (fi))
-+ {
-+ if (*adbp == '\0')
-+ {
-+ lineno++;
-+ linecharno = charno;
-+ charno += readline (&lb, fi) + 1;
-+ adbp = lb.buffer;
-+ }
-+ if (*adbp == '-')
-+ {
-+ adbp++ ;
-+ if (*adbp == '-')
-+ {
-+ while (*adbp)
-+ adbp++;
-+ continue;
-+ }
-+ }
-+ while (isspace(*adbp))
-+ adbp++;
-+ if (*adbp == 0)
-+ continue;
-+ if (*adbp == '-')
-+ continue;
-+ switch(*adbp)
-+ {
-+ case 'b':
-+ case 'B':
-+ if (adatail("body"))
-+ {
-+ local_name_qualifier = "/b";
-+ continue;
-+ }
-+ break;
-+
-+ case 't':
-+ case 'T':
-+ if (adatail("type"))
-+ continue;
-+ break;
-+ }
-+ if (*adbp == '"')
-+ {
-+ for (cp = adbp+1; *cp && *cp != '"'; cp++)
-+ continue;
-+ }
-+ else
-+ for (cp = adbp+1;
-+ *cp && (isalpha(*cp) || isdigit(*cp) || *cp == '_');
-+ cp++)
-+ continue;
-+ c = cp[0];
-+ cp[0] = 0;
-+ strcpy(nambuf, adbp);
-+ strcat(nambuf, local_name_qualifier);
-+ cp[0] = c;
-+ pfnote(savenstr (nambuf, strlen(nambuf)), TRUE, lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
-+ /* I am not really sure what the name is used for. */
-+ /* probably to be used to add a qualifier like /f /p /b /s /k /t */
-+ apfcnt++;
-+ return;
-+ }
-+ }
-+
- /* Fortran parsing */
-
- char *dbp;
-***************
-*** 4684,4689 ****
---- 4923,4968 ----
- return path.buffer;
- #endif /* not MSDOS */
- #endif /* not HAVE_GETCWD */
-+ }
-+
-+ /* Returna newly allocated string containing the filename
-+ of FILE without any precending directory and without
-+ extension. */
-+ char *
-+ basename_no_extension (file)
-+ char *file;
-+ {
-+ char *begin = file + strlen(file);
-+ char *end = begin;
-+ char *res, *rescp;
-+ bool in_extension;
-+
-+
-+ /* position begin at the begining of the basename
-+ end will point to the end of the basename
-+ without extension */
-+ in_extension = TRUE;
-+
-+ while (begin > file && *begin != '/')
-+ {
-+ if (*begin == '.' && in_extension)
-+ {
-+ end = begin;
-+ in_extension = FALSE;
-+ }
-+ begin--;
-+ }
-+ if (*begin == '/')
-+ begin++;
-+
-+ res = xnew(strlen(begin) - strlen(end) + 1, char);
-+ rescp = res;
-+ while (begin != end)
-+ {
-+ *rescp++ = *begin++;
-+ }
-+ *rescp = '\0';
-+ return res;
- }
-
- /* Return a newly allocated string containing the file name
diff --git a/doc/tools/src2html1.4a/ctags-wr b/doc/tools/src2html1.4a/ctags-wr
deleted file mode 100644
index d514e85cab..0000000000
--- a/doc/tools/src2html1.4a/ctags-wr
+++ /dev/null
@@ -1,41 +0,0 @@
-#! /bin/sh
-#
-# Ctags wrapper
-#
-# Invokes the version shipped with src2html for C.
-# Invokes the Ada patched GNU Emacs version for Ada.
-#
-# $Id$
-
-TOOLSBASE=/usr1/rtems/rtemsdoc-work/tools/src2html
-
-if [ ! -f ${TOOLSBASE}/ctags-new ]; then
- echo Can not find ${TOOLSBASE}/ctags-new for C programs.
- exit 1
-fi
-
-if [ ! -f ${TOOLSBASE}/ctags ]; then
- echo Can not find ${TOOLSBASE}/ctags for Ada programs.
- exit 1
-fi
-
-cfiles=`find $1 -name "*.[ch]" -o "*.inl" 2>/dev/null | grep -v "/no-"`
-adafiles=`find $1 -name "*.ad[sb]" 2>/dev/null | grep -v "/no-"`
-adafiles=`ls -1 $1/*.ad[sb] 2>/dev/null`
-
-#cfiles=`ls -1 $1/*.[ch] $1/*.inl 2>/dev/null | grep -v "/no-"`
-#adafiles=`ls -1 $1/*.ad[sb] 2>/dev/null`
-
-if [ "x${cfiles}" != x ] ; then
- ${TOOLSBASE}/ctags-new -d -t -w -y ${cfiles}
- #mv tags tags.c
-fi
-
-if [ "x${adafiles}" != x ] ; then
- ${TOOLSBASE}-src/ctags -d -t -x --no-warn ${adafiles}
-fi
-# cat tags
-#mv tags tags.ada
-#
-#cat tags.c tags.ada
-#rm -f tags.c tags.ada
diff --git a/doc/tools/src2html1.4a/src2html b/doc/tools/src2html1.4a/src2html
deleted file mode 100644
index 98d9d83d7f..0000000000
--- a/doc/tools/src2html1.4a/src2html
+++ /dev/null
@@ -1,704 +0,0 @@
-#!/usr/bin/perl
-# Src2html: Take a source tree and generate Html documents that have hyperlinks
-# to the definition of structures, variables, functions, and preprocessor
-# definitions. Read the manual page for details on how to use the program.
-#
-# Version 1.4-alpha. Written by Warren Toomey wkt@cs.adfa.oz.au
-#
-# 19th January 1996
-#
-# $Id$
-#
-
-if ($#ARGV <= 0 || $#ARGV > 4) { # Check arg count
- print(STDERR "Usage: $0 [-na] [-nl] [-d num] input_description\n");
- print(STDERR " -na: Don't produce top-level category files\n");
- print(STDERR " -nl: Don't produce per-letter files\n");
- print(STDERR " -d: Set debugging to given number (0-3)\n");
- exit(1);
-}
-
-# Set up default option values
-$NoLetters= 0;
-$NoAll= 0;
-$Debug=0;
-$Top= $ARGV[$#ARGV];
-$Top=~ s/\.s2h$//;
-
-# Parse the options
-for ($i=0; $i<= $#ARGV; $i++) {
- if ($ARGV[$i] eq "-na") { $NoAll= 1; next; }
- if ($ARGV[$i] eq "-nl") { $NoLetters= 1; next; }
- if ($ARGV[$i] eq "-d") { $i++; $Debug= $ARGV[$i]; next; }
-}
-
-$Title{"m"}= "C Macros";
-$Title{"d"}= "C Defines";
-$Title{"f"}= "C Functions";
-$Title{"v"}= "C Variables";
-$Title{"s"}= "C Structs";
-$Title{"u"}= "C Unions";
-$Title{"t"}= "C Typedefs";
-$Title{"e"}= "C Enums";
-$Title{"AdaType"}= "Ada Types";
-$Title{"AdaProcedure"}= "Ada Procedures";
-$Title{"AdaFunction"}= "Ada Functions";
-$Title{"AdaPackage"}= "Ada Packages";
-$Title{"AdaTask"}= "Ada Tasks";
-$Title{"g"}= "All symbols";
-
-&get_s2h; # Read the description file
-&make_dirs; # Make directories as needed
-&make_ctags; # Generate ctags for all src
-&parse_ctags; # Parse ctags, generate html ptr files
-foreach $i (keys(%Dirinfo))
-{ &rewrite_src($i); } # Rewrite the src code
-exit(0); # and exit
-
-
-## get_s2h: Opens the source description file, reads it, and sets up some
-## variables describing where some directories are, and the source directories
-## to process. Variables used are:
-## Srctree - The root of the source tree we are processing
-## Htmlroot - The directory where all WWW documents are kept
-## Htmldir - The directory under Htmlroot for this source tree
-## Htmltree - The root of the destination tree for the Html code
-## Newsrctree - The directory in Htmltree to store the new Htmlised code
-## Headers - The directory where we keep information to prepend in some docs
-## Formdir - The place to put the index searching script
-## Dirinfo{} - The list of dirs and the info about the directory
-## Dotdir{} - The directory name with /'s -> .'s
-
-sub get_s2h {
- $Newsrctree= 'newsrc'; # Set up as default
- $Headers= '.';
-
-
- #########################################################
- # make sure we dump out the last bit of the last file....
-
- # Print out the remainder of the
- # current file, incl. the buffered line
- if ($In_file == 1) {
- if ("$line" ne "") { print OUT $line; }
- while (<IN>) {
- s/\&/&amp;/g; s/\</&lt;/g; s/\>/&gt;/g; print OUT;
- }
- print OUT "\n\n\n\n\n\n\n\n</pre></body>\n";
- close(IN); close(OUT);
- }
- #########################################################
-
- open(S2H,$ARGV[$#ARGV]) # Open descript
- || die "$0: can't open $ARGV[$#ARGV]: $!\n";
-
- while(<S2H>) { # Read in input lines
- next if /^#/; # Skip comments
- if ( /^set\s+Srctree\s+(\S+)/ ) {
- $Srctree = $1; next; # Set the variable
- }
- if ( /^set\s+Htmlroot\s+(\S+)/ ) {
- $Htmlroot = $1; next; # Set the variable
- }
- if ( /^set\s+Htmldir\s+(\S+)/ ) {
- $Htmldir = $1; next; # Set the variable
- }
- if ( /^set\s+Newsrctree\s+(\S+)/ ) {
- $Newsrctree = $1; next; # Set the variable
- }
- if ( /^set\s+Headers\s+(\S+)/ ) {
- $Headers = $1; next; # Set the variable
- }
- if ( /^set\s+Formdir\s+(\S+)/ ) {
- $Formdir = $1; next; # Set the variable
- }
- if ( /^dir\s+(\S+)\s+(.*)/ ) {
- $Dirinfo{$1}= $2; $Dotdir{$1}=$1;
- $Dotdir{$1}=~ s/\//./g;
- next; # Get dir commands
- }
- if ( /^\n/ ) { next; } # Ignore blank lines
- # Bad input line, give warning
- chop; print "$_: Bad line, ignoring\n"; next;
- }
- close(S2H);
- if (!defined($Srctree)) { die "$0: Srctree undefined in $ARGV[$#ARGV]\n"; }
- if (!defined($Htmlroot)) { die "$0: Htmlroot undefined in $ARGV[$#ARGV]\n"; }
- if (!defined($Htmldir)) { die "$0: Htmldir undefined in $ARGV[$#ARGV]\n"; }
- $Htmltree= "$Htmlroot/$Htmldir";
-}
-
-## make_dirs: Make the directories need to store the Html documents, and also
-## check to make sure that the input directories exist. We depend upon mkdir(1)
-## having the -p option to make intermediate directories as needed.
-
-sub make_dirs {
- local($i);
-
- foreach $i (keys(%Dirinfo)) { # Check that the directories exist
- if (! -e "$Srctree/$i") {
- die "$0: Input dir $Srctree/$i doesn't exist\n";
- }
- if (! -d "$Srctree/$i") {
- die "$0: Input dir $Srctree/$i is not a directory\n";
- }
- }
- if (! -e "$Htmltree") {
- system("mkdir -p $Htmltree") && die "$0: Can't mkdir $Htmltree\n";
- }
- if (! -e "$Htmltree/$Newsrctree") {
- system("mkdir -p $Htmltree/$Newsrctree")
- && die "$0: Can't mkdir $Htmltree/$Newsrctree\n";
- }
- if (! -e "$Htmltree/ctags") {
- system("mkdir -p $Htmltree/ctags") && die "$0: Can't mkdir ctags\n";
- }
- foreach $i (keys(%Dirinfo)) {
- if (! -e "$Htmltree/$Newsrctree/$i") {
- system("mkdir -p $Htmltree/$Newsrctree/$i")
- && die "$0: Can't mkdir $Htmltree/$Newsrctree/$i\n";
- }
- }
-}
-
-## make_ctags: Process all the source code, creating the ctags files.
-## The Ctagsfile{} array is set up to hold the name of the ctags files
-## created.
-
-sub make_ctags {
- local($i);
-
- foreach $i (keys(%Dirinfo)) {
- $Ctagsfile{$i}= "$Htmltree/ctags/$Dotdir{$i}.ctags";
- if ($Debug > 0 ) { print "Generating ctags for $Ctagsfile{$i}\n"; }
- system("(cd $Srctree; /usr1/rtems/rtemsdoc-work/tools/src2html/ctags-wr $i) > $Ctagsfile{$i}")
- && print "$0: ctags failed on $Srctree/$i\n";
- }
-}
-
-
-## parse_ctags: Parse the ctags file produced by make_ctags, creating several
-## arrays of information. The arrays created are:
-## Macro{} - The name of every macro and its name lowercased
-## Def{} - The name of every define and its name lowercased
-## Func{} - The name of every function and its name lowercased
-## Var{} - The name of every variable and its name lowercased
-## Struct{} - The name of every struct and its name lowercased
-## Union{} - The name of every union and its name lowercased
-## Type{} - The name of every typedef and its name lowercased
-## Enum{} - The name of every enum and its name lowercased
-## Nfile{} - The directory in which the symbol was found
-## Nline{} - The line number where the symbol was found
-
-sub parse_ctags {
- local($i);
- local($low);
- local($count);
-
- $count = 0;
-
- foreach $i (keys(%Dirinfo)) {
- open(CTAGS,$Ctagsfile{$i}) || die "$0: Can't open $Ctagsfile{$i}, $!\n";
- if ($Debug > 0) { print "Parsing $Ctagsfile{$i} to build ptr files\n"; }
- while (<CTAGS>) {
- $count ++;
- if ( /^(\w+)\s+(\d+)\s+(\S+)\s+Preprocessor macro/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $Macro{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\s+(\d+)\s+(\S+)\s+Preprocessor define/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $Def{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C struct/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $Struct{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C union/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $Union{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C typedef/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $Type{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C enum/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $Enum{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C function/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $Func{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C variable/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $Var{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(return)\/.\s+(\d+)\s+(\S+)\s+.*/ ) {
- next;
- # Code like the following line results in "return" as ctag
- # "type Action is access function return Boolean;
- }
- if ( /^(\w+)\/.\s+(\d+)\s+(\S+)\s+use .*/ ) {
- next;
- # throw away lines like "use type System"
- }
-
- if ( /^(\w+)\/.\s+(\d+)\s+(\S+)\s+type .*/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $AdaType{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\/.+\s+(\d+)\s+(\S+)\s+procedure .*/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $AdaProcedure{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\/.+\s+(\d+)\s+(\S+)\s+function .*/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $AdaFunction{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\".+)\/.+\s+(\d+)\s+(\S+)\s+function .*/ ) {
- next;
- # throw away functions like "*"
- }
- if ( /^(\w+)\/.\s+(\d+)\s+(\S+)\s+package .*/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $AdaPackage{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^(\w+)\/.\s+(\d+)\s+(\S+)\s+task .*/ ) {
- ($low=$1)=~tr/A-Z_/a-z/d; $k="$low$count";
- $AdaTask{$k}=$1; $Nline{$k}= $2;
- $Nfile{$k}= $3; next;
- }
- if ( /^([\w\/]+)\s+(\d+)\s+(\S+)\s+use type .*/ ) {
- next;
- }
- if ( /^([\w\/\(]+)\s+(\d+)\s+(\S+)\s+type .*/ ) {
- next;
- }
- if ( /^;([\w\/\(]+)\s+(\d+)\s+(\S+)\s+type .*/ ) {
- next;
- }
- if ( /^\(([\w\/\(]+)\s+(\d+)\s+(\S+)\s+procedure .*/ ) {
- next;
- }
- print "$0: In Ctagsfile{$i}, don't recognise $_";
- }
- close(CTAGS);
- &make_dir_html($i);
- undef %Macro; undef %Def; undef %Func; undef %Var;
- undef %Struct; undef %Union; undef %Type; undef %Enum;
- undef %AdaType; undef %AdaProcedure; undef %AdaFunction;
- undef %AdaPackage; undef %AdaTask;
- }
- &make_top_html;
-}
-
-## make_letters_html: Make the lowest HTML documents, i.e those per-directory
-## per-type per-letter Htmls that point directly at the source code.
-## Arguments are: Dir name, prefix, title, Name/dir list
-## If the file is created, set $Exists(letter) positive, else to 0.
-
-sub make_letters_html {
- local($dir)= $_[0];
- local($pref)= $_[1];
- local($title)= $_[2];
- local(*type)= $_[3];
- local($htmlfile);
- local($let)="@";
-
- foreach $i ( "a".."z",
- "AdaType", "AdaProcedure", "AdaFunction", "AdaPackage", "AdaTask" ) {
- $Exists{$i}=0;
- }
- foreach $name (sort keys( %type )) {
- if (substr($name,0,1) ne $let) {
- if ($let ne "@") {
- print HTML "</ul></body>\n";
- close(HTML);
- $Exists{$let}= 1;
- }
- $let= substr($name, 0, 1);
- $htmlfile= "$Htmltree/$Dotdir{$dir}.$pref$let.html";
- open(HTML, "> $htmlfile") || die "$0: Can't open $htmlfile, $!\n";
-
- print HTML "<head>\n<title>$title starting with ";
- print HTML "`$let' in $dir</title>\n";
- print HTML "</head><body><h1>$title starting with ";
- print HTML "`$let' in $dir</h1><p>\n";
- print HTML "<ul>\n";
- }
- # print HTML "<li><a href=\"$Newsrctree/$Nfile{$type{$name}}";
- # print HTML ".html#$type{$name}\">$type{$name}</a> ";
- # print HTML "$Nfile{$type{$name}}:$Nline{$type{$name}}\n"; next;
-
- print HTML "<li><a href=\"$Newsrctree/$Nfile{$name}";
- print HTML ".html#$type{$name}\">$type{$name}</a> ";
- print HTML "$Nfile{$name}:$Nline{$name}\n"; next;
- }
- print HTML "</ul></body>\n";
- close(HTML);
- $Exists{$let}= 1;
-}
-
-## make_type_html: Make the type htmls. If there are <50 symbols for the
-## directory, create the per-directory per-type html document only. Otherwise
-## for every letter grep symbols, call make_lowest_letter_html, and
-## finally create the per-directory per-type html document that points only
-## at the letter files created.
-## Arguments are: Dir name, prefix, title, Name/dir list
-
-sub make_type_html {
- local($dir)= $_[0];
- local($pref)= $_[1];
- local($title)= $_[2];
- local(*type)= $_[3];
- local($i);
- local($htmlfile);
- local(@keys)= keys(%type);
- local($name);
-
- $Exists{$title}=0;
- if ( $#keys < 0 ) { return; }
- if ($Debug > 0) {
- $i= $#keys + 1;
- print "The associative array for $dir $title has $i elements\n";
- }
- if ( ($#keys < 50) || ($NoLetters == 1) ) {
- $htmlfile= "$Htmltree/$Dotdir{$dir}.$pref.html";
- open(HTML, "> $htmlfile") || die "$0: Can't open $htmlfile, $!\n";
- print HTML "<head>\n<title>$title in $dir</title>\n";
- print HTML "</head><body><h1>$title in $dir</h1>\n";
- print HTML "<ul>\n";
- foreach $name (sort keys( %type )) {
- # print HTML "<li><a href=\"$Newsrctree/$Nfile{$type{$name}}";
- # print HTML ".html#$type{$name}\">$type{$name}</a> ";
- # print HTML "$Nfile{$type{$name}}:$Nline{$type{$name}}\n"; next;
-
- print HTML "<li><a href=\"$Newsrctree/$Nfile{$name}";
- print HTML ".html#$type{$name}\">$type{$name}</a> ";
- print HTML "$Nfile{$name}:$Nline{$name}\n"; next;
- }
- print HTML "</ul></body>\n";
- close(HTML);
- $Exists{$title}=1;
- }
- else {
- &make_letters_html($dir, $pref, $title, *type);
-
- open(HTML, "> $Htmltree/$Dotdir{$dir}.$pref.html")
- || die "$0: Can't open $htmlfile.$pref.html, $!\n";
- print HTML "<head>\n<title>$title in $dir</title>\n";
- print HTML "</head><body><h1>$title in $dir</h1><p>\n";
- print HTML "<ul>\n";
-
- foreach $i ( "a".."z",
- "AdaType", "AdaProcedure", "AdaFunction", "AdaPackage", "AdaTask" ) {
- if ($Exists{$i} > 0) { # A file exists
- print HTML "<li><a href=\"$Dotdir{$dir}.$pref$i.html\">";
- print HTML "$i</a>\n"; $Exists{$title}++; $Exists{$i}=0;
- }
- }
- print HTML "</ul></body>\n";
- close(HTML);
- if ($Exists{$title} == 0) { unlink($htmlfile); }
- }
-}
-
-## asappend: Append the contents of the second associative array to the
-## first.
-
-sub asappend {
- local(*To)= $_[0];
- local(*From)= $_[1];
- local($i);
-
- foreach $i (keys(%From)) { $To{$i}= $From{$i} ; }
-}
-
-## make_dir_html: Make the html document for the directory. Use the
-## Exist{} array to determine what types to include on the document.
-## Arguments are: Dir name
-
-sub make_dir_html {
- local($dir)= $_[0];
- local($i);
- local(@keys);
-
- if ($Debug > 1) { print"In makedir, dir is $dir\n"; }
- &make_type_html($dir, "f", $Title{"f"}, *Func);
- &make_type_html($dir, "m", $Title{"m"}, *Macro);
- &make_type_html($dir, "d", $Title{"d"}, *Def);
- &make_type_html($dir, "v", $Title{"v"}, *Var);
- &make_type_html($dir, "s", $Title{"s"}, *Struct);
- &make_type_html($dir, "u", $Title{"u"}, *Union);
- &make_type_html($dir, "t", $Title{"t"}, *Type);
- &make_type_html($dir, "e", $Title{"e"}, *Enum);
- &make_type_html($dir, "AdaType", $Title{"AdaType"}, *AdaType);
- &make_type_html($dir,
- "AdaProcedure", $Title{"AdaProcedure"}, *AdaProcedure);
- &make_type_html($dir, "AdaFunction", $Title{"AdaFunction"}, *AdaFunction);
- &make_type_html($dir, "AdaPackage", $Title{"AdaPackage"}, *AdaPackage);
- &make_type_html($dir, "AdaTask", $Title{"AdaTask"}, *AdaTask);
-
- if ($NoAll != 1) {
- &asappend(*GFunc, *Func);
- &asappend(*GMacro, *Macro);
- &asappend(*GDef, *Def);
- &asappend(*GVar, *Var);
- &asappend(*GStruct, *Struct);
- &asappend(*GUnion, *Union);
- &asappend(*GType, *Type);
- &asappend(*GEnum, *Enum);
- &asappend(*GAdaType, *AdaType);
- &asappend(*GAdaProcedure, *AdaProcedure);
- &asappend(*GAdaFunction, *AdaFunction);
- &asappend(*GAdaPackage, *AdaPackage);
- &asappend(*GAdaTask, *AdaTask);
- }
-
- &asappend(*Alldir, *Func);
- &asappend(*Alldir, *Macro);
- &asappend(*Alldir, *Def);
- &asappend(*Alldir, *Var);
- &asappend(*Alldir, *Struct);
- &asappend(*Alldir, *Union);
- &asappend(*Alldir, *Type);
- &asappend(*Alldir, *Enum);
- &asappend(*Alldir, *AdaType);
- &asappend(*Alldir, *AdaProcedure);
- &asappend(*Alldir, *AdaFunction);
- &asappend(*Alldir, *AdaPackage);
- &asappend(*Alldir, *AdaTask);
-
- if ($NoLetters != 1) {
- &make_letters_html($dir, "g", $Title{"g"}, *Alldir);
- }
- undef %Alldir;
-
- open(HTML, "> $Htmltree/$Dotdir{$dir}.html")
- || die "$0: Can't open $Htmltree/$Dotdir{$dir}.html, $!\n";
- print HTML "<head>\n<title>Cross-references for $dir</title>\n";
- print HTML "</head><body><h1>Cross-references for $dir</h1><p>\n";
- if (-f "$Headers/$Dotdir{$dir}.hdr" ) {
- open(TOPHDR, "$Headers/$Dotdir{$dir}.hdr");
- while (<TOPHDR>) { print HTML; }
- close(TOPHDR);
- }
-
- if (defined($Formdir)) {
- print HTML "<hr><form action=\"$Formdir/src2html.cgi\" ";
- print HTML "method=\"POST\">\n";
- print HTML "<input type=\"submit\" value=\"Search\">\n";
- print HTML "<input type= \"text\" ";
- print HTML "name=\"$Htmldir/$Newsrctree\">\n";
- print HTML "Enter a symbol's name here to quickly find it.\n";
- print HTML "</form><hr>\n";
- }
- print HTML "<h1>Cross-references for $dir by type</h1><p><ul>\n";
-
- foreach $i ( "f","m","d","v","s","u","t","e",
- "AdaType", "AdaProcedure", "AdaFunction", "AdaPackage", "AdaTask" ) {
- if ($Exists{$Title{$i}} > 0) { # A type exists
- print HTML "<li><a href=\"$Dotdir{$dir}.$i.html\">";
- print HTML "$Title{$i}</a>\n";
- $Exists{$dir}++; $Exists{$Title{$i}}=0;
- }
- }
- print HTML "</ul><p>\n";
- if ($NoLetters != 1) {
- print HTML "<h1>Cross-references for $dir by letter</h1><p><ul>\n";
- foreach $i ( "a".."z" ) {
- if ($Exists{$i} > 0) { # A letter exists
- print HTML "<li><a href=\"$Dotdir{$dir}.g$i.html\">";
- print HTML "$i</a>\n"; $Exists{$i}=0;
- }
- }
- }
- print HTML "</ul></body>\n";
- close(HTML);
-}
-
-## Make_top_html: Make the top html document by making the ones below
-## it and then adding links to them.
-
-sub make_top_html {
- local($i);
- local(@keys);
-
- $Dotdir{$Top}=$Top;
- &make_type_html($Top, "f", $Title{"f"}, *GFunc);
- &make_type_html($Top, "m", $Title{"m"}, *GMacro);
- &make_type_html($Top, "d", $Title{"d"}, *GDef);
- &make_type_html($Top, "v", $Title{"v"}, *GVar);
- &make_type_html($Top, "s", $Title{"s"}, *GStruct);
- &make_type_html($Top, "u", $Title{"u"}, *GUnion);
- &make_type_html($Top, "t", $Title{"t"}, *GType);
- &make_type_html($Top, "e", $Title{"e"}, *GEnum);
- &make_type_html($Top, "AdaType", $Title{"AdaType"}, *GAdaType);
- &make_type_html($Top, "AdaProcedure", $Title{"AdaProcedure"}, *GAdaProcedure);
- &make_type_html($Top, "AdaFunction", $Title{"AdaFunction"}, *GAdaFunction);
- &make_type_html($Top, "AdaPackage", $Title{"AdaPackage"}, *GAdaPackage);
- &make_type_html($Top, "AdaTask", $Title{"AdaTask"}, *GAdaTask);
-
- open(HTMLTOP, "> $Htmltree/$Top.html")
- || die "$0: Can't open $Htmltree/$Top.html, $!\n";
- print HTMLTOP "<head>\n<title>Cross-references for $Top</title>\n";
- print HTMLTOP "</head><body><h1>Cross-references for $Top</h1><p>\n";
-
- if (-f "$Headers/$Top.hdr" ) {
- open(TOPHDR, "$Headers/$Top.hdr");
- while (<TOPHDR>) { print HTMLTOP; }
- close(TOPHDR);
- }
-
- if (defined($Formdir)) {
- print HTMLTOP "<hr><form action=\"$Formdir/src2html.cgi\" ";
- print HTMLTOP "method=\"POST\">\n";
- print HTMLTOP "<input type=\"submit\" value=\"Search\">\n";
- print HTMLTOP "<input type= \"text\" ";
- print HTMLTOP "name=\"$Htmldir/$Newsrctree\">\n";
- print HTMLTOP "Enter a symbol's name here to quickly find it.\n";
- print HTMLTOP "</form><hr>\n";
- }
- print HTMLTOP "<h2>Cross-references by directory</h2><p>\n";
- print HTMLTOP "<ul>\n";
-
- foreach $i (sort keys(%Dirinfo)) {
- if ($Exists{$i} > 0) { # A dir exists
- print HTMLTOP "<li><a href=\"$Dotdir{$i}.html\">";
- print HTMLTOP "$i</a> $Dirinfo{$i}\n"; $Exists{$i}=0;
- }
- }
- if ($NoAll != 1) {
- print HTMLTOP "</ul><p><h2>Cross-references by type</h2><p><ul>\n";
- foreach $i ( "f","m","d","v","s","u","t","e",
- "AdaType", "AdaProcedure", "AdaFunction", "AdaPackage", "AdaTask" ) {
- if ($Exists{$Title{$i}} > 0) { # A type exists
- print HTMLTOP "<li><a href=\"$Top.$i.html\">";
- print HTMLTOP "$Title{$i}</a>\n";
- }
- }
- if ($NoLetters != 1) {
- print HTMLTOP "</ul><p><h2>All Cross-references for $Top";
- print HTMLTOP "</h2><p><ul>\n";
- &asappend(*Alltop, *GFunc);
- &asappend(*Alltop, *GMacro);
- &asappend(*Alltop, *GDef);
- &asappend(*Alltop, *GVar);
- &asappend(*Alltop, *GStruct);
- &asappend(*Alltop, *GUnion);
- &asappend(*Alltop, *GType);
- &asappend(*Alltop, *GEnum);
- &asappend(*Alltop, *GAdaType);
- &asappend(*Alltop, *GAdaProcedure);
- &asappend(*Alltop, *GAdaFunction);
- &asappend(*Alltop, *GAdaPackage);
- &asappend(*Alltop, *GAdaTask);
-
- if ($Debug > 0) { print "Making top letters\n"; }
- &make_letters_html($Top, "g", $Title{"g"}, *Alltop);
- if ($Debug > 0) { print "Making top letters, part 2\n"; }
- foreach $i ( "a".."z" ) {
- if ($Exists{$i} > 0) {
- print HTMLTOP "<li><a href=\"$Dotdir{$Top}.g$i.html\">";
- print HTMLTOP "$i</a>\n";
- }
- }
- }
- }
- print HTMLTOP "</ul>\n";
- print HTMLTOP "<hr>This source tree was made with ";
- print HTMLTOP "<a href=\"http://minnie.cs.adfa.oz.au/Src2html/index.html";
- print HTMLTOP "\">src2html</a>.</body>\n";
- close(HTMLTOP);
-}
-
-
-## rewrite_src: Reread the ctags file for the given directory, and
-## rewrite the source code, adding in anchor points and bolding symbols.
-## This is messy as we can have multiple symbols on a single source line,
-## therefore we must buffer each line while reading from the ctags file.
-##
-sub rewrite_src {
- local($dir)= $_[0];
- local($i);
- local($file)="";
- local($line)="";
- local($symb);
- local($cnt);
- local($nextcnt);
-
- $In_file=0;
- open(CTAGS,"sort +2 -3 +1n -2 $Ctagsfile{$dir} |")
- || die "$0: Can't open sorted $Ctagsfile{$dir}, $!\n";
- if ($Debug > 0) { print "Rewriting source in $dir\n"; }
- while (<CTAGS>) {
- # Get the next file, line, symbol
- if (/^([\w\/]+)\s+(\d+)\s+([A-Za-z0-9_\+\-\.\/]+)/) {
- if ($Debug > 2) { print "Symb $1 at $2 in $3\n"; }
- $fname=$3; $nextcnt= $2; $symb=$1;
- $symb=~ s/\/.//g;
-
- # If it's in a new file
- if ("$file" ne "$fname") {
- # Print out the remainder of the
- # current file, incl. the buffered line
- if ($In_file == 1) {
- if ("$line" ne "") { print OUT $line; }
- while (<IN>) {
- s/\&/&amp;/g; s/\</&lt;/g; s/\>/&gt;/g; print OUT;
- }
- print OUT "\n\n\n\n\n\n\n\n\n\n</pre></body>\n";
- close(IN); close(OUT);
- }
- $file= "$fname";
- # Open the new file & do the preamble
- open(IN, "$Srctree/$file") ||
- print "Cannot open $Srctree/$file\n";
- open(OUT, "> $Htmltree/$Newsrctree/$file.html");
- $In_file=1;
- print OUT "<head>\n<title>$file Source</title>\n";
- print OUT "</head><body>\n";
- print OUT "<h1>Source to $file</h1>\n";
- if (defined($Formdir)) {
- print OUT "<hr><form action=\"$Formdir/src2html.cgi\" ";
- print OUT "method=\"POST\">\n";
- print OUT "<input type=\"submit\" value=\"Search\">\n";
- print OUT "<input type= \"text\" ";
- print OUT "name=\"$Htmldir/$Newsrctree\">\n";
- print OUT "Enter a symbol's name here to quickly find it.\n";
- print OUT "</form><hr>\n";
- }
- print OUT "<pre>\n";
- # Get the first line
- $cnt=1; $line = <IN>;
- $line=~ s/\&/&amp;/g;
- $line=~ s/\</&lt;/g;
- $line=~ s/\>/&gt;/g;
- }
- }
- # Print all lines until one with a symb
- while ($cnt < $nextcnt) {
- print OUT $line; $cnt++; $line= <IN>;
- $line=~ s/\&/&amp;/g;
- $line=~ s/\</&lt;/g;
- $line=~ s/\>/&gt;/g;
- }
- # Now rewrite the line
- $line=~ s/\b$symb\b/<a name="$symb"<\/a><b>$symb<\/b>/;
- next;
- }
- close(CTAGS); close(IN); close(OUT);
-}
diff --git a/doc/tools/src2html1.4a/src2html.1 b/doc/tools/src2html1.4a/src2html.1
deleted file mode 100644
index 7401859ca8..0000000000
--- a/doc/tools/src2html1.4a/src2html.1
+++ /dev/null
@@ -1,244 +0,0 @@
-.TH src2html 1L "June 1994"
-.SH NAME
-src2html \- Hyperlink a C source code tree using HTML, Version 1.3-alpha
-
-.SH SYNOPSIS
-.B src2html
-[
-.I \-na
-] [
-.I \-nl
-] [
-.I \-d debug_level
-]
-.I configuration_file
-
-.SH DESCRIPTION
-
-.B src2html
-is a program which takes a C source tree and creates a set of
-HTML hypertext documents that allows the most important symbols in the
-source tree to be found easily. As well, a HTML version of the source
-tree is created, with the symbols given in bold font where they are defined
-in the source.
-
-.B src2html
-finds and hyperlinks the following C symbols: Preprocessor defines
-and macros, C functions, global variables, structs, unions, enums and typedefs.
-If defined in the
-.I configuration file,
-a query document is used so that symbols can be located by an index query
-as well as following the hyperlinks.
-
-.SH OPTIONS
-The
-.I debug level
-was used when debugging the program, and its only use is
-to assure the user that something is actually happening, especially for large
-source trees. The highest debug level of 3 is not particularly verbose.
-.PP
-By default,
-.B src2html
-produces html pages for each category of C symbols. If there are more than
-50 in each category,
-.B src2html
-then further subdivides the symbols on a first-letter basis, making HTML
-documents for each letter.
-.PP
-If the
-.I -nl
-flag is set, no first-letter HTML documents will ever be produced.
-Similarly,
-.B src2html
-creates a top-level document with category links. If the
-.I -na
-flag is set, no top-level category links will be produced.
-
-.SH CONFIGURATION FILE
-
-.B src2html
-takes as an argument a
-.I configuration file
-which describes the directories in a source tree to process, and
-where to place the resulting HTML documents. Lines beginning with a #
-sign are ignored, as are blank lines. The following lines have special meaning:
-.P
-.IP "set Srctree source_tree"
-Set the root of the tree where the original source is kept, e.g
-/usr/src/sys. Do not leave a trailing slash on the tree name.
-This line must appear in the configuration file.
-.P
-.IP "set Htmlroot html_tree"
-Set the root of the tree where HTML documents are normally kept.
-This is the same as DocumentRoot in the httpd(1L) configuration.
-Again, do not leave a trailing slash on the tree name.
-This line must appear in the configuration file.
-.P
-.IP "set Htmldir html_dir"
-Set the directory within Htmlroot where the HTML documents for this
-tree will be placed.
-Again, do not leave a trailing slash on the tree name.
-This line must appear in the configuration file.
-.P
-.IP "set Newsrctree new_source_tree"
-Set the directory within the Htmltree where the marked up source code
-is placed, e.g src. This allows the source to be kept separate from the
-`pointer' documents which point at the source; see the next section for
-more details. This line is optional, and the default value of
-Newsrctree is `newsrc'.
-.P
-.IP "set Headers header_dir"
-.B src2html
-allows information to be placed at the beginning of the HTML
-documents created, e.g to describe the contents of a particular
-subdirectory. Files containing this information are kept in this
-directory. This line is optional, and the default value of
-Headers is `.'.
-.P
-.IP "set Formdir form_dir"
-If set, this tells
-.B src2html
-that the active HTML document which can
-perform index lookups for the source tree is located in this
-directory. If not set,
-.B src2html
-will not put query boxes in the
-HTML documents created. This line is optional, and there is no
-default value.
-.P
-.IP "dir directory comments_about_the_dir"
-This line may appear may times, and tells
-.B src2html
-to process
-source files in the directory Srctree/dir. This allows only particular
-sections of the source tree to be marked up. The comments after the
-directory are placed in the top-level HTML document to explain
-what that directory contains.
-
-.SH DIRECTORY STRUCTURE
-
-.B src2html
-expects to be given a source tree to process, and it produces
-a new tree with HTML documents. The configuration file should have a suffix
-of `.s2h', although this is strictly not needed.
-
-As an example, consider the following configuration file named BSD.s2h:
-.PP
-.nf
-# Comments
-set Srctree /usr/src/sys
-set Htmltree /usr/local/WWW
-set Htmldir sys
-set Newsrctree newsrc # Comments here too
-set Headers /home/staff/warren/sys_headers
-set Formdir /cgi
-dir kern The core OS routines: processes, scheduling, syscalls
-dir sys Widely used C-language include files
-dir i386/isa Device drivers for peripherals on the ISA bus
-.fi
-.PP
-Three directories containing C source will be processed,
-.nf
- /usr/src/sys/kern,
- /usr/src/sys/sys and
- /usr/src/sys/i386/isa
-.fi
-
-The resulting marked up source code will be placed in
-.nf
- /usr/local/WWW/sys/newsrc/kern,
- /usr/local/WWW/sys/newsrc/sys and
- /usr/local/WWW/sys/newsrc/i386/isa
-.fi
-respectivey.
-.PP
-The directory /usr/local/WWW/sys will itself contain a set of pointer
-documents which point to the source code documents on a per-directory,
-per-symbol-type and per-first-letter basis (and combinations of the
-above). One file, BSD.html (named from the configuration file name), is the
-root of the hyperlinks, and the entire source tree can be browsed from this
-one document.
-
-.SH HEADER FILES
-
-.B src2html
-creates a root HTML document, and HTML documents for each directory
-named in the configuration file. Textual information can be placed in the
-head of these documents to describe the contents of the tree/directory,
-give references etc. The files that hold this information are kept in the
-Headers directory. Taking the above configuration file as an example,
-
- /home/staff/warren/sys_headers/BSD.hdr
- /home/staff/warren/sys_headers/kern.hdr
- /home/staff/warren/sys_headers/sys.hdr
- /home/staff/warren/sys_headers/i386.isa.hdr
-
-can hold the information to be placed in the head of the appropriate
-documents. Note that if a directory name has a slash as given in the
-configuration file, the name of the header file has a dot instead.
-.PP
-Header files are placed `as is' into the head of the document, and thus
-can contain HTML markup commands. Any and all header files are optional;
-if the file does not exist, nothing will be placed in the head of the
-appropriate HTML document.
-.PP
-Once
-.B src2html
-has completed, the header files may be removed. However,
-you may wish to keep them in case you ever need to re-run
-.B src2html
-on the same source tree.
-
-.SH SEARCH SCRIPT
-
-During execution,
-.B src2html
-builds a ctags directory in Htmltree and places
-the output of ctags-new(1L) on the source tree directories in this place.
-This information is needed if a search script is also requested.
-.PP
-If the Formdir is set in the configuration file,
-.B src2html
-will configure the HTML code produced to use the search script
-.I src2html.cgi
-to search for symbols in the source tree. This script
-conforms to the cgi query format as used by httpd(1). You must move the
-supplied
-.I src2html.cgi
-file into the Formdir in the httpd hierachy before the query functionality
-can be used.
-.PP
-Again, from the example configuration file above,
-/usr/local/httpd/cgi/src2html.cgi is where to place the script, if the
-httpd hierachy is kept in /usr/local/httpd.
-
-.SH EXAMPLE SOURCE TREE
-
-The output from
-.B src2html
-for the full FreeBSD 2.0.5 kernel source directory can be browsed
-from the Web page http://minnie.cs.adfa.oz.au/FreeBSD-srctree/FreeBSD.html.
-
-.SH BUGS AND SHORTCOMINGS
-
-.B src2html
-uses the ctags-new(1L) program, which does not correctly parse C variable
-declarations and function pointer usage. Someone should rewrite this in Perl.
-.PP
-Ideally,
-.B src2html
-should include hyperlinks within each source file,
-but this is difficult given C's scoping rules, and would need a more
-sophisticated parser than ctags(1L).
-.PP
-.B src2html
-looks at all files in the named source directories, including
-files that don't end in .c and .h. This may be construed as a feature.
-
-.SH SEE ALSO
-.PD
-ctags-new(1L), httpd(1L), perl(1L)
-
-.SH AUTHOR
-.PD
-Warren Toomey wkt@cs.adfa.oz.au
diff --git a/doc/tools/src2html1.4a/src2html.cgi b/doc/tools/src2html1.4a/src2html.cgi
deleted file mode 100644
index cfc93d4134..0000000000
--- a/doc/tools/src2html1.4a/src2html.cgi
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/local/bin/perl
-#
-# src2html.cgi -- A search script to file symbols in a src2html tree.
-# You need to install this in your httpd script directory AND set the
-# httpd web root below.
-#
-# We need the cgi-lib.pl package to be available to Perl
-require 'cgi-lib.pl';
-#
-## We MUST know the root of the httpd server, so we can find the ctags
-##
-#
-$Http_root= "/usr/pub/pub/www";
-
- # Parse input -> %in
-&ReadParse; # and print first 2 lines
-
-@keys= keys(%in); # We only expect one name/val pair
-if ($#keys != 0) { # Otherwise, return an error document
- print <<"query_error";
-Content-type: text/html
-
- <header><title>Query Error</title></header><body>
- <h1>Query Error</h1>
- The document you used to query this source tree has an error in it.
- You should email the maintainer of the source tree with a copy of the
- document with the query form in it.
- </body>
-query_error
- exit(1);
-}
- # Given the name, determine which tree
-$Htmltree= "$Http_root/$keys[0]";
-$Htmltree=~ s/\/[^\/]*$//; # Location of the Html tree root
-$Srctree= "/$keys[0]"; # URL of the actual source
-$Ctags= "$Htmltree/ctags"; # Location of the ctags files
-
-@symbol= split(/\s+/, $in{$keys[0]}); # Get one symbol to search for
-
-if ($#symbol != 0) { # Hmm, <> 1 symbol, return an error
- print <<"symbol_error";
-Content-type: text/html
-
- <header><title>$Htmltree Search Error</title></header><body>
- <h1>$Htmltree Search Error</h1>
- Hmm, you either sent in no symbols to me to search, or a number of
- symbols to find, separated by whitespace.<p>
- The search function can only handle regexp expressions with no
- whitespace. Try resubmitting your query.
- </body>
-symbol_error
- exit(1);
-}
- # Let's go to work, egrep the ctags
-
-# Naftali Schwartz (nschwart@SLINKY.CS.NYU.EDU) reports that using the ^
-# on the following line stops the script from working under SunOS 4.1.3.
-# Sounds like ctags-new doesn't start the symbol in the 1st column.
-open(IN, "cat $Ctags/* | egrep ^$symbol[0] |") || die "$0: egrep failed\n";
-$cnt=0;
-while(<IN>) {
- ($sym, $line, $file, $com)= split(/\s+/);
- $Sym[$cnt]=$sym; $Line[$cnt]= $line; $File[$cnt]= $file; $cnt++;
-}
-close(IN);
- # How many did we get? Zero, no symbol
-if ($cnt == 0) {
- print <<"symbol_missing";
-Content-type: text/html
-
- <header><title>$Htmltree Search Error</title></header><body>
- <h1>$Htmltree Search Error</h1>
- The symbol $symbol[0] does not appear in the source tree.
- </body>
-symbol_missing
- exit(1);
-}
-
-if ($cnt == 1) { # Exactly one, return ptr to that doc
- print "Location: $Srctree/$File[0]";
-
-# I used to use the commented out line under NCSA httpd because the other
-# line didn't work. You may need to try things out on your server.
- print ".html\#$Sym[0]\n\n";
-# print ".html\n\n";
- exit(0);
-}
- # Else return a list of choices
-print <<"many_found";
-Content-type: text/html
-
-<header><title>$Htmltree Search</title></header><body>
-<h1>$Htmltree Search</h1><ul>
-many_found
-for ($i = 0; $i < $cnt; $i++) {
- print "<li><a href= \"$Srctree/$File[$i]";
- print ".html#$Sym[$i]\">$Sym[$i]</a> $File[$i]:$Line[$i]\n";
-}
-print "</ul></body>\n";
-exit(0);
diff --git a/doc/tools/texi2www/Makefile b/doc/tools/texi2www/Makefile
deleted file mode 100644
index c66db06399..0000000000
--- a/doc/tools/texi2www/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=texi2www
-DISTRIBUTION_LEVEL=internal
-
-include ../../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-FILES= texi2www.texi
-
-info:
-
-dvi: $(PROJECT).dvi
-
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) -v $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/$(PROJECT)
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core
- rm -f *.dvi *.ps *.log *.aux *.cp *.cps \
- rm -f *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f $(PROJECT)-* $(GENERATED_FILES)
- rm -f *.fixed _*
-
diff --git a/doc/tools/texi2www/archive/texi2www-960103.tgz b/doc/tools/texi2www/archive/texi2www-960103.tgz
deleted file mode 100644
index b0851552c2..0000000000
--- a/doc/tools/texi2www/archive/texi2www-960103.tgz
+++ /dev/null
Binary files differ
diff --git a/doc/tools/texi2www/dir-arrow.gif b/doc/tools/texi2www/dir-arrow.gif
deleted file mode 100644
index 5d661527cc..0000000000
--- a/doc/tools/texi2www/dir-arrow.gif
+++ /dev/null
Binary files differ
diff --git a/doc/tools/texi2www/missing-arrow.gif b/doc/tools/texi2www/missing-arrow.gif
deleted file mode 100644
index c686c80b5f..0000000000
--- a/doc/tools/texi2www/missing-arrow.gif
+++ /dev/null
Binary files differ
diff --git a/doc/tools/texi2www/next-arrow.gif b/doc/tools/texi2www/next-arrow.gif
deleted file mode 100644
index 57f5cddb81..0000000000
--- a/doc/tools/texi2www/next-arrow.gif
+++ /dev/null
Binary files differ
diff --git a/doc/tools/texi2www/prev-arrow.gif b/doc/tools/texi2www/prev-arrow.gif
deleted file mode 100644
index 350785be10..0000000000
--- a/doc/tools/texi2www/prev-arrow.gif
+++ /dev/null
Binary files differ
diff --git a/doc/tools/texi2www/texi2dvi b/doc/tools/texi2www/texi2dvi
deleted file mode 100644
index 913904a921..0000000000
--- a/doc/tools/texi2www/texi2dvi
+++ /dev/null
@@ -1,218 +0,0 @@
-#!/usr/bin/perl
-#
-# $Id$
-#
-
-$version = <<END_VERSION;
-Jan 2 1996
-END_VERSION
-
-$copyright = <<END_COPYRIGHT;
-texi2dvi - converts texinfo to dvi
-Copyright (C) 1996 Tim Singletary
-
-This program is freely distributable under the terms of the GNU
-GENERAL PUBLIC LICENSE. In particular, modified versions of this
-program must retain this copyright notice and must remain freely
-distributable.
-END_COPYRIGHT
-
-$usage = <<END_USAGE;
-Usage: texi2dvi [option ...] texinfo_file ...
- -k (-nocleanup) -- don't ``rm -f'' the intermediate files.
- -v (-verbose) -- print additional output.
- -copyright -- print the copyright and die.
- -version -- print the version and die.
-Generates a .dvi file from each texinfo (.texi or .texinfo) file.
-Understands texi2www extensions (\@gif, etc.).
-END_USAGE
-
-unless ($tex = $ENV{TEX}) {$tex = tex;}
-unless ($texindex = $ENV{TEXINDEX}) {$texindex = texindex;}
-$texinputs = $ENV{TEXINPUTS};
-
-$cleanup = 1;
-while ($ARGV[0] =~ /^-/) {
- $_ = shift;
- if (/-k$/ || /-nocleanup/) {$cleanup = 0; next;}
- if (/-v$/ || /-verbose/) {$verbose = 1; next;}
- if (/-d$/ || /-vv$/ || /-debug/) {$verbose = 2; next;}
- if (/-copyright/) {die $copyright;}
- if (/-version/) {die $version;}
- die $usage;
-}
-
-$font_prefix = "xx";
-while (&prefix_in_use($font_prefix)) {
- ++$font_prefix;
- if (length($font_prefix) > 2) {
- $font_prefix = "aa";
- }
-}
-
-$unique_base = "_" . $$ . "a-";
-while (&prefix_in_use($unique_base)) {++$unique_base;}
-
-print "Generated files will begin with \`$unique_base\'\n" if $verbose;
-
-$arg_index = 'a';
-foreach $raw_texi (@ARGV) {
- $base = $unique_base . $arg_index;
- ++$arg_index;
-
- # $tawtexifile is a texinfo file; suffix must be either `.texi' or
- # `.texinfo'. If arg is in a different directory, adjust
- # TEXINPUTS environment variable to include that (and the current)
- # directory.
- unless ($raw_texi =~ /(.*).texi(nfo)?$/) {
- print "skipping $raw_texi -- has unknown extension!\n";
- next;
- }
- $raw_texi_base = $1;
- if ($raw_texi_base =~ m|^(.*)/([^/]*)$|) {
- $raw_texi_base = $2;
- $ENV{TEXINPUTS} = ".:$1:$texinputs";
- } else {
- $ENV{TEXINPUTS} = ".:$texinputs";
- }
-
- unless (-r $raw_texi) {
- print "skipping $raw_texi -- not readable or doesn't exist!\n";
- next;
- }
-
- # Preprocesses the $rawtexifile (because of @gif{} and other extensions)
- $processed_texi = "$base.texi";
- print "Preprocessing $raw_texi into $processed_texi:\n" if $verbose;
- &preprocess_texinfo($raw_texi,$processed_texi,$base);
-
- print "$tex $processed_texi\n" if $verbose;
- if (system("$tex $processed_texi") == 0) {
-
- # @possible_index_file = <$base.??>; only works for the
- # first value of $base ... so,
- opendir(DIR,".") || die "Couldn't read current directory -- $!\n";
- @possible_index_files = ();
- while ($_ = readdir(DIR)) {
- if (/^$base\...$/) {
- push(@possible_index_files,$_);
- }
- }
- closedir(DIR);
-
- @index_files = ();
- foreach $possible_index_file (@possible_index_files) {
- print "DEBUG: possible_index_file $possible_index_file\n"
- if ($verbose > 1);
- next unless (-s $possible_index_file);
- push(@index_files,$possible_index_file);
- }
-
- if (@index_files > 0) {
- $texindex_cmd = "$texindex " . join(' ',@index_files);
- print "$texindex_cmd\n" if $verbose;
- if (system($texindex_cmd) == 0) {
- print "$tex $processed_texi\n" if $verbose;
- system("$tex $processed_texi");
- }
- }
- }
-
- # At this point, $base.dvi should exist -- rename it
- # to $raw_texi_base.dvi
- if (-e "$base.dvi") {
- rename("$base.dvi","$raw_texi_base.dvi")
- || die "rename $base.dvi $raw_texi_base.dvi -- $!\n";
- }
-}
-if ($cleanup) {unlink(<$base*>);}
-
-sub preprocess_texinfo
-{
- local ($infile,$outfile,$b) = @_;
-
- open(IN,"<$infile") || die "Couldn't open $infile -- $!\n";
- open(OUT,">$outfile") || die "Couldn't open $outfile -- $!\n";
-
- $gif_index = 'a';
- while (<IN>) {
-
- # @gif{gif} or @gif{html_gif, tex_gif}
- if (/(.*)\@gif\{([^{]*)\}(.*)/) {
- $prefix = $1;
- $arg = $2;
- $suffix = $3;
- print OUT "$prefix\n" if $prefix;
-
- while (1) {
- $gif_base = $b . $gif_index;
- last unless (-e $gif_base . ".gif");
- ++$gif_index;
- }
-
- $gif_file = '';
- if ($arg =~ /.*,(..*\.gif)/) {
- $gif_file = $1;
- $font_base = $gif_file;
- } else {
- $font_base = $arg;
- $gif_file = $gif_base . ".gif";
- print "Scaling $arg into $gif_file:\n" if $verbose;
- $scale_cmd = "giftopnm $arg | pnmscale 2 | pnmnlfilt 2 1 "
- . "| ppmquant 255 | ppmtogif > $gif_file";
- print "$scale_cmd\n" if $verbose;
- if (system($scale_cmd) != 0) {
- print "$scale_cmd failed\n";
- $gif_file = '';
- }
- }
-
- if ($gif_file =~ /.*\.gif/) {
-
-
- $font_base =~ s|.*/||;
- $font_base =~ s|\..*||;
-
- # $font_base, due to bm2font requirements, can't be more
- # than six characters long and must consist entirely of
- # lower case letters.
- $font_base =~ s/[^a-z]//g;
- $font_base = $font_prefix . substr($font_base,0,5);
- while (&prefix_in_use($font_base)) {++$font_base;}
-
- $bm2font_cmd = "bm2font -f$font_base $gif_file";
- print "$bm2font_cmd\n" if $verbose;
- if (system($bm2font_cmd) != 0) {
- print "$bm2font_cmd failed\n";
- } else {
- print OUT "\@tex\n";
- print OUT "\\input $font_base.tex\n";
- print OUT "\\set$font_base\n";
- print OUT "\@end tex\n";
- }
- }
-
- print OUT "$suffix \n" if $suffix;
- } else {
- print OUT "$_";
- }
- }
- close OUT;
- close IN;
-}
-
-sub prefix_in_use
-{
- local ($p) = @_;
-
- # Returns true or false; returns true if any file in the current
- # directory begins with $p. This function is here because
- # `<$p*>' only works for the first value of $p!
-
- opendir(DIR,".") || die "Couldn't read current directory -- $!\n";
- while ($_ = readdir(DIR)) {
- last if /^$p/;
- }
- closedir(DIR);
- $rc = /^$p/;
-}
diff --git a/doc/tools/texi2www/texi2www b/doc/tools/texi2www/texi2www
deleted file mode 100755
index 3e677936b9..0000000000
--- a/doc/tools/texi2www/texi2www
+++ /dev/null
@@ -1,1276 +0,0 @@
-#!/usr/bin/perl
-# (Works with both perl 4 and perl 5)
-#
-# $Id$
-#
-
-$version = 'Jan 2 1996';
-$copyright = <<EOT;
-texi2www - converts texinfo to HTML
-Copyright (C) 1994, 1995, 1996 Tim Singletary
-
-This program is freely distributable under the terms of the GNU
-GENERAL PUBLIC LICENSE. In particular, modified versions of this
-program must retain this copyright notice and must remain freely
-distributable.
-
-EOT
-$usage = <<EOT;
-Usage: texi2www [option ...] texinfo_file
-where options are:
- -dir directory -- Specify output directory. Default is `.'.
- -dirfile path -- Specifies a replacement for ../dir.html
- -header path -- Specifies the path to a file containing HTML;
- this files gets inserted near the top of each
- generated HTML file.
- -footer path -- Specifies the path to a file containing HTML;
- this files gets inserted near the bottom of each
- generated HTML file.
- -icons path -- Specifies the path, relative to the output directory,
- to the arrow files. Default is `..'.
- -base -- Specify the base part fo the genrated short file names
- -uselongnames -- Use long names for generated html files
- -verbose -- Verbose output.
-
-The complete user\'s is available at
-http://sunland.gsfc.nasa.gov/info/texi2www/Top.html
-EOT
-
-########################################################################
-
-%lookup = (); # clear the name mapping hash
-$uselongnames=0; # default to using short names
-$base = "a"; # default short name base (BASEnnnnn.html)
-$outcount = 0; # count for the nnnnn part of short names
-$icons = ".."; # where are the icons
-$dir = "."; # where are the generated files to go
-$dirfile = "../dir.html"; # "up" node pointer
-while ($ARGV[0] =~ /^-/) {
- $_ = shift;
- if (/-base/) {$base = shift; next;}
- if (/-dirfile/) {$dirfile = shift; next;}
- if (/-dir/) {$_ = shift; s!/$!!; s!$!/!; $dir = $_; next;}
- if (/-footer/) {$footer = shift; next;}
- if (/-header/) {$header = shift; next;}
- if (/-icons/) {$_ = shift; s!\/$!!; $icons = $_; next;}
- if (/-uselongnames/) {$uselongnames = 1; next;}
- if (/-verbose/) {$verbose = 1; next;}
- die $usage;
-}
-
-&initialize_tables();
-
-#
-# Read the texinfo input into @texinfo
-#
-&open_input_file($ARGV[0]);
-&read_input(1,'/^\@bye/',"$texinfo_file[0] line 1");
-$texinfo[$ntexinfo] = "\@bye\n";
-$origin[$ntexinfo] = "$texinfo_file[0] line $.";
-
-#
-# Parse @texinfo
-#
-$texinfo_index = 0;
-while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- if (/^\@bye/) {
- &terminate_node();
- print "Normal completion\n";
- exit;
- }
- &parse();
-}
-
-print "Huh? didn't parse the \@bye directive!\n";
-
-########################################################################
-sub canonical # (node_name)
-{
- local ($n) = @_;
-
- $n =~ s/^\s+//; $n =~ s/\s+$//; # strip whitespace
-
- return "$dirfile" if ($n =~ /\(dir\)/i); # handle (dir)
-
- if ($n =~ /^\(([^\)]+)\)(.*)/) {
- $p = $1; $p =~ s/^\s+//; $p =~ s/\s+$//; $p .= "/";
- $n = $2; $n =~ s/^\s+//; $n =~ s/\s+$//;
- } else {
- $p = "";
- }
-
-
- $n =~ s/\$/\$\$/; # `$' -> `$$'
- $n =~ s/_/\$_/g; # `_' -> `$_'
- $n =~ s/\s+/_/g; # whitespace -> `_'
-
- # anything else that's funky get
- # translated to `$xx' where `xx'
- # are hex digits.
- while ($n =~ /(.*)([^-a-zA-Z0-9\$_.])(.*)/) {
- $n = $1 . sprintf("\$%02x",ord($2)) . $3;
- }
-
- if ($uselongnames) {
- return "$p$n.html" if ($n);
- } else {
- if ($n eq 'Top') {
- $lookup{"$p$n"}= "index.html";
- return $lookup{"$p$n"};
- } elsif ($n) {
- if (! $lookup{"$p$n"}) {
- $outcount = $outcount + 1;
- #$lookup{"$p$n"}= "$base$outcount.html";
- $lookup{"$p$n"} = sprintf "%s%05d.html", $base, $outcount;
- }
- return $lookup{"$p$n"};
- }
- }
- return "";
-} # canonical
-
-########################################################################
-sub deduce_node_links
-#
-# On entry, $_ is a node line and $start_index is the index (in @texinfo)
-# the node line.
-#
-# &deduce_node_links() sets $next, $prev, and $up.
-{
- local ($level,$i,$node,$j);
-
- # First, search down from this node to the next sectioning command.
- $level = &determine_node_level($start_index+1);
-
- # Next, look for the `next' node (i.e., the next node at the
- # same or a higher level).
- undef($next);
- for ($i=$start_index+1; $i < $ntexinfo; ++$i) {
- $_ = $texinfo[$i];
- next unless /^\@node +([^,]+).*\n/;
- $j = &determine_node_level($i+1);
- if ($j <= $level) {
- if ($j == $level) {$next = $1;}
- last;
- }
- }
-
- # Look for the `prev' and `up' nodes
- undef($prev);
- undef($up);
- for ($i=$start_index-1; $i > 1; --$i) {
- $_ = $texinfo[$i];
- next unless /^\@node\s+([^,]+).*\n/;
- $j = &determine_node_level($i+1);
- if ($j == $level) {
- unless ($prev) {$prev = $1;}
- } elsif ($j < $level) {
- $up = $1;
- last;
- }
- }
- unless (defined($up)) {$up = "(dir)";}
-
- $xthis = $this;
- $xthis =~ s/\n//;
-
-} # deduce_node_links
-
-########################################################################
-sub determine_node_level
-{
- local ($i) = @_;
- local ($level);
-
- $level = 0;
- while ($i < $ntexinfo) {
- $_ = $texinfo[$i];
- ++$i;
- next if /^\s+$/;
- last if (/\@node/);
- last unless (/\@(\w+)/);
- if ($directive_section{$1}) {
- $level = $directive_section{$1};
- last;
- }
- }
-
- return $level;
-} # determine_node_level
-
-
-########################################################################
-sub expand_xref
-{
- local ($cmd,$arg) = @_;
- local ($node,$xrefname,$topic,$infofile,$manual,$url,$x);
-
- if ($cmd eq 'inforef') {
- ($node,$xrefname,$infofile) = split(/,/,$arg);
- $topic = $manual = '';
- } elsif ($cmd eq 'href') {
- ($xrefname,$node,$infofile,$url) = split(/,/,$arg);
- } else {
- ($node,$xrefname,$topic,$infofile,$manual) = split(/,/,$arg);
- }
- $xrefname =~ s/^\s+//; $infofile =~ s/^\s+//;
- $xrefname =~ s/\s+$//; $infofile =~ s/\s+$//;
- $xrefname =~ s/\s+/ /; $infofile =~ s/\s+/ /;
- $infofile =~ s/\.texi$//;
- $infofile =~ s/\.texinfo$//;
-
- if ($xrefname =~ /^$/) {$xrefname = $node;}
-
- $node = &canonical($node);
- unless ($url) {
- unless ($infofile =~ /^$/) {$url = "../$infofile/";}
- $url = $url . $node;
- }
- $x = "<A HREF=\"$url\">$xrefname</A>";
-} # expand_xref
-
-########################################################################
-sub get_more_stuff_to_parse
-{
- $start_index = $texinfo_index;
-
- $_ = '';
- do {
- if ($texinfo_index >= @texinfo) {
- print "Unclosed \@x{y} in chunk beginning at "
- . "$origin[$start_index]\n";
- return;
- }
- s/\n$/ /;
- $more = $texinfo[$texinfo_index++];
- $more =~ s/\@\*/<BR>\n/g;
- $more =~ s/\@\./\./g;
- $more =~ s/\@\://g;
- $more =~ s/\@refill//g;
-
- $_ .= $more;
-
- # Expand all @a{b} in line
- while (/\@(\w+)\{([^{}]*)\}/) {
- $atcmd = $1;
- $atarg = $2;
-
- if ($z = $atxy_2_zyz{$atcmd}) {
- if ($z =~ /(.+),(.+),(.+)/) {
- $left = $1; $z = $2; $right = $3;
- } else {
- $left = ''; $right = '';
- }
- if ($z =~ s/^\^//) {$atarg =~ tr/a-z/A-Z/;}
- $x = "$left<$z>$atarg</$z>$right";
- } elsif ($atxy_2_y{$atcmd}) {
- $x = $atarg;
- } elsif ($z = $atxy_2_z{$atcmd}) {
- $x = $z;
- } elsif ($z = $atxy_2_ref{$atcmd}) {
- $x = $z . &expand_xref($atcmd,$atarg);
- $x =~ s/^X//; # works because $z must start with 'X'!
- } elsif ($atcmd eq 'value') {
- $x = $texinfo_variable{$atarg};
- } elsif ($atcmd eq 'today') {
- $x = &today();
- } elsif ($atcmd eq 'footnote') {
- $footnote[$nfootnotes++] = $atarg;
- $x = "\[$nfootnotes\]";
- } elsif ($atcmd eq 'gif') {
- $atarg =~ s/,.*//;
- &copy_to_destdir($atarg);
- $atarg =~ s|.*/||;
- $x = "<IMG SRC=\"$atarg\">";
- } else {
- print "**WARNING** Don't know how to expand "
- . "\@$atcmd\{$atarg\}\n";
- $debug = 1;
- $x = "?$atcmd\?$atarg\?";
- }
-
- print "$origin[$start_index]: \@$atcmd\{$atarg\} => $x\n"
- if $debug{expansions};
-
- s/\@\w+\{[^{}]*\}/$x/;
- }
- } while (/\@\w+\{[^}]*$/);
- print "$origin[$start_index]: $_" if $debug{chunks};
-} # get_more_stuff_to_parse
-
-########################################################################
-sub parse
-# On entry:
-# $_ -- the line(s) to parse.
-# $start_index -- where, in $texinfo, $_ begins.
-{
- local ($x);
-
- if (/^\@(\w+)/) {
- if ($x=$directive_block{$1}) { # @example, @quotation, etc.
- &parse_block($1,$x);
- } elsif ($directive_section{$1}) { # @chapter, @subsection, etc.
- &process_section();
- } elsif ($1 eq 'bye') {
- if ($nfootnotes > 0) {
- &printHTML("<P><HR>\n");
- for ($n=0; $n < $nfootnotes; ++$n) {
- &printHTML("<P>\[" . ($n+1) . "\] $footnote[$n]</P>\n");
- }
- }
- &printHTML("<P><HR>\n");
- &print_arrows;
- &printHTML("</P>\n");
- &print_footer if $footer;
- &printHTML("</BODY></HTML>\n");
- close (HTML);
- return;
- } elsif ($1 eq 'center') {
- /^\@center\s+(.*)/;
- &printHTML("$paragraph_end") if $in_paragraph;
- &printHTML("<P ALIGN=CENTER>$1</P>\n");
- $in_paragraph = 0;
- } elsif ($1 eq 'clear') {
- /^\@clear\s+(\S+)/;
- undef($texinfo_variable{$1});
- } elsif ($1 =~ /^def(code)?index/) {
- /^\@(def|defcode)index\s+(\w+)/;
- $index_name{$2} = $2 . "index";
- $index_style{$2} = 'CODE' if ($1 eq "defcode");
- } elsif ($1 =~ /^(def.*)/) { # @defn, @defun, ... @deftp
- &parse_def($1);
- } elsif ($1 eq 'enumerate') {
- &parse_enumerate();
- } elsif ($1 eq 'exdent') {
- /^\@exdent\s+(.*)/;
- &printHTML("$paragraph_end") if $in_paragraph;
- # A bug -- doesn't exdent the line!
- &printHTML("<P>$1</P>\n");
- $in_paragraph = 0;
- } elsif ($1 eq 'flushleft' || $1 eq 'flushright') {
- &parse_flush();
- } elsif ($1 eq 'html') {
- while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- last if (/^\@end\s+html/);
- s/\&quot;/\"/g; s/\&gt;/\>/g; s/\&lt;/\</g; s/\&amp;/\&/g;
- &printHTML("$_");
- }
- } elsif ($1 eq 'itemize') {
- &parse_itemize();
- } elsif ($1 eq 'menu') {
- &parse_menu();
- } elsif ($1 eq 'node') {
- $node=$_;
- &process_node();
- } elsif ($1 eq 'printindex') {
- /^\@printindex\s+([a-z]+)/;
- &print_index($1);
- } elsif ($1 eq 'settitle') {
- /^\@settitle\s+(.*)/;
- unless ($title) {$title = $1;}
- } elsif ($1 eq 'set') {
- if (/^\@set\s+(\S+)\s+(.+)$/) {
- $texinfo_variable{$1} = $2;
- } else {
- /^\@set\s+(\S+)/;
- $texinfo_variable{$1} = 1;
- }
- } elsif ($1 eq 'syncodeindex') {
- &process_synindex(1);
- } elsif ($1 eq 'synindex') {
- &process_synindex(0);
- } elsif ($1 =~ /^.?table/) { # @table, @vtable, @ftable
- unless (/^\@(.?table)\s*\@(\w*)/
- && ($2 eq 'asis' || ($tbltype=$atxy_2_zyz{$2}))) {
- print "**WARNING** $origin[$start_index]: assuming "
- . "\@table \@asis\n";
- $tbltype = '';
- }
- &parse_table($1,$tbltype);
- } elsif ($1 =~ /..?index/) { # @cindex, @findex, .. @auindex, etc.
- &process_index();
- } else {
- print "**WARNING** $origin[$start_index]: ignoring $_";
- }
- } else {
- if (/^\s*$/) {
- if ($in_paragraph) {
- &printHTML("$paragraph_end");
- } elsif ($in_preformatted) {
- &printHTML("\n");
- }
- $in_paragraph = 0;
- } else {
- unless ($in_preformatted) {
- unless ($in_paragraph) {
- &printHTML("<P>\n");
- $in_paragraph = 1;
- $paragraph_end = "</P>\n";
- }
- }
- &printHTML("$_");
- }
- }
-} # parse
-
-########################################################################
-sub parse_block
-#
-# Handles @example, @display, etc.
-#
-# > @example > <PRE>
-# > a + b = c ==> > a + b = c
-# > @end example > </PRE>
-{
- local ($block,$pre) = @_;
- local ($started_at);
-
- $started_at = $start_index;
-
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
-
- if ($pre eq '>PRE') {
- &printHTML("<DL><DT><DD>\n<PRE>\n");
- } else {
- &printHTML("<$pre>\n") unless ($pre eq '-');
- }
- $in_preformatted = $block;
- while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- if (/^\@end\s+$block/) {
- if ($pre eq 'HR') {
- &printHTML("</HR>\n");
- } elsif ($pre eq '>PRE') {
- &printHTML("</PRE>\n</DL>\n");
- } else {
- &printHTML("</$pre>\n") unless ($pre eq '-');
- }
- $in_preformatted = 0;
- return;
- }
- &parse();
- }
- print "**ERROR** reached EOF while searching for end of the \@$block "
- . "block that started on $origin[$started_at]\n";
-} # parse_block
-
-########################################################################
-sub parse_def
-# $_ contains a @def* command
-{
- local ($def) = @_;
- local ($started_at,$in_dd);
-
- $started_at = $start_index;
-
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
-
- &printHTML("<DL>\n");
-
- &printdef();
-
- while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- if (/^\@end\s+$def/) {
- &printHTML("</DL>\n");
- $in_paragraph = 0;
- return;
- }
- if (s/^(\@def\w+)x\s/$1 /) {&printdef();}
- else {
- unless ($in_dd) {
- &printHTML("<DD>\n");
- ++$in_dd;
- $in_paragraph = 1;
- $paragraph_end = "\n";
- }
- &parse();
- }
- }
- print "**ERROR** reached EOF while searching for end of the $def "
- . "definition that started on $origin[$started_at]\n";
-
-} # parse_def
-sub printdef
-{
-
- s/\@defun(x?)\s/\@deffn Function /
- || s/\@defmac(x?)\s/\@deffn Macro /
- || s/\@defspec(x?)\s/\@deffn \{Special Form\} /
- || s/\@defvar(x?)\s/\@defvr Variable /
- || s/\@defopt(x?)\s/\@defvr \{User Option\} /
- || s/\@deftypefun(x?)\s/\@deftypefn Function /
- || s/\@deftypevar(x?)\s/\@deftypefn Variable /
- || s/\@defivar(x?)\s/\@defcv \{Instance Variable\} /
- || s/\@defmethod(x?)\s/\@defop Method /;
- s/(\@\w+)x\s/$1 /;
-
- @words = split;
-
- $i = 1;
- $category = $words[$i++];
- while ($i < @words && $category =~ /^\{[^}]*$/) {
- $category .= ' ' . $words[$i++];
- }
- if ($i>=@words) {
- print "def error at $origin{$started_at}\n";
- }
- $category =~ s/^\{//;
- $category =~ s/\}$//;
-
- &printHTML("<DT>$category: ");
-
- if ($words[0] eq '@deftypefn' || $words[0] eq '@deftypevr'
- || $words[0] eq '@defcv' || $words[0] eq '@defop') {
- if ($words[$i] =~ s/^\{//) {
- &printHTML("<VAR>");
- until ($words[$i] =~ s/\}$//) {&printHTML("$words[$i++]");}
- &printHTML("$words[$i++]</VAR> ");
- } else {
- &printHTML("<VAR>$words[$i++]</VAR> ");
- }
- $words[0] =~ /.*([a-z][a-z])/;
- $_ = "\@" . $1 . "index " . $words[$i];
- &process_index;
- }
- &printHTML("<STRONG>$words[$i++]</STRONG>\n<VAR>");
-
- while ($i < @words) {&printHTML(" $words[$i++]");}
- &printHTML("</VAR>\n");
-
-} # printdef
-
-########################################################################
-sub parse_enumerate
-# $_ is `@enumerate'. Note that @enumerate with an arg (`@enumerate 3',
-# for example) is kinda funky due to HTML limitations.
-{
- local ($count,$started_at);
-
- $started_at = $start_index;
-
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
-
- if (/^\@enumerate\s*(\S+)/) {$count = $1;}
-
- &printHTML("<" . ($count ? "UL" : "OL") . ">\n");
-
- while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- if (/^\@end\s+enumerate/) {
- &printHTML("</" . ($count ? "UL" : "OL") . ">\n");
- return;
- }
- if (/^\@item\s+(.*)/ || /^\@item()$/) {
- if ($count) {
- &printHTML("<LI>$count: $1\n");
- ++$count;
- } else {
- &printHTML("<LI>$1\n");
- }
- $in_paragraph = 1;
- $paragraph_end = "\n";
- } else {
- &parse();
- }
- }
- print "**ERROR** reached EOF while searching for end of the \@enumerate "
- . "that started on $origin[$started_at]\n";
-} # parse_enumerate
-
-########################################################################
-sub parse_flush
-{
- local ($started_at,$flush);
-
- /^\@(\w+)\s/;
- $flush = $1;
- $started_at = $start_index;
-
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
-
- while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- if (/^\@end\s+$flush/) {
- return;
- }
- &parse();
- }
- print "**ERROR** reached EOF while searching for end of the $flush "
- . "that started on $origin[$started_at]\n";
-
-
-} # parse_flush
-
-########################################################################
-sub parse_itemize
-# $_ is `@itemize'. Due to HTML limitation, `@itemize @bullet' comes
-# out the same as `@itemize @minus'.
-{
- local ($started_at);
-
- $started_at = $start_index;
-
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
-
- &printHTML("<UL>\n");
-
-
- while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- if (/^\@end\s+itemize/) {
- &printHTML("</UL>\n");
- return;
- }
- if (/^\@item\s+(.*)/ || /^\@item()$/) {
- &printHTML("<LI>$1\n");
- $in_paragraph = 1;
- $paragraph_end = "\n";
- } else {
- &parse();
- }
- }
- print "**ERROR** reached EOF while searching for end of the itemize "
- . "that started on $origin[$started_at]\n";
-} # parse_itemize
-
-########################################################################
-sub parse_menu
-{
- local ($started_at);
-
- $started_at = $start_index;
-
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
-
- &printHTML("<MENU>\n");
-
- while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- if (/^\@end\s+menu/) {
- &printHTML("</MENU>\n");
- return;
- }
-
- # Like ` * menu-item:: description of item'
- if (/^\s*\*\s*([^:]*)\s*::\s*(.*)$/) {
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
- $node = &canonical($1);
- &printHTML("<LI><A HREF=\"$node\">$1</A>\n");
- &printHTML("$2\n") if $2;
- # Like ` * menu-item: cross-reference. description of item'
- } elsif (/^\s*\*\s*([^:]*)\s*:([^.]*)\.\s*(.*)$/) {
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
- $node = &canonical($2);
- &printHTML("<LI><A HREF=\"$node\">$1</A>\n");
- &printHTML("$3\n");
- } elsif (/^\@/) {
- print "**WARNING** Don\'t know how to process \`$_\' inside "
- . "a menu!\n";
- } else {
- if (/^\s*$/ && !$in_paragraph) {
- &printHTML("<P>");
- $in_paragraph = "1";
- $paragraph_end = "</P>\n";
- }
- &printHTML("$_");
- }
- }
- print "**ERROR** reached EOF while searching for end of the menu "
- . "that started on $origin[$started_at]\n";
-} # parse_menu
-
-########################################################################
-sub parse_table
-# $_ is `@itemize'. Due to HTML limitation, `@itemize @bullet' comes
-# out the same as `@itemize @minus'.
-{
- local ($table,$ttype,$after_DT,$started_at,$first_para);
- ($table,$ttype) = @_;
-
- $started_at = $start_index;
-
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
-
- &printHTML("<DL>\n");
-
- while ($texinfo_index < @texinfo) {
- &get_more_stuff_to_parse();
- if (/^\@end\s+$table/) {
- &printHTML("</DL>\n");
- return;
- }
- if (/^\@item(x?)\s+(.*)/ || /^\@item(x?)()$/) {
- $atarg = $2;
- if ($ttype) {
- if ($ttype =~ /(.+),(.+),(.+)/) {
- $left = $1; $z = $2; $right = $3;
- } else {
- $left = ''; $z = $ttype; $right = '';
- }
- if ($z =~ s/^\^//) {$atarg =~ tr/a-z/A-Z/;}
- &printHTML("<DT>$left<$z>$atarg</$z>$right\n");
- } else {
- &printHTML("<DT>$2\n");
- }
- $item = $2;
- if ($item && $table =~ /([fv])table/) {
- $_ = "\@" . $1 . "index " . $item;
- &process_index;
- }
- $after_DT = 1;
- } else {
- if ($after_DT) {
- &printHTML("<DD>\n");
- $in_paragraph = 1;
- $paragraph_end = "\n";
- $after_DT = 0;
- $first_para = 1;
- }
- unless ($first_para && /^\s*$/) {
- $first_para = 0;
- &parse();
- }
- }
- }
- print "**ERROR** reached EOF while searching for end of the table "
- . "that started on $origin[$started_at]\n";
-} # parse_table
-
-########################################################################
-sub print_index
-{
- local ($index) = @_;
- $index = $index_name{$index};
-
- eval "\@keys = keys \%$index";
-
- &printHTML("<MENU>\n");
- foreach $item (sort texinfo_sort @keys) {
- eval "\$val = \$$index\{\$item\}";
- &printHTML("<LI>$val\n");
- }
- &printHTML("</MENU>\n");
-} # print_index
-
-sub texinfo_sort
-{
- $x = $a; $x =~ s/<[^>]*>//g; $x =~ tr/A-Z/a-z/;
- $y = $b; $y =~ s/<[^>]*>//g; $y =~ tr/A-Z/a-z/;
- $x cmp $y;
-} # texinfo_sort
-
-########################################################################
-sub process_index
-#
-# For example, `@cindex whatever' generates an entry in %cpindex
-#
-{
- s/\@cindex/\@cpindex/ || s/\@findex/\@fnindex/
- || s/\@vindex/\@vrindex/ || s/\@kindex/\@kyindex/
- || s/\@pindex/\@pgindex/ || s/\@tindex/\@tpindex/;
-
- /\@(..)index\s+(.*)/;
-
- if ($x=$index_style{$1}) {
- $entry = "<A HREF=\"$cthis\"><$x>$2</$x></A>";
- } else {
- $entry = "<A HREF=\"$cthis\">$2</A>";
- }
-
- print "*** \$$index_name{$1}\{$2\} = $entry\n" if $debug{'index'};
- eval "\$$index_name{$1}\{\$2\} = \$entry";
-} # process_index
-
-########################################################################
-sub print_arrows
-{
- &printHTML("<LINK REL=\"Precedes\" HREF=\"$cnext\">\n") if $next;
- &printHTML("<LINK REV=\"Precedes\" HREF=\"$cprev\">\n") if $prev;
- &printHTML("<LINK REV=\"Subdocument\" HREF=\"$cup\">\n") if $up;
- &printHTML("<LINK REV=\"Library\" HREF=\"$dirfile\">\n") if $dirfile;
- &printHTML("</HEAD><BODY><P>\n");
- if ($cprev) {
- &printHTML("<A HREF=\"$cprev\"><IMG ALIGN=MIDDLE "
- . "SRC=\"$icons/prev-arrow.gif\" ALT=\"PREV\"></A>\n");
- } else {
- &printHTML("<A><IMG ALIGN=MIDDLE "
- . "SRC=\"$icons/missing-arrow.gif\" ALT=\"prev\"></A>\n");
- }
- if ($cup) {
- &printHTML("<A HREF=\"$cup\"> <IMG ALIGN=MIDDLE "
- . "SRC=\"$icons/up-arrow.gif\" ALT=\"UP\"></A>\n");
- } else {
- &printHTML("<A><IMG ALIGN=MIDDLE "
- . "SRC=\"$icons/missing-arrow.gif\" ALT=\"up\"></A>\n");
- }
- if ($cnext) {
- &printHTML("<A HREF=\"$cnext\"><IMG ALIGN=MIDDLE "
- . "SRC=\"$icons/next-arrow.gif\" ALT=\"NEXT\"></A>\n");
- } else {
- &printHTML("<A><IMG ALIGN=MIDDLE "
- . "SRC=\"$icons/missing-arrow.gif\" ALT=\"next\"></A>\n");
- }
- if ($dirfile) {
-# XXX need new graphic for this one
- &printHTML("<A HREF=\"$dirfile\"> <IMG ALIGN=MIDDLE "
- . "SRC=\"$icons/dir-arrow.gif\" ALT=\"Bookshelf\"></A>\n");
- } else {
- &printHTML("<A><IMG ALIGN=MIDDLE "
- . "SRC=\"$icons/missing-arrow.gif\" ALT=\"Bookshelf\"></A>\n");
- }
- &printHTML("<CITE>$title</CITE>") if $title;
-}
-
-########################################################################
-sub process_node
-# On entry, $_ is an @node line.
-{
- s/^\@node\s+//;
- ($this,$next,$prev,$up) = split(/,/);
-
- &deduce_node_links() unless ($next || $prev || $up);
-
- &terminate_node();
-
- $cthis = &canonical($this);
- $cnext = &canonical($next);
- $cprev = &canonical($prev);
- $cup = &canonical($up);
-
- print "... opening $dir$cthis ...\n" if $debug{nodes};
- open(HTML,">$dir/$cthis") || die "Couldn't open $dir$cthis -- $!\n";
-
- $nfootnotes = 0;
-
- &printHTML("<HTML>\n");
- &printHTML("<!-- created $today from " .
- $origin[$start_index] . " via texi2www -->\n");
- &print_header if $header;
- &printHTML("<HEAD>\n<TITLE>$this</TITLE>\n");
- &print_arrows;
- &printHTML("</P>\n");
-
-} # process_node
-
-sub terminate_node
-{
- if ($nfootnotes) {
- &printHTML("<P><HR>\n");
- for ($n=0; $n < $nfootnotes; ++$n) {
- &printHTML("<P>\[" . ($n+1) . "\] $footnote[$n]</P>\n");
- }
- }
-
-
- &printHTML("<P><HR>\n");
- &print_arrows;
- &printHTML("</P>\n");
- &print_footer if $footer;
- &printHTML("</BODY></HTML>\n");
- close (HTML);
-}
-
-########################################################################
-sub process_section
-#
-# On entry:
-# $_ is the section command (I.e. `@chapter Overview')
-# $i is the index to $_ in @lines
-{
- &printHTML("$paragraph_end") if $in_paragraph;
- $in_paragraph = 0;
-
- /^\@(\w+)\s+(.*)/;
-
- $section_number = '';
- if ($1 eq 'chapter') {
- ++$chapter; $section=$subsection=$subsubsection=0;
- $section_number = "Chapter $chapter: ";
- } elsif ($1 eq 'section') {
- ++$section; $subsection=$subsubsection=0;
- $section_number = "$chapter.$section: ";
- } elsif ($1 eq 'subsection') {
- ++$subsection; $subsubsection=0;
- $section_number = "$chapter.$section.$subsection: ";
- } elsif ($1 eq 'subsubsection') {
- ++$subsubsection;
- $section_number = "$chapter.$section.$subsection.$subsubsection: ";
- } elsif ($1 eq 'appendix') {
- ++$appendix; $section=$subsection=$subsubsection=0;
- $x = ('A'..'Z')[$appendix-1];
- $section_number = "Appendix $x: ";
- } elsif ($1 eq 'appendixsec') {
- ++$section; $subsection=$subsubsection=0;
- $x = ('A'..'Z')[$appendix-1];
- $section_number = "$x.$section: ";
- } elsif ($1 eq 'appendixsubsec') {
- ++$subsection; $subsubsection=0;
- $x = ('A'..'Z')[$appendix-1];
- $section_number = "$x.$section.$subsection: ";
- } elsif ($1 eq 'appendixsubsubsec') {
- ++$subsubsection;
- $x = ('A'..'Z')[$appendix-1];
- $section_number = "$x.$section.$subsection.$subsubsection: ";
- }
-
- $x = $directive_section{$1};
- &printHTML("<H$x>$section_number$2</H$x>\n");
-} # process_section
-
-########################################################################
-sub process_synindex
-#
-# There's perhaps a bug here -- this presumes the @synindex comes before
-# any @?index directives; anything already in <from> doesn't get merged
-# into <to>!
-#
-{
- local ($code) = @_; # Either 0 or 1; 1 means @syncodeindex
-
- /\@syn\w*index\s+(\w+)\s+(\w+)/;
-
- print "*** synindex $1 $2\n" if $debug{'index'};
-
- $index_name{$1} = $2 . "index";
- $index_style{$1} = 'CODE' if $code;
-} # process_synindex
-
-########################################################################
-sub printHTML
-{
- local ($line) = @_;
- $line =~ s/\$R/\}/g;
- $line =~ s/\$L/\{/g;
- $line =~ s/\$A/\@/g;
- $line =~ s/\$D/\$/g;
- if ($debug{printHTML}) {
- print $line;
- } else {
- print HTML $line;
- }
-} # printHTML
-
-########################################################################
-sub print_header
-{
- unless (open(HEADER,$header)) {
- print "WARNING -- couldn't open header file \"$header\" -- $!\n";
- $header = 0;
- return;
- }
- while (<HEADER>) {
- &printHTML($_);
- }
- close(HEADER);
-}
-
-########################################################################
-sub print_footer
-{
- unless (open(FOOTER,$footer)) {
- print "WARNING -- couldn't open footer file \"$footer\" -- $!\n";
- $footer = 0;
- return;
- }
- while (<FOOTER>) {
- &printHTML($_);
- }
- close(FOOTER);
-}
-
-########################################################################
-sub read_input
-#
-# Read the texinfo source into @texinfo. Don't copy comments or the
-# `@ifxxx' and `@end ifxxx' surrounding [or the contents of] conditional
-# blocks. Read `@include' files.
-{
- local ($echo,$terminator_re,$started_at) = @_;
-
- while (&texinfo_read()) {
-
- next if (/^\@c$/ || /^\@c\s/ || /^\@comment/);
-
- if (/^\@ifinfo/) {
- &read_input($echo,'/^\@end\s+ifinfo/',
- "$texinfo_file[0] line $.");
- next;
- }
- if (/^\@ifhtml/) {
- &read_input($echo,'/^\@end\s+ifhtml/',
- "$texinfo_file[0] line $.");
- next;
- }
- if (/^\@iftex/) {
- &read_input(0,'/^\@end\s+iftex/',
- "$texinfo_file[0] line $.");
- next;
- }
- if (/^\@tex/) {
- &read_input(0,'/^\@end\s+tex/',
- "$texinfo_file[0] line $.");
- next;
- }
- if (/^\@ignore/) {
- # @ignore doesn't nest
- $ignore_from = "$texinfo_file[0] line $.";
- while (&texinfo_read()) {
- last if (/^\@end\s+ignore/);
- }
- unless (/^\@end\s+ignore/) {
- print "Unexpected EOF while searching from $ignore_from "
- . "for \'\@end ignore\'\n";
- }
- next;
- }
- if (/^\@titlepage/) {
- &read_input(0,'/^\@end\s+titlepage/',"$texinfo_file[0] line $.");
- next;
- }
-
- if (/^\@ifclear\s+(\S+)/) {
- &read_input($echo&&(!defined($set{$1})),'/^\@end\s+ifclear/',
- "$texinfo_file[0] line $.");
- next;
- }
- if (/^\@ifset\s+(\S+)/) {
- &read_input($echo&&defined($set{$1}),'/^\@end\s+ifset/',
- "$texinfo_file[0] line $.");
- next;
- }
-
- return if eval "$terminator_re";
-
- if (/^\@include\s+(\S+)/) {
- &open_input_file($1);
- next;
- }
-
- if (/^\@(set|clear)\s+(\S+)/) {
- if ($1 eq "set") {
- $set{$2} = 1;
- } else {
- undef($set{$2});
- }
- }
-
- next unless $echo;
-
- if (/^\@(\w+)/) {next if $ignore_these_directives{$1};}
-
- # Hide @@, @{, and @} so later on it'll be easier to process
- # stuff like `@code{@@TeX@{@}}'.
- s/\$/\$D/g; s/\@\@/\$A/g; s/\@{/\$L/g; s/\@}/\$R/g;
-
- # Convert the HTML special characters
- s/\&/\&amp;/g; s/\</\&lt;/g; s/\>/\&gt;/g; s/\"/\&quot;/g;
-
- $texinfo[$ntexinfo] = $_;
- $origin[$ntexinfo] = "$texinfo_file[0] line $.";
- ++$ntexinfo;
- }
-
- print "Unexpected EOF while searching from $started_at "
- . "for $terminator_re\n";
-} # read_input
-
-########################################################################
-sub initialize_tables
-{
- # Lists which `@x{y}' get expanded into `y'.
- %atxy_2_y = (
- 'asis', 1,
- 'r', 1,
- 'w', 1,
- );
-
- # Describes which `@x{y}' get expanded into `<z>y</z>' and what `z'
- # is in those expansions! (If the expansion matches
- # ``/(.*),(.*),(.*)/'' then y actually expands to ``$1<$2>y</$2>$3'';
- # if z (or $2) begins with ^ then uppercase y before doing the
- # expansion).
- %atxy_2_zyz= (
- 'b', 'STRONG',
- 'cite', 'CITE',
- 'code', "CODE",
- 'dfn', 'EM',
- 'dmn', 'EM',
- 'emph', 'EM',
- 'file', "`,CODE,'",
- 'i', 'EM',
- 'kbd', 'KBD',
- 'key', '^CODE',
- 'math', 'CODE',
- 'samp', "`,CODE,'",
- 'sc', '^EM',
- 'strong', 'STRONG',
- 't', 'CODE',
- 'titlefont', 'CITE',
- 'var', 'VAR',
- );
-
- # Describes which `@x{y}' can be expanded into `z' and what `z' is in
- # those expansions!
- %atxy_2_z = (
- 'TeX', '<i>T</i>e<i>X</i>',
- 'bullet', '*',
- 'copyright', '(C)',
- 'dots', '...',
- 'equiv', '==',
- 'error', 'error-->',
- 'expansion', '==>',
- 'minus', '-',
- 'point', '-!-',
- 'print', '-|',
- 'result', '=>',
- 'today', &today(),
- );
-
- # Lists the '@x{y}' cross reference commands, and describes how they get
- # expanded. Note the 'X' beginning each expansion -- it's there so 'ref'
- # doesn't get expanded to ''!
- %atxy_2_ref = (
- 'xref', 'XSee ',
- 'ref', 'X',
- 'pxref', 'Xsee ',
- 'href', 'X',
- 'inforef', 'XSee ',
- );
-
- %ignore_these_directives = (
- 'author', 1,
- 'break', 1,
- 'contents', 1,
- 'evenfooting', 1,
- 'everyfooting', 1,
- 'everyheading', 1,
- 'finalout', 1,
- 'footnotestyle', 1,
- 'headings', 1,
- 'need', 1,
- 'noindent', 1,
- 'oddfooting', 1,
- 'page', 1,
- 'paragraphindent', 1,
- 'setchapternewpage', 1,
- 'setfilename', 1,
- 'shortcontents', 1,
- 'shorttitlepage', 1,
- 'smallbook', 1,
- 'sp', 1,
- 'subtitle', 1,
- 'summarycontents', 1,
- 'top', 1,
- 'vskip', 1,
- );
-
- # List the section directives and indicate what heading level
- # each one gets.
- %directive_section = (
- 'chapter', 1,
- 'section', 2,
- 'subsection', 3,
- 'subsubsection',4,
- 'appendix', 1,
- 'appendixsec', 2,
- 'appendixsubsec', 3,
- 'appendixsubsubsec', 4,
- 'chapheading', 1,
- 'majorheading', 1,
- 'heading', 2,
- 'subheading', 3,
- 'subsubheading', 4,
- 'unnumbered', 1,
- 'unnumberedsec', 2,
- 'unnumberedsubsec', 3,
- 'unnumberedsubsubsec', 4,
- );
-
- # These @ directives begin a block of preformatted text
- # (">PRE" means indented inside <PRE>...</PRE>)
- %directive_block = (
- 'cartouche', 'HR',
- 'display', '>PRE',
- 'example', '>PRE',
- 'format', 'PRE',
- 'group', '-',
- 'lisp', '>PRE',
- 'quotation', 'BLOCKQUOTE',
- 'smallexample','>PRE',
- );
-
- %index_name = (
- 'cp', 'cpindex',
- 'fn', 'fnindex',
- 'ky', 'kyindex',
- 'pg', 'pgindex',
- 'tp', 'tpindex',
- 'vr', 'vrindex',
- );
- %index_style = (
- 'fn', 'CODE',
- 'ky', 'CODE',
- 'pg', 'CODE',
- 'tp', 'CODE',
- 'vr', 'CODE',
- );
-} # initialize_tables
-
-########################################################################
-sub open_input_file
-{
- unshift(@texinfo_file,$_[0]);
- print "opening $_[0] ...\n" if $debug{open_input_file};
- open($texinfo_file[0],$_[0]) || die "Couldn't open $_[0]: $!\n";
-} # open_input_file
-
-########################################################################
-sub texinfo_read
-# Reads the next line of texinfo input into $_.
-{
- do {
- $fd = $texinfo_file[0];
- $_ = <$fd>;
- } while ($_ eq '' && shift @texinfo_file);
- return $_;
-} # texinfo_read
-
-########################################################################
-sub today
-{
- $today = `date`;
- $today =~ s/\w+ (\w+ +[0-9]+) [0-9]+:[0-9]+:[0-9]+ \w+ ([0-9]+)\n/$1 $2/;
- $today =~ s/ +/ /g;
- return $today;
-} # today
-
-########################################################################
-sub copy_to_destdir
-{
- ($copy_from) = @_;
-
- if ($copy_from =~ m|(.*)/([^/]*)|) {
- $copy_from_dir = $1;
- $copy_from_file = $2;
- } else {
- $copy_from_dir = ".";
- $copy_from_file = $copy_from;
- }
-
- if ($copy_from_dir ne $dir && !-e "$dir/$copy_from_file") {
- system("cp $copy_from $dir")
- && die "Couldn\'t \`cp $copy_from $dir\'\n";
- }
-}
diff --git a/doc/tools/texi2www/texi2www.texi b/doc/tools/texi2www/texi2www.texi
deleted file mode 100644
index c726564c39..0000000000
--- a/doc/tools/texi2www/texi2www.texi
+++ /dev/null
@@ -1,707 +0,0 @@
-\input ../../texinfo/texinfo @c -*-texinfo-*-
-
-@comment %**start of header
-@setfilename texi2www
-@settitle texi2www user's guide
-@comment %**end of header
-
-@finalout
-
-@titlepage
-@title texi2www
-@author Tim Singletary
-@end titlepage
-
-@iftex
-@everyfooting @| Jan 2 1996
-@end iftex
-
-@comment ******************************************************** TOP
-@node Top,,,(dir)
-@ifhtml
-This document describes @var{texi2www}, a utility for converting
-texinfo to HTML.
-
-This document provides a pretty good example of @var{texi2www}'s texinfo
-to HTML conversion. @href{Click here,,,texi2wwwdoc.texi.txt} to view
-the texinfo source to this document.
-@end ifhtml
-
-@menu
-* Overview:: What is texi2www? texinfo? HTML? mosaic? WWW?
-* Real life:: A real-life example using texi2www
-* Invocation:: Command line args, etc.
-* Extensions:: @@ commands not in GNU texinfo
-* Known Bugs:: Oops!
-* Demo:: What various things look like
-
-* texi2dvi::
-
-* Index::
-@end menu
-
-@ifhtml
-@today{}.
-@end ifhtml
-
-
-@comment **************************************************** CHAPTER
-@node Overview
-@unnumbered Overview
-@cindex What is HTML
-@cindex What is texinfo
-@cindex What is mosaic
-@cindex texi2html
-@cindex info2html
-@cindex Other texinfo to HTML converters
-
-@var{Texi2www} converts texinfo to HTML:
-
-@table @asis
-@item
-@table @asis
-@item texinfo
-A documentation system that uses a single source file to produce both
-on-line documentation and printed output. For details see
-@ref{Top,the Texinfo User's Guide,Overview,texinfo,The Texinfo User's Guide}.
-@item HTML
-@href{HyperText Markup Language,,,
-http://www.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html}
-used in World Wide Web documents. Programs like mosaic
-understand HTML.
-@end table
-@end table
-
-Texinfo's on-line documentation viewers (emacs, info, xinfo, etc.) are
-quite limited when compared to mosaic. Mosaic supports multiple fonts,
-variable width fonts, embedded images, and hypertext links to anywhere
-(not just to other texinfo documents). In addition, mosaic keeps a
-history of nodes visited and can easily go back to previously visited
-nodes.
-
-@var{Texinfo} converts @var{texinfo} directly to @var{HTML} without
-going through an intermediate @var{info} conversion.
-
-Other @var{texinfo} to @var{HTML} converters include:
-
-@table @asis
-@item
-@href{@var{http://wwwcn.cern.ch/dci/texi2html/},,,
- http://wwwcn.cern.ch/dci/texi2html/}; and
-@item
-@href{@var{http://www.ericsson.nl/info2www/info2www.html},,,
- http://www.ericsson.nl/info2www/info2www.html}
-@end table
-
-Texi2html is very good, but is different from texi2www in several respects,
-including:
-
-@itemize
-@item Texi2www processes @@ifinfo blocks, whereas texi2html processes
- @@iftex blocks.
-@item Texi2www always generates menus, whereas menu generation is
- optional in texi2html.
-@item Texi2www generates a seperate document for each node, wherease
- texi2html can combine several nodes into one document.
-@item Texi2www adds @href{@code{@@ifhtml} blocks,ifhtml blocks},
- @href{@code{@@html} blocks,html blocks}, and @href{@code{@@href@{@}},
- href}. Texi2html has @code{@@ifhtml} blocks, but they work like
- texi2www's @code{@@html} blocks.
-@item Texi2www uses icons for the prev, up, and next links; texi2html
- doesn't.
-@end itemize
-
-Texi2www is written in perl and may be used and distributed under the
-terms of the @href{GNU General Public License,Copying,emacs}.
-
-Texi2www was written by
-@href{Tim Singletary,,,
-http://sunland.gsfc.nasa.gov/personnel/aam/singletary.html}
-(@cite{tsingle@@sunland.gsfc.nasa.gov}) and is available at
-@href{@var{ftp://sunland.gsfc.nasa.gov/pub/tarfiles/texi2www.tgz},,,
-ftp://sunland.gsfc.nasa.gov/pub/tarfiles/texi2www.tgz}.
-
-@comment **************************************************** CHAPTER
-@node Real life
-@chapter A Real Life Example
-
-Here's how I used texi2www to set up a
-@href{directory of texinfo documents,,,
- http://sunland.gsfc.nasa.gov/info/dir.html}.
-This discussion is the minimum I had to do to set up
-@href{texinfo,,,http://sunland.gsfc.nasa.gov/info/texinfo/Top.html} and
-texi2www.
-First, I created the directory ``@var{$HTDOCS/info}'' (@var{$HTDOCS} is
-the root directory of my web server).
-
-Then, I copied arrow icons ``@var{missing-arrow.gif}'',
-``@var{next-arrow.gif}'', ``@var{prev-arrow.gif}'', and
-``@var{up-arrow.gif}'' into ``@var{$HTDOCS/info}''.
-(I obtained my icons from
-@cite{Rutgers University Network Services} at
-@href{http://ns2.rutgers.edu/doc-images/buttons,,,
- http://ns2.rutgers.edu/doc-images/buttons}.)
-
-Next, I created subdirectories ``@var{$HTDOCS/info/texinfo}'' and
-``@var{$HTDOCS/info/texi2wwwdoc}''.
-(I determined the names of these subdirectories by examining the
-``@var{@@setfilename}'' line in the texinfo files.
-files; @var{texi2wwwdoc.texi} contains the line
-``@var{@@setfilename texi2wwwdoc.info}'' and @var{texinfo.texi} contains
-``@var{@@setfilename texinfo.info}''.
-
-Next, I copied the texinfo files into the appropriate directories. This
-step isn't strictly required, but I think its a good idea since it makes
-it simple to keep track of which texinfo files generated which set of
-html documents.
-
-Then I generated the html documents. I used the commands:
-@example
-> cd $HTDOCS/info/texinfo
-> texi2www texinfo.texi
-Normal completion.
-> cd ../texi2wwwdoc
-> texi2www texi2wwwdoc.texi
-Normal completion.
-@end example
-Examing these directories shows that a bunch of @var{.html} files got
-generated, including, in each directory, ``@var{Top.html}''.
-
-Finally, I created a table of contents file
-``@var{$HTDOCS/info/dir.html}''. The first version of that file looked
-like:
-
-@example
-<HTML>
-<HEAD><TITLE>info directory table of contents</TITLE></HEAD>
-<BODY>
-<MENU>
-<LI><A HREF="texinfo/Top.html">texinfo</A>
- GNU texinfo version 3.1
-<LI><A HREF="texi2wwwdoc/Top.html">texi2www</A>
- Converts texinfo to html
-</MENU>
-</BODY></HTML>
-@end example
-
-@comment **************************************************** CHAPTER
-@node Invocation
-@chapter Invocation
-@cindex Command line options
-@cindex Obtaining gif files
-
-@unnumberedsec Synopsys
-
-@code{texi2www [options] texinfo-file}
-
-@unnumberedsec Options
-@table @asis
-
-@item @code{-dir} @var{path}
- Specifies the path to the directory where the
- generated files get placed. If not specified, the current
- directory is assumed.
-
-@item @code{-footer} @var{file}
- Specifies a file whose contents get
- appended at the bottom of each generated HTML file. Typically
- looks something like:
-
-@example
-<HR>
-<P>Back to our <A HREF="../../homepage.html">home page</A>.</P>
-@end example
-
-@item @code{-icons} @var{path}
- Specifies the path (relative to the directory where the generated
- files get placed) to the arrow files. If not specified, @file{..}
- is assumed. The names of the arrow
- files are @file{up_arrow.gif}, @file{left_arrow.gif},
- @file{right_arrow.gif}, and @file{missing_arrow.gif}
-
-@end table
-
-@unnumberedsec Directory structure
-
-Texi2www will generate a set of HTML files from each texinfo document;
-each set of HTML files must go in a seperate directory (why? one reason
-is because each set includes a file named @code{Top.html}!).
-
-These directories should be subdirectories of the same base directory.
-Assume the base directory is @code{$TEXIBASE}. Then HTML files for
-emacs go in directory @code{$TEXIBASE/emacs}, HTML files for texinfo go
-in @code{$TEXIBASE/texinfo}, etc, where the name of the subdirectory is
-the same as the name of the info file (so cross references between
-documents will work).
-
-In addition to the subdirectories of HTML files, @code{$TEXIBASE}
-contains a file @code{dir.html} and the four arrow gif files
-@code{up_arrow.gif}, @code{left_arrow.gif}, @code{right_arrow.gif}, and
-@code{missing_arrow.gif}.
-
-@code{$TEXIBASE/dir.html} is typically just a menu of links to the
-subdirectories and can be as simple as
-
-@example
-<HTML><HEAD><TITLE>dir</TITLE></HEAD>
-<BODY>
-<MENU>
-<LI><A HREF="emacs/Top.html">emacs</A>
-<LI><A HREF="texinfo/Top.html">texinfo</A>
-</MENU>
-</BODY></HTML>
-@end example
-
-(@code{$TEXIBASE/dir.html} is not generated via texi2www and must be
-created by hand).
-
-
-
-@comment **************************************************** CHAPTER
-@node Extensions
-@chapter Extensions
-@ifhtml
-Texi2www understands the following extensions to pure texinfo:
-@end ifhtml
-@menu
-* ifhtml blocks:: @code{@@ifhtml} and @code{@@end ifhtml}
-* html blocks:: @code{@@html} and @code{@@end html}
-* href:: @code{@@href@{text,node,file,URL@}}
-* gif:: @code{@@gif@{gif-file@}}
-@end menu
-
-@comment ******************************************************* NODE
-@comment Top -> Extensions ->
-@node ifhtml blocks
-@section @code{@@ifhtml} and @code{@@end ifhtml}
-@cindex Conditional HTML blocks
-
-@var{@@ifhtml} blocks are similar to @var{@@ifinfo} and @var{@@iftex}
-blocks. Lines between @var{@@ifhtml} and @var{@@end ifhtml} get
-processed when generating the hypertext manual but get ignored when
-generating the printed manual.
-
-@var{texinfo.tex} (in @var{/usr/local/lib/tex/macros} on my machine)
-needs to be modified in order to use @@ifhtml. I inserted
-@example
-\def\ifhtml@{\doignore@{ifhtml@}@}
-@end example
-after the @code{\def\ifinfo@{\doignore@{ifinfo@}@}} line (line
-596 ???).
-
-In most cases, it is better to use @var{@@ifinfo} than @var{@@ifhtml}.
-
-@comment ******************************************************* NODE
-@node html blocks
-@section @code{@@html} and @code{@@end html}
-@cindex Pure HTML blocks
-
-@var{@@html} blocks are similar to @var{@@tex} blocks; @var{@@html}
-blocks only get processed when generating HTML and lines within
-@var{@@html} blocks may contain HTML commands.
-
-@ifhtml
-For example,
-
-@example
-@@html
-produces <EM>&lt;EM&gt;</EM> in HTML is like @@var@{@@@@var@} in texinfo.
-@@end html
-@end example
-
-@html
-produces <EM>&lt;EM&gt;</EM> in HTML is like @var{@@var} in texinfo.
-@end html
-@end ifhtml
-
-@var{texinfo.tex} (in @var{/usr/local/lib/tex/macros} on my machine)
-needs to be modified in order to use @@ifhtml. I inserted
-@example
-\def\html@{\doignore@{html@}@}
-@end example
-after the @code{\def\ifinfo@{\doignore@{ifinfo@}@}} line (line
-596 ???).
-
-@comment ******************************************************* NODE
-@node href
-@section @code{@@href@{text,node,file,URL@}}
-
-Use @code{@@href@{text,node,file,URL@}} when you want a hypertext link in an
-HTML document and plain text everywhere else.
-
-@var{Text} is the text you want displayed in the document.
-@var{Node},@var{file}, and @var{URL} indicate what @var{text} is linked to.
-@var{Node} and @var{file} are a normal texinfo style node reference;
-@var{URL} is a HTML URL.
-One of @var{node} or @var{URL} must be specified (if both are specified,
-@var{URL} is used).
-
-The @href{texinfo source used to create this
-document,,,texi2wwwdoc.texi.txt} contains numerous examples of how
-@@href might be used.
-
-@var{texinfo.tex} (in @var{/usr/local/lib/tex/macros} on my machine)
-needs to be modified in order to use @@href@{@}. All I did was insert
-@example
-\def\href#1{\hrefX[#1,,,]}
-\def\hrefX[#1,#2,#3,#4]{#1}
-@end example
-before the @code{\def\pxref} line (line 3497 ???).
-
-@comment ******************************************************* NODE
-@node gif
-@section @code{@@gif@{@var{pict.gif}@}}
-
-This extension provides a method for inserting a gif file in both the
-html and printed document. For example, here are my arrow icons:
-@*
-prev: @gif{prev-arrow.gif},
-up: @gif{up-arrow.gif},
-and next: @gif{next-arrow.gif}
-
-@subsection @code{@@gif@{@}} and @var{texi2www}
-
-@var{texi2www} copies @var{pict.gif} to the destination directory.
-
-@subsection @code{@@gif@{@}} and @var{texi2dvi}
-
-@href{@var{texi2dvi},texi2dvi} converts @var{pict.gif} to a font and
-uses this font to insert the picture in the document. This conversion
-to a font requires that the pbmplus and bm2font utilities be installed on
-your system:
-
-@table @asis
-@item pbmplus
- A suite of utilities for manipulating images. @var{texi2dvi} uses
- @var{giftopnm}, @var{pnmscale}, @var{pnmnlfilt}, @var{ppmquant},
- and @var{ppmtogif}. These utilities can be obtained from
- @href{@code{
- <ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.tar.gz>},,,
- ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.tar.gz}.
-
-
-@item bm2font
- @var{bm2font} converts a bitmap images (including ``@code{.gif}''
- images) to a font that can be used in a @TeX{} document.
- @var{bm2font} can be obtained from
- @href{@code{<ftp://ftp.shsu.edu/tex-archive/graphics/bm2font.tar.gz>},,,
- ftp://ftp.shsu.edu/tex-archive/graphics/bm2font.tar.gz}.
-@end table
-
-@comment **************************************************** CHAPTER
-@node Known Bugs
-@chapter Known Bugs
-
-@enumerate
-
-@item The @href{@code{@@center},titlefont center sp,texinfo} command
- doesn't work since HTML doesn't support centering yet.
-
-@item The @href{@code{@@noindent},noindent,texinfo} and
- @href{@code{@@exdent},exdent,texinfo} commands don't work since
- HTML doesn't include any facility to control indentation.
-
-@item Mark specifications in the @href{@code{@@itemize},itemize,texinfo}
- command are ignored since HTML doesn't include any facility to
- specify the tag in itemized lists.
-
-@item The @href{emacs texinfo files need to be tweaked,
- problems with emacs} to work with @var{texi2www}.
-
-@item One @href{@code{@@gif},gif} command is allowed per line.
-
-@end enumerate
-
-@unnumberedsec Fixed Bugs
-
-@enumerate
-
-@item Previous versions didn't handle nested tables correctly. The
- @@item following an inner @@table would be drawn in the wrong
- font. @var{(tsingle, Jan 2 1996)}
-
-@item Previous versions didn't capitalize
- @href{@code{@@sc@{@}},Smallcaps,texinfo} text. (There's still
- the problem of HTML not supporting true smallcaps, however).
- @var{(tsingle, Sep 6 1995)}
-
-@item Previous versions of @var{texi2www} didn't correctly index
- @href{@code{@@ftable} and @code{@@vtable},ftable vtable,texinfo}
- items; this bug has been fixed! @var{(tsingle, Aug 17 1995)}
-
-@end enumerate
-
-@node problems with emacs
-@section emacs.texi @result{} HTML problems
-
-The file @var{man/commands.texi} distributed with GNU Emacs version
-version 19.25 contains, near the top of the file:
-
-@example
-@@c See file emacs.texi for copying conditions.
-@@iftex
-@@chapter Characters, Keys and Commands
-
- This chapter explains the character set used by Emacs for input commands
-and for the contents of files, and also explains the concepts of
-@@dfn@{keys@} and @@dfn@{commands@} which are necessary for understanding how
-your keyboard input is understood by Emacs.
-@@end iftex
-@@node User Input, Keys, Screen, Top
-@@section Keyboard Input
-@end example
-
-Texi2www doesn't see the @@chapter since it's inside an @@iftex block;
-this confuses texi2www's chapter numbering. My fix was to change this
-section to:
-
-@example
-@@c See file emacs.texi for copying conditions.
-@@node User Input, Keys, Screen, Top
-@@chapter Characters, Keys and Commands
-@@iftex
-
- This chapter explains the character set used by Emacs for input commands
-and for the contents of files, and also explains the concepts of
-@@dfn@{keys@} and @@dfn@{commands@} which are necessary for understanding how
-your keyboard input is understood by Emacs.
-@@end iftex
-@@section Keyboard Input
-@end example
-
-@var{killing.texi}, @var{misc.texi}, and @var{trouble.texi} have similar
-problems.
-
-@comment **************************************************** CHAPTER
-@node Demo
-@appendix Sample output
-
-This document itself is a pretty good example of what texi2www supports
-and produces. Following are some examples to really make things clear;
-to fully appreciate these examples compare the source and printed output
-to your html viewer.
-
-@menu
-* Fonts:: @@var@{@}, etc.
-* Glyphs:: @@result@{@}, etc.
-* Blocks:: @@example ... @@end example, etc.
-* Tables and Lists:: @@table .. @@end table, etc.
-@end menu
-
-@comment **************************************************** SECTION
-@node Fonts
-@unnumberedsec Text markup
-
-Texi2www supports:
-
-@table @asis
-
-@item @@b@{@var{bold text}@} @result{} @b{bold text}
-Here is @b{some text} in the @@b font.
-
-@item @@cite@{@var{reference}@} @result{} @cite{reference}
-Indicate the name of a book.
-Here is @cite{some text} in the @@cite font.
-
-@item @@code@{@var{sample-code}@} @result{} @code{sample-code}
-Indicate text that is a literal example of a piece of a program.
-Here is @code{some text} in the @@code font.
-
-@item @@dfn@{@var{term}@} @result{} @dfn{term}
-Indicate the introductory or defining use of a term.
-Here is @dfn{some text} in the @@dfn font.
-
-@item @@dmn@{@var{text}@} @result{} @dmn{text}
-Here is @dmn{some text} in the @@dmn font.
-
-@item @@emph@{@var{text}@} @result{} @emph{text}
-Here is @emph{some text} in the @@emph font.
-
-@item @@file@{@var{file-name}@} @result{} @file{file-name}
-Indicate the name of a file.
-Here is @file{some text} in the @@file font.
-
-@item @@i@{@var{italic text}@} @result{} @i{italic text}
-Here is @i{some text} in the @@i font.
-
-@item @@kbd@{@var{keyboard-characters}@} @result{} @kbd{keyboard-characters}
-Indicate keyboard input.
-Here is @kbd{some text} in the @@kbd font.
-
-@item @@key@{@var{key-name}@} @result{} @key{key-name}
-Indicate the conventional name for a key on a keyboard.
-Here is @key{some text} in the @@key font.
-
-@item @@math@{@var{ax^2+b}@} @result{} @math{ax^2+b}
-Here is @r{some text} in the @@math font.
-
-@item @@r@{@var{roman font text}@} @result{} @r{roman font text}
-Here is @r{some text} in the @@r font.
-
-@item @@samp@{@var{text}@} @result{} @samp{text}
-Indicate text that is a literal example of a sequence of characters.
-Here is @samp{some text} in the @@samp font.
-
-@item @@sc@{@var{text}@} @result{} @sc{text}
-Here is @sc{some text} in the @@sc font.
-
-@item @@strong@{@var{text}@} @result{} @strong{text}
-Here is @strong{some text} in the @@strong font.
-
-@item @@t@{@var{fixed-width text}@} @result{} @t{fixed-width text}
-Here is @t{some text} in the @@t font.
-
-@item @@titlefont@{@var{text}@} @result{} @titlefont{text}
-Here is @titlefont{some text} in the @@titlefont font.
-
-@item @@var@{@var{metasyntactic-variable}@} @result{} @var{metasyntactic-variable}
-Indicate a metasyntactic variable.
-Here is @var{some text} in the @@var font.
-
-@end table
-
-
-@comment **************************************************** SECTION
-@node Glyphs
-@unnumberedsec Glyphs
-
-@table @asis
-
-@item @@TeX@{@} @result{} @TeX{}
-@item @@bullet@{@} @result{} @bullet{}
-@item @@copyright@{@} @result{} @copyright{}
-@item @@dots@{@} @result{} @dots{}
-@item @@equiv@{@} @result{} @equiv{}
-@item @@error@{@} @result{} @error{}
-@item @@expansion@{@} @result{} @expansion{}
-@item @@minus@{@} @result{} @minus{}
-@item @@point@{@} @result{} @point{}
-@item @@print@{@} @result{} @print{}
-@item @@result@{@} @result{} @result{}
-@item @@today@{@} @result{} @today{}
-
-@end table
-
-@comment **************************************************** SECTION
-@node Blocks
-@unnumberedsec Blocks
-
-@example
-@cartouche
-@@example
-@@cartouche
-Here's two lines
-of text
-@@end cartouche
-@@end example
-@end cartouche
-@end example
-
-@display
-@@display
-Here's two lines
-of text
-@@end display
-@end display
-
-@example
-@@example
-Here's two lines
-of text
-@@end example
-@end example
-
-@format
-@@format
-Here's two lines
-of text
-@@end format
-@end format
-
-@lisp
-@@lisp
-Here's two lines
-of text
-@@end lisp
-@end lisp
-
-@quotation
-@@quotation
-Here's two lines
-of text
-@@end quotation
-@end quotation
-
-@smallexample
-@@smallexample
-Here's two lines
-of text
-@@end smallexample
-@end smallexample
-
-@comment **************************************************** SECTION
-@node Tables and Lists
-@unnumberedsec Tables and Lists
-
-@example
-@@table @@code
-@@item code-one
-@@table @@var
-@@item var-one
-@@table @@samp
-@@item samp-one
-Hmmm.
-@@item samp-two
-Mmmmh.
-@@end table
-@@item var-two
-Huh?
-@@end table
-@@item code-two
-Duh?
-@@end table
-@end example
-
-@table @code
-@item code-one
-@table @var
-@item var-one
-@table @samp
-@item samp-one
-Hmmm.
-@item samp-two
-Mmmmh.
-@end table
-@item var-two
-Huh?
-@end table
-@item code-two
-Duh?
-@end table
-
-
-@comment **************************************************** CHAPTER
-@node texi2dvi
-@appendix texi2dvi & texinfo.tex
-
-Versions of ``@code{texi2dvi}'' and ``@code{texinfo.tex}'' are included
-with this package. These are compatible with the
-@href{texi2www extensions,Extensions}.
-
-@appendixsec texi2dvi
-
-@appendixsec texinfo.tex
-
-``@code{texinfo.tex}'' is a @TeX{} macro used during the @var{texinfo}
-@result{} @var{dvi} conversion.
-
-
-
-
-@comment **************************************************** CHAPTER
-@node Index
-@unnumbered Index
-@printindex cp
-
-@contents
-@bye
diff --git a/doc/tools/texi2www/up-arrow.gif b/doc/tools/texi2www/up-arrow.gif
deleted file mode 100644
index 82aa8ccc68..0000000000
--- a/doc/tools/texi2www/up-arrow.gif
+++ /dev/null
Binary files differ
diff --git a/doc/tools/update b/doc/tools/update
deleted file mode 100644
index 6199707a74..0000000000
--- a/doc/tools/update
+++ /dev/null
@@ -1,221 +0,0 @@
-#!/bin/ksh
-#
-# Either bash or ksh will be ok for this; requires 'test -ot'
-# (-p above just says to not parse $ENV file; makes it faster for
-# those of us who set $ENV)
-#
-#
-# NOTE
-#
-# This is potentially a very dangerous program.
-#
-# $Id$
-#
-
-# progname=`basename $0`
-progname=${0##*/} # fast basename hack for ksh, bash
-
-USAGE=\
-"
-usage: $progname [ -vs ] [ -b base_directory ] [-p file] [-f] [files...]
- -v -- verbose
- -p -- file with replacement instructions
- -s -- skip prompt for backup verification
- -f -- do files at end of line
-
-base_directory is the root directory of the source code to update. It
-defaults to the current directory.
-
-This program updates C, H, and .inl files.
-"
-
-fatal() {
- if [ "$1" ]
- then
- echo >&2
- echo $* >&2
- echo >&2
- fi
- echo "$USAGE" 1>&2
- exit 1
-}
-
-#
-# KLUDGE to figure out at runtime how to echo a line without a
-# newline.
-#
-count=`echo "\\c" | wc -c`
-if [ ${count} -ne 0 ] ; then
- EARG="-n"
- EOL=""
-else
- EARG=""
- EOL="\\c"
-fi
-
-#
-# Function to make sure they do a backup
-#
-
-WARNING=\
-"
-
-*******************************************************************************
-*******************************************************************************
-*******************************************************************************
-**** ****
-**** WARNING!!! WARNING!!! WARNING!!! ****
-**** ****
-**** ALL SOURCE CODE SHOULD BE BACKED UP BEFORE RUNNING THIS PROGRAM!! ****
-**** ****
-**** WARNING!!! WARNING!!! WARNING!!! ****
-**** ****
-*******************************************************************************
-*******************************************************************************
-*******************************************************************************
-
-"
-
-verify_backup()
-{
- echo "$WARNING"
- continue="yes"
- while [ $continue = "yes" ]
- do
-echo ${EARG} "Do you wish to update the source tree at this time [y|n]? " ${EOL}
- read answer
- case $answer in
- [yY]*)
- continue="no"
- ;;
- [nN]*)
- echo
- echo "Exitting at user request"
- echo
- exit 0
- ;;
- esac
- done
-}
-
-#
-# Default tools to use...
-#
-# NOTE: The GNU versions of both of these are faster.
-#
-find_prog=find
-xargs_prog=xargs
-
-#
-# process the options
-#
-
-verbose=""
-suffix=""
-mode=""
-base_directory=.
-do_files="no"
-do_prompt="yes"
-replacement_file=""
-
-while getopts sfp:b:v OPT
-do
- case "$OPT" in
- v)
- verbose="yes";;
- s)
- do_prompt="no";;
- b)
- base_directory=${OPTARG};;
- p)
- replacement_file=${OPTARG};;
- f)
- do_files="yes";;
- *)
- fatal
- esac
-done
-
-let $((shiftcount = $OPTIND - 1))
-shift $shiftcount
-
-args=$*
-
-#
-# Make sure they have done a backup
-#
-
-if [ ${do_prompt} = "yes" ]
-then
- verify_backup
-fi
-
-#
-# Validate the base directory
-#
-
-if [ ! -d $base_directory ]
-then
- fatal "${base_directory} does not exist"
-fi
-
-#
-# Validate the replacement file
-#
-
-if [ ! -r $replacement_file ]
-then
- fatal "${replacement_file} does not exist or is not readable"
-fi
-
-
-#
-# Verify enough of the RTEMS environment variables are set
-#
-
-RTEMS_HOME=/usr1/rtems/rtemsdoc-work
-if [ ! -d "${RTEMS_HOME}" ]
-then
- fatal "RTEMS_HOME environment variable is not initialized"
-fi
-
-#
-# Update the files
-#
-
-generate_list()
-{
- if [ ${do_files} = "yes" ]
- then
- for i in $args
- do
- echo $i
- done
- else
- ${find_prog} ${base_directory} \( -name "*.[ch]" -o -name "*.inl" \) -print
- fi
-}
-
-generate_list | ${xargs_prog} |
- while read line
- do
-
- if [ ${verbose} = yes ] ; then
- echo ${RTEMS_HOME}/tools/word-replace -p ${replacement_file} ${line}
- fi
- ${RTEMS_HOME}/tools/word-replace -p ${replacement_file} ${line}
- if [ $? -ne 0 ]
- then
- exit 1
- fi
- for file in ${line}
- do
- mv ${file}.fixed ${file}
- done
- done
-
-exit 0
-
-# Local Variables: ***
-# mode:ksh ***
-# End: ***
diff --git a/doc/tools/word-replace b/doc/tools/word-replace
deleted file mode 100755
index 90e72117fd..0000000000
--- a/doc/tools/word-replace
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/perl
-#
-# $Id$
-#
-
-eval "exec /usr/local/bin/perl -S $0 $*"
- if $running_under_some_shell;
-
-require 'getopts.pl';
-&Getopts("p:vh"); # help, pattern file, verbose,
-
-if ($opt_h || ! $opt_p) {
- print STDERR <<NO_MORE_HELP;
-word-replace
-
- Replace *words* with patterns. Pattern file specifies which patterns
- to replace on each line. All patterns are wrapped with perl \\b regexp
- specifiers.
-
-Usage: $0 [-v] -p pattern-file files to replace
-
- -v -- possibly more verbose
- -p file -- pattern file
- -h -- help
-
- anything else == this help message
-
-Pattern file looks like this:
-
-# Example:
-# ignores all lines with beginning with # or not exactly 2 fields
-_Dorky_Name rtems_dorky_name # comments, and blank lines are cool
-_Dorky_Name2 rtems_dorky_name2 # comments, and blank lines are cool
-NO_MORE_HELP
- exit 0;
-}
-
-$verbose = $opt_v;
-$pattern_file = $opt_p;
-
-# make standard outputs unbuffered (so the '.'s come out ok)
-$oldfh = select(STDERR); $| = 1; select($oldfh);
-$oldfh = select(STDOUT); $| = 1; select($oldfh);
-
-# pull in the patterns
-open(PATTERNS, "<$pattern_file") ||
- die "could not open $pattern_file: $!, crapped out at";
-
-foreach (<PATTERNS>)
-{
- chop;
- s/#.*//;
- next if /^$/;
- ($orig, $new, $junk, @rest) = split;
- next if ( ! $orig || ! $new || $junk); # <2 or >2 patterns
- die "pattern appears 2x: '$orig' in '$pattern_file'--" if defined($patterns{$orig});
- $patterns{$orig} = $new;
-}
-close PATTERNS;
-
-# walk thru each line in each file
-foreach $file (@ARGV)
-{
- print "$file\t";
-
- open (INFILE, "<$file") ||
- die "could not open input file $file: $!";
-
- $outfile = $file . ".fixed";;
- open (OUTFILE, ">$outfile") ||
- die "could not open output file $outfile: $!";
-
- while (<INFILE>)
- {
- study; # maybe make s/// faster
- foreach $key (keys %patterns)
- {
- if ( s/\b$key\b/$patterns{$key}/ge )
- {
- print ".";
- }
- }
- print OUTFILE $_;
- }
- print "\n";
- close INFILE;
- close OUTFILE;
-}
-
diff --git a/doc/user/Makefile b/doc/user/Makefile
deleted file mode 100644
index 806699f28c..0000000000
--- a/doc/user/Makefile
+++ /dev/null
@@ -1,180 +0,0 @@
-#
-# COPYRIGHT (c) 1988-1998.
-# On-Line Applications Research Corporation (OAR).
-# All rights reserved.
-#
-# $Id$
-#
-
-PROJECT=c_user
-DISTRIBUTION_LEVEL=public
-
-include ../Make.config
-
-all: html info ps
-
-dirs:
- $(make-dirs)
-
-COMMON_FILES=../common/cpright.texi
-FILES= bsp.texi c_user.texi clock.texi concepts.texi conf.texi \
- dirstat.texi dpmem.texi event.texi example.texi fatal.texi \
- glossary.texi init.texi intr.texi io.texi mp.texi msg.texi overview.texi \
- part.texi preface.texi region.texi rtmon.texi schedule.texi sem.texi \
- signal.texi task.texi timer.texi userext.texi $(COMMON_FILES)
-
-GENERATED_FILES=overview.texi concepts.texi init.texi task.texi \
- intr.texi clock.texi timer.texi sem.texi msg.texi \
- event.texi signal.texi part.texi region.texi \
- dpmem.texi io.texi fatal.texi schedule.texi rtmon.texi \
- bsp.texi userext.texi conf.texi mp.texi
-
-INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*)
-
-info: dirs c_user
- cp $(PROJECT) $(PROJECT)-* $(INFO_INSTALL)
-
-c_user: $(FILES)
- $(MAKEINFO) $(PROJECT).texi
-
-dvi: $(PROJECT).dvi
-ps: dirs $(PROJECT).ps
-
-$(PROJECT).ps: $(PROJECT).dvi
- dvips -o $(PROJECT).ps $(PROJECT).dvi
- cp $(PROJECT).ps $(PS_INSTALL)
-
-$(PROJECT).dvi: $(FILES)
- $(TEXI2DVI) $(PROJECT).texi
-
-html: dirs $(FILES)
- -mkdir -p $(WWW_INSTALL)/c_user
- cp rtemsarc.gif rtemspie.gif states.gif $(WWW_INSTALL)/c_user
- $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \
- $(PROJECT).texi
-
-clean:
- rm -f *.o $(PROG) *.txt core *.html
- rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
- rm -f c_user c_user-* _* $(GENERATED_FILES)
-
-#preface.texi: preface.t
-# $(BMENU) -p "Top" \
-# -u "Top" \
-# -n "Overview" ${*}.t
-
-overview.texi: overview.t
- $(BMENU) -p "Preface" \
- -u "Top" \
- -n "Key Concepts" ${*}.t
-
-concepts.texi: concepts.t
- $(BMENU) -p "Overview Manual Organization" \
- -u "Top" \
- -n "Initialization Manager" ${*}.t
-
-init.texi: init.t
- $(BMENU) -p "Key Concepts Memory Management" \
- -u "Top" \
- -n "Task Manager" ${*}.t
-
-task.texi: task.t
- $(BMENU) -p "Initialization Manager SHUTDOWN_EXECUTIVE - Shutdown RTEMS" \
- -u "Top" \
- -n "Interrupt Manager" ${*}.t
-
-intr.texi: intr.t
- $(BMENU) -p "Task Manager TASK_WAKE_WHEN - Wake up when specified" \
- -u "Top" \
- -n "Clock Manager" ${*}.t
-
-clock.texi: clock.t
- $(BMENU) \
- -p "Interrupt Manager INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress" \
- -u "Top" \
- -n "Timer Manager" ${*}.t
-
-timer.texi: timer.t
- $(BMENU) -p "Clock Manager CLOCK_TICK - Announce a clock tick" \
- -u "Top" \
- -n "Semaphore Manager" ${*}.t
-
-sem.texi: sem.t
- $(BMENU) -p "Timer Manager TIMER_RESET - Reset an interval timer" \
- -u "Top" \
- -n "Message Manager" ${*}.t
-
-msg.texi: msg.t
- $(BMENU) -p "Semaphore Manager SEMAPHORE_RELEASE - Release a semaphore" \
- -u "Top" \
- -n "Event Manager" ${*}.t
-
-event.texi: event.t
- $(BMENU) \
- -p "Message Manager MESSAGE_QUEUE_FLUSH - Flush all messages on a queue" \
- -u "Top" \
- -n "Signal Manager" ${*}.t
-
-signal.texi: signal.t
- $(BMENU) -p "Event Manager EVENT_RECEIVE - Receive event condition" \
- -u "Top" \
- -n "Partition Manager" ${*}.t
-
-part.texi: part.t
- $(BMENU) -p "Signal Manager SIGNAL_SEND - Send signal set to a task" \
- -u "Top" \
- -n "Region Manager" ${*}.t
-
-region.texi: region.t
- $(BMENU) \
--p "Partition Manager PARTITION_RETURN_BUFFER - Return buffer to a partition" \
- -u "Top" \
- -n "Dual-Ported Memory Manager" ${*}.t
-
-dpmem.texi: dpmem.t
- $(BMENU) \
- -p "Region Manager REGION_GET_SEGMENT_SIZE - Obtain size of a segment" \
- -u "Top" \
- -n "I/O Manager" ${*}.t
-
-io.texi: io.t
- $(BMENU) -p "Dual-Ported Memory Manager PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address" \
- -u "Top" \
- -n "Fatal Error Manager" ${*}.t
-
-fatal.texi: fatal.t
- $(BMENU) -p "I/O Manager IO_CONTROL - Special device services" \
- -u "Top" \
- -n "Scheduling Concepts" ${*}.t
-
-schedule.texi: schedule.t
- $(BMENU) \
--p "Fatal Error Manager FATAL_ERROR_OCCURRED - Invoke the fatal error handler" \
- -u "Top" \
- -n "Rate Monotonic Manager" ${*}.t
-
-rtmon.texi: rtmon.t
- $(BMENU) -p "Scheduling Concepts Task State Transitions" \
- -u "Top" \
- -n "Board Support Packages" ${*}.t
-
-bsp.texi: bsp.t
- $(BMENU) -p "Rate Monotonic Manager RATE_MONOTONIC_GET_STATUS - Obtain status information on period" \
- -u "Top" \
- -n "User Extensions Manager" ${*}.t
-
-userext.texi: userext.t
- $(BMENU) -p "Board Support Packages Heterogeneous Systems" \
- -u "Top" \
- -n "Configuring a System" ${*}.t
-
-conf.texi: conf.t
- $(BMENU) -p "User Extensions Manager EXTENSION_DELETE - Delete a extension set" \
- -u "Top" \
- -n "Multiprocessing Manager" ${*}.t
-
-mp.texi: mp.t
- $(BMENU) -p "Configuring a System Sizing the RTEMS RAM Workspace" \
- -u "Top" \
- -n "Directive Status Codes" ${*}.t
-
diff --git a/doc/user/bsp.t b/doc/user/bsp.t
deleted file mode 100644
index f1350c0c96..0000000000
--- a/doc/user/bsp.t
+++ /dev/null
@@ -1,313 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Board Support Packages
-
-@section Introduction
-
-A board support package (BSP) is a collection of
-user-provided facilities which interface RTEMS and an
-application with a specific hardware platform. These facilities
-may include hardware initialization, device drivers, user
-extensions, and a Multiprocessor Communications Interface
-(MPCI). However, a minimal BSP need only support processor
-reset and initialization and, if needed, a clock tick.
-
-@section Reset and Initialization
-
-An RTEMS based application is initiated or
-re-initiated when the processor is reset. This initialization
-code is responsible for preparing the target platform for the
-RTEMS application. Although the exact actions performed by the
-initialization code are highly processor and target dependent,
-the logical functionality of these actions are similar across a
-variety of processors and target platforms.
-
-Normally, the application's initialization is
-performed at two separate times: before the call to
-@code{@value{DIRPREFIX}initialize_executive}
-(reset application initialization) and
-after @code{@value{DIRPREFIX}initialize_executive}
-in the user's initialization tasks
-(local and global application initialization). The order of the
-startup procedure is as follows:
-
-@enumerate
-@item Reset application initialization.
-@item Call to @code{@value{DIRPREFIX}initialize_executive}
-@item Local and global application initialization.
-@end enumerate
-
-The reset application initialization code is executed
-first when the processor is reset. All of the hardware must be
-initialized to a quiescent state by this software before
-initializing RTEMS. When in quiescent state, devices do not
-generate any interrupts or require any servicing by the
-application. Some of the hardware components may be initialized
-in this code as well as any application initialization that does
-not involve calls to RTEMS directives.
-
-The processor's Interrupt Vector Table which will be
-used by the application may need to be set to the required value
-by the reset application initialization code. Because
-interrupts are enabled automatically by RTEMS as part of the
-@code{@value{DIRPREFIX}initialize_executive} directive,
-the Interrupt Vector Table MUST
-be set before this directive is invoked to insure correct
-interrupt vectoring. The processor's Interrupt Vector Table
-must be accessible by RTEMS as it will be modified by the
-@code{@value{DIRPREFIX}interrupt_catch} directive.
-On some CPUs, RTEMS installs it's
-own Interrupt Vector Table as part of initialization and thus
-these requirements are met automatically. The reset code which
-is executed before the call to @code{@value{DIRPREFIX}initialize_executive}
-has the following requirements:
-
-@itemize @bullet
-@item Must not make any RTEMS directive calls.
-
-@item If the processor supports multiple privilege levels,
-must leave the processor in the most privileged, or supervisory,
-state.
-
-@item Must allocate a stack of at least @code{@value{RPREFIX}MINIMUM_STACK_SIZE}
-bytes and initialize the stack pointer for the
-@code{@value{DIRPREFIX}initialize_executive} directive.
-
-@item Must initialize the processor's Interrupt Vector Table.
-
-@item Must disable all maskable interrupts.
-
-@item If the processor supports a separate interrupt stack,
-must allocate the interrupt stack and initialize the interrupt
-stack pointer.
-@end itemize
-
-The @code{@value{DIRPREFIX}initialize_executive} directive does not return to
-the initialization code, but causes the highest priority
-initialization task to begin execution. Initialization tasks
-are used to perform both local and global application
-initialization which is dependent on RTEMS facilities. The user
-initialization task facility is typically used to create the
-application's set of tasks.
-
-@subsection Interrupt Stack Requirements
-
-The worst-case stack usage by interrupt service
-routines must be taken into account when designing an
-application. If the processor supports interrupt nesting, the
-stack usage must include the deepest nest level. The worst-case
-stack usage must account for the following requirements:
-
-@itemize @bullet
-@item Processor's interrupt stack frame
-
-@item Processor's subroutine call stack frame
-
-@item RTEMS system calls
-
-@item Registers saved on stack
-
-@item Application subroutine calls
-@end itemize
-
-The size of the interrupt stack must be greater than
-or equal to the constant @code{@value{RPREFIX}MINIMUM_STACK_SIZE}.
-
-@subsection Processors with a Separate Interrupt Stack
-
-Some processors support a separate stack for
-interrupts. When an interrupt is vectored and the interrupt is
-not nested, the processor will automatically switch from the
-current stack to the interrupt stack. The size of this stack is
-based solely on the worst-case stack usage by interrupt service
-routines.
-
-The dedicated interrupt stack for the entire
-application is supplied and initialized by the reset and
-initialization code of the user's board support package. Since
-all ISRs use this stack, the stack size must take into account
-the worst case stack usage by any combination of nested ISRs.
-
-@subsection Processors without a Separate Interrupt Stack
-
-Some processors do not support a separate stack for
-interrupts. In this case, without special assistance every
-task's stack must include enough space to handle the task's
-worst-case stack usage as well as the worst-case interrupt stack
-usage. This is necessary because the worst-case interrupt
-nesting could occur while any task is executing.
-
-On many processors without dedicated hardware managed
-interrupt stacks, RTEMS manages a dedicated interrupt stack in
-software. If this capability is supported on a CPU, then it is
-logically equivalent to the processor supporting a separate
-interrupt stack in hardware.
-
-@section Device Drivers
-
-Device drivers consist of control software for
-special peripheral devices and provide a logical interface for
-the application developer. The RTEMS I/O manager provides
-directives which allow applications to access these device
-drivers in a consistent fashion. A Board Support Package may
-include device drivers to access the hardware on the target
-platform. These devices typically include serial and parallel
-ports, counter/timer peripherals, real-time clocks, disk
-interfaces, and network controllers.
-
-For more information on device drivers, refer to the
-I/O Manager chapter.
-
-@subsection Clock Tick Device Driver
-
-Most RTEMS applications will include a clock tick
-device driver which invokes the @code{@value{DIRPREFIX}clock_tick}
-directive at regular intervals. The clock tick is necessary if
-the application is to utilize timeslicing, the clock manager, the
-timer manager, the rate monotonic manager, or the timeout option on blocking
-directives.
-
-The clock tick is usually provided as an interrupt
-from a counter/timer or a real-time clock device. When a
-counter/timer is used to provide the clock tick, the device is
-typically programmed to operate in continuous mode. This mode
-selection causes the device to automatically reload the initial
-count and continue the countdown without programmer
-intervention. This reduces the overhead required to manipulate
-the counter/timer in the clock tick ISR and increases the
-accuracy of tick occurrences. The initial count can be based on
-the microseconds_per_tick field in the RTEMS Configuration
-Table. An alternate approach is to set the initial count for a
-fixed time period (such as one millisecond) and have the ISR
-invoke @code{@value{DIRPREFIX}clock_tick}
-on the microseconds_per_tick boundaries.
-Obviously, this can induce some error if the configured
-microseconds_per_tick is not evenly divisible by the chosen
-clock interrupt quantum.
-
-It is important to note that the interval between
-clock ticks directly impacts the granularity of RTEMS timing
-operations. In addition, the frequency of clock ticks is an
-important factor in the overall level of system overhead. A
-high clock tick frequency results in less processor time being
-available for task execution due to the increased number of
-clock tick ISRs.
-
-@section User Extensions
-
-RTEMS allows the application developer to augment
-selected features by invoking user-supplied extension routines
-when the following system events occur:
-
-@itemize @bullet
-@item Task creation
-@item Task initiation
-@item Task reinitiation
-@item Task deletion
-@item Task context switch
-@item Post task context switch
-@item Task begin
-@item Task exits
-@item Fatal error detection
-@end itemize
-
-User extensions can be used to implement a wide variety of
-functions including execution profiling, non-standard
-coprocessor support, debug support, and error detection and
-recovery. For example, the context of a non-standard numeric
-coprocessor may be maintained via the user extensions. In this
-example, the task creation and deletion extensions are
-responsible for allocating and deallocating the context area,
-the task initiation and reinitiation extensions would be
-responsible for priming the context area, and the task context
-switch extension would save and restore the context of the
-device.
-
-For more information on user extensions, refer to the
-User Extensions chapter.
-
-@section Multiprocessor Communications Interface (MPCI)
-
-RTEMS requires that an MPCI layer be provided when a
-multiple node application is developed. This MPCI layer must
-provide an efficient and reliable communications mechanism
-between the multiple nodes. Tasks on different nodes
-communicate and synchronize with one another via the MPCI. Each
-MPCI layer must be tailored to support the architecture of the
-target platform.
-
-For more information on the MPCI, refer to the
-Multiprocessing Manager chapter.
-
-@subsection Tightly-Coupled Systems
-
-A tightly-coupled system is a multiprocessor
-configuration in which the processors communicate solely via
-shared global memory. The MPCI can simply place the RTEMS
-packets in the shared memory space. The two primary
-considerations when designing an MPCI for a tightly-coupled
-system are data consistency and informing another node of a
-packet.
-
-The data consistency problem may be solved using
-atomic "test and set" operations to provide a "lock" in the
-shared memory. It is important to minimize the length of time
-any particular processor locks a shared data structure.
-
-The problem of informing another node of a packet can
-be addressed using one of two techniques. The first technique
-is to use an interprocessor interrupt capability to cause an
-interrupt on the receiving node. This technique requires that
-special support hardware be provided by either the processor
-itself or the target platform. The second technique is to have
-a node poll for arrival of packets. The drawback to this
-technique is the overhead associated with polling.
-
-@subsection Loosely-Coupled Systems
-
-A loosely-coupled system is a multiprocessor
-configuration in which the processors communicate via some type
-of communications link which is not shared global memory. The
-MPCI sends the RTEMS packets across the communications link to
-the destination node. The characteristics of the communications
-link vary widely and have a significant impact on the MPCI
-layer. For example, the bandwidth of the communications link
-has an obvious impact on the maximum MPCI throughput.
-
-The characteristics of a shared network, such as
-Ethernet, lend themselves to supporting an MPCI layer. These
-networks provide both the point-to-point and broadcast
-capabilities which are expected by RTEMS.
-
-@subsection Systems with Mixed Coupling
-
-A mixed-coupling system is a multiprocessor
-configuration in which the processors communicate via both
-shared memory and communications links. A unique characteristic
-of mixed-coupling systems is that a node may not have access to
-all communication methods. There may be multiple shared memory
-areas and communication links. Therefore, one of the primary
-functions of the MPCI layer is to efficiently route RTEMS
-packets between nodes. This routing may be based on numerous
-algorithms. In addition, the router may provide alternate
-communications paths in the event of an overload or a partial
-failure.
-
-@subsection Heterogeneous Systems
-
-Designing an MPCI layer for a heterogeneous system
-requires special considerations by the developer. RTEMS is
-designed to eliminate many of the problems associated with
-sharing data in a heterogeneous environment. The MPCI layer
-need only address the representation of thirty-two (32) bit
-unsigned quantities.
-
-For more information on supporting a heterogeneous
-system, refer the Supporting Heterogeneous Environments in the
-Multiprocessing Manager chapter.
diff --git a/doc/user/c_user.texi b/doc/user/c_user.texi
deleted file mode 100644
index a5aa2c0a89..0000000000
--- a/doc/user/c_user.texi
+++ /dev/null
@@ -1,169 +0,0 @@
-\input ../texinfo/texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename c_user
-@syncodeindex vr fn
-@synindex ky cp
-@paragraphindent 0
-@c @smallbook
-@c %**end of header
-
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Master file for the C User's Guide
-@c
-
-@c Joel's Questions
-@c
-@c 1. Why does paragraphindent only impact makeinfo?
-@c 2. Why does paragraphindent show up in HTML?
-@c
-
-@include ../common/setup.texi
-
-@ignore
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* RTEMS C User: (c_user). The C User's Guide
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-@end ignore
-
-@c variable substitution info:
-@c
-@set is-C
-@clear is-Ada
-@set LANGUAGE C
-@set STRUCTURE structure
-@set ROUTINE function
-@set OR |
-@set RPREFIX RTEMS_
-@set DIRPREFIX rtems_
-@c the language is @value{LANGUAGE}
-@c NOTE: don't use underscore in the name
-@c
-
-@c
-@c Title Page Stuff
-@c
-
-@set edition @value{RTEMS-EDITION}
-@set version @value{RTEMS-VERSION}
-@set update-date @value{RTEMS-UPDATE-DATE}
-@set update-month @value{RTEMS-UPDATE-MONTH}
-
-@c
-@c I don't really like having a short title page. --joel
-@c
-@c @shorttitlepage RTEMS Applications C User's Guide
-
-@setchapternewpage odd
-@settitle RTEMS C User's Guide
-@titlepage
-@finalout
-
-@title RTEMS C User's Guide
-@subtitle Edition @value{edition}, for RTEMS @value{version}
-@sp 1
-@subtitle @value{update-month}
-@author On-Line Applications Research Corporation
-@page
-@include ../common/cpright.texi
-@end titlepage
-
-@c This prevents a black box from being printed on "overflow" lines.
-@c The alternative is to rework a sentence to avoid this problem.
-
-@include preface.texi
-@include overview.texi
-@include concepts.texi
-@include init.texi
-@include task.texi
-@include intr.texi
-@include clock.texi
-@include timer.texi
-@include sem.texi
-@include msg.texi
-@include event.texi
-@include signal.texi
-@include part.texi
-@include region.texi
-@include dpmem.texi
-@include io.texi
-@include fatal.texi
-@include schedule.texi
-@include rtmon.texi
-@include bsp.texi
-@include userext.texi
-@include conf.texi
-@include mp.texi
-@include dirstat.texi
-@include example.texi
-@include glossary.texi
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top c_user
-
-This is the online version of the RTEMS C User's Guide.
-
-@menu
-* Preface::
-* Overview::
-* Key Concepts::
-* Initialization Manager::
-* Task Manager::
-* Interrupt Manager::
-* Clock Manager::
-* Timer Manager::
-* Semaphore Manager::
-* Message Manager::
-* Event Manager::
-* Signal Manager::
-* Partition Manager::
-* Region Manager::
-* Dual-Ported Memory Manager::
-* I/O Manager::
-* Fatal Error Manager::
-* Scheduling Concepts::
-* Rate Monotonic Manager::
-* Board Support Packages::
-* User Extensions Manager::
-* Configuring a System::
-* Multiprocessing Manager::
-* Directive Status Codes::
-* Example Application::
-* Glossary::
-* Command and Variable Index::
-* Concept Index::
-@end menu
-
-@end ifinfo
-@c
-@c
-@c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here
-@c
-
-@node Command and Variable Index, Concept Index, Glossary, Top
-@unnumbered Command and Variable Index
-
-There are currently no Command and Variable Index entries.
-
-@c @printindex fn
-
-@node Concept Index, , Command and Variable Index, Top
-@unnumbered Concept Index
-
-There are currently no Concept Index entries.
-@c @printindex cp
-
-@contents
-@bye
-
diff --git a/doc/user/clock.t b/doc/user/clock.t
deleted file mode 100644
index 3153adb878..0000000000
--- a/doc/user/clock.t
+++ /dev/null
@@ -1,403 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Clock Manager
-
-@section Introduction
-
-The clock manager provides support for time of day
-and other time related capabilities. The directives provided by
-the clock manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}clock_set} - Set system date and time
-@item @code{@value{DIRPREFIX}clock_get} - Get system date and time information
-@item @code{@value{DIRPREFIX}clock_tick} - Announce a clock tick
-@end itemize
-
-@section Background
-
-@subsection Required Support
-
-For the features provided by the clock manager to be
-utilized, periodic timer interrupts are required. Therefore, a
-real-time clock or hardware timer is necessary to create the
-timer interrupts. The @code{@value{DIRPREFIX}clock_tick}
-directive is normally called
-by the timer ISR to announce to RTEMS that a system clock tick
-has occurred. Elapsed time is measured in ticks. A tick is
-defined to be an integral number of microseconds which is
-specified by the user in the Configuration Table.
-
-@subsection Time and Date Data Structures
-
-The clock facilities of the clock manager operate
-upon calendar time. These directives utilize the following date
-and time @value{STRUCTURE} for the native time and date format:
-
-@ifset is-C
-@example
-struct rtems_tod_control @{
- rtems_unsigned32 year; /* greater than 1987 */
- rtems_unsigned32 month; /* 1 - 12 */
- rtems_unsigned32 day; /* 1 - 31 */
- rtems_unsigned32 hour; /* 0 - 23 */
- rtems_unsigned32 minute; /* 0 - 59 */
- rtems_unsigned32 second; /* 0 - 59 */
- rtems_unsigned32 ticks; /* elapsed between seconds */
-@};
-
-typedef struct rtems_tod_control rtems_time_of_day;
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Time_Of_Day is
- record
- Year : RTEMS.Unsigned32; -- year, A.D.
- Month : RTEMS.Unsigned32; -- month, 1 .. 12
- Day : RTEMS.Unsigned32; -- day, 1 .. 31
- Hour : RTEMS.Unsigned32; -- hour, 0 .. 23
- Minute : RTEMS.Unsigned32; -- minute, 0 .. 59
- Second : RTEMS.Unsigned32; -- second, 0 .. 59
- Ticks : RTEMS.Unsigned32; -- elapsed ticks between seconds
- end record;
-@end example
-@end ifset
-
-
-The native date and time format is the only format
-supported when setting the system date and time using the
-@code{@value{DIRPREFIX}clock_get} directive. Some applications
-expect to operate on a "UNIX-style" date and time data structure. The
-@code{@value{DIRPREFIX}clock_get} directive can optionally return
-the current date and time in the
-following @value{STRUCTURE}:
-
-@ifset is-C
-@example
-@group
-typedef struct @{
- rtems_unsigned32 seconds; /* seconds since RTEMS epoch*/
- rtems_unsigned32 microseconds; /* since last second */
-@} rtems_clock_time_value;
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Clock_Time_Value is
- record
- Seconds : Unsigned32;
- Microseconds : Unsigned32;
- end record;
-@end example
-@end ifset
-
-The seconds field in this @value{STRUCTURE} is the number of
-seconds since the RTEMS epoch of January 1, 1988.
-
-@subsection Clock Tick and Timeslicing
-
-Timeslicing is a task scheduling discipline in which
-tasks of equal priority are executed for a specific period of
-time before control of the CPU is passed to another task. It is
-also sometimes referred to as the automatic round-robin
-scheduling algorithm. The length of time allocated to each task
-is known as the quantum or timeslice.
-
-The system's timeslice is defined as an integral
-number of ticks, and is specified in the Configuration Table.
-The timeslice is defined for the entire system of tasks, but
-timeslicing is enabled and disabled on a per task basis.
-
-The @code{@value{DIRPREFIX}clock_tick}
-directive implements timeslicing by
-decrementing the running task's time-remaining counter when both
-timeslicing and preemption are enabled. If the task's timeslice
-has expired, then that task will be preempted if there exists a
-ready task of equal priority.
-
-@subsection Delays
-
-A sleep timer allows a task to delay for a given
-interval or up until a given time, and then wake and continue
-execution. This type of timer is created automatically by the
-@code{@value{DIRPREFIX}task_wake_after}
-and @code{@value{DIRPREFIX}task_wake_when} directives and, as a result,
-does not have an RTEMS ID. Once activated, a sleep timer cannot
-be explicitly deleted. Each task may activate one and only one
-sleep timer at a time.
-
-@subsection Timeouts
-
-Timeouts are a special type of timer automatically
-created when the timeout option is used on the
-@code{@value{DIRPREFIX}message_queue_receive},
-@code{@value{DIRPREFIX}event_receive},
-@code{@value{DIRPREFIX}semaphore_obtain} and
-@code{@value{DIRPREFIX}region_get_segment} directives.
-Each task may have one and only one timeout active at a time.
-When a timeout expires, it unblocks the task with a timeout status code.
-
-@section Operations
-
-@subsection Announcing a Tick
-
-RTEMS provides the @code{@value{DIRPREFIX}clock_tick} directive which is
-called from the user's real-time clock ISR to inform RTEMS that
-a tick has elapsed. The tick frequency value, defined in
-microseconds, is a configuration parameter found in the
-Configuration Table. RTEMS divides one million microseconds
-(one second) by the number of microseconds per tick to determine
-the number of calls to the
-@code{@value{DIRPREFIX}clock_tick} directive per second. The
-frequency of @code{@value{DIRPREFIX}clock_tick}
-calls determines the resolution
-(granularity) for all time dependent RTEMS actions. For
-example, calling @code{@value{DIRPREFIX}clock_tick}
-ten times per second yields a higher
-resolution than calling @code{@value{DIRPREFIX}clock_tick}
-two times per second. The @code{@value{DIRPREFIX}clock_tick}
-directive is responsible for maintaining both
-calendar time and the dynamic set of timers.
-
-@subsection Setting the Time
-
-The @code{@value{DIRPREFIX}clock_set} directive allows a task or an ISR to
-set the date and time maintained by RTEMS. If setting the date
-and time causes any outstanding timers to pass their deadline,
-then the expired timers will be fired during the invocation of
-the @code{@value{DIRPREFIX}clock_set} directive.
-
-@subsection Obtaining the Time
-
-The @code{@value{DIRPREFIX}clock_get} directive allows a task or an ISR to
-obtain the current date and time or date and time related
-information. The current date and time can be returned in
-either native or UNIX-style format. Additionally, the
-application can obtain date and time related information such as
-the number of seconds since the RTEMS epoch, the number of ticks
-since the executive was initialized, and the number of ticks per
-second. The information returned by the
-@code{@value{DIRPREFIX}clock_get} directive is
-dependent on the option selected by the caller. The following
-options are available:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}CLOCK_GET_TOD} - obtain native style date and time
-
-@item @code{@value{RPREFIX}CLOCK_GET_TIME_VALUE} - obtain UNIX-style
-date and time
-
-@item @code{@value{RPREFIX}CLOCK_GET_TICKS_SINCE_BOOT} - obtain number of ticks
-since RTEMS was initialized
-
-@item @code{@value{RPREFIX}CLOCK_GET_SECONDS_SINCE_EPOCH} - obtain number
-of seconds since RTEMS epoch
-
-@item @code{@value{RPREFIX}CLOCK_GET_TICKS_PER_SECOND} - obtain number of clock
-ticks per second
-
-@end itemize
-
-Calendar time operations will return an error code if
-invoked before the date and time have been set.
-
-@section Directives
-
-This section details the clock manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection CLOCK_SET - Set system date and time
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_clock_set
-@example
-rtems_status_code rtems_clock_set(
- rtems_time_of_day *time_buffer
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Clock_Set (
- Time_Buffer : in RTEMS.Time_Of_Day;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - date and time set successfully@*
-@code{INVALID_TIME_OF_DAY} - invalid time of day
-
-@subheading DESCRIPTION:
-
-This directive sets the system date and time. The
-date, time, and ticks in the time_buffer @value{STRUCTURE} are all
-range-checked, and an error is returned if any one is out of its
-valid range.
-
-@subheading NOTES:
-
-Years before 1988 are invalid.
-
-The system date and time are based on the configured
-tick rate (number of microseconds in a tick).
-
-Setting the time forward may cause a higher priority
-task, blocked waiting on a specific time, to be made ready. In
-this case, the calling task will be preempted after the next
-clock tick.
-
-Re-initializing RTEMS causes the system date and time
-to be reset to an uninitialized state. Another call to
-@code{@value{DIRPREFIX}clock_set} is required to re-initialize
-the system date and time to application specific specifications.
-
-@page
-@subsection CLOCK_GET - Get system date and time information
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_clock_get
-@example
-rtems_status_code rtems_clock_get(
- rtems_clock_get_options option,
- void *time_buffer
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Clock_Get (
- Option : in RTEMS.Clock_Get_Options;
- Time_Buffer : in RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - current time obtained successfully@*
-@code{@value{RPREFIX}NOT_DEFINED} - system date and time is not set
-
-@subheading DESCRIPTION:
-
-This directive obtains the system date and time. If
-the caller is attempting to obtain the date and time (i.e.
-option is set to either @code{@value{RPREFIX}CLOCK_GET_SECONDS_SINCE_EPOCH},
-@code{@value{RPREFIX}CLOCK_GET_TOD}, or
-@code{@value{RPREFIX}CLOCK_GET_TIME_VALUE}) and the date and time
-has not been set with a previous call to
-@code{@value{DIRPREFIX}clock_set}, then the
-@code{@value{RPREFIX}NOT_DEFINED} status code is returned.
-The caller can always obtain the number of ticks per second (option is
-@code{@value{RPREFIX}CLOCK_GET_TICKS_PER_SECOND}) and the number of
-ticks since the executive was initialized option is
-@code{@value{RPREFIX}CLOCK_GET_TICKS_SINCE_BOOT}).
-
-The data type expected for time_buffer is indicated below:
-
-@ifset is-C
-@itemize @bullet
-@item @code{@value{RPREFIX}CLOCK_GET_TOD} - (rtems_time_of_day *)
-
-@item @code{@value{RPREFIX}CLOCK_GET_TIME_VALUE} - (rtems_clock_time_value *)
-
-@item @code{@value{RPREFIX}CLOCK_GET_TICKS_SINCE_BOOT} - (rtems_interval *)
-
-@item @code{@value{RPREFIX}CLOCK_GET_SECONDS_SINCE_EPOCH} - (rtems_interval *)
-
-@item @code{@value{RPREFIX}CLOCK_GET_TICKS_PER_SECOND} - (rtems_interval *)
-
-@end itemize
-@end ifset
-
-@ifset is-Ada
-@itemize @bullet
-@item @code{@value{RPREFIX}CLOCK_GET_TOD} - Address of an variable of
-type RTEMS.Time_Of_Day
-
-@item @code{@value{RPREFIX}CLOCK_GET_TIME_VALUE} - Address of an variable of
-type RTEMS.Clock_Time_Value
-
-@item @code{@value{RPREFIX}CLOCK_GET_TICKS_SINCE_BOOT} - Address of an
-variable of type RTEMS.Interval
-
-@item @code{@value{RPREFIX}CLOCK_GET_SECONDS_SINCE_EPOCH} - Address of an
-variable of type RTEMS.Interval
-
-@item @code{@value{RPREFIX}CLOCK_GET_TICKS_PER_SECOND} - Address of an
-variable of type RTEMS.Interval
-
-@end itemize
-@end ifset
-
-@subheading NOTES:
-
-This directive is callable from an ISR.
-
-This directive will not cause the running task to be
-preempted. Re-initializing RTEMS causes the system date and
-time to be reset to an uninitialized state. Another call to
-@code{@value{DIRPREFIX}clock_set} is required to re-initialize the
-system date and time to application specific specifications.
-
-@page
-@subsection CLOCK_TICK - Announce a clock tick
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_clock_tick
-@example
-rtems_status_code rtems_clock_tick( void );
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Clock_Tick (
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - current time obtained successfully
-
-@subheading DESCRIPTION:
-
-This directive announces to RTEMS that a system clock
-tick has occurred. The directive is usually called from the
-timer interrupt ISR of the local processor. This directive
-maintains the system date and time, decrements timers for
-delayed tasks, timeouts, rate monotonic periods, and implements
-timeslicing.
-
-@subheading NOTES:
-
-This directive is typically called from an ISR.
-
-The microseconds_per_tick and ticks_per_timeslice
-parameters in the Configuration Table contain the number of
-microseconds per tick and number of ticks per timeslice,
-respectively.
-
diff --git a/doc/user/concepts.t b/doc/user/concepts.t
deleted file mode 100644
index c68a9a95b4..0000000000
--- a/doc/user/concepts.t
+++ /dev/null
@@ -1,297 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c The following figure was replaced with an ASCII equivalent.
-@c Figure 2-1 Object ID Composition
-@c
-
-@chapter Key Concepts
-
-@section Introduction
-
-The facilities provided by RTEMS are built upon a
-foundation of very powerful concepts. These concepts must be
-understood before the application developer can efficiently
-utilize RTEMS. The purpose of this chapter is to familiarize
-one with these concepts.
-
-@section Objects
-
-RTEMS provides directives which can be used to
-dynamically create, delete, and manipulate a set of predefined
-object types. These types include tasks, message queues,
-semaphores, memory regions, memory partitions, timers, ports,
-and rate monotonic periods. The object-oriented nature of RTEMS
-encourages the creation of modular applications built upon
-re-usable "building block" routines.
-
-All objects are created on the local node as required
-by the application and have an RTEMS assigned ID. All objects
-have a user-assigned name. Although a relationship exists
-between an object's name and its RTEMS assigned ID, the name and
-ID are not identical. Object names are completely arbitrary and
-selected by the user as a meaningful "tag" which may commonly
-reflect the object's use in the application. Conversely, object
-IDs are designed to facilitate efficient object manipulation by
-the executive.
-
-An object name is an unsigned thirty-two bit entity
-associated with the object by the user. Although not required
-by RTEMS, object names are typically composed of four ASCII
-characters which help identify that object. For example, a task
-which causes a light to blink might be called "LITE". Utilities
-are provided to build an object name from four ASCII characters
-and to decompose an object name into four ASCII characters.
-However, it is not required that the application use ASCII
-characters to build object names. For example, if an
-application requires one-hundred tasks, it would be difficult to
-assign meaningful ASCII names to each task. A more convenient
-approach would be to name them the binary values one through
-one-hundred, respectively.
-
-@need 3000
-
-An object ID is a unique unsigned thirty-two bit
-entity composed of three parts: object class, node, and index.
-The most significant six bits are the object class. The next
-ten bits are the number of the node on which this object was
-created. The node number is always one (1) in a single
-processor system. The least significant sixteen bits form an
-identifier within a particular object type. This identifier,
-called the object index, ranges in value from 1 to the maximum
-number of objects configured for this object type.
-
-@ifset use-ascii
-@example
-@group
- 31 26 25 16 15 0
- +-----------+------------------+-------------------------------+
- | | | |
- | Class | Node | Index |
- | | | |
- +-----------+------------------+-------------------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\strut#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-#&
-\hbox to 1.00in{\enskip#}&
-\hbox to 1.00in{\enskip#}&
-#\cr
-\multispan{9}\cr
-\multispan{2}31\hfil&\multispan{2}\hfil26\enskip&
- \multispan{1}\enskip25\hfil&\multispan{2}\hfil16\enskip&
- \multispan{1}\enskip15\hfil&\multispan{2}\hfil0\cr
-&&&&&&&&&\cr
-}}\hfil}
-\centerline{\vbox{\offinterlineskip\halign{
-\strut\vrule#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-\vrule#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-\vrule#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-\vrule#\cr
-\multispan{9}\cr
-\noalign{\hrule}
-&&&&&&&&&\cr
-&\multispan{2}\hfil Class\hfil&&
- \multispan{2}\hfil Node\hfil&&
- \multispan{2}\hfil Index\hfil&\cr
-&&&&&&&&&\cr
-\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=6 WIDTH="60%" BORDER=0>
-<TR><TD ALIGN=left><STRONG>31</STRONG></TD>
- <TD ALIGN=right><STRONG>26</STRONG></TD>
- <TD ALIGN=left><STRONG>25</STRONG></TD>
- <TD ALIGN=right><STRONG>16</STRONG></TD>
- <TD ALIGN=left><STRONG>15</STRONG></TD>
- <TD ALIGN=right><STRONG>0</STRONG></TD></TR>
- </TABLE>
-</CENTER>
-<CENTER>
- <TABLE COLS=6 WIDTH="60%" BORDER=2>
-<TR><TD ALIGN=center COLSPAN=2>Class</TD>
- <TD ALIGN=center COLSPAN=2>Node</TD>
- <TD ALIGN=center COLSPAN=2>Index</TD></TD>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-
-The three components of an object ID make it possible
-to quickly locate any object in even the most complicated
-multiprocessor system. Object ID's are associated with an
-object by RTEMS when the object is created and the corresponding
-ID is returned by the appropriate object create directive. The
-object ID is required as input to all directives involving
-objects, except those which create an object or obtain the ID of
-an object.
-
-The object identification directives can be used to
-dynamically obtain a particular object's ID given its name.
-This mapping is accomplished by searching the name table
-associated with this object type. If the name is non-unique,
-then the ID associated with the first occurrence of the name
-will be returned to the application. Since object IDs are
-returned when the object is created, the object identification
-directives are not necessary in a properly designed single
-processor application.
-
-An object control block is a data structure defined
-by RTEMS which contains the information necessary to manage a
-particular object type. For efficiency reasons, the format of
-each object type's control block is different. However, many of
-the fields are similar in function. The number of each type of
-control block is application dependent and determined by the
-values specified in the user's Configuration Table. An object
-control block is allocated at object create time and freed when
-the object is deleted. With the exception of user extension
-routines, object control blocks are not directly manipulated by
-user applications.
-
-@section Communication and Synchronization
-
-In real-time multitasking applications, the ability
-for cooperating execution threads to communicate and synchronize
-with each other is imperative. A real-time executive should
-provide an application with the following capabilities:
-
-@itemize @bullet
-@item Data transfer between cooperating tasks
-@item Data transfer between tasks and ISRs
-@item Synchronization of cooperating tasks
-@item Synchronization of tasks and ISRs
-@end itemize
-
-Most RTEMS managers can be used to provide some form
-of communication and/or synchronization. However, managers
-dedicated specifically to communication and synchronization
-provide well established mechanisms which directly map to the
-application's varying needs. This level of flexibility allows
-the application designer to match the features of a particular
-manager with the complexity of communication and synchronization
-required. The following managers were specifically designed for
-communication and synchronization:
-
-@itemize @bullet
-@item Semaphore
-@item Message Queue
-@item Event
-@item Signal
-@end itemize
-
-The semaphore manager supports mutual exclusion
-involving the synchronization of access to one or more shared
-user resources. Binary semaphores may utilize the optional
-priority inheritance algorithm to avoid the problem of priority
-inversion. The message manager supports both communication and
-synchronization, while the event manager primarily provides a
-high performance synchronization mechanism. The signal manager
-supports only asynchronous communication and is typically used
-for exception handling.
-
-@section Time
-
-The development of responsive real-time applications
-requires an understanding of how RTEMS maintains and supports
-time-related operations. The basic unit of time in RTEMS is
-known as a tick. The frequency of clock ticks is completely
-application dependent and determines the granularity and
-accuracy of all interval and calendar time operations.
-
-By tracking time in units of ticks, RTEMS is capable
-of supporting interval timing functions such as task delays,
-timeouts, timeslicing, the delayed execution of timer service
-routines, and the rate monotonic scheduling of tasks. An
-interval is defined as a number of ticks relative to the current
-time. For example, when a task delays for an interval of ten
-ticks, it is implied that the task will not execute until ten
-clock ticks have occurred.
-
-A characteristic of interval timing is that the
-actual interval period may be a fraction of a tick less than the
-interval requested. This occurs because the time at which the
-delay timer is set up occurs at some time between two clock
-ticks. Therefore, the first countdown tick occurs in less than
-the complete time interval for a tick. This can be a problem if
-the clock granularity is large.
-
-The rate monotonic scheduling algorithm is a hard
-real-time scheduling methodology. This methodology provides
-rules which allows one to guarantee that a set of independent
-periodic tasks will always meet their deadlines -- even under
-transient overload conditions. The rate monotonic manager
-provides directives built upon the Clock Manager's interval
-timer support routines.
-
-Interval timing is not sufficient for the many
-applications which require that time be kept in wall time or
-true calendar form. Consequently, RTEMS maintains the current
-date and time. This allows selected time operations to be
-scheduled at an actual calendar date and time. For example, a
-task could request to delay until midnight on New Year's Eve
-before lowering the ball at Times Square.
-
-Obviously, the directives which use intervals or wall
-time cannot operate without some external mechanism which
-provides a periodic clock tick. This clock tick is typically
-provided by a real time clock or counter/timer device.
-
-@section Memory Management
-
-RTEMS memory management facilities can be grouped
-into two classes: dynamic memory allocation and address
-translation. Dynamic memory allocation is required by
-applications whose memory requirements vary through the
-application's course of execution. Address translation is
-needed by applications which share memory with another CPU or an
-intelligent Input/Output processor. The following RTEMS
-managers provide facilities to manage memory:
-
-@itemize @bullet
-@item Region
-
-@item Partition
-
-@item Dual Ported Memory
-@end itemize
-
-RTEMS memory management features allow an application
-to create simple memory pools of fixed size buffers and/or more
-complex memory pools of variable size segments. The partition
-manager provides directives to manage and maintain pools of
-fixed size entities such as resource control blocks.
-Alternatively, the region manager provides a more general
-purpose memory allocation scheme that supports variable size
-blocks of memory which are dynamically obtained and freed by the
-application. The dual-ported memory manager provides executive
-support for address translation between internal and external
-dual-ported RAM address space.
diff --git a/doc/user/conf.t b/doc/user/conf.t
deleted file mode 100644
index 35cd9f2d2f..0000000000
--- a/doc/user/conf.t
+++ /dev/null
@@ -1,966 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Configuring a System
-
-@section Configuration Table
-
-The RTEMS Configuration Table is used to tailor an
-application for its specific needs. For example, the user can
-configure the number of device drivers or which APIs may be used.
-THe address of the user-defined Configuration Table is passed as an
-argument to the @code{@value{DIRPREFIX}initialize_executive}
-directive, which MUST be the first RTEMS directive called.
-The RTEMS Configuration Table
-is defined in the following @value{LANGUAGE} @value{STRUCTURE}:
-
-@ifset is-C
-@example
-@group
-typedef struct @{
- void *work_space_start;
- rtems_unsigned32 work_space_size;
- rtems_unsigned32 maximum_extensions;
- rtems_unsigned32 microseconds_per_tick;
- rtems_unsigned32 ticks_per_timeslice;
- rtems_unsigned32 maximum_devices;
- rtems_unsigned32 number_of_device_drivers;
- rtems_driver_address_table *Device_driver_table;
- rtems_unsigned32 number_of_initial_extensions;
- rtems_extensions_table *User_extension_table;
- rtems_multiprocessing_table *User_multiprocessing_table;
- rtems_api_configuration_table *RTEMS_api_configuration;
- posix_api_configuration_table *POSIX_api_configuration;
-@} rtems_configuration_table;
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Configuration_Table is
- record
- Work_Space_Start : RTEMS.Address;
- Work_Space_Size : RTEMS.Unsigned32;
- Maximum_Extensions : RTEMS.Unsigned32;
- Microseconds_Per_Tick : RTEMS.Unsigned32;
- Ticks_Per_Timeslice : RTEMS.Unsigned32;
- Maximum_Devices : RTEMS.Unsigned32;
- Number_Of_Device_Drivers : RTEMS.Unsigned32;
- Device_Driver_Table : RTEMS.Driver_Address_Table_Pointer;
- Number_Of_Initial_Extensions : RTEMS.Unsigned32;
- User_Extension_Table : RTEMS.Extensions_Table_Pointer;
- User_Multiprocessing_Table : RTEMS.Multiprocessing_Table_Pointer;
- RTEMS_API_Configuration : RTEMS.API_Configuration_Table_Pointer;
- POSIX_API_Configuration :
- RTEMS.POSIX_API_Configuration_Table_Pointer;
- end record;
-
-type Configuration_Table_Pointer is access all Configuration_Table;
-@end example
-@end ifset
-
-@table @b
-@item work_space_start
-is the address of the RTEMS RAM Workspace.
-This area contains items such as the
-various object control blocks (TCBs, QCBs, ...) and task stacks.
-If the address is not aligned on a four-word boundary, then
-RTEMS will invoke the fatal error handler during
-@code{@value{DIRPREFIX}initialize_executive}.
-
-@item work_space_size
-is the calculated size of the
-RTEMS RAM Workspace. The section Sizing the RTEMS RAM Workspace
-details how to arrive at this number.
-
-@item microseconds_per_tick
-is number of microseconds per clock tick.
-
-@item ticks_per_timeslice
-is the number of clock ticks for a timeslice.
-
-@item maximum_devices
-is the maximum number of devices that can be registered.
-
-@item number_of_device_drivers
-is the number of device drivers for the system. There should be
-the same number of entries in the Device Driver Table. If this field
-is zero, then the User_driver_address_table entry should be NULL.
-
-@item Device_driver_table
-is the address of the Device Driver Table. This table contains the entry
-points for each device driver. If the number_of_device_drivers field is zero,
-then this entry should be NULL. The format of this table will be
-discussed below.
-
-@item number_of_initial_extensions
-is the number of initial user extensions. There should be
-the same number of entries as in the User_extension_table. If this field
-is zero, then the User_driver_address_table entry should be NULL.
-
-@item User_extension_table
-is the address of the User
-Extension Table. This table contains the entry points for the
-static set of optional user extensions. If no user extensions
-are configured, then this entry should be NULL. The format of
-this table will be discussed below.
-
-@item User_multiprocessing_table
-is the address of the Multiprocessor Configuration Table. This
-table contains information needed by RTEMS only when used in a multiprocessor
-configuration. This field must be NULL when RTEMS is used in a
-single processor configuration.
-
-@item RTEMS_api_configuration
-is the address of the RTEMS API Configuration Table. This table
-contains information needed by the RTEMS API. This field should be
-NULL if the RTEMS API is not used. [NOTE: Currently the RTEMS API
-is required to support support components such as BSPs and libraries
-which use this API.]
-
-@item POSIX_api_configuration
-is the address of the POSIX API Configuration Table. This table
-contains information needed by the POSIX API. This field should be
-NULL if the POSIX API is not used.
-
-@end table
-
-@section RTEMS API Configuration Table
-
-The RTEMS API Configuration Table is used to configure the
-managers which constitute the RTEMS API for a particular application.
-For example, the user can configure the maximum number of tasks for
-this application. The RTEMS API Configuration Table is defined in
-the following @value{LANGUAGE} @value{STRUCTURE}:
-
-@ifset is-C
-@example
-@group
-typedef struct @{
- rtems_unsigned32 maximum_tasks;
- rtems_unsigned32 maximum_timers;
- rtems_unsigned32 maximum_semaphores;
- rtems_unsigned32 maximum_message_queues;
- rtems_unsigned32 maximum_partitions;
- rtems_unsigned32 maximum_regions;
- rtems_unsigned32 maximum_ports;
- rtems_unsigned32 maximum_periods;
- rtems_unsigned32 number_of_initialization_tasks;
- rtems_initialization_tasks_table *User_initialization_tasks_table;
-@} rtems_api_configuration_table;
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type API_Configuration_Table is
- record
- Maximum_Tasks : RTEMS.Unsigned32;
- Maximum_Timers : RTEMS.Unsigned32;
- Maximum_Semaphores : RTEMS.Unsigned32;
- Maximum_Message_queues : RTEMS.Unsigned32;
- Maximum_Partitions : RTEMS.Unsigned32;
- Maximum_Regions : RTEMS.Unsigned32;
- Maximum_Ports : RTEMS.Unsigned32;
- Maximum_Periods : RTEMS.Unsigned32;
- Number_Of_Initialization_Tasks : RTEMS.Unsigned32;
- User_Initialization_Tasks_Table :
- RTEMS.Initialization_Tasks_Table_Pointer;
- end record;
-
-type API_Configuration_Table_Pointer is access all API_Configuration_Table;
-@end example
-@end ifset
-
-@table @b
-@item maximum_tasks
-is the maximum number of tasks that
-can be concurrently active (created) in the system including
-initialization tasks.
-
-@item maximum_timers
-is the maximum number of timers
-that can be concurrently active in the system.
-
-@item maximum_semaphores
-is the maximum number of
-semaphores that can be concurrently active in the system.
-
-@item maximum_message_queues
-is the maximum number of
-message queues that can be concurrently active in the system.
-
-@item maximum_partitions
-is the maximum number of
-partitions that can be concurrently active in the system.
-
-@item maximum_regions
-is the maximum number of regions
-that can be concurrently active in the system.
-
-@item maximum_ports
-is the maximum number of ports into
-dual-port memory areas that can be concurrently active in the
-system.
-
-@item number_of_initialization_tasks
-is the number of initialization tasks configured. At least one
-initialization task must be configured.
-
-@item User_initialization_tasks_table
-is the address of the Initialization Task Table. This table contains the
-information needed to create and start each of the
-initialization tasks. The format of this table will be discussed below.
-
-@end table
-
-@section POSIX API Configuration Table
-
-The POSIX API Configuration Table is used to configure the
-managers which constitute the POSIX API for a particular application.
-For example, the user can configure the maximum number of threads for
-this application. The POSIX API Configuration Table is defined in
-the following @value{LANGUAGE} @value{STRUCTURE}:
-
-@ifset is-C
-@example
-@group
-typedef struct @{
- void *(*thread_entry)(void *);
-@} posix_initialization_threads_table;
-
-typedef struct @{
- int maximum_threads;
- int maximum_mutexes;
- int maximum_condition_variables;
- int maximum_keys;
- int maximum_queued_signals;
- int number_of_initialization_tasks;
- posix_initialization_threads_table *User_initialization_tasks_table;
-@} posix_api_configuration_table;
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
- type POSIX_Thread_Entry is access procedure (
- Argument : in RTEMS.Address
- );
-
- type POSIX_Initialization_Threads_Table_Entry is
- record
- Thread_Entry : RTEMS.POSIX_Thread_Entry;
- end record;
-
- type POSIX_Initialization_Threads_Table is array
- ( RTEMS.Unsigned32 range <> ) of
- RTEMS.POSIX_Initialization_Threads_Table_Entry;
-
- type POSIX_Initialization_Threads_Table_Pointer is access all
- POSIX_Initialization_Threads_Table;
-
- type POSIX_API_Configuration_Table_Entry is
- record
- Maximum_Threads : Interfaces.C.Int;
- Maximum_Mutexes : Interfaces.C.Int;
- Maximum_Condition_Variables : Interfaces.C.Int;
- Maximum_Keys : Interfaces.C.Int;
- Maximum_Queued_Signals : Interfaces.C.Int;
- Number_Of_Initialization_Tasks : Interfaces.C.Int;
- User_Initialization_Tasks_Table :
- RTEMS.POSIX_Initialization_Threads_Table_Pointer;
- end record;
-
- type POSIX_API_Configuration_Table is array ( RTEMS.Unsigned32 range <> ) of
- RTEMS.POSIX_API_Configuration_Table_Entry;
-
- type POSIX_API_Configuration_Table_Pointer is access all
- RTEMS.POSIX_API_Configuration_Table;
-@end example
-@end ifset
-
-@table @b
-@item maximum_threads
-is the maximum number of threads that
-can be concurrently active (created) in the system including
-initialization threads.
-
-@item maximum_mutexes
-is the maximum number of mutexes that can be concurrently
-active in the system.
-
-@item maximum_condition_variables
-is the maximum number of condition variables that can be
-concurrently active in the system.
-
-@item maximum_keys
-is the maximum number of keys that can be concurrently active in the system.
-
-@item maximum_queued_signals
-is the maximum number of queued signals that can be concurrently
-pending in the system.
-
-@item number_of_initialization_threads
-is the number of initialization threads configured. At least one
-initialization threads must be configured.
-
-@item User_initialization_threads_table
-is the address of the Initialization Threads Table. This table contains the
-information needed to create and start each of the initialization threads.
-The format of each entry in this table is defined in the
-posix_initialization_threads_table @value{STRUCTURE}.
-
-@end table
-
-@section CPU Dependent Information Table
-
-The CPU Dependent Information Table is used to
-describe processor dependent information required by RTEMS.
-This table is generally used to supply RTEMS with information
-only known by the Board Support Package. The contents of this
-table are discussed in the CPU Dependent Information Table
-chapter of the Applications Supplement document for a specific
-target processor.
-
-@section Initialization Task Table
-
-The Initialization Task Table is used to describe
-each of the user initialization tasks to the Initialization
-Manager. The table contains one entry for each initialization
-task the user wishes to create and start. The fields of this
-data structure directly correspond to arguments to the
-task_create and task_start directives. The number of entries is
-found in the number_of_initialization_tasks entry in the
-Configuration Table. The format of each entry in the
-Initialization Task Table is defined in the following @value{LANGUAGE}
-@value{STRUCTURE}:
-
-@ifset is-C
-@example
-typedef struct @{
- rtems_name name;
- rtems_unsigned32 stack_size;
- rtems_task_priority initial_priority;
- rtems_attribute attribute_set;
- rtems_task_entry entry_point;
- rtems_mode mode_set;
- rtems_task_argument argument;
-@} rtems_initialization_tasks_table;
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Initialization_Tasks_Table_Entry is
- record
- Name : RTEMS.Name; -- task name
- Stack_Size : RTEMS.Unsigned32; -- task stack size
- Initial_Priority : RTEMS.Task_priority; -- task priority
- Attribute_Set : RTEMS.Attribute; -- task attributes
- Entry_Point : RTEMS.Task_Entry; -- task entry point
- Mode_Set : RTEMS.Mode; -- task initial mode
- Argument : RTEMS.Unsigned32; -- task argument
- end record;
-
-type Initialization_Tasks_Table is array ( RTEMS.Unsigned32 range <> ) of
- RTEMS.Initialization_Tasks_Table_Entry;
-
-type Initialization_Tasks_Table_Pointer is access all
- Initialization_Tasks_Table;
-@end example
-@end ifset
-
-@table @b
-@item name
-is the name of this initialization task.
-
-@item stack_size
-is the size of the stack for this initialization task.
-
-@item initial_priority
-is the priority of this initialization task.
-
-@item attribute_set
-is the attribute set used during creation of this initialization task.
-
-@item entry_point
-is the address of the entry point of this initialization task.
-
-@item mode_set
-is the initial execution mode of this initialization task.
-
-@item argument
-is the initial argument for this initialization task.
-
-@end table
-
-A typical declaration for an Initialization Task Table might appear as follows:
-
-@ifset is-C
-@example
-rtems_initialization_tasks_table
-Initialization_tasks[2] = @{
- @{ INIT_1_NAME,
- 1024,
- 1,
- DEFAULT_ATTRIBUTES,
- Init_1,
- DEFAULT_MODES,
- 1
-
- @},
- @{ INIT_2_NAME,
- 1024,
- 250,
- FLOATING_POINT,
- Init_2,
- NO_PREEMPT,
- 2
-
- @}
-@};
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-Initialization_Tasks : aliased RTEMS.Initialization_Tasks_Table( 1 .. 2 ) := (
- (INIT_1_NAME,
- 1024,
- 1,
- RTEMS.Default_Attributes,
- Init_1'Access,
- RTEMS.Default_Modes,
- 1),
- (INIT_2_NAME,
- 1024,
- 250,
- RTEMS.Floating_Point,
- Init_2'Access,
- RTEMS.No_Preempt,
- 2)
-);
-@end example
-@end ifset
-
-@section Driver Address Table
-
-The Device Driver Table is used to inform the I/O
-Manager of the set of entry points for each device driver
-configured in the system. The table contains one entry for each
-device driver required by the application. The number of
-entries is defined in the number_of_device_drivers entry in the
-Configuration Table. The format of each entry in the Device
-Driver Table is defined in
-the following @value{LANGUAGE} @value{STRUCTURE}:
-
-@ifset is-C
-@example
-typedef struct @{
- rtems_device_driver_entry initialization;
- rtems_device_driver_entry open;
- rtems_device_driver_entry close;
- rtems_device_driver_entry read;
- rtems_device_driver_entry write;
- rtems_device_driver_entry control;
-@} rtems_driver_address_table;
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Driver_Address_Table_Entry is
- record
- Initialization : RTEMS.Device_Driver_Entry;
- Open : RTEMS.Device_Driver_Entry;
- Close : RTEMS.Device_Driver_Entry;
- Read : RTEMS.Device_Driver_Entry;
- Write : RTEMS.Device_Driver_Entry;
- Control : RTEMS.Device_Driver_Entry;
- end record;
-
-type Driver_Address_Table is array ( RTEMS.Unsigned32 range <> ) of
- RTEMS.Driver_Address_Table_Entry;
-
-type Driver_Address_Table_Pointer is access all Driver_Address_Table;
-@end example
-@end ifset
-
-@table @b
-@item initialization
-is the address of the entry point called by
-@code{@value{DIRPREFIX}io_initialize}
-to initialize a device driver and its associated devices.
-
-@item open
-is the address of the entry point called by @code{@value{DIRPREFIX}io_open}.
-
-@item close
-is the address of the entry point called by @code{@value{DIRPREFIX}io_close}.
-
-@item read
-is the address of the entry point called by @code{@value{DIRPREFIX}io_read}.
-
-@item write
-is the address of the entry point called by @code{@value{DIRPREFIX}io_write}.
-
-@item control
-is the address of the entry point called by @code{@value{DIRPREFIX}io_control}.
-
-@end table
-
-Driver entry points configured as NULL will always
-return a status code of @code{@value{RPREFIX}SUCCESSFUL}. No user code will be
-executed in this situation.
-
-A typical declaration for a Device Driver Table might appear as follows:
-
-@ifset is-C
-@example
-rtems_driver_address_table Driver_table[2] = @{
- @{ tty_initialize, tty_open, tty_close, /* major = 0 */
- tty_read, tty_write, tty_control
- @},
- @{ lp_initialize, lp_open, lp_close, /* major = 1 */
- NULL, lp_write, lp_control
- @}
-@};
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-@end example
-@end ifset
-
-More information regarding the construction and
-operation of device drivers is provided in the I/O Manager
-chapter.
-
-@section User Extensions Table
-
-The User Extensions Table is used to inform RTEMS of
-the optional user-supplied static extension set. This table
-contains one entry for each possible extension. The entries are
-called at critical times in the life of the system and
-individual tasks. The application may create dynamic extensions
-in addition to this single static set. The format of each entry
-in the User Extensions Table is defined in the following @value{LANGUAGE}
-@value{STRUCTURE}:
-
-@ifset is-C
-@example
-typedef User_extensions_routine rtems_extension;
-typedef User_extensions_thread_create_extension rtems_task_create_extension;
-typedef User_extensions_thread_delete_extension rtems_task_delete_extension;
-typedef User_extensions_thread_start_extension rtems_task_start_extension;
-typedef User_extensions_thread_restart_extension rtems_task_restart_extension;
-typedef User_extensions_thread_switch_extension rtems_task_switch_extension;
-typedef User_extensions_thread_begin_extension rtems_task_begin_extension;
-typedef User_extensions_thread_exitted_extension rtems_task_exitted_extension;
-typedef User_extensions_fatal_extension rtems_fatal_extension;
-
-typedef User_extensions_Table rtems_extensions_table;
-
-typedef struct @{
- rtems_task_create_extension thread_create;
- rtems_task_start_extension thread_start;
- rtems_task_restart_extension thread_restart;
- rtems_task_delete_extension thread_delete;
- rtems_task_switch_extension thread_switch;
- rtems_task_post_switch_extension thread_post_switch;
- rtems_task_begin_extension thread_begin;
- rtems_task_exitted_extension thread_exitted;
- rtems_fatal_extension fatal;
-@} User_extensions_Table;
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Extensions_Table_Entry is
- record
- Thread_Create : RTEMS.Thread_Create_Extension;
- Thread_Start : RTEMS.Thread_Start_Extension;
- Thread_Restart : RTEMS.Thread_Restart_Extension;
- Thread_Delete : RTEMS.Thread_Delete_Extension;
- Thread_Switch : RTEMS.Thread_Switch_Extension;
- Thread_Post_Switch : RTEMS.Thread_Post_Switch_Extension;
- Thread_Begin : RTEMS.Thread_Begin_Extension;
- Thread_Exitted : RTEMS.Thread_Exitted_Extension;
- Fatal : RTEMS.Fatal_Error_Extension;
- end record;
-@end example
-@end ifset
-
-@table @b
-
-@item thread_create
-is the address of the
-user-supplied subroutine for the TASK_CREATE extension. If this
-extension for task creation is defined, it is called from the
-task_create directive. A value of NULL indicates that no
-extension is provided.
-
-@item thread_start
-is the address of the user-supplied
-subroutine for the TASK_START extension. If this extension for
-task initiation is defined, it is called from the task_start
-directive. A value of NULL indicates that no extension is
-provided.
-
-@item thread_restart
-is the address of the user-supplied
-subroutine for the TASK_RESTART extension. If this extension
-for task re-initiation is defined, it is called from the
-task_restart directive. A value of NULL indicates that no
-extension is provided.
-
-@item thread_delete
-is the address of the user-supplied
-subroutine for the TASK_DELETE extension. If this RTEMS
-extension for task deletion is defined, it is called from the
-task_delete directive. A value of NULL indicates that no
-extension is provided.
-
-@item thread_switch
-is the address of the user-supplied
-subroutine for the task context switch extension. This
-subroutine is called from RTEMS dispatcher after the current
-task has been swapped out but before the new task has been
-swapped in. A value of NULL indicates that no extension is
-provided. As this routine is invoked after saving the current
-task's context and before restoring the heir task's context, it
-is not necessary for this routine to save and restore any
-registers.
-
-@item thread_post_switch
-is the address of the
-user-supplied subroutine for the post task context switch
-extension. This subroutine is called from RTEMS dispatcher in
-the context of the task which has just been swapped in.
-
-@item thread_begin
-is the address of the user-supplied
-subroutine which is invoked immediately before a task begins
-execution. It is invoked in the context of the beginning task.
-A value of NULL indicates that no extension is provided.
-
-@item thread_exitted
-is the address of the user-supplied
-subroutine which is invoked when a task exits. This procedure
-is responsible for some action which will allow the system to
-continue execution (i.e. delete or restart the task) or to
-terminate with a fatal error. If this field is set to NULL, the
-default RTEMS TASK_EXITTED handler will be invoked.
-
-@item fatal
-is the address of the user-supplied
-subroutine for the FATAL extension. This RTEMS extension of
-fatal error handling is called from the
-@code{@value{DIRPREFIX}fatal_error_occurred}
-directive. If the user's fatal error handler returns or if this
-entry is NULL then the default RTEMS fatal error handler will be
-executed.
-
-@end table
-
-A typical declaration for a User Extension Table
-which defines the TASK_CREATE, TASK_DELETE, TASK_SWITCH, and
-FATAL extension might appear as follows:
-
-@ifset is-C
-@example
-rtems_extensions_table User_extensions = @{
- task_create_extension,
- NULL,
- NULL,
- task_delete_extension,
- task_switch_extension,
- NULL,
- NULL,
- fatal_extension
-@};
-@end example
-@end ifset
-
-@ifset is-Ada
-User_Extensions : RTEMS.Extensions_Table := (
- Task_Create_Extension'Access,
- null,
- null,
- Task_Delete_Extension'Access,
- Task_Switch_Extension'Access,
- null,
- null,
- Fatal_Extension'Access
-);
-@example
-
-@end example
-@end ifset
-
-More information regarding the user extensions is
-provided in the User Extensions chapter.
-
-@section Multiprocessor Configuration Table
-
-The Multiprocessor Configuration Table contains
-information needed when using RTEMS in a multiprocessor
-configuration. Many of the details associated with configuring
-a multiprocessor system are dependent on the multiprocessor
-communications layer provided by the user. The address of the
-Multiprocessor Configuration Table should be placed in the
-User_multiprocessing_table entry in the primary Configuration
-Table. Further details regarding many of the entries in the
-Multiprocessor Configuration Table will be provided in the
-Multiprocessing chapter. The format of the Multiprocessor
-Configuration Table is defined in
-the following @value{LANGUAGE} @value{STRUCTURE}:
-
-@ifset is-C
-@example
-typedef struct @{
- rtems_unsigned32 node;
- rtems_unsigned32 maximum_nodes;
- rtems_unsigned32 maximum_global_objects;
- rtems_unsigned32 maximum_proxies;
- rtems_mpci_table *User_mpci_table;
-@} rtems_multiprocessing_table;
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Multiprocessing_Table is
- record
- Node : RTEMS.Unsigned32;
- Maximum_Nodes : RTEMS.Unsigned32;
- Maximum_Global_Objects : RTEMS.Unsigned32;
- Maximum_Proxies : RTEMS.Unsigned32;
- User_MPCI_Table : RTEMS.MPCI_Table_Pointer;
- end record;
-
-type Multiprocessing_Table_Pointer is access all Multiprocessing_Table;
-@end example
-@end ifset
-
-@table @b
-@item node
-is a unique processor identifier
-and is used in routing messages between nodes in a
-multiprocessor configuration. Each processor must have a unique
-node number. RTEMS assumes that node numbers start at one and
-increase sequentially. This assumption can be used to advantage
-by the user-supplied MPCI layer. Typically, this requirement is
-made when the node numbers are used to calculate the address of
-inter-processor communication links. Zero should be avoided as
-a node number because some MPCI layers use node zero to
-represent broadcasted packets. Thus, it is recommended that
-node numbers start at one and increase sequentially.
-
-@item maximum_nodes
-is the number of processor nodes in the system.
-
-@item maximum_global_objects
-is the maximum number of global objects which can exist at any
-given moment in the entire system. If this parameter is not the
-same on all nodes in the system, then a fatal error is generated
-to inform the user that the system is inconsistent.
-
-@item maximum_proxies
-is the maximum number of proxies which can exist at any given moment
-on this particular node. A proxy is a substitute task control block
-which represent a task residing on a remote node when that task blocks
-on a remote object. Proxies are used in situations in which delayed
-interaction is required with a remote node.
-
-@item User_mpci_table
-is the address of the Multiprocessor Communications Interface
-Table. This table contains the entry points of user-provided functions
-which constitute the multiprocessor communications layer. This table
-must be provided in multiprocessor configurations with all
-entries configured. The format of this table and details
-regarding its entries can be found in the next section.
-
-@end table
-
-@section Multiprocessor Communications Interface Table
-
-The format of this table is defined in
-the following @value{LANGUAGE} @value{STRUCTURE}:
-
-@ifset is-C
-@example
-typedef struct @{
- rtems_unsigned32 default_timeout; /* in ticks */
- rtems_unsigned32 maximum_packet_size;
- rtems_mpci_initialization_entry initialization;
- rtems_mpci_get_packet_entry get_packet;
- rtems_mpci_return_packet_entry return_packet;
- rtems_mpci_send_entry send;
- rtems_mpci_receive_entry receive;
-@} rtems_mpci_table;
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type MPCI_Table is
- record
- Default_Timeout : RTEMS.Unsigned32; -- in ticks
- Maximum_Packet_Size : RTEMS.Unsigned32;
- Initialization : RTEMS.MPCI_Initialization_Entry;
- Get_Packet : RTEMS.MPCI_Get_Packet_Entry;
- Return_Packet : RTEMS.MPCI_Return_Packet_Entry;
- Send : RTEMS.MPCI_Send_Entry;
- Receive : RTEMS.MPCI_Receive_Entry;
- end record;
-
-type MPCI_Table_Pointer is access all MPCI_Table;
-@end example
-@end ifset
-
-@table @b
-@item default_timeout
-is the default maximum length of time a task should block waiting for
-a response to a directive which results in communication with a remote node.
-The maximum length of time is a function the user supplied
-multiprocessor communications layer and the media used. This
-timeout only applies to directives which would not block if the
-operation were performed locally.
-
-@item maximum_packet_size
-is the size in bytes of the longest packet which the MPCI layer is capable
-of sending. This value should represent the total number of bytes available
-for a RTEMS interprocessor messages.
-
-@item initialization
-is the address of the entry point for the initialization procedure of the
-user supplied multiprocessor communications layer.
-
-@item get_packet
-is the address of the entry point for the procedure called by RTEMS to
-obtain a packet from the user supplied multiprocessor communications layer.
-
-@item return_packet
-is the address of the entry point for the procedure called by RTEMS to
-return a packet to the user supplied multiprocessor communications layer.
-
-@item send
-is the address of the entry point for the procedure called by RTEMS to
-send an envelope to another node. This procedure is part of the user
-supplied multiprocessor communications layer.
-
-@item receive
-is the address of the entry point for the
-procedure called by RTEMS to retrieve an envelope containing a
-message from another node. This procedure is part of the user
-supplied multiprocessor communications layer.
-
-@end table
-
-More information regarding the required functionality of these
-entry points is provided in the Multiprocessor chapter.
-
-@section Determining Memory Requirements
-
-Since memory is a critical resource in many real-time
-embedded systems, RTEMS was specifically designed to allow
-unused managers to be excluded from the run-time environment.
-This allows the application designer the flexibility to tailor
-RTEMS to most efficiently meet system requirements while still
-satisfying even the most stringent memory constraints. As
-result, the size of the RTEMS executive is application
-dependent. A Memory Requirements worksheet is provided in the
-Applications Supplement document for a specific target
-processor. This worksheet can be used to calculate the memory
-requirements of a custom RTEMS run-time environment. To insure
-that enough memory is allocated for future versions of RTEMS,
-the application designer should round these memory requirements
-up. The following managers may be optionally excluded:
-
-@itemize @bullet
-@item signal
-@item region
-@item dual ported memory
-@item event
-@item multiprocessing
-@item partition
-@item timer
-@item semaphore
-@item message
-@item rate monotonic
-@end itemize
-
-RTEMS based applications must somehow provide memory
-for RTEMS' code and data space. Although RTEMS' data space must
-be in RAM, its code space can be located in either ROM or RAM.
-In addition, the user must allocate RAM for the RTEMS RAM
-Workspace. The size of this area is application dependent and
-can be calculated using the formula provided in the Memory
-Requirements chapter of the Applications Supplement document
-for a specific target processor.
-
-All RTEMS data variables and routine names used by
-RTEMS begin with the underscore ( _ ) character followed by an
-upper-case letter. If RTEMS is linked with an application, then
-the application code should NOT contain any symbols which begin
-with the underscore character and followed by an upper-case
-letter to avoid any naming conflicts. All RTEMS directive names
-should be treated as reserved words.
-
-@section Sizing the RTEMS RAM Workspace
-
-The RTEMS RAM Workspace is a user-specified block of
-memory reserved for use by RTEMS. The application should NOT
-modify this memory. This area consists primarily of the RTEMS
-data structures whose exact size depends upon the values
-specified in the Configuration Table. In addition, task stacks
-and floating point context areas are dynamically allocated from
-the RTEMS RAM Workspace.
-
-The starting address of the RTEMS RAM Workspace must
-be aligned on a four-byte boundary. Failure to properly align
-the workspace area will result in the
-@code{@value{DIRPREFIX}fatal_error_occurred}
-directive being invoked with the
-@code{@value{RPREFIX}INVALID_ADDRESS} error code.
-
-A worksheet is provided in the Memory Requirements
-chapter of the Applications Supplement document for a specific
-target processor to assist the user in calculating the minimum
-size of the RTEMS RAM Workspace for each application. The value
-calculated with this worksheet is the minimum value that should
-be specified as the work_space_size parameter of the
-Configuration Table. The user is cautioned that future versions
-of RTEMS may not have the same memory requirements per object.
-Although the value calculated is sufficient for a particular
-target processor and release of RTEMS, memory usage is subject
-to change across versions and target processors. The user is
-advised to allocate somewhat more memory than the worksheet
-recommends to insure compatibility with future releases for a
-specific target processor and other target processors. To avoid
-problems, the user should recalculate the memory requirements
-each time one of the following events occurs:
-
-@itemize @bullet
-@item a configuration parameter is modified,
-@item task or interrupt stack requirements change,
-@item task floating point attribute is altered,
-@item RTEMS is upgraded, or
-@item the target processor is changed.
-@end itemize
-
-Failure to provide enough space in the RTEMS RAM
-Workspace will result in the
-@code{@value{DIRPREFIX}fatal_error_occurred} directive
-being invoked with the appropriate error code.
diff --git a/doc/user/dirstat.texi b/doc/user/dirstat.texi
deleted file mode 100644
index 1f447e31fe..0000000000
--- a/doc/user/dirstat.texi
+++ /dev/null
@@ -1,42 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Directive Status Codes, Example Application, Multiprocessing Manager MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet, Top
-@end ifinfo
-@chapter Directive Status Codes
-@table @b
-@item @code{@value{RPREFIX}SUCCESSFUL} - successful completion
-@item @code{@value{RPREFIX}TASK_EXITTED} - returned from a task
-@item @code{@value{RPREFIX}MP_NOT_CONFIGURED} - multiprocessing not configured
-@item @code{@value{RPREFIX}INVALID_NAME} - invalid object name
-@item @code{@value{RPREFIX}INVALID_ID} - invalid object id
-@item @code{@value{RPREFIX}TOO_MANY} - too many
-@item @code{@value{RPREFIX}TIMEOUT} - timed out waiting
-@item @code{@value{RPREFIX}OBJECT_WAS_DELETED} - object was deleted while waiting
-@item @code{@value{RPREFIX}INVALID_SIZE} - invalid specified size
-@item @code{@value{RPREFIX}INVALID_ADDRESS} - invalid address specified
-@item @code{@value{RPREFIX}INVALID_NUMBER} - number was invalid
-@item @code{@value{RPREFIX}NOT_DEFINED} - item not initialized
-@item @code{@value{RPREFIX}RESOURCE_IN_USE} - resources outstanding
-@item @code{@value{RPREFIX}UNSATISFIED} - request not satisfied
-@item @code{@value{RPREFIX}INCORRECT_STATE} - task is in wrong state
-@item @code{@value{RPREFIX}ALREADY_SUSPENDED} - task already in state
-@item @code{@value{RPREFIX}ILLEGAL_ON_SELF} - illegal for calling task
-@item @code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - illegal for remote object
-@item @code{@value{RPREFIX}CALLED_FROM_ISR} - invalid environment
-@item @code{@value{RPREFIX}INVALID_PRIORITY} - invalid task priority
-@item @code{@value{RPREFIX}INVALID_CLOCK} - invalid time buffer
-@item @code{@value{RPREFIX}INVALID_NODE} - invalid node id
-@item @code{@value{RPREFIX}NOT_CONFIGURED} - directive not configured
-@item @code{@value{RPREFIX}NOT_OWNER_OF_RESOURCE} - not owner of resource
-@item @code{@value{RPREFIX}NOT_IMPLEMENTED} - directive not implemented
-@item @code{@value{RPREFIX}INTERNAL_ERROR} - RTEMS inconsistency detected
-@item @code{@value{RPREFIX}NO_MEMORY} - could not get enough memory
-@end table
-
diff --git a/doc/user/dpmem.t b/doc/user/dpmem.t
deleted file mode 100644
index 8d01469363..0000000000
--- a/doc/user/dpmem.t
+++ /dev/null
@@ -1,327 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Dual-Ported Memory Manager
-
-@section Introduction
-
-The dual-ported memory manager provides a mechanism
-for converting addresses between internal and external
-representations for multiple dual-ported memory areas (DPMA).
-The directives provided by the dual-ported memory manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}port_create} - Create a port
-@item @code{@value{DIRPREFIX}port_ident} - Get ID of a port
-@item @code{@value{DIRPREFIX}port_delete} - Delete a port
-@item @code{@value{DIRPREFIX}port_external_to_internal} - Convert external to internal address
-@item @code{@value{DIRPREFIX}port_internal_to_external} - Convert internal to external address
-@end itemize
-
-@section Background
-
-A dual-ported memory area (DPMA) is an contiguous
-block of RAM owned by a particular processor but which can be
-accessed by other processors in the system. The owner accesses
-the memory using internal addresses, while other processors must
-use external addresses. RTEMS defines a port as a particular
-mapping of internal and external addresses.
-
-There are two system configurations in which
-dual-ported memory is commonly found. The first is
-tightly-coupled multiprocessor computer systems where the
-dual-ported memory is shared between all nodes and is used for
-inter-node communication. The second configuration is computer
-systems with intelligent peripheral controllers. These
-controllers typically utilize the DPMA for high-performance data
-transfers.
-
-@section Operations
-
-@subsection Creating a Port
-
-The @code{@value{DIRPREFIX}port_create} directive creates a port into a DPMA
-with the user-defined name. The user specifies the association
-between internal and external representations for the port being
-created. RTEMS allocates a Dual-Ported Memory Control Block
-(DPCB) from the DPCB free list to maintain the newly created
-DPMA. RTEMS also generates a unique dual-ported memory port ID
-which is returned to the calling task. RTEMS does not
-initialize the dual-ported memory area or access any memory
-within it.
-
-@subsection Obtaining Port IDs
-
-When a port is created, RTEMS generates a unique port
-ID and assigns it to the created port until it is deleted. The
-port ID may be obtained by either of two methods. First, as the
-result of an invocation of the
-@code{@value{DIRPREFIX}port_create} directive, the task
-ID is stored in a user provided location. Second, the port ID
-may be obtained later using the
-@code{@value{DIRPREFIX}port_ident} directive. The port
-ID is used by other dual-ported memory manager directives to
-access this port.
-
-@subsection Converting an Address
-
-The @code{@value{DIRPREFIX}port_external_to_internal} directive is used to
-convert an address from external to internal representation for
-the specified port.
-The @code{@value{DIRPREFIX}port_internal_to_external} directive is
-used to convert an address from internal to external
-representation for the specified port. If an attempt is made to
-convert an address which lies outside the specified DPMA, then
-the address to be converted will be returned.
-
-@subsection Deleting a DPMA Port
-
-A port can be removed from the system and returned to
-RTEMS with the @code{@value{DIRPREFIX}port_delete} directive. When a port is deleted,
-its control block is returned to the DPCB free list.
-
-@section Directives
-
-This section details the dual-ported memory manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection PORT_CREATE - Create a port
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_port_create
-@example
-rtems_status_code rtems_port_create(
- rtems_name name,
- void *internal_start,
- void *external_start,
- rtems_unsigned32 length,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Port_Create (
- Name : in RTEMS.Name;
- Internal_Start : in RTEMS.Address;
- External_Start : in RTEMS.Address;
- Length : in RTEMS.Unsigned32;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - port created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - address not on four byte boundary@*
-@code{@value{RPREFIX}TOO_MANY} - too many DP memory areas created
-
-@subheading DESCRIPTION:
-
-This directive creates a port which resides on the
-local node for the specified DPMA. The assigned port id is
-returned in id. This port id is used as an argument to other
-dual-ported memory manager directives to convert addresses
-within this DPMA.
-
-For control and maintenance of the port, RTEMS
-allocates and initializes an DPCB from the DPCB free pool. Thus
-memory from the dual-ported memory area is not used to store the
-DPCB.
-
-@subheading NOTES:
-
-The internal_address and external_address parameters
-must be on a four byte boundary.
-
-This directive will not cause the calling task to be
-preempted.
-
-@page
-@subsection PORT_IDENT - Get ID of a port
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_port_ident
-@example
-rtems_status_code rtems_port_ident(
- rtems_name name,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Port_Ident (
- Name : in RTEMS.Name;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - port identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - port name not found
-
-@subheading DESCRIPTION:
-
-This directive obtains the port id associated with
-the specified name to be acquired. If the port name is not
-unique, then the port id will match one of the DPMAs with that
-name. However, this port id is not guaranteed to correspond to
-the desired DPMA. The port id is used to access this DPMA in
-other dual-ported memory area related directives.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-@page
-@subsection PORT_DELETE - Delete a port
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_port_delete
-@example
-rtems_status_code rtems_port_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Port_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - port deleted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid port id
-
-@subheading DESCRIPTION:
-
-This directive deletes the dual-ported memory area
-specified by id. The DPCB for the deleted dual-ported memory
-area is reclaimed by RTEMS.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-The calling task does not have to be the task that
-created the port. Any local task that knows the port id can
-delete the port.
-
-@page
-@subsection PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_port_external_to_internal
-@example
-rtems_status_code rtems_port_external_to_internal(
- rtems_id id,
- void *external,
- void **internal
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Port_External_To_Internal (
- ID : in RTEMS.ID;
- External : in RTEMS.Address;
- Internal : out RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - always successful
-
-@subheading DESCRIPTION:
-
-This directive converts a dual-ported memory address
-from external to internal representation for the specified port.
-If the given external address is invalid for the specified
-port, then the internal address is set to the given external
-address.
-
-@subheading NOTES:
-
-This directive is callable from an ISR.
-
-This directive will not cause the calling task to be
-preempted.
-
-@page
-@subsection PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_port_internal_to_external
-@example
-rtems_status_code rtems_port_internal_to_external(
- rtems_id id,
- void *internal,
- void **external
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Port_Internal_To_External (
- ID : in RTEMS.ID;
- Internal : in RTEMS.Address;
- External : out RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - always successful
-
-@subheading DESCRIPTION:
-
-This directive converts a dual-ported memory address
-from internal to external representation so that it can be
-passed to owner of the DPMA represented by the specified port.
-If the given internal address is an invalid dual-ported address,
-then the external address is set to the given internal address.
-
-@subheading NOTES:
-
-This directive is callable from an ISR.
-
-This directive will not cause the calling task to be
-preempted.
-
diff --git a/doc/user/event.t b/doc/user/event.t
deleted file mode 100644
index 6eb3266373..0000000000
--- a/doc/user/event.t
+++ /dev/null
@@ -1,320 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Event Manager
-
-@section Introduction
-
-The event manager provides a high performance method
-of intertask communication and synchronization. The directives
-provided by the event manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}event_send} - Send event set to a task
-@item @code{@value{DIRPREFIX}event_receive} - Receive event condition
-@end itemize
-
-@section Background
-
-@subsection Event Sets
-
-An event flag is used by a task (or ISR) to inform
-another task of the occurrence of a significant situation.
-Thirty-two event flags are associated with each task. A
-collection of one or more event flags is referred to as an event
-set. The application developer should remember the following
-key characteristics of event operations when utilizing the event
-manager:
-
-@itemize @bullet
-@item Events provide a simple synchronization facility.
-
-@item Events are aimed at tasks.
-
-@item Tasks can wait on more than one event simultaneously.
-
-@item Events are independent of one another.
-
-@item Events do not hold or transport data.
-
-@item Events are not queued. In other words, if an event is
-sent more than once to a task before being received, the second and
-subsequent send operations to that same task have no effect.
-@end itemize
-
-An event set is posted when it is directed (or sent) to a task. A
-pending event is an event that has been posted but not received. An event
-condition is used to specify the events which the task desires to receive
-and the algorithm which will be used to determine when the request is
-satisfied. An event condition is satisfied based upon one of two
-algorithms which are selected by the user. The
-@code{@value{RPREFIX}EVENT_ANY} algorithm states that an event condition
-is satisfied when at least a single requested event is posted. The
-@code{@value{RPREFIX}EVENT_ALL} algorithm states that an event condition
-is satisfied when every requested event is posted.
-
-@subsection Building an Event Set or Condition
-
-An event set or condition is built by a bitwise OR of
-the desired events. The set of valid events is @code{@value{RPREFIX}EVENT_0} through
-@code{@value{RPREFIX}EVENT_31}. If an event is not explicitly specified in the set or
-condition, then it is not present. Events are specifically
-designed to be mutually exclusive, therefore bitwise OR and
-addition operations are equivalent as long as each event appears
-exactly once in the event set list.
-
-For example, when sending the event set consisting of
-@code{@value{RPREFIX}EVENT_6}, @code{@value{RPREFIX}EVENT_15}, and @code{@value{RPREFIX}EVENT_31},
-the event parameter to the @code{@value{DIRPREFIX}event_send}
-directive should be @code{@value{RPREFIX}EVENT_6 @value{OR}
-@value{RPREFIX}EVENT_15 @value{OR} @value{RPREFIX}EVENT_31}.
-
-@subsection Building an EVENT_RECEIVE Option Set
-
-In general, an option is built by a bitwise OR of the
-desired option components. The set of valid options for the
-@code{@value{DIRPREFIX}event_receive} directive are listed
-in the following table:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}WAIT} - task will wait for event (default)
-@item @code{@value{RPREFIX}NO_WAIT} - task should not wait
-@item @code{@value{RPREFIX}EVENT_ALL} - return after all events (default)
-@item @code{@value{RPREFIX}EVENT_ANY} - return after any events
-@end itemize
-
-Option values are specifically designed to be
-mutually exclusive, therefore bitwise OR and addition operations
-are equivalent as long as each option appears exactly once in
-the component list. An option listed as a default is not
-required to appear in the option list, although it is a good
-programming practice to specify default options. If all
-defaults are desired, the option @code{@value{RPREFIX}DEFAULT_OPTIONS} should be
-specified on this call.
-
-This example demonstrates the option parameter needed
-to poll for all events in a particular event condition to
-arrive. The option parameter passed to the
-@code{@value{DIRPREFIX}event_receive} directive should be either
-@code{@value{RPREFIX}EVENT_ALL @value{OR} @value{RPREFIX}NO_WAIT}
-or @code{@value{RPREFIX}NO_WAIT}. The option parameter can be set to
-@code{@value{RPREFIX}NO_WAIT} because @code{@value{RPREFIX}EVENT_ALL} is the
-default condition for @code{@value{DIRPREFIX}event_receive}.
-
-@section Operations
-
-@subsection Sending an Event Set
-
-The @code{@value{DIRPREFIX}event_send} directive allows a task (or an ISR) to
-direct an event set to a target task. Based upon the state of
-the target task, one of the following situations applies:
-
-@itemize @bullet
-@item Target Task is Blocked Waiting for Events
-
-@itemize -
-
-@item If the waiting task's input event condition is
-satisfied, then the task is made ready for execution.
-
-@item If the waiting task's input event condition is not
-satisfied, then the event set is posted but left pending and the
-task remains blocked.
-
-@end itemize
-
-@item Target Task is Not Waiting for Events
-
-@itemize -
-@item The event set is posted and left pending.
-@end itemize
-
-@end itemize
-
-@subsection Receiving an Event Set
-
-The @code{@value{DIRPREFIX}event_receive} directive is used by tasks to
-accept a specific input event condition. The task also
-specifies whether the request is satisfied when all requested
-events are available or any single requested event is available.
-If the requested event condition is satisfied by pending
-events, then a successful return code and the satisfying event
-set are returned immediately. If the condition is not
-satisfied, then one of the following situations applies:
-
-@itemize @bullet
-@item By default, the calling task will wait forever for the
-event condition to be satisfied.
-
-@item Specifying the @code{@value{RPREFIX}NO_WAIT} option forces an immediate return
-with an error status code.
-
-@item Specifying a timeout limits the period the task will
-wait before returning with an error status code.
-@end itemize
-
-@subsection Determining the Pending Event Set
-
-A task can determine the pending event set by calling
-the @code{@value{DIRPREFIX}event_receive} directive with a value of
-@code{@value{RPREFIX}PENDING_EVENTS} for the input event condition.
-The pending events are returned to the calling task but the event
-set is left unaltered.
-
-@subsection Receiving all Pending Events
-
-A task can receive all of the currently pending
-events by calling the @code{@value{DIRPREFIX}event_receive}
-directive with a value of @code{@value{RPREFIX}ALL_EVENTS}
-for the input event condition and
-@code{@value{RPREFIX}NO_WAIT @value{OR} @value{RPREFIX}EVENT_ANY}
-for the option set. The pending events are returned to the
-calling task and the event set is cleared. If no events are
-pending then the @code{@value{RPREFIX}UNSATISFIED} status code will be returned.
-
-@section Directives
-
-This section details the event manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection EVENT_SEND - Send event set to a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_event_send
-@example
-rtems_status_code rtems_event_send (
- rtems_id id,
- rtems_event_set event_in
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Event_Send (
- ID : in RTEMS.ID;
- Event_In : in RTEMS.Event_Set;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - event set sent successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid task id
-
-@subheading DESCRIPTION:
-
-This directive sends an event set, event_in, to the
-task specified by id. If a blocked task's input event condition
-is satisfied by this directive, then it will be made ready. If
-its input event condition is not satisfied, then the events
-satisfied are updated and the events not satisfied are left
-pending. If the task specified by id is not blocked waiting for
-events, then the events sent are left pending.
-
-@subheading NOTES:
-
-Specifying @code{@value{RPREFIX}SELF} for id results in the event set being
-sent to the calling task.
-
-Identical events sent to a task are not queued. In
-other words, the second, and subsequent, posting of an event to
-a task before it can perform an @code{@value{DIRPREFIX}event_receive}
-has no effect.
-
-The calling task will be preempted if it has
-preemption enabled and a higher priority task is unblocked as
-the result of this directive.
-
-Sending an event set to a global task which does not
-reside on the local node will generate a request telling the
-remote node to send the event set to the appropriate task.
-
-@page
-@subsection EVENT_RECEIVE - Receive event condition
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_event_receive
-@example
-rtems_status_code rtems_event_receive (
- rtems_event_set event_in,
- rtems_option option_set,
- rtems_interval ticks,
- rtems_event_set *event_out
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Event_Receive (
- Event_In : in RTEMS.Event_Set;
- Option_Set : in RTEMS.Option;
- Ticks : in RTEMS.Interval;
- Event_Out : out RTEMS.Event_Set;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - event received successfully@*
-@code{@value{RPREFIX}UNSATISFIED} - input event not satisfied (@code{@value{RPREFIX}NO_WAIT})@*
-@code{@value{RPREFIX}TIMEOUT} - timed out waiting for event
-
-@subheading DESCRIPTION:
-
-This directive attempts to receive the event
-condition specified in event_in. If event_in is set to
-@code{@value{RPREFIX}PENDING_EVENTS}, then the current pending events are returned in
-event_out and left pending. The @code{@value{RPREFIX}WAIT} and @code{@value{RPREFIX}NO_WAIT} options in the
-option_set parameter are used to specify whether or not the task
-is willing to wait for the event condition to be satisfied.
-@code{@value{RPREFIX}EVENT_ANY} and @code{@value{RPREFIX}EVENT_ALL} are used in the option_set parameter are
-used to specify whether a single event or the complete event set
-is necessary to satisfy the event condition. The event_out
-parameter is returned to the calling task with the value that
-corresponds to the events in event_in that were satisfied.
-
-If pending events satisfy the event condition, then
-event_out is set to the satisfied events and the pending events
-in the event condition are cleared. If the event condition is
-not satisfied and @code{@value{RPREFIX}NO_WAIT} is specified, then event_out is set to
-the currently satisfied events. If the calling task chooses to
-wait, then it will block waiting for the event condition.
-
-If the calling task must wait for the event condition
-to be satisfied, then the timeout parameter is used to specify
-the maximum interval to wait. If it is set to @code{@value{RPREFIX}NO_TIMEOUT}, then
-the calling task will wait forever.
-
-@subheading NOTES:
-
-This directive only affects the events specified in
-event_in. Any pending events that do not correspond to any of
-the events specified in event_in will be left pending.
-
-The following event receive option constants are defined by
-RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}WAIT} task will wait for event (default)
-@item @code{@value{RPREFIX}NO_WAIT} task should not wait
-@item @code{@value{RPREFIX}EVENT_ALL} return after all events (default)
-@item @code{@value{RPREFIX}EVENT_ANY} return after any events
-@end itemize
-
-A clock tick is required to support the functionality of this directive.
diff --git a/doc/user/example.texi b/doc/user/example.texi
deleted file mode 100644
index 683777511d..0000000000
--- a/doc/user/example.texi
+++ /dev/null
@@ -1,105 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Example Application, Glossary, Directive Status Codes, Top
-@end ifinfo
-@chapter Example Application
-
-@example
-/* example.c
- *
- * This file contains an example of a simple RTEMS
- * application. It contains a Configuration Table, a
- * user initialization task, and a simple task.
- *
- * This example assumes that a board support package exists
- * and invokes the initialize_executive() directive.
- */
-
-#include "rtems.h"
-
-rtems_task init_task();
-
-#define INIT_NAME rtems_build_name( 'A', 'B', 'C', ' ' ' )
-
-rtems_initialization_tasks_table init_task = @{
- @{ INIT_NAME, /* init task name "ABC" */
- 1024, /* init task stack size */
- 1, /* init task priority */
- DEFAULT_ATTRIBUTES, /* init task attributes */
- init_task, /* init task entry point */
- TIMESLICE, /* init task initial mode */
- 0 /* init task argument */
- @}
-@};
-
-rtems_configuration_table User_Configuration_Table = @{
- NULL, /* filled in by the BSP */
- 65536, /* executive RAM size */
- 2, /* maximum tasks */
- 0, /* maximum timers */
- 0, /* maximum semaphores */
- 0, /* maximum message queues */
- 0, /* maximum messages */
- 0, /* maximum partitions */
- 0, /* maximum regions */
- 0, /* maximum ports */
- 0, /* maximum periods */
- 0, /* maximum extensions */
- RTEMS_MILLISECONDS_TO_MICROSECONDS(10), /* number of ms in a tick */
- 1, /* num of ticks in a timeslice */
- 1, /* number of user init tasks */
- init_task_tbl, /* user init task(s) table */
- 0, /* number of device drivers */
- NULL, /* ptr to driver address table */
- NULL, /* ptr to extension table */
- NULL /* ptr to MP config table */
-@};
-
-task user_application(
- rtems_task_argument ignored
-);
-
-#define USER_APP_NAME 1 /* any 32-bit name; unique helps */
-
-rtems_task init_task(
- rtems_task_argument ignored
-)
-@{
- rtems_id tid;
-
- /* example assumes SUCCESSFUL return value */
-
- (void) rtems_task_create( USER_APP_NAME, 1, 1024,
- RTEMS_NO_PREEMPT, RTEMS_FLOATING_POINT, &tid );
- (void) rtems_task_start( tid, user_application, 0 );
- (void) rtems_task_delete( SELF );
-@}
-
-
-
-rtems_task user_application()
-
-@{
- /* application specific initialization goes here */
-
- while ( 1 ) @{ /* infinite loop */
-
- /* APPLICATION CODE GOES HERE
- *
- * This code will typically include at least one
- * directive which causes the calling task to
- * give up the processor.
- */
- @}
-@}
-@end example
-
-
-
diff --git a/doc/user/fatal.t b/doc/user/fatal.t
deleted file mode 100644
index b39de2269c..0000000000
--- a/doc/user/fatal.t
+++ /dev/null
@@ -1,158 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Fatal Error Manager
-
-@section Introduction
-
-The fatal error manager processes all fatal or
-irrecoverable errors. The directive provided by the fatal error
-manager is:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}fatal_error_occurred} - Invoke the fatal error handler
-@end itemize
-
-@section Background
-
-The fatal error manager is called upon detection of
-an irrecoverable error condition by either RTEMS or the
-application software. Fatal errors can be detected from three
-sources:
-
-@itemize @bullet
-@item the executive (RTEMS)
-@item user system code
-@item user application code
-@end itemize
-
-RTEMS automatically invokes the fatal error manager
-upon detection of an error it considers to be fatal. Similarly,
-the user should invoke the fatal error manager upon detection of
-a fatal error.
-
-Each status or dynamic user extension set may include
-a fatal error handler. The fatal error handler in the static
-extension set can be used to provide access to debuggers and
-monitors which may be present on the target hardware. If any
-user-supplied fatal error handlers are installed, the fatal
-error manager will invoke them. If no user handlers are
-configured or if all the user handler return control to the
-fatal error manager, then the RTEMS default fatal error handler
-is invoked. If the default fatal error handler is invoked, then
-the system state is marked as failed.
-
-Although the precise behavior of the default fatal
-error handler is processor specific, in general, it will disable
-all maskable interrupts, place the error code in a known
-processor dependent place (generally either on the stack or in a
-register), and halt the processor. The precise actions of the
-RTEMS fatal error are discussed in the Default Fatal Error
-Processing chapter of the Applications Supplement document for
-a specific target processor.
-
-@section Operations
-
-@subsection Announcing a Fatal Error
-
-The @code{@value{DIRPREFIX}fatal_error_occurred} directive is invoked when a
-fatal error is detected. Before invoking any user-supplied
-fatal error handlers or the RTEMS fatal error handler, the
-@code{@value{DIRPREFIX}fatal_error_occurred}
-directive stores useful information in the
-variable @code{_Internal_errors_What_happened}. This @value{STRUCTURE}
-contains three pieces of information:
-
-@itemize @bullet
-@item the source of the error (API or executive core),
-
-@item whether the error was generated internally by the
-executive, and a
-
-@item a numeric code to indicate the error type.
-@end itemize
-
-The error type indicator is dependent on the source
-of the error and whether or not the error was internally
-generated by the executive. If the error was generated
-from an API, then the error code will be of that API's
-error or status codes. The status codes for the RTEMS
-API are in c/src/exec/rtems/headers/status.h. Those
-for the POSIX API can be found in <errno.h>.
-
-The @code{@value{DIRPREFIX}fatal_error_occurred} directive is responsible
-for invoking an optional user-supplied fatal error handler
-and/or the RTEMS fatal error handler. All fatal error handlers
-are passed an error code to describe the error detected.
-
-Occasionally, an application requires more
-sophisticated fatal error processing such as passing control to
-a debugger. For these cases, a user-supplied fatal error
-handler can be specified in the RTEMS configuration table. The
-User Extension Table field fatal contains the address of the
-fatal error handler to be executed when the
-@code{@value{DIRPREFIX}fatal_error_occurred}
-directive is called. If the field is set to NULL or if the
-configured fatal error handler returns to the executive, then
-the default handler provided by RTEMS is executed. This default
-handler will halt execution on the processor where the error
-occurred.
-
-@section Directives
-
-This section details the fatal error manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection FATAL_ERROR_OCCURRED - Invoke the fatal error handler
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_fatal_error_occurred
-@example
-void volatile rtems_fatal_error_occurred(
- rtems_unsigned32 the_error
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Fatal_Error_Occurred (
- The_Error : in RTEMS.Unsigned32
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive processes fatal errors. If the FATAL
-error extension is defined in the configuration table, then the
-user-defined error extension is called. If configured and the
-provided FATAL error extension returns, then the RTEMS default
-error handler is invoked. This directive can be invoked by
-RTEMS or by the user's application code including initialization
-tasks, other tasks, and ISRs.
-
-@subheading NOTES:
-
-This directive supports local operations only.
-
-Unless the user-defined error extension takes special
-actions such as restarting the calling task, this directive WILL
-NOT RETURN to the caller.
-
-The user-defined extension for this directive may
-wish to initiate a global shutdown.
diff --git a/doc/user/glossary.texi b/doc/user/glossary.texi
deleted file mode 100644
index 1f3794e994..0000000000
--- a/doc/user/glossary.texi
+++ /dev/null
@@ -1,771 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Glossary, Command and Variable Index, Example Application, Top
-@end ifinfo
-@chapter Glossary
-
-@table @b
-@item active
-A term used to describe an object
-which has been created by an application.
-
-@item aperiodic task
-A task which must execute only at
-irregular intervals and has only a soft deadline.
-
-@item application
-In this document, software which makes
-use of RTEMS.
-
-@item ASR
-see Asynchronous Signal Routine.
-
-@item asynchronous
-Not related in order or timing to
-other occurrences in the system.
-
-@item Asynchronous Signal Routine
-Similar to a hardware
-interrupt except that it is associated with a task and is run in
-the context of a task. The directives provided by the signal
-manager are used to service signals.
-
-@item awakened
-A term used to describe a task that has
-been unblocked and may be scheduled to the CPU.
-
-@item big endian
-A data representation scheme in which
-the bytes composing a numeric value are arranged such that the
-most significant byte is at the lowest address.
-
-@item bit-mapped
-A data encoding scheme in which each bit
-in a variable is used to represent something different. This
-makes for compact data representation.
-
-@item block
-A physically contiguous area of memory.
-
-@item blocked
-The task state entered by a task which has
-been previously started and cannot continue execution until the
-reason for waiting has been satisfied.
-
-@item broadcast
-To simultaneously send a message to a
-logical set of destinations.
-
-@item BSP
-see Board Support Package.
-
-@item Board Support Package
-A collection of device
-initialization and control routines specific to a particular
-type of board or collection of boards.
-
-@item buffer
-A fixed length block of memory allocated
-from a partition.
-
-@item calling convention
-The processor and compiler
-dependent rules which define the mechanism used to invoke
-subroutines in a high-level language. These rules define the
-passing of arguments, the call and return mechanism, and the
-register set which must be preserved.
-
-@item Central Processing Unit
-This term is equivalent to
-the terms processor and microprocessor.
-
-@item chain
-A data structure which allows for efficient
-dynamic addition and removal of elements. It differs from an
-array in that it is not limited to a predefined size.
-
-@item coalesce
-The process of merging adjacent holes into
-a single larger hole. Sometimes this process is referred to as
-garbage collection.
-
-@item Configuration Table
-A table which contains
-information used to tailor RTEMS for a particular application.
-
-@item context
-All of the processor registers and
-operating system data structures associated with a task.
-
-@item context switch
-Alternate term for task switch.
-Taking control of the processor from one task and transferring
-it to another task.
-
-@item control block
-A data structure used by the
-executive to define and control an object.
-
-@item core
-When used in this manual, this term refers to
-the internal executive utility functions. In the interest of
-application portability, the core of the executive should not be
-used directly by applications.
-
-@item CPU
-An acronym for Central Processing Unit.
-
-@item critical section
-A section of code which must be
-executed indivisibly.
-
-@item CRT
-An acronym for Cathode Ray Tube. Normally used
-in reference to the man-machine interface.
-
-@item deadline
-A fixed time limit by which a task must
-have completed a set of actions. Beyond this point, the results
-are of reduced value and may even be considered useless or
-harmful.
-
-@item device
-A peripheral used by the application that
-requires special operation software. See also device driver.
-
-@item device driver
-Control software for special
-peripheral devices used by the application.
-
-@item directives
-RTEMS' provided routines that provide
-support mechanisms for real-time applications.
-
-@item dispatch
-The act of loading a task's context onto
-the CPU and transferring control of the CPU to that task.
-
-@item dormant
-The state entered by a task after it is
-created and before it has been started.
-
-@item Device Driver Table
-A table which contains the
-entry points for each of the configured device drivers.
-
-@item dual-ported
-A term used to describe memory which
-can be accessed at two different addresses.
-
-@item embedded
-An application that is delivered as a
-hidden part of a larger system. For example, the software in a
-fuel-injection control system is an embedded application found
-in many late-model automobiles.
-
-@item envelope
-A buffer provided by the MPCI layer to
-RTEMS which is used to pass messages between nodes in a
-multiprocessor system. It typically contains routing
-information needed by the MPCI. The contents of an envelope are
-referred to as a packet.
-
-@item entry point
-The address at which a function or task
-begins to execute. In C, the entry point of a function is the
-function's name.
-
-@item events
-A method for task communication and
-synchronization. The directives provided by the event manager
-are used to service events.
-
-@item exception
-A synonym for interrupt.
-
-@item executing
-The task state entered by a task after it
-has been given control of the CPU.
-
-@item executive
-In this document, this term is used to
-referred to RTEMS. Commonly, an executive is a small real-time
-operating system used in embedded systems.
-
-@item exported
-An object known by all nodes in a
-multiprocessor system. An object created with the GLOBAL
-attribute will be exported.
-
-@item external address
-The address used to access
-dual-ported memory by all the nodes in a system which do not own
-the memory.
-
-@item FIFO
-An acronym for First In First Out.
-
-@item First In First Out
-A discipline for manipulating entries in a data structure.
-
-@item floating point coprocessor
-A component used in
-computer systems to enhance performance in mathematically
-intensive situations. It is typically viewed as a logical
-extension of the primary processor.
-
-@item freed
-A resource that has been released by the
-application to RTEMS.
-
-@item global
-An object that has been created with the
-GLOBAL attribute and exported to all nodes in a multiprocessor
-system.
-
-@item handler
-The equivalent of a manager, except that it
-is internal to RTEMS and forms part of the core. A handler is a
-collection of routines which provide a related set of functions.
-For example, there is a handler used by RTEMS to manage all
-objects.
-
-@item hard real-time system
-A real-time system in which a
-missed deadline causes the worked performed to have no value or
-to result in a catastrophic effect on the integrity of the
-system.
-
-@item heap
-A data structure used to dynamically allocate
-and deallocate variable sized blocks of memory.
-
-@item heterogeneous
-A multiprocessor computer system composed of dissimilar processors.
-
-@item homogeneous
-A multiprocessor computer system composed of a single type of processor.
-
-@item ID
-An RTEMS assigned identification tag used to
-access an active object.
-
-@item IDLE task
-A special low priority task which assumes
-control of the CPU when no other task is able to execute.
-
-@item interface
-A specification of the methodology used
-to connect multiple independent subsystems.
-
-@item internal address
-The address used to access
-dual-ported memory by the node which owns the memory.
-
-@item interrupt
-A hardware facility that causes the CPU
-to suspend execution, save its status, and transfer control to a
-specific location.
-
-@item interrupt level
-A mask used to by the CPU to
-determine which pending interrupts should be serviced. If a
-pending interrupt is below the current interrupt level, then the
-CPU does not recognize that interrupt.
-
-@item Interrupt Service Routine
-An ISR is invoked by the
-CPU to process a pending interrupt.
-
-@item I/O
-An acronym for Input/Output.
-
-@item ISR
-An acronym for Interrupt Service Routine.
-
-@item kernel
-In this document, this term is used as a
-synonym for executive.
-
-@item list
-A data structure which allows for dynamic
-addition and removal of entries. It is not statically limited
-to a particular size.
-
-@item little endian
-A data representation scheme in which
-the bytes composing a numeric value are arranged such that the
-least significant byte is at the lowest address.
-
-@item local
-An object which was created with the LOCAL
-attribute and is accessible only on the node it was created and
-resides upon. In a single processor configuration, all objects
-are local.
-
-@item local operation
-The manipulation of an object which
-resides on the same node as the calling task.
-
-@item logical address
-An address used by an application.
-In a system without memory management, logical addresses will
-equal physical addresses.
-
-@item loosely-coupled
-A multiprocessor configuration
-where shared memory is not used for communication.
-
-@item major number
-The index of a device driver in the
-Device Driver Table.
-
-@item manager
-A group of related RTEMS' directives which
-provide access and control over resources.
-
-@item memory pool
-Used interchangeably with heap.
-
-@item message
-A sixteen byte entity used to communicate
-between tasks. Messages are sent to message queues and stored
-in message buffers.
-
-@item message buffer
-A block of memory used to store
-messages.
-
-@item message queue
-An RTEMS object used to synchronize
-and communicate between tasks by transporting messages between
-sending and receiving tasks.
-
-@item Message Queue Control Block
-A data structure associated with each message queue used by RTEMS
-to manage that message queue.
-
-@item minor number
-A numeric value passed to a device
-driver, the exact usage of which is driver dependent.
-
-@item mode
-An entry in a task's control block that is
-used to determine if the task allows preemption, timeslicing,
-processing of signals, and the interrupt disable level used by
-the task.
-
-@item MPCI
-An acronym for Multiprocessor Communications
-Interface Layer.
-
-@item multiprocessing
-The simultaneous execution of two
-or more processes by a multiple processor computer system.
-
-@item multiprocessor
-A computer with multiple CPUs
-available for executing applications.
-
-@item Multiprocessor Communications Interface Layer
-A set
-of user-provided routines which enable the nodes in a
-multiprocessor system to communicate with one another.
-
-@item Multiprocessor Configuration Table
-The data structure defining the characteristics of the multiprocessor
-target system with which RTEMS will communicate.
-
-@item multitasking
-The alternation of execution amongst a
-group of processes on a single CPU. A scheduling algorithm is
-used to determine which process executes at which time.
-
-@item mutual exclusion
-A term used to describe the act of
-preventing other tasks from accessing a resource simultaneously.
-
-@item nested
-A term used to describe an ASR that occurs
-during another ASR or an ISR that occurs during another ISR.
-
-@item node
-A term used to reference a processor running
-RTEMS in a multiprocessor system.
-
-@item non-existent
-The state occupied by an uncreated or
-deleted task.
-
-@item numeric coprocessor
-A component used in computer
-systems to enhance performance in mathematically intensive
-situations. It is typically viewed as a logical extension of
-the primary processor.
-
-@item object
-In this document, this term is used to refer
-collectively to tasks, timers, message queues, partitions,
-regions, semaphores, ports, and rate monotonic periods. All
-RTEMS objects have IDs and user-assigned names.
-
-@item object-oriented
-A term used to describe systems
-with common mechanisms for utilizing a variety of entities.
-Object-oriented systems shield the application from
-implementation details.
-
-@item operating system
-The software which controls all
-the computer's resources and provides the base upon which
-application programs can be written.
-
-@item overhead
-The portion of the CPUs processing power
-consumed by the operating system.
-
-@item packet
-A buffer which contains the messages passed
-between nodes in a multiprocessor system. A packet is the
-contents of an envelope.
-
-@item partition
-An RTEMS object which is used to allocate
-and deallocate fixed size blocks of memory from an dynamically
-specified area of memory.
-
-@item Partition Control Block
-A data structure associated
-with each partition used by RTEMS to manage that partition.
-
-@item pending
-A term used to describe a task blocked
-waiting for an event, message, semaphore, or signal.
-
-@item periodic task
-A task which must execute at regular
-intervals and comply with a hard deadline.
-
-@item physical address
-The actual hardware address of a
-resource.
-
-@item poll
-A mechanism used to determine if an event has
-occurred by periodically checking for a particular status.
-Typical events include arrival of data, completion of an action,
-and errors.
-
-@item pool
-A collection from which resources are
-allocated.
-
-@item portability
-A term used to describe the ease with
-which software can be rehosted on another computer.
-
-@item posting
-The act of sending an event, message,
-semaphore, or signal to a task.
-
-@item preempt
-The act of forcing a task to relinquish the
-processor and dispatching to another task.
-
-@item priority
-A mechanism used to represent the relative
-importance of an element in a set of items. RTEMS uses priority
-to determine which task should execute.
-
-@item priority inheritance
-An algorithm that calls for
-the lower priority task holding a resource to have its priority
-increased to that of the highest priority task blocked waiting
-for that resource. This avoids the problem of priority
-inversion.
-
-@item priority inversion
-A form of indefinite
-postponement which occurs when a high priority tasks requests
-access to shared resource currently allocated to low priority
-task. The high priority task must block until the low priority
-task releases the resource.
-
-@item processor utilization
-The percentage of processor
-time used by a task or a set of tasks.
-
-@item proxy
-An RTEMS control structure used to represent,
-on a remote node, a task which must block as part of a remote
-operation.
-
-@item Proxy Control Block
-A data structure associated
-with each proxy used by RTEMS to manage that proxy.
-
-@item PTCB
-An acronym for Partition Control Block.
-
-@item PXCB
-An acronym for Proxy Control Block.
-
-@item quantum
-The application defined unit of time in
-which the processor is allocated.
-
-@item queue
-Alternate term for message queue.
-
-@item QCB
-An acronym for Message Queue Control Block.
-
-@item ready
-A task occupies this state when it is
-available to be given control of the CPU.
-
-@item real-time
-A term used to describe systems which are
-characterized by requiring deterministic response times to
-external stimuli. The external stimuli require that the
-response occur at a precise time or the response is incorrect.
-
-@item reentrant
-A term used to describe routines which do
-not modify themselves or global variables.
-
-@item region
-An RTEMS object which is used to allocate
-and deallocate variable size blocks of memory from a dynamically
-specified area of memory.
-
-@item Region Control Block
-A data structure associated
-with each region used by RTEMS to manage that region.
-
-@item registers
-Registers are locations physically
-located within a component, typically used for device control or
-general purpose storage.
-
-@item remote
-Any object that does not reside on the local
-node.
-
-@item remote operation
-The manipulation of an object
-which does not reside on the same node as the calling task.
-
-@item return code
-Also known as error code or return
-value.
-
-@item resource
-A hardware or software entity to which
-access must be controlled.
-
-@item resume
-Removing a task from the suspend state. If
-the task's state is ready following a call to the
-@code{@value{DIRPREFIX}task_resume}
-directive, then the task is available for scheduling.
-
-@item return code
-A value returned by RTEMS directives to
-indicate the completion status of the directive.
-
-@item RNCB
-An acronym for Region Control Block.
-
-@item round-robin
-A task scheduling discipline in which
-tasks of equal priority are executed in the order in which they
-are made ready.
-
-@item RS-232
-A standard for serial communications.
-
-@item running
-The state of a rate monotonic timer while
-it is being used to delineate a period. The timer exits this
-state by either expiring or being canceled.
-
-@item schedule
-The process of choosing which task should
-next enter the executing state.
-
-@item schedulable
-A set of tasks which can be guaranteed
-to meet their deadlines based upon a specific scheduling
-algorithm.
-
-@item segments
-Variable sized memory blocks allocated
-from a region.
-
-@item semaphore
-An RTEMS object which is used to
-synchronize tasks and provide mutually exclusive access to
-resources.
-
-@item Semaphore Control Block
-A data structure associated
-with each semaphore used by RTEMS to manage that semaphore.
-
-@item shared memory
-Memory which is accessible by
-multiple nodes in a multiprocessor system.
-
-@item signal
-An RTEMS provided mechanism to communicate
-asynchronously with a task. Upon reception of a signal, the ASR
-of the receiving task will be invoked.
-
-@item signal set
-A thirty-two bit entity which is used to
-represent a task's collection of pending signals and the signals
-sent to a task.
-
-@item SMCB
-An acronym for Semaphore Control Block.
-
-@item soft real-time system
-A real-time system in which a
-missed deadline does not compromise the integrity of the system.
-
-@item sporadic task
-A task which executes at irregular
-intervals and must comply with a hard deadline. A minimum
-period of time between successive iterations of the task can be
-guaranteed.
-
-@item stack
-A data structure that is managed using a Last
-In First Out (LIFO) discipline. Each task has a stack
-associated with it which is used to store return information
-and local variables.
-
-@item status code
-Also known as error code or return
-value.
-
-@item suspend
-A term used to describe a task that is not
-competing for the CPU because it has had a
-@code{@value{DIRPREFIX}task_suspend} directive.
-
-@item synchronous
-Related in order or timing to other
-occurrences in the system.
-
-@item system call
-In this document, this is used as an
-alternate term for directive.
-
-@item target
-The system on which the application will
-ultimately execute.
-
-@item task
-A logically complete thread of execution. The
-CPU is allocated among the ready tasks.
-
-@item Task Control Block
-A data structure associated with
-each task used by RTEMS to manage that task.
-
-@item task switch
-Alternate terminology for context
-switch. Taking control of the processor from one task and given
-to another.
-
-@item TCB
-An acronym for Task Control Block.
-
-@item tick
-The basic unit of time used by RTEMS. It is a
-user-configurable number of microseconds. The current tick
-expires when the @code{@value{DIRPREFIX}clock_tick}
-directive is invoked.
-
-@item tightly-coupled
-A multiprocessor configuration
-system which communicates via shared memory.
-
-@item timeout
-An argument provided to a number of
-directives which determines the maximum length of time an
-application task is willing to wait to acquire the resource if
-it is not immediately available.
-
-@item timer
-An RTEMS object used to invoke subprograms at
-a later time.
-
-@item Timer Control Block
-A data structure associated
-with each timer used by RTEMS to manage that timer.
-
-@item timeslicing
-A task scheduling discipline in which
-tasks of equal priority are executed for a specific period of
-time before being preempted by another task.
-
-@item timeslice
-The application defined unit of time in
-which the processor is allocated.
-
-@item TMCB
-An acronym for Timer Control Block.
-
-@item transient overload
-A temporary rise in system
-activity which may cause deadlines to be missed. Rate Monotonic
-Scheduling can be used to determine if all deadlines will be met
-under transient overload.
-
-@item user extensions
-Software routines provided by the
-application to enhance the functionality of RTEMS.
-
-@item User Extension Table
-A table which contains the
-entry points for each user extensions.
-
-@item User Initialization Tasks Table
-A table which
-contains the information needed to create and start each of the
-user initialization tasks.
-
-@item user-provided
-Alternate term for user-supplied.
-This term is used to designate any software routines which must
-be written by the application designer.
-
-@item user-supplied
-Alternate term for user-provided.
-This term is used to designate any software routines which must
-be written by the application designer.
-
-@item vector
-Memory pointers used by the processor to
-fetch the address of routines which will handle various
-exceptions and interrupts.
-
-@item wait queue
-The list of tasks blocked pending the
-release of a particular resource. Message queues, regions, and
-semaphores have a wait queue associated with them.
-
-@item yield
-When a task voluntarily releases control of the processor.
-
-@end table
-
diff --git a/doc/user/init.t b/doc/user/init.t
deleted file mode 100644
index 4fb93048c2..0000000000
--- a/doc/user/init.t
+++ /dev/null
@@ -1,405 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Initialization Manager
-
-@section Introduction
-
-The initialization manager is responsible for
-initiating and shutting down RTEMS. Initiating RTEMS involves
-creating and starting all configured initialization tasks, and
-for invoking the initialization routine for each user-supplied
-device driver. In a multiprocessor configuration, this manager
-also initializes the interprocessor communications layer. The
-directives provided by the initialization manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}initialize_executive} - Initialize RTEMS
-@item @code{@value{DIRPREFIX}initialize_executive_early} - Initialize RTEMS and do NOT Start Multitasking
-@item @code{@value{DIRPREFIX}initialize_executive_late} - Complete Initialization and Start Multitasking
-@item @code{@value{DIRPREFIX}shutdown_executive} - Shutdown RTEMS
-@end itemize
-
-@section Background
-
-@subsection Initialization Tasks
-
-Initialization task(s) are the mechanism by which
-RTEMS transfers initial control to the user's application.
-Initialization tasks differ from other application tasks in that
-they are defined in the User Initialization Tasks Table and
-automatically created and started by RTEMS as part of its
-initialization sequence. Since the initialization tasks are
-scheduled using the same algorithm as all other RTEMS tasks,
-they must be configured at a priority and mode which will insure
-that they will complete execution before other application tasks
-execute. Although there is no upper limit on the number of
-initialization tasks, an application is required to define at
-least one.
-
-A typical initialization task will create and start
-the static set of application tasks. It may also create any
-other objects used by the application. Initialization tasks
-which only perform initialization should delete themselves upon
-completion to free resources for other tasks. Initialization
-tasks may transform themselves into a "normal" application task.
-This transformation typically involves changing priority and
-execution mode. RTEMS does not automatically delete the
-initialization tasks.
-
-@subsection The System Initialization Task
-
-The System Initialization Task is responsible for
-initializing all device drivers. As a result, this task has a
-higher priority than all other tasks to insure that no
-application tasks executes until all device drivers are
-initialized. After device initialization in a single processor
-system, this task will delete itself.
-
-The System Initialization Task must have enough stack
-space to successfully execute the initialization routines for
-all device drivers and, in multiprocessor configurations, the
-Multiprocessor Communications Interface Layer initialization
-routine. The CPU Configuration Table contains a field which
-allows the application or BSP to increase the default amount of
-stack space allocated for this task.
-
-In multiprocessor configurations, the System
-Initialization Task does not delete itself after initializing
-the device drivers. Instead it transforms itself into the
-Multiprocessing Server which initializes the Multiprocessor
-Communications Interface Layer, verifies multiprocessor system
-consistency, and processes all requests from remote nodes.
-
-@subsection The Idle Task
-
-The Idle Task is the lowest priority task in a system
-and executes only when no other task is ready to execute. This
-task consists of an infinite loop and will be preempted when any
-other task is made ready to execute.
-
-@subsection Initialization Manager Failure
-
-The fatal_error_occurred directive will be called
-from @code{@value{DIRPREFIX}initialize_executive}
-for any of the following reasons:
-
-@itemize @bullet
-@item If either the Configuration Table or the CPU Dependent
-Information Table is not provided.
-
-@item If the starting address of the RTEMS RAM Workspace,
-supplied by the application in the Configuration Table, is NULL
-or is not aligned on a four-byte boundary.
-
-@item If the size of the RTEMS RAM Workspace is not large
-enough to initialize and configure the system.
-
-@item If the interrupt stack size specified is too small.
-
-@item If multiprocessing is configured and the node entry in
-the Multiprocessor Configuration Table is not between one and
-the maximum_nodes entry.
-
-@item If a multiprocessor system is being configured and no
-Multiprocessor Communications Interface is specified.
-
-@item If no user initialization tasks are configured. At
-least one initialization task must be configured to allow RTEMS
-to pass control to the application at the end of the executive
-initialization sequence.
-
-@item If any of the user initialization tasks cannot be
-created or started successfully.
-@end itemize
-
-@section Operations
-
-@subsection Initializing RTEMS
-
-The @code{@value{DIRPREFIX}initialize_executive}
-directive is called by the
-board support package at the completion of its initialization
-sequence. RTEMS assumes that the board support package
-successfully completed its initialization activities. The
-@code{@value{DIRPREFIX}initialize_executive}
-directive completes the initialization
-sequence by performing the following actions:
-
-@itemize @bullet
-@item Initializing internal RTEMS variables;
-@item Allocating system resources;
-@item Creating and starting the System Initialization Task;
-@item Creating and starting the Idle Task;
-@item Creating and starting the user initialization task(s); and
-@item Initiating multitasking.
-@end itemize
-
-This directive MUST be called before any other RTEMS
-directives. The effect of calling any RTEMS directives before
-@code{@value{DIRPREFIX}initialize_executive}
-is unpredictable. Many of RTEMS actions
-during initialization are based upon the contents of the
-Configuration Table and CPU Dependent Information Table. For
-more information regarding the format and contents of these
-tables, please refer to the chapter Configuring a System.
-
-The final step in the initialization sequence is the
-initiation of multitasking. When the scheduler and dispatcher
-are enabled, the highest priority, ready task will be dispatched
-to run. Control will not be returned to the board support
-package after multitasking is enabled until
-@code{@value{DIRPREFIX}shutdown_executive}
-the directive is called.
-
-The @code{@value{DIRPREFIX}initialize_executive}
-directive provides a
-conceptually simple way to initialize RTEMS. However, in
-certain cases, this mechanism cannot be used. The
-@code{@value{DIRPREFIX}initialize_executive_early}
-and @code{@value{DIRPREFIX}initialize_executive_late}
-directives are provided as an alternative mechanism for
-initializing RTEMS. The
-@code{@value{DIRPREFIX}initialize_executive_early} directive
-returns to the caller BEFORE initiating multitasking. The
-@code{@value{DIRPREFIX}initialize_executive_late}
-directive is invoked to start
-multitasking. It is critical that only one of the RTEMS
-initialization sequences be used in an application.
-
-@subsection Shutting Down RTEMS
-
-The @code{@value{DIRPREFIX}shutdown_executive} directive is invoked by the
-application to end multitasking and return control to the board
-support package. The board support package resumes execution at
-the code immediately following the invocation of the
-@code{@value{DIRPREFIX}initialize_executive} directive.
-
-@section Directives
-
-This section details the initialization manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection INITIALIZE_EXECUTIVE - Initialize RTEMS
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_initialize_executive
-@example
-void rtems_initialize_executive(
- rtems_configuration_table *configuration_table,
- rtems_cpu_table *cpu_table
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Initialize_Executive (
- Configuration_Table : in RTEMS.Configuration_Table_Pointer;
- CPU_Table : in RTEMS.CPU_Table_Pointer
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive is called when the board support
-package has completed its initialization to allow RTEMS to
-initialize the application environment based upon the
-information in the Configuration Table, CPU Dependent
-Information Table, User Initialization Tasks Table, Device
-Driver Table, User Extension Table, Multiprocessor Configuration
-Table, and the Multiprocessor Communications Interface (MPCI)
-Table. This directive starts multitasking and does not return
-to the caller until the @code{@value{DIRPREFIX}shutdown_executive}
-directive is invoked.
-
-@subheading NOTES:
-
-This directive MUST be the first RTEMS directive
-called and it DOES NOT RETURN to the caller until the
-@code{@value{DIRPREFIX}shutdown_executive}
-is invoked.
-
-This directive causes all nodes in the system to
-verify that certain configuration parameters are the same as
-those of the local node. If an inconsistency is detected, then
-a fatal error is generated.
-
-The application must use only one of the two
-initialization sequences:
-@code{@value{DIRPREFIX}initialize_executive} or
-@code{@value{DIRPREFIX}initialize_executive_early} and
-@code{@value{DIRPREFIX}initialize_executive_late}. The
-@code{@value{DIRPREFIX}initialize_executive}
-directive is logically equivalent to invoking
-@code{@value{DIRPREFIX}initialize_executive_early} and
-@code{@value{DIRPREFIX}initialize_executive_late}
-with no intervening actions.
-
-@page
-@subsection INITIALIZE_EXECUTIVE_EARLY - Initialize RTEMS and do NOT Start Multitasking
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_initialize_executive_early
-@example
-rtems_interrupt_level rtems_initialize_executive_early(
- rtems_configuration_table *configuration_table,
- rtems_cpu_table *cpu_table
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Initialize_Executive_Early(
- Configuration_Table : in RTEMS.Configuration_Table_Pointer;
- CPU_Table : in RTEMS.Cpu_Table;
- Level : out RTEMS.ISR_Level
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive is called when the board support
-package has completed its initialization to allow RTEMS to
-initialize the application environment based upon the
-information in the Configuration Table, CPU Dependent
-Information Table, User Initialization Tasks Table, Device
-Driver Table, User Extension Table, Multiprocessor Configuration
-Table, and the Multiprocessor Communications Interface (MPCI)
-Table. This directive returns to the caller after completing
-the basic RTEMS initialization but before multitasking is
-initiated. The interrupt level in place when the directive is
-invoked is returned to the caller. This interrupt level should
-be the same one passed to
-@code{@value{DIRPREFIX}initialize_executive_late}.
-
-@subheading NOTES:
-
-The application must use only one of the two
-initialization sequences:
-@code{@value{DIRPREFIX}initialize_executive} or
-@code{@value{DIRPREFIX}nitialize_executive_early} and
-@code{@value{DIRPREFIX}nitialize_executive_late}.
-
-@page
-@subsection INITIALIZE_EXECUTIVE_LATE - Complete Initialization and Start Multitasking
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_initialize_executive_late
-@example
-void rtems_initialize_executive_late(
- rtems_interrupt_level bsp_level
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Initialize_Executive_Late(
- BSP_Level : in RTEMS.ISR_Level
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive is called after the
-@code{@value{DIRPREFIX}initialize_executive_early}
-directive has been called to complete
-the RTEMS initialization sequence and initiate multitasking.
-The interrupt level returned by the
-@code{@value{DIRPREFIX}initialize_executive_early}
-directive should be in bsp_level and this value is restored as
-part of this directive returning to the caller after the
-@code{@value{DIRPREFIX}shutdown_executive}
-directive is invoked.
-
-@subheading NOTES:
-
-This directive MUST be the second RTEMS directive
-called and it DOES NOT RETURN to the caller until the
-@code{@value{DIRPREFIX}shutdown_executive} is invoked.
-
-This directive causes all nodes in the system to
-verify that certain configuration parameters are the same as
-those of the local node. If an inconsistency is detected, then
-a fatal error is generated.
-
-The application must use only one of the two
-initialization sequences:
-@code{@value{DIRPREFIX}initialize_executive} or
-@code{@value{DIRPREFIX}nitialize_executive_early} and
-@code{@value{DIRPREFIX}initialize_executive_late}.
-
-
-
-@page
-@subsection SHUTDOWN_EXECUTIVE - Shutdown RTEMS
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_shutdown_executive
-@example
-void rtems_shutdown_executive(
- rtems_unsigned32 result
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Shutdown_Executive(
- result : in RTEMS.Unsigned32
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive is called when the application wishes
-to shutdown RTEMS and return control to the board support
-package. The board support package resumes execution at the
-code immediately following the invocation of the
-@code{@value{DIRPREFIX}initialize_executive} directive.
-
-@subheading NOTES:
-
-This directive MUST be the last RTEMS directive
-invoked by an application and it DOES NOT RETURN to the caller.
-
-This directive should not be invoked until the
-executive has successfully completed initialization.
diff --git a/doc/user/intr.t b/doc/user/intr.t
deleted file mode 100644
index 74fbf7af6b..0000000000
--- a/doc/user/intr.t
+++ /dev/null
@@ -1,426 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Interrupt Manager
-
-@section Introduction
-
-Any real-time executive must provide a mechanism for
-quick response to externally generated interrupts to satisfy the
-critical time constraints of the application. The interrupt
-manager provides this mechanism for RTEMS. This manager permits
-quick interrupt response times by providing the critical ability
-to alter task execution which allows a task to be preempted upon
-exit from an ISR. The interrupt manager includes the following
-directive:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}interrupt_catch} - Establish an ISR
-@item @code{@value{DIRPREFIX}interrupt_disable} - Disable Interrupts
-@item @code{@value{DIRPREFIX}interrupt_enable} - Enable Interrupts
-@item @code{@value{DIRPREFIX}interrupt_flash} - Flash Interrupt
-@item @code{@value{DIRPREFIX}interrupt_is_in_progress} - Is an ISR in Progress
-@end itemize
-
-@section Background
-
-@subsection Processing an Interrupt
-
-The interrupt manager allows the application to
-connect a function to a hardware interrupt vector. When an
-interrupt occurs, the processor will automatically vector to
-RTEMS. RTEMS saves and restores all registers which are not
-preserved by the normal @value{LANGUAGE} calling convention
-for the target
-processor and invokes the user's ISR. The user's ISR is
-responsible for processing the interrupt, clearing the interrupt
-if necessary, and device specific manipulation.
-
-The @code{@value{DIRPREFIX}interrupt_catch}
-directive connects a procedure to
-an interrupt vector. The interrupt service routine is assumed
-to abide by these conventions and have a prototype similar to
-the following:
-
-@ifset is-C
-@example
-rtems_isr user_isr(
- rtems_vector_number vector
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_ISR (
- vector : in RTEMS.Vector_Number
-);
-@end example
-@end ifset
-
-The vector number argument is provided by RTEMS to
-allow the application to identify the interrupt source. This
-could be used to allow a single routine to service interrupts
-from multiple instances of the same device. For example, a
-single routine could service interrupts from multiple serial
-ports and use the vector number to identify which port requires
-servicing.
-
-To minimize the masking of lower or equal priority
-level interrupts, the ISR should perform the minimum actions
-required to service the interrupt. Other non-essential actions
-should be handled by application tasks. Once the user's ISR has
-completed, it returns control to the RTEMS interrupt manager
-which will perform task dispatching and restore the registers
-saved before the ISR was invoked.
-
-The RTEMS interrupt manager guarantees that proper
-task scheduling and dispatching are performed at the conclusion
-of an ISR. A system call made by the ISR may have readied a
-task of higher priority than the interrupted task. Therefore,
-when the ISR completes, the postponed dispatch processing must
-be performed. No dispatch processing is performed as part of
-directives which have been invoked by an ISR.
-
-Applications must adhere to the following rule if
-proper task scheduling and dispatching is to be performed:
-
-@itemize @b{ }
-
-@item @b{The interrupt manager must be used for all ISRs which
-may be interrupted by the highest priority ISR which invokes an
-RTEMS directive.}
-
-@end itemize
-
-
-Consider a processor which allows a numerically low
-interrupt level to interrupt a numerically greater interrupt
-level. In this example, if an RTEMS directive is used in a
-level 4 ISR, then all ISRs which execute at levels 0 through 4
-must use the interrupt manager.
-
-Interrupts are nested whenever an interrupt occurs
-during the execution of another ISR. RTEMS supports efficient
-interrupt nesting by allowing the nested ISRs to terminate
-without performing any dispatch processing. Only when the
-outermost ISR terminates will the postponed dispatching occur.
-
-@subsection RTEMS Interrupt Levels
-
-Many processors support multiple interrupt levels or
-priorities. The exact number of interrupt levels is processor
-dependent. RTEMS internally supports 256 interrupt levels which
-are mapped to the processor's interrupt levels. For specific
-information on the mapping between RTEMS and the target
-processor's interrupt levels, refer to the Interrupt Processing
-chapter of the Applications Supplement document for a specific
-target processor.
-
-@subsection Disabling of Interrupts by RTEMS
-
-During the execution of directive calls, critical
-sections of code may be executed. When these sections are
-encountered, RTEMS disables all maskable interrupts before the
-execution of the section and restores them to the previous level
-upon completion of the section. RTEMS has been optimized to
-insure that interrupts are disabled for a minimum length of
-time. The maximum length of time interrupts are disabled by
-RTEMS is processor dependent and is detailed in the Timing
-Specification chapter of the Applications Supplement document
-for a specific target processor.
-
-Non-maskable interrupts (NMI) cannot be disabled, and
-ISRs which execute at this level MUST NEVER issue RTEMS system
-calls. If a directive is invoked, unpredictable results may
-occur due to the inability of RTEMS to protect its critical
-sections. However, ISRs that make no system calls may safely
-execute as non-maskable interrupts.
-
-@section Operations
-
-@subsection Establishing an ISR
-
-The @code{@value{DIRPREFIX}interrupt_catch}
-directive establishes an ISR for
-the system. The address of the ISR and its associated CPU
-vector number are specified to this directive. This directive
-installs the RTEMS interrupt wrapper in the processor's
-Interrupt Vector Table and the address of the user's ISR in the
-RTEMS' Vector Table. This directive returns the previous
-contents of the specified vector in the RTEMS' Vector Table.
-
-@subsection Directives Allowed from an ISR
-
-Using the interrupt manager insures that RTEMS knows
-when a directive is being called from an ISR. The ISR may then
-use system calls to synchronize itself with an application task.
-The synchronization may involve messages, events or signals
-being passed by the ISR to the desired task. Directives invoked
-by an ISR must operate only on objects which reside on the local
-node. The following is a list of RTEMS system calls that may be
-made from an ISR:
-
-@itemize @bullet
-@item Task Management
-
-@itemize -
-@item task_get_note, task_set_note, task_suspend, task_resume
-@end itemize
-
-@item Clock Management
-
-@itemize -
-@item clock_get, clock_tick
-@end itemize
-
-@item Message, Event, and Signal Management
-
-@itemize -
-@item message_queue_send, message_queue_urgent
-@item event_send
-@item signal_send
-@end itemize
-
-@item Semaphore Management
-
-@itemize -
-@item semaphore_release
-@end itemize
-
-@item Dual-Ported Memory Management
-
-@itemize -
-@item port_external_to_internal, port_internal_to_external
-@end itemize
-
-@item IO Management
-
-@itemize -
-@item io_initialize, io_open, io_close, io_read, io_write, io_control
-@end itemize
-
-@item Fatal Error Management
-
-@itemize -
-@item fatal_error_occurred
-@end itemize
-
-@item Multiprocessing
-
-@itemize -
-@item multiprocessing_announce
-@end itemize
-@end itemize
-
-@section Directives
-
-This section details the interrupt manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection INTERRUPT_CATCH - Establish an ISR
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_interrupt_catch
-@example
-rtems_status_code rtems_interrupt_catch(
- rtems_isr_entry new_isr_handler,
- rtems_vector_number vector,
- rtems_isr_entry *old_isr_handler
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Interrupt_Catch (
- New_ISR_handler : in RTEMS.Address;
- Vector : in RTEMS.Vector_Number;
- Old_ISR_Handler : out RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - ISR established successfully@*
-@code{@value{RPREFIX}INVALID_NUMBER} - illegal vector number@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - illegal ISR entry point or invalid old_isr_handler
-
-@subheading DESCRIPTION:
-
-This directive establishes an interrupt service
-routine (ISR) for the specified interrupt vector number. The
-@code{new_isr_handler} parameter specifies the entry point of the ISR.
-The entry point of the previous ISR for the specified vector is
-returned in @code{old_isr_handler}.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be preempted.
-
-@page
-@subsection INTERRUPT_DISABLE - Disable Interrupts
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_interrupt_disable
-@example
-void rtems_interrupt_disable(
- rtems_isr_level level
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-function Interrupt_Disable
-return RTEMS.ISR_Level;
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive disables all maskable interrupts and returns
-the previous @code{level}. A later invocation of the
-@code{@value{DIRPREFIX}interrupt_enable} directive should be used to
-restore the interrupt level.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be preempted.
-
-@ifset is-C
-@b{This directive is implemented as a macro which modifies the @code{level}
-parameter.}
-@end ifset
-
-@page
-@subsection INTERRUPT_ENABLE - Enable Interrupts
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_interrupt_enable
-@example
-void rtems_interrupt_enable(
- rtems_isr_level level
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Interrupt_Enable (
- Level : in RTEMS.ISR_Level
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive enables maskable interrupts to the @code{level}
-which was returned by a previous call to
-@code{@value{DIRPREFIX}interrupt_disable}.
-Immediately prior to invoking this directive, maskable interrupts should
-be disabled by a call to @code{@value{DIRPREFIX}interrupt_disable}
-and will be enabled when this directive returns to the caller.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be preempted.
-
-
-@page
-@subsection INTERRUPT_FLASH - Flash Interrupts
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_interrupt_flash
-@example
-void rtems_interrupt_flash(
- rtems_isr_level level
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Interrupt_Flash (
- Level : in RTEMS.ISR_Level
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive temporarily enables maskable interrupts to the @code{level}
-which was returned by a previous call to
-@code{@value{DIRPREFIX}interrupt_disable}.
-Immediately prior to invoking this directive, maskable interrupts should
-be disabled by a call to @code{@value{DIRPREFIX}interrupt_disable}
-and will be redisabled when this directive returns to the caller.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be preempted.
-
-@page
-@subsection INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_interrupt_is_in_progress
-@example
-rtems_boolean rtems_interrupt_is_in_progress( void );
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-function Interrupt_Is_In_Progress
-return RTEMS.Boolean;
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive returns @code{TRUE} if the processor is currently
-servicing an interrupt and @code{FALSE} otherwise. A return value
-of @code{TRUE} indicates that the caller is an interrupt service
-routine, @b{NOT} a task. The directives available to an interrupt
-service routine are restricted.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be preempted.
-
diff --git a/doc/user/io.t b/doc/user/io.t
deleted file mode 100644
index 9c592b425c..0000000000
--- a/doc/user/io.t
+++ /dev/null
@@ -1,563 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter I/O Manager
-
-@section Introduction
-
-The input/output interface manager provides a
-well-defined mechanism for accessing device drivers and a
-structured methodology for organizing device drivers. The
-directives provided by the I/O manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}io_initialize} - Initialize a device driver
-@item @code{@value{DIRPREFIX}io_register_name} - Register a device name
-@item @code{@value{DIRPREFIX}io_lookup_name} - Look up a device name
-@item @code{@value{DIRPREFIX}io_open} - Open a device
-@item @code{@value{DIRPREFIX}io_close} - Close a device
-@item @code{@value{DIRPREFIX}io_read} - Read from a device
-@item @code{@value{DIRPREFIX}io_write} - Write to a device
-@item @code{@value{DIRPREFIX}io_control} - Special device services
-@end itemize
-
-@section Background
-
-@subsection Device Driver Table
-
-Each application utilizing the RTEMS I/O manager must
-specify the address of a Device Driver Table in its
-Configuration Table. This table contains each device driver's
-entry points. Each device driver may contain the following
-entry points:
-
-@itemize @bullet
-@item Initialization
-@item Open
-@item Close
-@item Read
-@item Write
-@item Control
-@end itemize
-
-If the device driver does not support a particular
-entry point, then that entry in the Configuration Table should
-be NULL. RTEMS will return
-@code{@value{RPREFIX}SUCCESSFUL} as the executive's and
-zero (0) as the device driver's return code for these device
-driver entry points.
-
-@subsection Major and Minor Device Numbers
-
-Each call to the I/O manager must provide a device's
-major and minor numbers as arguments. The major number is the
-index of the requested driver's entry points in the Device
-Driver Table, and is used to select a specific device driver.
-The exact usage of the minor number is driver specific, but is
-commonly used to distinguish between a number of devices
-controlled by the same driver.
-
-@subsection Device Names
-
-The I/O Manager provides facilities to associate a
-name with a particular device. Directives are provided to
-register the name of a device and to look up the major/minor
-number pair associated with a device name.
-
-@subsection Device Driver Environment
-
-Application developers, as well as device driver
-developers, must be aware of the following regarding the RTEMS
-I/O Manager:
-
-@itemize @bullet
-@item A device driver routine executes in the context of the
-invoking task. Thus if the driver blocks, the invoking task
-blocks.
-
-@item The device driver is free to change the modes of the
-invoking task, although the driver should restore them to their
-original values.
-
-@item Device drivers may be invoked from ISRs.
-
-@item Only local device drivers are accessible through the I/O
-manager.
-
-@item A device driver routine may invoke all other RTEMS
-directives, including I/O directives, on both local and global
-objects.
-
-@end itemize
-
-Although the RTEMS I/O manager provides a framework
-for device drivers, it makes no assumptions regarding the
-construction or operation of a device driver.
-
-@subsection Device Driver Interface
-
-When an application invokes an I/O manager directive,
-RTEMS determines which device driver entry point must be
-invoked. The information passed by the application to RTEMS is
-then passed to the correct device driver entry point. RTEMS
-will invoke each device driver entry point assuming it is
-compatible with the following prototype:
-
-@ifset is-C
-@example
-rtems_device_driver io_entry(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *argument_block
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-function IO_Entry (
- Major : in RTEMS.Device_Major_Number;
- Minor : in RTEMS.Device_Major_Number;
- Argument_Block : in RTEMS.Address
-) return RTEMS.Status_Code;
-@end example
-@end ifset
-
-The format and contents of the parameter block are
-device driver and entry point dependent.
-
-It is recommended that a device driver avoid
-generating error codes which conflict with those used by
-application components. A common technique used to generate
-driver specific error codes is to make the most significant part
-of the status indicate a driver specific code.
-
-@subsection Device Driver Initialization
-
-RTEMS automatically initializes all device drivers
-when multitasking is initiated via the initialize_executive
-directive. RTEMS initializes the device drivers by invoking
-each device driver initialization entry point with the following
-parameters:
-
-@table @asis
-@item major
-the major device number for this device driver.
-
-@item minor
-zero.
-
-@item argument_block
-will point to the Configuration Table.
-
-@end table
-
-The returned status will be ignored by RTEMS. If the driver
-cannot successfully initialize the device, then it should invoke
-the fatal_error_occurred directive.
-
-@section Operations
-
-@subsection Register and Lookup Name
-
-The @code{@value{DIRPREFIX}io_register} directive associates a name with the
-specified device (i.e. major/minor number pair). Device names
-are typically registered as part of the device driver
-initialization sequence. The @code{@value{DIRPREFIX}io_lookup}
-directive is used to
-determine the major/minor number pair associated with the
-specified device name. The use of these directives frees the
-application from being dependent on the arbitrary assignment of
-major numbers in a particular application. No device naming
-conventions are dictated by RTEMS.
-
-@subsection Accessing an Device Driver
-
-The I/O manager provides directives which enable the
-application program to utilize device drivers in a standard
-manner. There is a direct correlation between the RTEMS I/O
-manager directives
-@code{@value{DIRPREFIX}io_initialize},
-@code{@value{DIRPREFIX}io_open},
-@code{@value{DIRPREFIX}io_close},
-@code{@value{DIRPREFIX}io_read},
-@code{@value{DIRPREFIX}io_write}, and
-@code{@value{DIRPREFIX}io_control}
-and the underlying device driver entry points.
-
-@section Directives
-
-This section details the I/O manager's directives. A
-subsection is dedicated to each of this manager's directives and
-describes the calling sequence, related constants, usage, and
-status codes.
-
-@page
-@subsection IO_INITIALIZE - Initialize a device driver
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_io_initialize
-@example
-rtems_status_code rtems_io_initialize(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure IO_Initialize (
- Major : in RTEMS.Device_Major_Number;
- Minor : in RTEMS.Device_Minor_Number;
- Argument : in RTEMS.Address;
- Return_Value : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - successfully initialized@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid major device number
-
-@subheading DESCRIPTION:
-
-This directive calls the device driver initialization
-routine specified in the Device Driver Table for this major
-number. This directive is automatically invoked for each device
-driver when multitasking is initiated via the
-initialize_executive directive.
-
-A device driver initialization module is responsible
-for initializing all hardware and data structures associated
-with a device. If necessary, it can allocate memory to be used
-during other operations.
-
-@subheading NOTES:
-
-This directive may or may not cause the calling task
-to be preempted. This is dependent on the device driver being
-initialized.
-
-@page
-@subsection IO_REGISTER_NAME - Register a device
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_io_register_name
-@example
-rtems_status_code rtems_io_register_name(
- char *name,
- rtems_device_major_number major,
- rtems_device_minor_number minor
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure IO_Register_Name (
- Name : in String;
- Major : in RTEMS.Device_Major_Number;
- Minor : in RTEMS.Device_Minor_Number;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - successfully initialized@*
-@code{@value{RPREFIX}TOO_MANY} - too many devices registered
-
-@subheading DESCRIPTION:
-
-This directive associates name with the specified
-major/minor number pair.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-@page
-@subsection IO_LOOKUP_NAME - Lookup a device
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_io_lookup_name
-@example
-rtems_status_code rtems_io_lookup_name(
- const char *name,
- rtems_driver_name_t **device_info
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure IO_Lookup_Name (
- Name : in String;
- Device_Info : out RTEMS.Driver_Name_t;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - successfully initialized@*
-@code{@value{RPREFIX}UNSATISFIED} - name not registered
-
-@subheading DESCRIPTION:
-
-This directive returns the major/minor number pair
-associated with the given device name in device_info.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-@page
-@subsection IO_OPEN - Open a device
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_io_open
-@example
-rtems_status_code rtems_io_open(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure IO_Open (
- Major : in RTEMS.Device_Major_Number;
- Minor : in RTEMS.Device_Minor_Number;
- Argument : in RTEMS.Address;
- Return_Value : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - successfully initialized@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid major device number
-
-@subheading DESCRIPTION:
-
-This directive calls the device driver open routine
-specified in the Device Driver Table for this major number. The
-open entry point is commonly used by device drivers to provide
-exclusive access to a device.
-
-@subheading NOTES:
-
-This directive may or may not cause the calling task
-to be preempted. This is dependent on the device driver being
-invoked.
-
-@page
-@subsection IO_CLOSE - Close a device
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_io_close
-@example
-rtems_status_code rtems_io_close(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure IO_Close (
- Major : in RTEMS.Device_Major_Number;
- Minor : in RTEMS.Device_Minor_Number;
- Argument : in RTEMS.Address;
- Return_Value : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - successfully initialized@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid major device number
-
-@subheading DESCRIPTION:
-
-This directive calls the device driver close routine
-specified in the Device Driver Table for this major number. The
-close entry point is commonly used by device drivers to
-relinquish exclusive access to a device.
-
-@subheading NOTES:
-
-This directive may or may not cause the calling task
-to be preempted. This is dependent on the device driver being
-invoked.
-
-@page
-@subsection IO_READ - Read from a device
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_io_read
-@example
-rtems_status_code rtems_io_read(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure IO_Read (
- Major : in RTEMS.Device_Major_Number;
- Minor : in RTEMS.Device_Minor_Number;
- Argument : in RTEMS.Address;
- Return_Value : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - successfully initialized@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid major device number
-
-@subheading DESCRIPTION:
-
-This directive calls the device driver read routine
-specified in the Device Driver Table for this major number.
-Read operations typically require a buffer address as part of
-the argument parameter block. The contents of this buffer will
-be replaced with data from the device.
-
-@subheading NOTES:
-
-This directive may or may not cause the calling task
-to be preempted. This is dependent on the device driver being
-invoked.
-
-@page
-@subsection IO_WRITE - Write to a device
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_io_write
-@example
-rtems_status_code rtems_io_write(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure IO_Write (
- Major : in RTEMS.Device_Major_Number;
- Minor : in RTEMS.Device_Minor_Number;
- Argument : in RTEMS.Address;
- Return_Value : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - successfully initialized@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid major device number
-
-@subheading DESCRIPTION:
-
-This directive calls the device driver write routine
-specified in the Device Driver Table for this major number.
-Write operations typically require a buffer address as part of
-the argument parameter block. The contents of this buffer will
-be sent to the device.
-
-@subheading NOTES:
-
-This directive may or may not cause the calling task
-to be preempted. This is dependent on the device driver being
-invoked.
-
-@page
-@subsection IO_CONTROL - Special device services
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_io_control
-@example
-rtems_status_code rtems_io_control(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure IO_Control (
- Major : in RTEMS.Device_Major_Number;
- Minor : in RTEMS.Device_Minor_Number;
- Argument : in RTEMS.Address;
- Return_Value : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - successfully initialized@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid major device number
-
-@subheading DESCRIPTION:
-
-This directive calls the device driver I/O control
-routine specified in the Device Driver Table for this major
-number. The exact functionality of the driver entry called by
-this directive is driver dependent. It should not be assumed
-that the control entries of two device drivers are compatible.
-For example, an RS-232 driver I/O control operation may change
-the baud rate of a serial line, while an I/O control operation
-for a floppy disk driver may cause a seek operation.
-
-@subheading NOTES:
-
-This directive may or may not cause the calling task
-to be preempted. This is dependent on the device driver being
-invoked.
-
-
-
diff --git a/doc/user/mp.t b/doc/user/mp.t
deleted file mode 100644
index bcffdd06a4..0000000000
--- a/doc/user/mp.t
+++ /dev/null
@@ -1,593 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Multiprocessing Manager
-
-@section Introduction
-
-In multiprocessor real-time systems, new
-requirements, such as sharing data and global resources between
-processors, are introduced. This requires an efficient and
-reliable communications vehicle which allows all processors to
-communicate with each other as necessary. In addition, the
-ramifications of multiple processors affect each and every
-characteristic of a real-time system, almost always making them
-more complicated.
-
-RTEMS addresses these issues by providing simple and
-flexible real-time multiprocessing capabilities. The executive
-easily lends itself to both tightly-coupled and loosely-coupled
-configurations of the target system hardware. In addition,
-RTEMS supports systems composed of both homogeneous and
-heterogeneous mixtures of processors and target boards.
-
-A major design goal of the RTEMS executive was to
-transcend the physical boundaries of the target hardware
-configuration. This goal is achieved by presenting the
-application software with a logical view of the target system
-where the boundaries between processor nodes are transparent.
-As a result, the application developer may designate objects
-such as tasks, queues, events, signals, semaphores, and memory
-blocks as global objects. These global objects may then be
-accessed by any task regardless of the physical location of the
-object and the accessing task. RTEMS automatically determines
-that the object being accessed resides on another processor and
-performs the actions required to access the desired object.
-Simply stated, RTEMS allows the entire system, both hardware and
-software, to be viewed logically as a single system.
-
-@section Background
-
-RTEMS makes no assumptions regarding the connection
-media or topology of a multiprocessor system. The tasks which
-compose a particular application can be spread among as many
-processors as needed to satisfy the application's timing
-requirements. The application tasks can interact using a subset
-of the RTEMS directives as if they were on the same processor.
-These directives allow application tasks to exchange data,
-communicate, and synchronize regardless of which processor they
-reside upon.
-
-The RTEMS multiprocessor execution model is multiple
-instruction streams with multiple data streams (MIMD). This
-execution model has each of the processors executing code
-independent of the other processors. Because of this
-parallelism, the application designer can more easily guarantee
-deterministic behavior.
-
-By supporting heterogeneous environments, RTEMS
-allows the systems designer to select the most efficient
-processor for each subsystem of the application. Configuring
-RTEMS for a heterogeneous environment is no more difficult than
-for a homogeneous one. In keeping with RTEMS philosophy of
-providing transparent physical node boundaries, the minimal
-heterogeneous processing required is isolated in the MPCI layer.
-
-@subsection Nodes
-
-A processor in a RTEMS system is referred to as a
-node. Each node is assigned a unique non-zero node number by
-the application designer. RTEMS assumes that node numbers are
-assigned consecutively from one to maximum_nodes. The node
-number, node, and the maximum number of nodes, maximum_nodes, in
-a system are found in the Multiprocessor Configuration Table.
-The maximum_nodes field and the number of global objects,
-maximum_global_objects, is required to be the same on all nodes
-in a system.
-
-The node number is used by RTEMS to identify each
-node when performing remote operations. Thus, the
-Multiprocessor Communications Interface Layer (MPCI) must be
-able to route messages based on the node number.
-
-@subsection Global Objects
-
-All RTEMS objects which are created with the GLOBAL
-attribute will be known on all other nodes. Global objects can
-be referenced from any node in the system, although certain
-directive specific restrictions (e.g. one cannot delete a remote
-object) may apply. A task does not have to be global to perform
-operations involving remote objects. The maximum number of
-global objects is the system is user configurable and can be
-found in the maximum_global_objects field in the Multiprocessor
-Configuration Table. The distribution of tasks to processors is
-performed during the application design phase. Dynamic task
-relocation is not supported by RTEMS.
-
-@subsection Global Object Table
-
-RTEMS maintains two tables containing object
-information on every node in a multiprocessor system: a local
-object table and a global object table. The local object table
-on each node is unique and contains information for all objects
-created on this node whether those objects are local or global.
-The global object table contains information regarding all
-global objects in the system and, consequently, is the same on
-every node.
-
-Since each node must maintain an identical copy of
-the global object table, the maximum number of entries in each
-copy of the table must be the same. The maximum number of
-entries in each copy is determined by the
-maximum_global_objects parameter in the Multiprocessor
-Configuration Table. This parameter, as well as the
-maximum_nodes parameter, is required to be the same on all
-nodes. To maintain consistency among the table copies, every
-node in the system must be informed of the creation or deletion
-of a global object.
-
-@subsection Remote Operations
-
-When an application performs an operation on a remote
-global object, RTEMS must generate a Remote Request (RQ) message
-and send it to the appropriate node. After completing the
-requested operation, the remote node will build a Remote
-Response (RR) message and send it to the originating node.
-Messages generated as a side-effect of a directive (such as
-deleting a global task) are known as Remote Processes (RP) and
-do not require the receiving node to respond.
-
-Other than taking slightly longer to execute
-directives on remote objects, the application is unaware of the
-location of the objects it acts upon. The exact amount of
-overhead required for a remote operation is dependent on the
-media connecting the nodes and, to a lesser degree, on the
-efficiency of the user-provided MPCI routines.
-
-The following shows the typical transaction sequence
-during a remote application:
-
-@enumerate
-
-@item The application issues a directive accessing a
-remote global object.
-
-@item RTEMS determines the node on which the object
-resides.
-
-@item RTEMS calls the user-provided MPCI routine
-GET_PACKET to obtain a packet in which to build a RQ message.
-
-@item After building a message packet, RTEMS calls the
-user-provided MPCI routine SEND_PACKET to transmit the packet to
-the node on which the object resides (referred to as the
-destination node).
-
-@item The calling task is blocked until the RR message
-arrives, and control of the processor is transferred to another
-task.
-
-@item The MPCI layer on the destination node senses the
-arrival of a packet (commonly in an ISR), and calls the
-@code{@value{DIRPREFIX}multiprocessing_announce}
-directive. This directive readies the Multiprocessing Server.
-
-@item The Multiprocessing Server calls the user-provided
-MPCI routine RECEIVE_PACKET, performs the requested operation,
-builds an RR message, and returns it to the originating node.
-
-@item The MPCI layer on the originating node senses the
-arrival of a packet (typically via an interrupt), and calls the RTEMS
-@code{@value{DIRPREFIX}multiprocessing_announce} directive. This directive
-readies the Multiprocessing Server.
-
-@item The Multiprocessing Server calls the user-provided
-MPCI routine RECEIVE_PACKET, readies the original requesting
-task, and blocks until another packet arrives. Control is
-transferred to the original task which then completes processing
-of the directive.
-
-@end enumerate
-
-If an uncorrectable error occurs in the user-provided
-MPCI layer, the fatal error handler should be invoked. RTEMS
-assumes the reliable transmission and reception of messages by
-the MPCI and makes no attempt to detect or correct errors.
-
-@subsection Proxies
-
-A proxy is an RTEMS data structure which resides on a
-remote node and is used to represent a task which must block as
-part of a remote operation. This action can occur as part of the
-@code{@value{DIRPREFIX}semaphore_obtain} and
-@code{@value{DIRPREFIX}message_queue_receive} directives. If the
-object were local, the task's control block would be available
-for modification to indicate it was blocking on a message queue
-or semaphore. However, the task's control block resides only on
-the same node as the task. As a result, the remote node must
-allocate a proxy to represent the task until it can be readied.
-
-The maximum number of proxies is defined in the
-Multiprocessor Configuration Table. Each node in a
-multiprocessor system may require a different number of proxies
-to be configured. The distribution of proxy control blocks is
-application dependent and is different from the distribution of
-tasks.
-
-@subsection Multiprocessor Configuration Table
-
-The Multiprocessor Configuration Table contains
-information needed by RTEMS when used in a multiprocessor
-system. This table is discussed in detail in the section
-Multiprocessor Configuration Table of the Configuring a System
-chapter.
-
-@section Multiprocessor Communications Interface Layer
-
-The Multiprocessor Communications Interface Layer
-(MPCI) is a set of user-provided procedures which enable the
-nodes in a multiprocessor system to communicate with one
-another. These routines are invoked by RTEMS at various times
-in the preparation and processing of remote requests.
-Interrupts are enabled when an MPCI procedure is invoked. It is
-assumed that if the execution mode and/or interrupt level are
-altered by the MPCI layer, that they will be restored prior to
-returning to RTEMS.
-
-The MPCI layer is responsible for managing a pool of
-buffers called packets and for sending these packets between
-system nodes. Packet buffers contain the messages sent between
-the nodes. Typically, the MPCI layer will encapsulate the
-packet within an envelope which contains the information needed
-by the MPCI layer. The number of packets available is dependent
-on the MPCI layer implementation.
-
-The entry points to the routines in the user's MPCI
-layer should be placed in the Multiprocessor Communications
-Interface Table. The user must provide entry points for each of
-the following table entries in a multiprocessor system:
-
-@itemize @bullet
-@item initialization initialize the MPCI
-@item get_packet obtain a packet buffer
-@item return_packet return a packet buffer
-@item send_packet send a packet to another node
-@item receive_packet called to get an arrived packet
-@end itemize
-
-A packet is sent by RTEMS in each of the following
-situations:
-
-@itemize @bullet
-@item an RQ is generated on an originating node;
-@item an RR is generated on a destination node;
-@item a global object is created;
-@item a global object is deleted;
-@item a local task blocked on a remote object is deleted;
-@item during system initialization to check for system consistency.
-@end itemize
-
-If the target hardware supports it, the arrival of a
-packet at a node may generate an interrupt. Otherwise, the
-real-time clock ISR can check for the arrival of a packet. In
-any case, the
-@code{@value{DIRPREFIX}multiprocessing_announce} directive must be called
-to announce the arrival of a packet. After exiting the ISR,
-control will be passed to the Multiprocessing Server to process
-the packet. The Multiprocessing Server will call the get_packet
-entry to obtain a packet buffer and the receive_entry entry to
-copy the message into the buffer obtained.
-
-@subsection INITIALIZATION
-
-The INITIALIZATION component of the user-provided
-MPCI layer is called as part of the @code{@value{DIRPREFIX}initialize_executive}
-directive to initialize the MPCI layer and associated hardware.
-It is invoked immediately after all of the device drivers have
-been initialized. This component should be adhere to the
-following prototype:
-
-@ifset is-C
-@example
-@group
-rtems_mpci_entry user_mpci_initialization(
- rtems_configuration_table *configuration
-);
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_MPCI_Initialization (
- Configuration : in RTEMS.Configuration_Table_Pointer
-);
-@end example
-@end ifset
-
-where configuration is the address of the user's
-Configuration Table. Operations on global objects cannot be
-performed until this component is invoked. The INITIALIZATION
-component is invoked only once in the life of any system. If
-the MPCI layer cannot be successfully initialized, the fatal
-error manager should be invoked by this routine.
-
-One of the primary functions of the MPCI layer is to
-provide the executive with packet buffers. The INITIALIZATION
-routine must create and initialize a pool of packet buffers.
-There must be enough packet buffers so RTEMS can obtain one
-whenever needed.
-
-@subsection GET_PACKET
-
-The GET_PACKET component of the user-provided MPCI
-layer is called when RTEMS must obtain a packet buffer to send
-or broadcast a message. This component should be adhere to the
-following prototype:
-
-@ifset is-C
-@example
-@group
-rtems_mpci_entry user_mpci_get_packet(
- rtems_packet_prefix **packet
-);
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_MPCI_Get_Packet (
- Packet : access RTEMS.Packet_Prefix_Pointer
-);
-@end example
-@end ifset
-
-where packet is the address of a pointer to a packet.
-This routine always succeeds and, upon return, packet will
-contain the address of a packet. If for any reason, a packet
-cannot be successfully obtained, then the fatal error manager
-should be invoked.
-
-RTEMS has been optimized to avoid the need for
-obtaining a packet each time a message is sent or broadcast.
-For example, RTEMS sends response messages (RR) back to the
-originator in the same packet in which the request message (RQ)
-arrived.
-
-@subsection RETURN_PACKET
-
-The RETURN_PACKET component of the user-provided MPCI
-layer is called when RTEMS needs to release a packet to the free
-packet buffer pool. This component should be adhere to the
-following prototype:
-
-@ifset is-C
-@example
-@group
-rtems_mpci_entry user_mpci_return_packet(
- rtems_packet_prefix *packet
-);
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_MPCI_Return_Packet (
- Packet : in RTEMS.Packet_Prefix_Pointer
-);
-@end example
-@end ifset
-
-where packet is the address of a packet. If the
-packet cannot be successfully returned, the fatal error manager
-should be invoked.
-
-@subsection RECEIVE_PACKET
-
-The RECEIVE_PACKET component of the user-provided
-MPCI layer is called when RTEMS needs to obtain a packet which
-has previously arrived. This component should be adhere to the
-following prototype:
-
-@ifset is-C
-@example
-@group
-rtems_mpci_entry user_mpci_receive_packet(
- rtems_packet_prefix **packet
-);
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_MPCI_Receive_Packet (
- Packet : access RTEMS.Packet_Prefix_Pointer
-);
-@end example
-@end ifset
-
-where packet is a pointer to the address of a packet
-to place the message from another node. If a message is
-available, then packet will contain the address of the message
-from another node. If no messages are available, this entry
-packet should contain NULL.
-
-@subsection SEND_PACKET
-
-The SEND_PACKET component of the user-provided MPCI
-layer is called when RTEMS needs to send a packet containing a
-message to another node. This component should be adhere to the
-following prototype:
-
-@ifset is-C
-@example
-@group
-rtems_mpci_entry user_mpci_send_packet(
- rtems_unsigned32 node,
- rtems_packet_prefix **packet
-);
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_MPCI_Send_Packet (
- Node : in RTEMS.Unsigned32;
- Packet : access RTEMS.Packet_Prefix_Pointer
-);
-@end example
-@end ifset
-
-where node is the node number of the destination and packet is the
-address of a packet which containing a message. If the packet cannot
-be successfully sent, the fatal error manager should be invoked.
-
-If node is set to zero, the packet is to be
-broadcasted to all other nodes in the system. Although some
-MPCI layers will be built upon hardware which support a
-broadcast mechanism, others may be required to generate a copy
-of the packet for each node in the system.
-
-Many MPCI layers use the packet_length field of the MP_packet_prefix
-of the packet to avoid sending unnecessary data. This is especially
-useful if the media connecting the nodes is relatively slow.
-
-The to_convert field of the MP_packet_prefix portion of the packet indicates
-how much of the packet (in unsigned32's) may require conversion in a
-heterogeneous system.
-
-@subsection Supporting Heterogeneous Environments
-
-Developing an MPCI layer for a heterogeneous system
-requires a thorough understanding of the differences between the
-processors which comprise the system. One difficult problem is
-the varying data representation schemes used by different
-processor types. The most pervasive data representation problem
-is the order of the bytes which compose a data entity.
-Processors which place the least significant byte at the
-smallest address are classified as little endian processors.
-Little endian byte-ordering is shown below:
-
-
-@example
-@group
-+---------------+----------------+---------------+----------------+
-| | | | |
-| Byte 3 | Byte 2 | Byte 1 | Byte 0 |
-| | | | |
-+---------------+----------------+---------------+----------------+
-@end group
-@end example
-
-Conversely, processors which place the most
-significant byte at the smallest address are classified as big
-endian processors. Big endian byte-ordering is shown below:
-
-@example
-@group
-+---------------+----------------+---------------+----------------+
-| | | | |
-| Byte 0 | Byte 1 | Byte 2 | Byte 3 |
-| | | | |
-+---------------+----------------+---------------+----------------+
-@end group
-@end example
-
-Unfortunately, sharing a data structure between big
-endian and little endian processors requires translation into a
-common endian format. An application designer typically chooses
-the common endian format to minimize conversion overhead.
-
-Another issue in the design of shared data structures
-is the alignment of data structure elements. Alignment is both
-processor and compiler implementation dependent. For example,
-some processors allow data elements to begin on any address
-boundary, while others impose restrictions. Common restrictions
-are that data elements must begin on either an even address or
-on a long word boundary. Violation of these restrictions may
-cause an exception or impose a performance penalty.
-
-Other issues which commonly impact the design of
-shared data structures include the representation of floating
-point numbers, bit fields, decimal data, and character strings.
-In addition, the representation method for negative integers
-could be one's or two's complement. These factors combine to
-increase the complexity of designing and manipulating data
-structures shared between processors.
-
-RTEMS addressed these issues in the design of the
-packets used to communicate between nodes. The RTEMS packet
-format is designed to allow the MPCI layer to perform all
-necessary conversion without burdening the developer with the
-details of the RTEMS packet format. As a result, the MPCI layer
-must be aware of the following:
-
-@itemize @bullet
-@item All packets must begin on a four byte boundary.
-
-@item Packets are composed of both RTEMS and application data.
-All RTEMS data is treated as thirty-two (32) bit unsigned
-quantities and is in the first @code{@value{RPREFIX}MINIMUM_UNSIGNED32S_TO_CONVERT}
-thirty-two (32) quantities of the packet.
-
-@item The RTEMS data component of the packet must be in native
-endian format. Endian conversion may be performed by either the
-sending or receiving MPCI layer.
-
-@item RTEMS makes no assumptions regarding the application
-data component of the packet.
-@end itemize
-
-@section Operations
-
-@subsection Announcing a Packet
-
-The @code{@value{DIRPREFIX}multiprocessing_announce} directive is called by
-the MPCI layer to inform RTEMS that a packet has arrived from
-another node. This directive can be called from an interrupt
-service routine or from within a polling routine.
-
-@section Directives
-
-This section details the additional directives
-required to support RTEMS in a multiprocessor configuration. A
-subsection is dedicated to each of this manager's directives and
-describes the calling sequence, related constants, usage, and
-status codes.
-
-@page
-@subsection MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_multiprocessing_announce
-@example
-void rtems_multiprocessing_announce( void );
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Multiprocessing_Announce;
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-NONE
-
-@subheading DESCRIPTION:
-
-This directive informs RTEMS that a multiprocessing
-communications packet has arrived from another node. This
-directive is called by the user-provided MPCI, and is only used
-in multiprocessor configurations.
-
-@subheading NOTES:
-
-This directive is typically called from an ISR.
-
-This directive will almost certainly cause the
-calling task to be preempted.
-
-This directive does not generate activity on remote nodes.
diff --git a/doc/user/msg.t b/doc/user/msg.t
deleted file mode 100644
index b593e17bf5..0000000000
--- a/doc/user/msg.t
+++ /dev/null
@@ -1,774 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Message Manager
-
-@section Introduction
-
-The message manager provides communication and
-synchronization capabilities using RTEMS message queues. The
-directives provided by the message manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}message_queue_create} - Create a queue
-@item @code{@value{DIRPREFIX}message_queue_ident} - Get ID of a queue
-@item @code{@value{DIRPREFIX}message_queue_delete} - Delete a queue
-@item @code{@value{DIRPREFIX}message_queue_send} - Put message at rear of a queue
-@item @code{@value{DIRPREFIX}message_queue_urgent} - Put message at front of a queue
-@item @code{@value{DIRPREFIX}message_queue_broadcast} - Broadcast N messages to a queue
-@item @code{@value{DIRPREFIX}message_queue_receive} - Receive message from a queue
-@item @code{@value{DIRPREFIX}message_queue_get_number_pending} - Get number of messages pending on a queue
-@item @code{@value{DIRPREFIX}message_queue_flush} - Flush all messages on a queue
-@end itemize
-
-@section Background
-
-@subsection Messages
-
-A message is a variable length buffer where
-information can be stored to support communication. The length
-of the message and the information stored in that message are
-user-defined and can be actual data, pointer(s), or empty.
-
-@subsection Message Queues
-
-A message queue permits the passing of messages among
-tasks and ISRs. Message queues can contain a variable number of
-messages. Normally messages are sent to and received from the
-queue in FIFO order using the @code{@value{DIRPREFIX}message_queue_send}
-directive. However, the @code{@value{DIRPREFIX}message_queue_urgent}
-directive can be used to place
-messages at the head of a queue in LIFO order.
-
-Synchronization can be accomplished when a task can
-wait for a message to arrive at a queue. Also, a task may poll
-a queue for the arrival of a message.
-
-The maximum length message which can be sent is set
-on a per message queue basis.
-
-@subsection Building a Message Queue's Attribute Set
-
-In general, an attribute set is built by a bitwise OR
-of the desired attribute components. The set of valid message
-queue attributes is provided in the following table:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}FIFO} - tasks wait by FIFO (default)
-@item @code{@value{RPREFIX}PRIORITY} - tasks wait by priority
-@item @code{@value{RPREFIX}LOCAL} - local message queue (default)
-@item @code{@value{RPREFIX}GLOBAL} - global message queue
-@end itemize
-
-
-An attribute listed as a default is not required to
-appear in the attribute list, although it is a good programming
-practice to specify default attributes. If all defaults are
-desired, the attribute @code{@value{RPREFIX}DEFAULT_ATTRIBUTES}
-should be specified on this call.
-
-This example demonstrates the attribute_set parameter
-needed to create a local message queue with the task priority
-waiting queue discipline. The attribute_set parameter to the
-@code{@value{DIRPREFIX}message_queue_create} directive could be either
-@code{@value{RPREFIX}PRIORITY} or
-@code{@value{RPREFIX}LOCAL @value{OR} @value{RPREFIX}PRIORITY}.
-The attribute_set parameter can be set to @code{@value{RPREFIX}PRIORITY}
-because @code{@value{RPREFIX}LOCAL} is the default for all created
-message queues. If a similar message queue were to be known globally, then the
-attribute_set parameter would be
-@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}PRIORITY}.
-
-@subsection Building a MESSAGE_QUEUE_RECEIVE Option Set
-
-In general, an option is built by a bitwise OR of the
-desired option components. The set of valid options for the
-@code{@value{DIRPREFIX}message_queue_receive} directive are
-listed in the following table:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}WAIT} - task will wait for a message (default)
-@item @code{@value{RPREFIX}NO_WAIT} - task should not wait
-@end itemize
-
-An option listed as a default is not required to
-appear in the option OR list, although it is a good programming
-practice to specify default options. If all defaults are
-desired, the option @code{@value{RPREFIX}DEFAULT_OPTIONS} should
-be specified on this call.
-
-This example demonstrates the option parameter needed
-to poll for a message to arrive. The option parameter passed to
-the @code{@value{DIRPREFIX}message_queue_receive} directive should
-be @code{@value{RPREFIX}NO_WAIT}.
-
-@section Operations
-
-@subsection Creating a Message Queue
-
-The @code{@value{DIRPREFIX}message_queue_create} directive creates a message
-queue with the user-defined name. The user specifies the
-maximum message size and maximum number of messages which can be
-placed in the message queue at one time. The user may select
-FIFO or task priority as the method for placing waiting tasks in
-the task wait queue. RTEMS allocates a Queue Control Block
-(QCB) from the QCB free list to maintain the newly created queue
-as well as memory for the message buffer pool associated with
-this message queue. RTEMS also generates a message queue ID
-which is returned to the calling task.
-
-For GLOBAL message queues, the maximum message size
-is effectively limited to the longest message which the MPCI is
-capable of transmitting.
-
-@subsection Obtaining Message Queue IDs
-
-When a message queue is created, RTEMS generates a
-unique message queue ID. The message queue ID may be obtained
-by either of two methods. First, as the result of an invocation
-of the @code{@value{DIRPREFIX}message_queue_create} directive, the
-queue ID is stored in a user provided location. Second, the queue
-ID may be obtained later using the @code{@value{DIRPREFIX}message_queue_ident}
-directive. The queue ID is used by other message manager
-directives to access this message queue.
-
-@subsection Receiving a Message
-
-The @code{@value{DIRPREFIX}message_queue_receive} directive attempts to
-retrieve a message from the specified message queue. If at
-least one message is in the queue, then the message is removed
-from the queue, copied to the caller's message buffer, and
-returned immediately along with the length of the message. When
-messages are unavailable, one of the following situations
-applies:
-
-@itemize @bullet
-@item By default, the calling task will wait forever for the
-message to arrive.
-
-@item Specifying the @code{@value{RPREFIX}NO_WAIT} option forces an immediate return
-with an error status code.
-
-@item Specifying a timeout limits the period the task will
-wait before returning with an error status.
-@end itemize
-
-If the task waits for a message, then it is placed in
-the message queue's task wait queue in either FIFO or task
-priority order. All tasks waiting on a message queue are
-returned an error code when the message queue is deleted.
-
-@subsection Sending a Message
-
-Messages can be sent to a queue with the
-@code{@value{DIRPREFIX}message_queue_send} and
-@code{@value{DIRPREFIX}message_queue_urgent} directives. These
-directives work identically when tasks are waiting to receive a
-message. A task is removed from the task waiting queue,
-unblocked, and the message is copied to a waiting task's
-message buffer.
-
-When no tasks are waiting at the queue,
-@code{@value{DIRPREFIX}message_queue_send} places the
-message at the rear of the message queue, while
-@code{@value{DIRPREFIX}message_queue_urgent} places the message at the
-front of the queue. The message is copied to a message buffer
-from this message queue's buffer pool and then placed in the
-message queue. Neither directive can successfully send a
-message to a message queue which has a full queue of pending
-messages.
-
-@subsection Broadcasting a Message
-
-The @code{@value{DIRPREFIX}message_queue_broadcast} directive sends the same
-message to every task waiting on the specified message queue as
-an atomic operation. The message is copied to each waiting
-task's message buffer and each task is unblocked. The number of
-tasks which were unblocked is returned to the caller.
-
-@subsection Deleting a Message Queue
-
-The @code{@value{DIRPREFIX}message_queue_delete} directive removes a message
-queue from the system and frees its control block as well as the
-memory associated with this message queue's message buffer pool.
-A message queue can be deleted by any local task that knows the
-message queue's ID. As a result of this directive, all tasks
-blocked waiting to receive a message from the message queue will
-be readied and returned a status code which indicates that the
-message queue was deleted. Any subsequent references to the
-message queue's name and ID are invalid. Any messages waiting
-at the message queue are also deleted and deallocated.
-
-@section Directives
-
-This section details the message manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection MESSAGE_QUEUE_CREATE - Create a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_create
-@example
-rtems_status_code rtems_message_queue_create(
- rtems_name name,
- rtems_unsigned32 count,
- rtems_unsigned32 max_message_size,
- rtems_attribute attribute_set,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Create (
- Name : in RTEMS.Name;
- Count : in RTEMS.Unsigned32;
- Max_Message_Size : in RTEMS.Unsigned32;
- Attribute_Set : in RTEMS.Attribute;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - queue created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid message count@*
-@code{@value{RPREFIX}INVALID_SIZE} - invalid message size@*
-@code{@value{RPREFIX}TOO_MANY} - too many queues created@*
-@code{@value{RPREFIX}MP_NOT_CONFIGURED} - multiprocessing not configured@*
-@code{@value{RPREFIX}TOO_MANY} - too many global objects
-
-@subheading DESCRIPTION:
-
-This directive creates a message queue which resides
-on the local node with the user-defined name specified in name.
-For control and maintenance of the queue, RTEMS allocates and
-initializes a QCB. Memory is allocated from the RTEMS Workspace
-for the specified count of messages, each of max_message_size
-bytes in length. The RTEMS-assigned queue id, returned in id,
-is used to access the message queue.
-
-Specifying @code{@value{RPREFIX}PRIORITY} in attribute_set causes tasks
-waiting for a message to be serviced according to task priority.
-When @code{@value{RPREFIX}FIFO} is specified, waiting tasks are serviced in First
-In-First Out order.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-The following message queue attribute constants are
-defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}FIFO} - tasks wait by FIFO (default)
-@item @code{@value{RPREFIX}PRIORITY} - tasks wait by priority
-@item @code{@value{RPREFIX}LOCAL} - local message queue (default)
-@item @code{@value{RPREFIX}GLOBAL} - global message queue
-@end itemize
-
-Message queues should not be made global unless
-remote tasks must interact with the created message queue. This
-is to avoid the system overhead incurred by the creation of a
-global message queue. When a global message queue is created,
-the message queue's name and id must be transmitted to every
-node in the system for insertion in the local copy of the global
-object table.
-
-For GLOBAL message queues, the maximum message size
-is effectively limited to the longest message which the MPCI is
-capable of transmitting.
-
-The total number of global objects, including message
-queues, is limited by the maximum_global_objects field in the
-configuration table.
-
-@page
-@subsection MESSAGE_QUEUE_IDENT - Get ID of a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_ident
-@example
-rtems_status_code rtems_message_queue_ident(
- rtems_name name,
- rtems_unsigned32 node,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Ident (
- Name : in RTEMS.Name;
- Node : in RTEMS.Unsigned32;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - queue identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - queue name not found@*
-@code{@value{RPREFIX}INVALID_NODE} - invalid node id
-
-@subheading DESCRIPTION:
-
-This directive obtains the queue id associated with
-the queue name specified in name. If the queue name is not
-unique, then the queue id will match one of the queues with that
-name. However, this queue id is not guaranteed to correspond to
-the desired queue. The queue id is used with other message
-related directives to access the message queue.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-If node is @code{@value{RPREFIX}SEARCH_ALL_NODES}, all nodes are searched
-with the local node being searched first. All other nodes are
-searched with the lowest numbered node searched first.
-
-If node is a valid node number which does not
-represent the local node, then only the message queues exported
-by the designated node are searched.
-
-This directive does not generate activity on remote
-nodes. It accesses only the local copy of the global object
-table.
-
-@page
-@subsection MESSAGE_QUEUE_DELETE - Delete a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_delete
-@example
-rtems_status_code rtems_message_queue_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - queue deleted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid queue id@*
-@code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - cannot delete remote queue
-
-@subheading DESCRIPTION:
-
-This directive deletes the message queue specified by
-id. As a result of this directive, all tasks blocked waiting to
-receive a message from this queue will be readied and returned a
-status code which indicates that the message queue was deleted.
-If no tasks are waiting, but the queue contains messages, then
-RTEMS returns these message buffers back to the system message
-buffer pool. The QCB for this queue as well as the memory for
-the message buffers is reclaimed by RTEMS.
-
-@subheading NOTES:
-
-The calling task will be preempted if its preemption
-mode is enabled and one or more local tasks with a higher
-priority than the calling task are waiting on the deleted queue.
-The calling task will NOT be preempted if the tasks that are
-waiting are remote tasks.
-
-The calling task does not have to be the task that
-created the queue, although the task and queue must reside on
-the same node.
-
-When the queue is deleted, any messages in the queue
-are returned to the free message buffer pool. Any information
-stored in those messages is lost.
-
-When a global message queue is deleted, the message
-queue id must be transmitted to every node in the system for
-deletion from the local copy of the global object table.
-
-Proxies, used to represent remote tasks, are
-reclaimed when the message queue is deleted.
-
-@page
-@subsection MESSAGE_QUEUE_SEND - Put message at rear of a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_send
-@example
-rtems_status_code rtems_message_queue_send(
- rtems_id id,
- void *buffer,
- rtems_unsigned32 size
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Send (
- ID : in RTEMS.ID;
- Buffer : in RTEMS.Address;
- Size : in RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - message sent successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid queue id@*
-@code{@value{RPREFIX}INVALID_SIZE} - invalid message size@*
-@code{@value{RPREFIX}UNSATISFIED} - out of message buffers@*
-@code{@value{RPREFIX}TOO_MANY} - queue's limit has been reached
-
-@subheading DESCRIPTION:
-
-This directive sends the message buffer of size bytes
-in length to the queue specified by id. If a task is waiting at
-the queue, then the message is copied to the waiting task's
-buffer and the task is unblocked. If no tasks are waiting at the
-queue, then the message is copied to a message buffer which is
-obtained from this message queue's message buffer pool. The
-message buffer is then placed at the rear of the queue.
-
-@subheading NOTES:
-
-The calling task will be preempted if it has
-preemption enabled and a higher priority task is unblocked as
-the result of this directive.
-
-Sending a message to a global message queue which
-does not reside on the local node will generate a request to the
-remote node to post the message on the specified message queue.
-
-If the task to be unblocked resides on a different
-node from the message queue, then the message is forwarded to
-the appropriate node, the waiting task is unblocked, and the
-proxy used to represent the task is reclaimed.
-
-@page
-@subsection MESSAGE_QUEUE_URGENT - Put message at front of a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_urgent
-@example
-rtems_status_code rtems_message_queue_urgent(
- rtems_id id,
- void *buffer,
- rtems_unsigned32 size
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Urgent (
- ID : in RTEMS.ID;
- Buffer : in RTEMS.Address;
- Size : in RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - message sent successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid queue id@*
-@code{@value{RPREFIX}INVALID_SIZE} - invalid message size@*
-@code{@value{RPREFIX}UNSATISFIED} - out of message buffers@*
-@code{@value{RPREFIX}TOO_MANY} - queue's limit has been reached
-
-@subheading DESCRIPTION:
-
-This directive sends the message buffer of size bytes
-in length to the queue specified by id. If a task is waiting on
-the queue, then the message is copied to the task's buffer and
-the task is unblocked. If no tasks are waiting on the queue,
-then the message is copied to a message buffer which is obtained
-from this message queue's message buffer pool. The message
-buffer is then placed at the front of the queue.
-
-@subheading NOTES:
-
-The calling task will be preempted if it has
-preemption enabled and a higher priority task is unblocked as
-the result of this directive.
-
-Sending a message to a global message queue which
-does not reside on the local node will generate a request
-telling the remote node to post the message on the specified
-message queue.
-
-If the task to be unblocked resides on a different
-node from the message queue, then the message is forwarded to
-the appropriate node, the waiting task is unblocked, and the
-proxy used to represent the task is reclaimed.
-
-@page
-@subsection MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_broadcast
-@example
-rtems_status_code rtems_message_queue_broadcast(
- rtems_id id,
- void *buffer,
- rtems_unsigned32 size,
- rtems_unsigned32 *count
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Broadcast (
- ID : in RTEMS.ID;
- Buffer : in RTEMS.Address;
- Size : in RTEMS.Unsigned32;
- Count : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - message broadcasted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid queue id@*
-@code{@value{RPREFIX}INVALID_SIZE} - invalid message size
-
-@subheading DESCRIPTION:
-
-This directive causes all tasks that are waiting at
-the queue specified by id to be unblocked and sent the message
-contained in buffer. Before a task is unblocked, the message
-buffer of size byes in length is copied to that task's message
-buffer. The number of tasks that were unblocked is returned in
-count.
-
-@subheading NOTES:
-
-The calling task will be preempted if it has
-preemption enabled and a higher priority task is unblocked as
-the result of this directive.
-
-The execution time of this directive is directly
-related to the number of tasks waiting on the message queue,
-although it is more efficient than the equivalent number of
-invocations of @code{@value{DIRPREFIX}message_queue_send}.
-
-Broadcasting a message to a global message queue
-which does not reside on the local node will generate a request
-telling the remote node to broadcast the message to the
-specified message queue.
-
-When a task is unblocked which resides on a different
-node from the message queue, a copy of the message is forwarded
-to the appropriate node, the waiting task is unblocked, and the
-proxy used to represent the task is reclaimed.
-
-@page
-@subsection MESSAGE_QUEUE_RECEIVE - Receive message from a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_receive
-@example
-rtems_status_code rtems_message_queue_receive(
- rtems_id id,
- void *buffer,
- rtems_unsigned32 *size,
- rtems_unsigned32 option_set,
- rtems_interval timeout
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Receive (
- ID : in RTEMS.ID;
- Buffer : in RTEMS.Address;
- Option_Set : in RTEMS.Option;
- Timeout : in RTEMS.Interval;
- Size : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - message received successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid queue id@*
-@code{@value{RPREFIX}UNSATISFIED} - queue is empty@*
-@code{@value{RPREFIX}TIMEOUT} - timed out waiting for message@*
-@code{@value{RPREFIX}OBJECT_WAS_DELETED} - queue deleted while waiting
-
-@subheading DESCRIPTION:
-
-This directive receives a message from the message
-queue specified in id. The @code{@value{RPREFIX}WAIT} and @code{@value{RPREFIX}NO_WAIT} options of the
-options parameter allow the calling task to specify whether to
-wait for a message to become available or return immediately.
-For either option, if there is at least one message in the
-queue, then it is copied to buffer, size is set to return the
-length of the message in bytes, and this directive returns
-immediately with a successful return code.
-
-If the calling task chooses to return immediately and
-the queue is empty, then a status code indicating this condition
-is returned. If the calling task chooses to wait at the message
-queue and the queue is empty, then the calling task is placed on
-the message wait queue and blocked. If the queue was created
-with the @code{@value{RPREFIX}PRIORITY} option specified, then
-the calling task is inserted into the wait queue according to
-its priority. But, if the queue was created with the
-@code{@value{RPREFIX}FIFO} option specified, then the
-calling task is placed at the rear of the wait queue.
-
-A task choosing to wait at the queue can optionally
-specify a timeout value in the timeout parameter. The timeout
-parameter specifies the maximum interval to wait before the
-calling task desires to be unblocked. If it is set to
-@code{@value{RPREFIX}NO_TIMEOUT}, then the calling task will wait forever.
-
-@subheading NOTES:
-
-The following message receive option constants are
-defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}WAIT} - task will wait for a message (default)
-@item @code{@value{RPREFIX}NO_WAIT} - task should not wait
-@end itemize
-
-Receiving a message from a global message queue which
-does not reside on the local node will generate a request to the
-remote node to obtain a message from the specified message
-queue. If no message is available and @code{@value{RPREFIX}WAIT} was specified, then
-the task must be blocked until a message is posted. A proxy is
-allocated on the remote node to represent the task until the
-message is posted.
-
-A clock tick is required to support the timeout functionality of
-this directive.
-
-@page
-@subsection MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_get_number_pending
-@example
-rtems_status_code rtems_message_queue_get_number_pending(
- rtems_id id,
- rtems_unsigned32 *count
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Get_Number_Pending (
- ID : in RTEMS.ID;
- Count : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - number of messages pending returned successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid queue id
-
-@subheading DESCRIPTION:
-
-This directive returns the number of messages pending on this
-message queue in count. If no messages are present
-on the queue, count is set to zero.
-
-@subheading NOTES:
-
-Getting the number of pending messages on a global message queue which
-does not reside on the local node will generate a request to the
-remote node to actually obtain the pending message count for
-the specified message queue.
-
-
-@page
-@subsection MESSAGE_QUEUE_FLUSH - Flush all messages on a queue
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_message_queue_flush
-@example
-rtems_status_code rtems_message_queue_flush(
- rtems_id id,
- rtems_unsigned32 *count
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Message_Queue_Flush (
- ID : in RTEMS.ID;
- Count : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - message queue flushed successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid queue id
-
-@subheading DESCRIPTION:
-
-This directive removes all pending messages from the
-specified queue id. The number of messages removed is returned
-in count. If no messages are present on the queue, count is set
-to zero.
-
-@subheading NOTES:
-
-Flushing all messages on a global message queue which
-does not reside on the local node will generate a request to the
-remote node to actually flush the specified message queue.
-
diff --git a/doc/user/overview.t b/doc/user/overview.t
deleted file mode 100644
index 3bb79a2054..0000000000
--- a/doc/user/overview.t
+++ /dev/null
@@ -1,530 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c This chapter is missing the following figures:
-@c
-@c Figure 1-1 RTEMS Application Architecture
-@c Figure 1-2 RTEMS Internal Architecture
-@c
-
-@chapter Overview
-
-@section Introduction
-
-RTEMS, Real-Time Executive for Multiprocessor Systems, is a
-real-time executive (kernel) which provides a high performance
-environment for embedded military applications including the
-following features:
-
-@itemize @bullet
-@item multitasking capabilities
-@item homogeneous and heterogeneous multiprocessor systems
-@item event-driven, priority-based, preemptive scheduling
-@item optional rate monotonic scheduling
-@item intertask communication and synchronization
-@item priority inheritance
-@item responsive interrupt management
-@item dynamic memory allocation
-@item high level of user configurability
-@end itemize
-
-This manual describes the usage of RTEMS for
-applications written in the @value{LANGUAGE} programming language. Those
-implementation details that are processor dependent are provided
-in the Applications Supplement documents. A supplement
-document which addresses specific architectural issues that
-affect RTEMS is provided for each processor type that is
-supported.
-
-@section Real-time Application Systems
-
-Real-time application systems are a special class of
-computer applications. They have a complex set of
-characteristics that distinguish them from other software
-problems. Generally, they must adhere to more rigorous
-requirements. The correctness of the system depends not only on
-the results of computations, but also on the time at which the
-results are produced. The most important and complex
-characteristic of real-time application systems is that they
-must receive and respond to a set of external stimuli within
-rigid and critical time constraints referred to as deadlines.
-Systems can be buried by an avalanche of interdependent,
-asynchronous or cyclical event streams.
-
-Deadlines can be further characterized as either hard
-or soft based upon the value of the results when produced after
-the deadline has passed. A deadline is hard if the results have
-no value or if their use will result in a catastrophic event.
-In contrast, results which are produced after a soft deadline
-may have some value.
-
-Another distinguishing requirement of real-time
-application systems is the ability to coordinate or manage a
-large number of concurrent activities. Since software is a
-synchronous entity, this presents special problems. One
-instruction follows another in a repeating synchronous cycle.
-Even though mechanisms have been developed to allow for the
-processing of external asynchronous events, the software design
-efforts required to process and manage these events and tasks
-are growing more complicated.
-
-The design process is complicated further by
-spreading this activity over a set of processors instead of a
-single processor. The challenges associated with designing and
-building real-time application systems become very complex when
-multiple processors are involved. New requirements such as
-interprocessor communication channels and global resources that
-must be shared between competing processors are introduced. The
-ramifications of multiple processors complicate each and every
-characteristic of a real-time system.
-
-@section Real-time Executive
-
-Fortunately, real-time operating systems or real-time
-executives serve as a cornerstone on which to build the
-application system. A real-time multitasking executive allows
-an application to be cast into a set of logical, autonomous
-processes or tasks which become quite manageable. Each task is
-internally synchronous, but different tasks execute
-independently, resulting in an asynchronous processing stream.
-Tasks can be dynamically paused for many reasons resulting in a
-different task being allowed to execute for a period of time.
-The executive also provides an interface to other system
-components such as interrupt handlers and device drivers.
-System components may request the executive to allocate and
-coordinate resources, and to wait for and trigger synchronizing
-conditions. The executive system calls effectively extend the
-CPU instruction set to support efficient multitasking. By
-causing tasks to travel through well-defined state transitions,
-system calls permit an application to demand-switch between
-tasks in response to real-time events.
-
-By proper grouping of responses to stimuli into
-separate tasks, a system can now asynchronously switch between
-independent streams of execution, directly responding to
-external stimuli as they occur. This allows the system design
-to meet critical performance specifications which are typically
-measured by guaranteed response time and transaction throughput.
-The multiprocessor extensions of RTEMS provide the features
-necessary to manage the extra requirements introduced by a
-system distributed across several processors. It removes the
-physical barriers of processor boundaries from the world of the
-system designer, enabling more critical aspects of the system to
-receive the required attention. Such a system, based on an
-efficient real-time, multiprocessor executive, is a more
-realistic model of the outside world or environment for which it
-is designed. As a result, the system will always be more
-logical, efficient, and reliable.
-
-By using the directives provided by RTEMS, the
-real-time applications developer is freed from the problem of
-controlling and synchronizing multiple tasks and processors. In
-addition, one need not develop, test, debug, and document
-routines to manage memory, pass messages, or provide mutual
-exclusion. The developer is then able to concentrate solely on
-the application. By using standard software components, the
-time and cost required to develop sophisticated real-time
-applications is significantly reduced.
-
-@section RTEMS Application Architecture
-
-One important design goal of RTEMS was to provide a
-bridge between two critical layers of typical real-time systems.
-As shown in the following figure, RTEMS serves as a buffer between the
-project dependent application code and the target hardware.
-Most hardware dependencies for real-time applications can be
-localized to the low level device drivers. The RTEMS I/O
-interface manager provides an efficient tool for incorporating
-these hardware dependencies into the system while simultaneously
-providing a general mechanism to the application code that
-accesses them. A well designed real-time system can benefit
-from this architecture by building a rich library of standard
-application components which can be used repeatedly in other
-real-time projects.
-
-@ifset use-ascii
-@example
-@group
- +-----------------------------------------------------------+
- | Application Dependent Software |
- | +----------------------------------------+ |
- | | Standard Application Components | |
- | | +-------------+---+ |
- | +---+-----------+ | | |
- | | Board Support | | RTEMS | |
- | | Package | | | |
- +----+---------------+--------------+-----------------+-----|
- | Target Hardware |
- +-----------------------------------------------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule#&
-\hbox to 0.50in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.50in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.50in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.50in{\enskip\hfil#\hfil}&
-\vrule#\cr
-\multispan{17}\hrulefill\cr
-% to force all columns to desired width
-& \enskip && \enskip && \enskip && \enskip &&
- \enskip && \enskip &&\enskip &&\enskip &\cr
-% For debugging columns
-%& \enskip 0&& \enskip 1&& \enskip 2&& \enskip 3&&
-% \enskip 4&& \enskip 5&&\enskip 6&&\enskip 7&\cr
-\strut&\multispan{15}&\cr
-&\multispan{15}\hfil Application Dependent Software\hfil&\cr
-\strut&\multispan{15}&\cr
-&\multispan{2}&&\multispan{8}\hrulefill &\multispan{2}&\cr
-\strut&\multispan{2}&&&\multispan{7}&&\multispan{2}&&\cr
-&\multispan{2}&&&\multispan{7}\hfil Standard Application Components\hfil&
- &\multispan{2}&&\cr
-\strut&\multispan{2}&&&\multispan{7}&&\multispan{2}&&\cr
-&&\multispan{5}\hrulefill&&\multispan{7}\hrulefill&&\cr
-\strut&&&\multispan{3} &&&&\multispan{5}&&&\cr
-&&&\multispan{3}\hfil Device\hfil&&&&\multispan{5}\hfil RTEMS\hfil&&&\cr
-&&&\multispan{3}\hfil Drivers\hfil&&&&\multispan{5}&&&\cr
-\strut&&&\multispan{3} &&&&\multispan{5}&&&\cr
-\multispan{17}\hrulefill\cr
-\strut&\multispan{15}&\cr
-&\multispan{15}\hfil Target Hardware\hfil&\cr
-\strut&\multispan{15}&\cr
-\multispan{17}\hrulefill\cr
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<IMG SRC="rtemsarc.gif" WIDTH=500 HEIGHT=300 ALT="RTEMS Application Architecture">
-@end html
-@end ifset
-
-@section RTEMS Internal Architecture
-
-RTEMS can be viewed as a set of layered components that work in
-harmony to provide a set of services to a real-time application
-system. The executive interface presented to the application is
-formed by grouping directives into logical sets called resource managers.
-Functions utilized by multiple managers such as scheduling,
-dispatching, and object management are provided in the executive
-core. The executive core depends on a small set of CPU dependent routines.
-Together these components provide a powerful run time
-environment that promotes the development of efficient real-time
-application systems. The following figure illustrates this organization:
-
-@ifset use-ascii
-@example
-@group
- +-----------------------------------------------+
- | RTEMS Executive Interface |
- +-----------------------------------------------+
- | RTEMS Core |
- +-----------------------------------------------+
- | CPU Dependent Code |
- +-----------------------------------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@c for now use the ascii version
-@example
-@group
- +-----------------------------------------------+
- | RTEMS Executive Interface |
- +-----------------------------------------------+
- | RTEMS Core |
- +-----------------------------------------------+
- | CPU Dependent Code |
- +-----------------------------------------------+
-@end group
-@end example
-@tex
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<IMG SRC="rtemspie.gif" WIDTH=500 HEIGHT=300 ALT="RTEMS Architecture">
-@end html
-@end ifset
-Subsequent chapters present a detailed description of the capabilities
-provided by each of the following RTEMS managers:
-
-@itemize @bullet
-@item initialization
-@item task
-@item interrupt
-@item clock
-@item timer
-@item semaphore
-@item message
-@item event
-@item signal
-@item partition
-@item region
-@item dual ported memory
-@item I/O
-@item fatal error
-@item rate monotonic
-@item user extensions
-@item multiprocessing
-@end itemize
-
-@section User Customization and Extensibility
-
-As thirty-two bit microprocessors have decreased in
-cost, they have become increasingly common in a variety of
-embedded systems. A wide range of custom and general-purpose
-processor boards are based on various thirty-two bit processors.
-RTEMS was designed to make no assumptions concerning the
-characteristics of individual microprocessor families or of
-specific support hardware. In addition, RTEMS allows the system
-developer a high degree of freedom in customizing and extending
-its features.
-
-RTEMS assumes the existence of a supported
-microprocessor and sufficient memory for both RTEMS and the
-real-time application. Board dependent components such as
-clocks, interrupt controllers, or I/O devices can be easily
-integrated with RTEMS. The customization and extensibility
-features allow RTEMS to efficiently support as many environments
-as possible.
-
-@section Portability
-
-The issue of portability was the major factor in the
-creation of RTEMS. Since RTEMS is designed to isolate the
-hardware dependencies in the specific board support packages,
-the real-time application should be easily ported to any other
-processor. The use of RTEMS allows the development of real-time
-applications which can be completely independent of a particular
-microprocessor architecture.
-
-@section Memory Requirements
-
-Since memory is a critical resource in many real-time
-embedded systems, RTEMS was specifically designed to allow
-unused managers to be excluded from the run-time environment.
-This allows the application designer the flexibility to tailor
-RTEMS to most efficiently meet system requirements while still
-satisfying even the most stringent memory constraints. As a
-result, the size of the RTEMS executive is application
-dependent. A worksheet is provided in the Memory Requirements
-chapter of the Applications Supplement document for a specific
-target processor. The worksheet is used to calculate the memory
-requirements of a custom RTEMS run-time environment. The
-following managers may be optionally excluded:
-
-@itemize @bullet
-@item clock
-@item timer
-@item semaphore
-@item message
-@item event
-@item signal
-@item partition
-@item region
-@item dual ported memory
-@item I/O
-@item rate monotonic
-@item fatal error
-@item multiprocessing
-@end itemize
-
-RTEMS utilizes memory for both code and data space.
-Although RTEMS' data space must be in RAM, its code space can be
-located in either ROM or RAM.
-
-@section Audience
-
-This manual was written for experienced real-time
-software developers. Although some background is provided, it
-is assumed that the reader is familiar with the concepts of task
-management as well as intertask communication and
-synchronization. Since directives, user related data
-structures, and examples are presented in @value{LANGUAGE}, a basic
-understanding of the @value{LANGUAGE} programming language
-is required to fully
-understand the material presented. However, because of the
-similarity of the Ada and C RTEMS implementations, users will
-find that the use and behavior of the two implementations is
-very similar. A working knowledge of the target processor is
-helpful in understanding some of RTEMS' features. A thorough
-understanding of the executive cannot be obtained without
-studying the entire manual because many of RTEMS' concepts and
-features are interrelated. Experienced RTEMS users will find
-that the manual organization facilitates its use as a reference
-document.
-
-@section Conventions
-
-The following conventions are used in this manual:
-
-@itemize @bullet
-@item Significant words or phrases as well as all directive
-names are printed in bold type.
-
-@item Items in bold capital letters are constants defined by
-RTEMS. Each language interface provided by RTEMS includes a
-file containing the standard set of constants, data types, and
-@value{STRUCTURE} definitions which can be incorporated into the user
-application.
-
-@item A number of type definitions are provided by RTEMS and
-can be found in rtems.h.
-
-@item The characters "0x" preceding a number indicates that
-the number is in hexadecimal format. Any other numbers are
-assumed to be in decimal format.
-@end itemize
-
-@section Manual Organization
-
-This first chapter has presented the introductory and
-background material for the RTEMS executive. The remaining
-chapters of this manual present a detailed description of RTEMS
-and the environment, including run time behavior, it creates for
-the user.
-
-A chapter is dedicated to each manager and provides a
-detailed discussion of each RTEMS manager and the directives
-which it provides. The presentation format for each directive
-includes the following sections:
-
-@itemize @bullet
-@item Calling sequence
-@item Directive status codes
-@item Description
-@item Notes
-@end itemize
-
-The following provides an overview of the remainder
-of this manual:
-
-@table @asis
-@item Chapter 2
-Key Concepts: presents an
-introduction to the ideas which are common across multiple RTEMS
-managers.
-
-@item Chapter 3:
-Initialization Manager: describes the functionality and directives
-provided by the Initialization Manager.
-
-@item Chapter 4:
-Task Manager: describes the functionality and directives provided
-by the Task Manager.
-
-@item Chapter 5:
-Interrupt Manager: describes the functionality and directives
-provided by the Interrupt Manager.
-
-@item Chapter 6:
-Clock Manager: describes the functionality and directives
-provided by the Clock Manager.
-
-@item Chapter 7
-Timer Manager: describes the functionality and directives provided
-by the Timer Manager.
-
-@item Chapter 8:
-Semaphore Manager: describes the functionality and directives
-provided by the Semaphore Manager.
-
-@item Chapter 9:
-Message Manager: describes the functionality and directives
-provided by the Message Manager.
-
-@item Chapter 10:
-Event Manager: describes the
-functionality and directives provided by the Event Manager.
-
-@item Chapter 11:
-Signal Manager: describes the
-functionality and directives provided by the Signal Manager.
-
-@item Chapter 12:
-Partition Manager: describes the
-functionality and directives provided by the Partition Manager.
-
-@item Chapter 13:
-Region Manager: describes the
-functionality and directives provided by the Region Manager.
-
-@item Chapter 14:
-Dual-Ported Memory Manager: describes
-the functionality and directives provided by the Dual-Ported
-Memory Manager.
-
-@item Chapter 15:
-I/O Manager: describes the
-functionality and directives provided by the I/O Manager.
-
-@item Chapter 16:
-Fatal Error Manager: describes the functionality and directives
-provided by the Fatal Error Manager.
-
-@item Chapter 17:
-Scheduling Concepts: details the RTEMS scheduling algorithm and
-task state transitions.
-
-@item Chapter 18:
-Rate Monotonic Manager: describes the functionality and directives
-provided by the Rate Monotonic Manager.
-
-@item Chapter 19:
-Board Support Packages: defines the
-functionality required of user-supplied board support packages.
-
-@item Chapter 20:
-User Extensions: shows the user how to
-extend RTEMS to incorporate custom features.
-
-@item Chapter 21:
-Configuring a System: details the process by which one tailors RTEMS
-for a particular single-processor or multiprocessor application.
-
-@item Chapter 22:
-Multiprocessing Manager: presents a
-conceptual overview of the multiprocessing capabilities provided
-by RTEMS as well as describing the Multiprocessing
-Communications Interface Layer and Multiprocessing Manager
-directives.
-
-@item Chapter 23:
-Directive Status Codes: provides a definition of each of the
-directive status codes referenced in this manual.
-
-@item Chapter 24:
-Example Application: provides a template for simple RTEMS applications.
-
-@item Chapter 25:
-Glossary: defines terms used throughout this manual.
-
-@end table
-
-
diff --git a/doc/user/part.t b/doc/user/part.t
deleted file mode 100644
index 412a3a57c9..0000000000
--- a/doc/user/part.t
+++ /dev/null
@@ -1,414 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Partition Manager
-
-@section Introduction
-
-The partition manager provides facilities to
-dynamically allocate memory in fixed-size units. The directives
-provided by the partition manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}partition_create} - Create a partition
-@item @code{@value{DIRPREFIX}partition_ident} - Get ID of a partition
-@item @code{@value{DIRPREFIX}partition_delete} - Delete a partition
-@item @code{@value{DIRPREFIX}partition_get_buffer} - Get buffer from a partition
-@item @code{@value{DIRPREFIX}partition_return_buffer} - Return buffer to a partition
-@end itemize
-
-@section Background
-
-@subsection Partition Manager Definitions
-
-A partition is a physically contiguous memory area
-divided into fixed-size buffers that can be dynamically
-allocated and deallocated.
-
-Partitions are managed and maintained as a list of
-buffers. Buffers are obtained from the front of the partition's
-free buffer chain and returned to the rear of the same chain.
-When a buffer is on the free buffer chain, RTEMS uses eight
-bytes of each buffer as the free buffer chain. When a buffer is
-allocated, the entire buffer is available for application use.
-Therefore, modifying memory that is outside of an allocated
-buffer could destroy the free buffer chain or the contents of an
-adjacent allocated buffer.
-
-@subsection Building a Partition's Attribute Set
-
-In general, an attribute set is built by a bitwise OR
-of the desired attribute components. The set of valid partition
-attributes is provided in the following table:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}LOCAL} - local task (default)
-@item @code{@value{RPREFIX}GLOBAL} - global task
-@end itemize
-
-
-Attribute values are specifically designed to be
-mutually exclusive, therefore bitwise OR and addition operations
-are equivalent as long as each attribute appears exactly once in
-the component list. An attribute listed as a default is not
-required to appear in the attribute list, although it is a good
-programming practice to specify default attributes. If all
-defaults are desired, the attribute
-@code{@value{RPREFIX}DEFAULT_ATTRIBUTES} should be
-specified on this call. The attribute_set parameter should be
-@code{@value{RPREFIX}GLOBAL} to indicate that the partition
-is to be known globally.
-
-@section Operations
-
-@subsection Creating a Partition
-
-The @code{@value{DIRPREFIX}partition_create} directive creates a partition
-with a user-specified name. The partition's name, starting
-address, length and buffer size are all specified to the
-@code{@value{DIRPREFIX}partition_create} directive.
-RTEMS allocates a Partition Control
-Block (PTCB) from the PTCB free list. This data structure is
-used by RTEMS to manage the newly created partition. The number
-of buffers in the partition is calculated based upon the
-specified partition length and buffer size, and returned to the
-calling task along with a unique partition ID.
-
-@subsection Obtaining Partition IDs
-
-When a partition is created, RTEMS generates a unique
-partition ID and assigned it to the created partition until it
-is deleted. The partition ID may be obtained by either of two
-methods. First, as the result of an invocation of the
-@code{@value{DIRPREFIX}partition_create} directive, the partition
-ID is stored in a user provided location. Second, the partition
-ID may be obtained later using the @code{@value{DIRPREFIX}partition_ident}
-directive. The partition ID is used by other partition manager directives
-to access this partition.
-
-@subsection Acquiring a Buffer
-
-A buffer can be obtained by calling the
-@code{@value{DIRPREFIX}partition_get_buffer} directive.
-If a buffer is available, then
-it is returned immediately with a successful return code.
-Otherwise, an unsuccessful return code is returned immediately
-to the caller. Tasks cannot block to wait for a buffer to
-become available.
-
-@subsection Releasing a Buffer
-
-Buffers are returned to a partition's free buffer
-chain with the @code{@value{DIRPREFIX}partition_return_buffer} directive. This
-directive returns an error status code if the returned buffer
-was not previously allocated from this partition.
-
-@subsection Deleting a Partition
-
-The @code{@value{DIRPREFIX}partition_delete} directive allows a partition to
-be removed and returned to RTEMS. When a partition is deleted,
-the PTCB for that partition is returned to the PTCB free list.
-A partition with buffers still allocated cannot be deleted. Any
-task attempting to do so will be returned an error status code.
-
-@section Directives
-
-This section details the partition manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection PARTITION_CREATE - Create a partition
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_partition_create
-@example
-rtems_status_code rtems_partition_create(
- rtems_name name,
- void *starting_address,
- rtems_unsigned32 length,
- rtems_unsigned32 buffer_size,
- rtems_attribute attribute_set,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Partition_Create (
- Name : in RTEMS.Name;
- Starting_Address : in RTEMS.Address;
- Length : in RTEMS.Unsigned32;
- Buffer_Size : in RTEMS.Unsigned32;
- Attribute_Set : in RTEMS.Attribute;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - partition created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
-@code{@value{RPREFIX}TOO_MANY} - too many partitions created@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - address not on four byte boundary@*
-@code{@value{RPREFIX}INVALID_SIZE} - length or buffer size is 0@*
-@code{@value{RPREFIX}INVALID_SIZE} - length is less than the buffer size@*
-@code{@value{RPREFIX}INVALID_SIZE} - buffer size not a multiple of 4@*
-@code{@value{RPREFIX}MP_NOT_CONFIGURED} - multiprocessing not configured@*
-@code{@value{RPREFIX}TOO_MANY} - too many global objects
-
-@subheading DESCRIPTION:
-
-This directive creates a partition of fixed size
-buffers from a physically contiguous memory space which starts
-at starting_address and is length bytes in size. Each allocated
-buffer is to be of buffer_length in bytes. The assigned
-partition id is returned in id. This partition id is used to
-access the partition with other partition related directives.
-For control and maintenance of the partition, RTEMS allocates a
-PTCB from the local PTCB free pool and initializes it.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-The starting_address and buffer_size parameters must
-be multiples of four.
-
-Memory from the partition is not used by RTEMS to
-store the Partition Control Block.
-
-The following partition attribute constants are
-defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}LOCAL} - local task (default)
-@item @code{@value{RPREFIX}GLOBAL} - global task
-@end itemize
-
-The PTCB for a global partition is allocated on the
-local node. The memory space used for the partition must reside
-in shared memory. Partitions should not be made global unless
-remote tasks must interact with the partition. This is to avoid
-the overhead incurred by the creation of a global partition.
-When a global partition is created, the partition's name and id
-must be transmitted to every node in the system for insertion in
-the local copy of the global object table.
-
-The total number of global objects, including
-partitions, is limited by the maximum_global_objects field in
-the Configuration Table.
-
-@page
-@subsection PARTITION_IDENT - Get ID of a partition
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_partition_ident
-@example
-rtems_status_code rtems_partition_ident(
- rtems_name name,
- rtems_unsigned32 node,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Partition_Ident (
- Name : in RTEMS.Name;
- Node : in RTEMS.Unsigned32;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - partition identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - partition name not found@*
-@code{@value{RPREFIX}INVALID_NODE} - invalid node id
-
-@subheading DESCRIPTION:
-
-This directive obtains the partition id associated
-with the partition name. If the partition name is not unique,
-then the partition id will match one of the partitions with that
-name. However, this partition id is not guaranteed to
-correspond to the desired partition. The partition id is used
-with other partition related directives to access the partition.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-If node is @code{@value{RPREFIX}SEARCH_ALL_NODES}, all nodes are searched
-with the local node being searched first. All other nodes are
-searched with the lowest numbered node searched first.
-
-If node is a valid node number which does not
-represent the local node, then only the partitions exported by
-the designated node are searched.
-
-This directive does not generate activity on remote
-nodes. It accesses only the local copy of the global object
-table.
-
-@page
-@subsection PARTITION_DELETE - Delete a partition
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_partition_delete
-@example
-rtems_status_code rtems_partition_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Partition_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - partition deleted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid partition id@*
-@code{@value{RPREFIX}RESOURCE_IN_USE} - buffers still in use@*
-@code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - cannot delete remote partition
-
-@subheading DESCRIPTION:
-
-This directive deletes the partition specified by id.
-The partition cannot be deleted if any of its buffers are still
-allocated. The PTCB for the deleted partition is reclaimed by
-RTEMS.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-The calling task does not have to be the task that
-created the partition. Any local task that knows the partition
-id can delete the partition.
-
-When a global partition is deleted, the partition id
-must be transmitted to every node in the system for deletion
-from the local copy of the global object table.
-
-The partition must reside on the local node, even if
-the partition was created with the @code{@value{RPREFIX}GLOBAL} option.
-
-@page
-@subsection PARTITION_GET_BUFFER - Get buffer from a partition
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_partition_get_buffer
-@example
-rtems_status_code rtems_partition_get_buffer(
- rtems_id id,
- void **buffer
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Partition_Get_Buffer (
- ID : in RTEMS.ID;
- Buffer : out RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - buffer obtained successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid partition id@*
-@code{@value{RPREFIX}UNSATISFIED} - all buffers are allocated
-
-@subheading DESCRIPTION:
-
-This directive allows a buffer to be obtained from
-the partition specified in id. The address of the allocated
-buffer is returned in buffer.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-All buffers begin on a four byte boundary.
-
-A task cannot wait on a buffer to become available.
-
-Getting a buffer from a global partition which does
-not reside on the local node will generate a request telling the
-remote node to allocate a buffer from the specified partition.
-
-@page
-@subsection PARTITION_RETURN_BUFFER - Return buffer to a partition
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_partition_return_buffer
-@example
-rtems_status_code rtems_partition_return_buffer(
- rtems_id id,
- void *buffer
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Partition_Return_Buffer (
- ID : in RTEMS.ID;
- Buffer : in RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - buffer returned successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid partition id@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - buffer address not in partition
-
-@subheading DESCRIPTION:
-
-This directive returns the buffer specified by buffer
-to the partition specified by id.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-Returning a buffer to a global partition which does
-not reside on the local node will generate a request telling the
-remote node to return the buffer to the specified partition.
diff --git a/doc/user/preface.texi b/doc/user/preface.texi
deleted file mode 100644
index 9ea6546130..0000000000
--- a/doc/user/preface.texi
+++ /dev/null
@@ -1,189 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@ifinfo
-@node Preface, Overview, Top, Top
-@end ifinfo
-@unnumbered Preface
-
-In recent years, the cost required to develop a
-software product has increased significantly while the target
-hardware costs have decreased. Now a larger portion of money is
-expended in developing, using, and maintaining software. The
-trend in computing costs is the complete dominance of software
-over hardware costs. Because of this, it is necessary that
-formal disciplines be established to increase the probability
-that software is characterized by a high degree of correctness,
-maintainability, and portability. In addition, these
-disciplines must promote practices that aid in the consistent
-and orderly development of a software system within schedule and
-budgetary constraints. To be effective, these disciplines must
-adopt standards which channel individual software efforts toward
-a common goal.
-
-The push for standards in the software development
-field has been met with various degrees of success. The
-Microprocessor Operating Systems Interfaces (MOSI) effort has
-experienced only limited success. As popular as the UNIX
-operating system has grown, the attempt to develop a standard
-interface definition to allow portable application development
-has only recently begun to produce the results needed in this
-area. Unfortunately, very little effort has been expended to
-provide standards addressing the needs of the real-time
-community. Several organizations have addressed this need
-during recent years.
-
-The Real Time Executive Interface Definition (RTEID)
-was developed by Motorola with technical input from Software
-Components Group. RTEID was adopted by the VMEbus International
-Trade Association (VITA) as a baseline draft for their proposed
-standard multiprocessor, real-time executive interface, Open
-Real-Time Kernel Interface Definition (ORKID). These two groups
-are currently working together with the IEEE P1003.4 committee
-to insure that the functionality of their proposed standards is
-adopted as the real-time extensions to POSIX.
-
-This emerging standard defines an interface for the
-development of real-time software to ease the writing of
-real-time application programs that are directly portable across
-multiple real-time executive implementations. This interface
-includes both the source code interfaces and run-time behavior
-as seen by a real-time application. It does not include the
-details of how a kernel implements these functions. The
-standard's goal is to serve as a complete definition of external
-interfaces so that application code that conforms to these
-interfaces will execute properly in all real-time executive
-environments. With the use of a standards compliant executive,
-routines that acquire memory blocks, create and manage message
-queues, establish and use semaphores, and send and receive
-signals need not be redeveloped for a different real-time
-environment as long as the new environment is compliant with the
-standard. Software developers need only concentrate on the
-hardware dependencies of the real-time system. Furthermore,
-most hardware dependencies for real-time applications can be
-localized to the device drivers.
-
-A compliant executive provides simple and flexible
-real-time multiprocessing. It easily lends itself to both
-tightly-coupled and loosely-coupled configurations (depending on
-the system hardware configuration). Objects such as tasks,
-queues, events, signals, semaphores, and memory blocks can be
-designated as global objects and accessed by any task regardless
-of which processor the object and the accessing task reside.
-
-The acceptance of a standard for real-time executives
-will produce the same advantages enjoyed from the push for UNIX
-standardization by AT&T's System V Interface Definition and
-IEEE's POSIX efforts. A compliant multiprocessing executive
-will allow close coupling between UNIX systems and real-time
-executives to provide the many benefits of the UNIX development
-environment to be applied to real-time software development.
-Together they provide the necessary laboratory environment to
-implement real-time, distributed, embedded systems using a wide
-variety of computer architectures.
-
-A study was completed in 1988, within the Research,
-Development, and Engineering Center, U.S. Army Missile Command,
-which compared the various aspects of the Ada programming
-language as they related to the application of Ada code in
-distributed and/or multiple processing systems. Several
-critical conclusions were derived from the study. These
-conclusions have a major impact on the way the Army develops
-application software for embedded applications. These impacts
-apply to both in-house software development and contractor
-developed software.
-
-A conclusion of the analysis, which has been
-previously recognized by other agencies attempting to utilize
-Ada in a distributed or multiprocessing environment, is that the
-Ada programming language does not adequately support
-multiprocessing. Ada does provide a mechanism for
-multi-tasking, however, this capability exists only for a single
-processor system. The language also does not have inherent
-capabilities to access global named variables, flags or program
-code. These critical features are essential in order for data
-to be shared between processors. However, these drawbacks do
-have workarounds which are sometimes awkward and defeat the
-intent of software maintainability and portability goals.
-
-Another conclusion drawn from the analysis, was that
-the run time executives being delivered with the Ada compilers
-were too slow and inefficient to be used in modern missile
-systems. A run time executive is the core part of the run time
-system code, or operating system code, that controls task
-scheduling, input/output management and memory management.
-Traditionally, whenever efficient executive (also known as
-kernel) code was required by the application, the user developed
-in-house software. This software was usually written in
-assembly language for optimization.
-
-Because of this shortcoming in the Ada programming
-language, software developers in research and development and
-contractors for project managed systems, are mandated by
-technology to purchase and utilize off-the-shelf third party
-kernel code. The contractor, and eventually the Government,
-must pay a licensing fee for every copy of the kernel code used
-in an embedded system.
-
-The main drawback to this development environment is
-that the Government does not own, nor has the right to modify
-code contained within the kernel. V&V techniques in this
-situation are more difficult than if the complete source code
-were available. Responsibility for system failures due to faulty
-software is yet another area to be resolved under this
-environment.
-
-The Guidance and Control Directorate began a software
-development effort to address these problems. A project to
-develop an experimental run time kernel was begun that will
-eliminate the major drawbacks of the Ada programming language
-mentioned above. The Real Time Executive for Multiprocessor Systems
-(RTEMS) provides full capabilities for management of tasks,
-interrupts, time, and multiple processors in addition to those
-features typical of generic operating systems. The code is
-Government owned, so no licensing fees are necessary. RTEMS has
-been implemented in both the Ada and C programming languages.
-It has been ported to the following processor families:
-
-@itemize @bullet
-@item Intel i80386 and above
-@item Intel i80960
-@item Motorola MC68xxx
-@item Motorola MC683xx
-@item MIPS
-@item PowerPC
-@item SPARC
-@item Hewlett Packard PA-RISC
-@item Hitach SH
-@item AMD A29K
-@item UNIX
-@end itemize
-
-Support for other processor families, including RISC, CISC, and DSP, is
-planned. Since almost all of RTEMS is written in a high level language,
-ports to additional processor families require minimal effort.
-
-RTEMS multiprocessor support is capable of handling
-either homogeneous or heterogeneous systems. The kernel
-automatically compensates for architectural differences (byte
-swapping, etc.) between processors. This allows a much easier
-transition from one processor family to another without a major
-system redesign.
-
-Since the proposed standards are still in draft form,
-RTEMS cannot and does not claim compliance. However, the status
-of the standard is being carefully monitored to guarantee that
-RTEMS provides the functionality specified in the standard.
-Once approved, RTEMS will be made compliant.
-
-This document is a detailed users guide for a
-functionally compliant real-time multiprocessor executive. It
-describes the user interface and run-time behavior of Release
-@value{RELEASE} of the @value{LANGUAGE} interface
-to RTEMS.
-
diff --git a/doc/user/region.t b/doc/user/region.t
deleted file mode 100644
index c9c6c88f18..0000000000
--- a/doc/user/region.t
+++ /dev/null
@@ -1,613 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Region Manager
-
-@section Introduction
-
-The region manager provides facilities to dynamically
-allocate memory in variable sized units. The directives
-provided by the region manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}region_create} - Create a region
-@item @code{@value{DIRPREFIX}region_ident} - Get ID of a region
-@item @code{@value{DIRPREFIX}region_delete} - Delete a region
-@item @code{@value{DIRPREFIX}region_extend} - Add memory to a region
-@item @code{@value{DIRPREFIX}region_get_segment} - Get segment from a region
-@item @code{@value{DIRPREFIX}region_return_segment} - Return segment to a region
-@item @code{@value{DIRPREFIX}region_get_segment_size} - Obtain size of a segment
-@end itemize
-
-@section Background
-
-@subsection Region Manager Definitions
-
-A region makes up a physically contiguous memory
-space with user-defined boundaries from which variable-sized
-segments are dynamically allocated and deallocated. A segment
-is a variable size section of memory which is allocated in
-multiples of a user-defined page size. This page size is
-required to be a multiple of four greater than or equal to four.
-For example, if a request for a 350-byte segment is made in a
-region with 256-byte pages, then a 512-byte segment is allocated.
-
-Regions are organized as doubly linked chains of
-variable sized memory blocks. Memory requests are allocated
-using a first-fit algorithm. If available, the requester
-receives the number of bytes requested (rounded up to the next
-page size). RTEMS requires some overhead from the region's
-memory for each segment that is allocated. Therefore, an
-application should only modify the memory of a segment that has
-been obtained from the region. The application should NOT
-modify the memory outside of any obtained segments and within
-the region's boundaries while the region is currently active in
-the system.
-
-Upon return to the region, the free block is
-coalesced with its neighbors (if free) on both sides to produce
-the largest possible unused block.
-
-@subsection Building an Attribute Set
-
-In general, an attribute set is built by a bitwise OR
-of the desired attribute components. The set of valid region
-attributes is provided in the following table:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}FIFO} - tasks wait by FIFO (default)
-@item @code{@value{RPREFIX}PRIORITY} - tasks wait by priority
-@end itemize
-
-Attribute values are specifically designed to be
-mutually exclusive, therefore bitwise OR and addition operations
-are equivalent as long as each attribute appears exactly once in
-the component list. An attribute listed as a default is not
-required to appear in the attribute list, although it is a good
-programming practice to specify default attributes. If all
-defaults are desired, the attribute
-@code{@value{RPREFIX}DEFAULT_ATTRIBUTES} should be
-specified on this call.
-
-This example demonstrates the attribute_set parameter
-needed to create a region with the task priority waiting queue
-discipline. The attribute_set parameter to the
-@code{@value{DIRPREFIX}region_create}
-directive should be @code{@value{RPREFIX}PRIORITY}.
-
-@subsection Building an Option Set
-
-In general, an option is built by a bitwise OR of the
-desired option components. The set of valid options for the
-@code{@value{DIRPREFIX}region_get_segment} directive are
-listed in the following table:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}WAIT} - task will wait for semaphore (default)
-@item @code{@value{RPREFIX}NO_WAIT} - task should not wait
-@end itemize
-
-Option values are specifically designed to be
-mutually exclusive, therefore bitwise OR and addition operations
-are equivalent as long as each option appears exactly once in
-the component list. An option listed as a default is not
-required to appear in the option list, although it is a good
-programming practice to specify default options. If all
-defaults are desired, the option
-@code{@value{RPREFIX}DEFAULT_OPTIONS} should be
-specified on this call.
-
-This example demonstrates the option parameter needed
-to poll for a segment. The option parameter passed to the
-@code{@value{DIRPREFIX}region_get_segment} directive should
-be @code{@value{RPREFIX}NO_WAIT}.
-
-@section Operations
-
-@subsection Creating a Region
-
-The @code{@value{DIRPREFIX}region_create} directive creates a region with the
-user-defined name. The user may select FIFO or task priority as
-the method for placing waiting tasks in the task wait queue.
-RTEMS allocates a Region Control Block (RNCB) from the RNCB free
-list to maintain the newly created region. RTEMS also generates
-a unique region ID which is returned to the calling task.
-
-It is not possible to calculate the exact number of
-bytes available to the user since RTEMS requires overhead for
-each segment allocated. For example, a region with one segment
-that is the size of the entire region has more available bytes
-than a region with two segments that collectively are the size
-of the entire region. This is because the region with one
-segment requires only the overhead for one segment, while the
-other region requires the overhead for two segments.
-
-Due to automatic coalescing, the number of segments
-in the region dynamically changes. Therefore, the total
-overhead required by RTEMS dynamically changes.
-
-@subsection Obtaining Region IDs
-
-When a region is created, RTEMS generates a unique
-region ID and assigns it to the created region until it is
-deleted. The region ID may be obtained by either of two
-methods. First, as the result of an invocation of the
-@code{@value{DIRPREFIX}region_create} directive,
-the region ID is stored in a user
-provided location. Second, the region ID may be obtained later
-using the @code{@value{DIRPREFIX}region_ident} directive.
-The region ID is used by other region manager directives to
-access this region.
-
-@subsection Adding Memory to a Region
-
-The @code{@value{DIRPREFIX}region_extend} directive may be used to add memory
-to an existing region. The caller specifies the size in bytes
-and starting address of the memory being added.
-
-NOTE: Please see the release notes or RTEMS source
-code for information regarding restrictions on the location of
-the memory being added in relation to memory already in the
-region.
-
-@subsection Acquiring a Segment
-
-The @code{@value{DIRPREFIX}region_get_segment} directive attempts to acquire
-a segment from a specified region. If the region has enough
-available free memory, then a segment is returned successfully
-to the caller. When the segment cannot be allocated, one of the
-following situations applies:
-
-@itemize @bullet
-@item By default, the calling task will wait forever to acquire the segment.
-
-@item Specifying the @code{@value{RPREFIX}NO_WAIT} option forces
-an immediate return with an error status code.
-
-@item Specifying a timeout limits the interval the task will
-wait before returning with an error status code.
-@end itemize
-
-If the task waits for the segment, then it is placed
-in the region's task wait queue in either FIFO or task priority
-order. All tasks waiting on a region are returned an error when
-the message queue is deleted.
-
-@subsection Releasing a Segment
-
-When a segment is returned to a region by the
-@code{@value{DIRPREFIX}region_return_segment} directive, it is merged with its
-unallocated neighbors to form the largest possible segment. The
-first task on the wait queue is examined to determine if its
-segment request can now be satisfied. If so, it is given a
-segment and unblocked. This process is repeated until the first
-task's segment request cannot be satisfied.
-
-@subsection Obtaining the Size of a Segment
-
-The @code{@value{DIRPREFIX}region_get_segment_size} directive returns the
-size in bytes of the specified segment. The size returned
-includes any "extra" memory included in the segment because of
-rounding up to a page size boundary.
-
-@subsection Deleting a Region
-
-A region can be removed from the system and returned
-to RTEMS with the @code{@value{DIRPREFIX}region_delete}
-directive. When a region is
-deleted, its control block is returned to the RNCB free list. A
-region with segments still allocated is not allowed to be
-deleted. Any task attempting to do so will be returned an
-error. As a result of this directive, all tasks blocked waiting
-to obtain a segment from the region will be readied and returned
-a status code which indicates that the region was deleted.
-
-@section Directives
-
-This section details the region manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection REGION_CREATE - Create a region
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_region_create
-@example
-rtems_status_code rtems_region_create(
- rtems_name name,
- void *starting_address,
- rtems_unsigned32 length,
- rtems_unsigned32 page_size,
- rtems_attribute attribute_set,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Region_Create (
- Name : in RTEMS.Name;
- Starting_Address : in RTEMS.Address;
- Length : in RTEMS.Unsigned32;
- Page_Size : in RTEMS.Unsigned32;
- Attribute_Set : in RTEMS.Attribute;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-@code{@value{RPREFIX}SUCCESSFUL} - region created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - address not on four byte boundary@*
-@code{@value{RPREFIX}TOO_MANY} - too many regions created@*
-@code{@value{RPREFIX}INVALID_SIZE} - invalid page size
-
-@subheading DESCRIPTION:
-
-This directive creates a region from a physically
-contiguous memory space which starts at starting_address and is
-length bytes long. Segments allocated from the region will be a
-multiple of page_size bytes in length. The assigned region id
-is returned in id. This region id is used as an argument to
-other region related directives to access the region.
-
-For control and maintenance of the region, RTEMS
-allocates and initializes an RNCB from the RNCB free pool. Thus
-memory from the region is not used to store the RNCB. However,
-some overhead within the region is required by RTEMS each time a
-segment is constructed in the region.
-
-Specifying @code{@value{RPREFIX}PRIORITY} in attribute_set causes tasks
-waiting for a segment to be serviced according to task priority.
-Specifying @code{@value{RPREFIX}FIFO} in attribute_set or selecting
-@code{@value{RPREFIX}DEFAULT_ATTRIBUTES} will cause waiting tasks to
-be serviced in First In-First Out order.
-
-The starting_address parameter must be aligned on a
-four byte boundary. The page_size parameter must be a multiple
-of four greater than or equal to four.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-The following region attribute constants are defined
-by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}FIFO} - tasks wait by FIFO (default)
-@item @code{@value{RPREFIX}PRIORITY} - tasks wait by priority
-@end itemize
-
-@page
-@subsection REGION_IDENT - Get ID of a region
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_region_ident
-@example
-rtems_status_code rtems_region_ident(
- rtems_name name,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Region_Ident (
- Name : in RTEMS.Name;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-@code{@value{RPREFIX}SUCCESSFUL} - region identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - region name not found
-
-@subheading DESCRIPTION:
-
-This directive obtains the region id associated with
-the region name to be acquired. If the region name is not
-unique, then the region id will match one of the regions with
-that name. However, this region id is not guaranteed to
-correspond to the desired region. The region id is used to
-access this region in other region manager directives.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be preempted.
-
-@page
-@subsection REGION_DELETE - Delete a region
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_region_delete
-@example
-rtems_status_code rtems_region_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Region_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-@code{@value{RPREFIX}SUCCESSFUL} - region deleted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid region id@*
-@code{@value{RPREFIX}RESOURCE_IN_USE} - segments still in use
-
-@subheading DESCRIPTION:
-
-This directive deletes the region specified by id.
-The region cannot be deleted if any of its segments are still
-allocated. The RNCB for the deleted region is reclaimed by
-RTEMS.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be preempted.
-
-The calling task does not have to be the task that
-created the region. Any local task that knows the region id can
-delete the region.
-
-@page
-@subsection REGION_EXTEND - Add memory to a region
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_region_extend
-@example
-rtems_status_code rtems_region_extend(
- rtems_id id,
- void *starting_address,
- rtems_unsigned32 length
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Region_Extend (
- ID : in RTEMS.ID;
- Starting_Address : in RTEMS.Address;
- Length : in RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-@code{@value{RPREFIX}SUCCESSFUL} - region extended successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid region id@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - invalid address of area to add
-
-@subheading DESCRIPTION:
-
-This directive adds the memory which starts at
-starting_address for length bytes to the region specified by id.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be preempted.
-
-The calling task does not have to be the task that
-created the region. Any local task that knows the region id can
-extend the region.
-
-@page
-@subsection REGION_GET_SEGMENT - Get segment from a region
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_region_get_segment
-@example
-rtems_status_code rtems_region_get_segment(
- rtems_id id,
- rtems_unsigned32 size,
- rtems_option option_set,
- rtems_interval timeout,
- void **segment
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Region_Get_Segment (
- ID : in RTEMS.ID;
- Size : in RTEMS.Unsigned32;
- Option_Set : in RTEMS.Option;
- Timeout : in RTEMS.Interval;
- Segment : out RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-@code{@value{RPREFIX}SUCCESSFUL} - segment obtained successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid region id@*
-@code{@value{RPREFIX}INVALID_SIZE} - request is for zero bytes or exceeds
-the size of maximum segment which is possible for this region@*
-@code{@value{RPREFIX}UNSATISFIED} - segment of requested size not available@*
-@code{@value{RPREFIX}TIMEOUT} - timed out waiting for segment@*
-@code{@value{RPREFIX}OBJECT_WAS_DELETED} - semaphore deleted while waiting
-
-@subheading DESCRIPTION:
-
-This directive obtains a variable size segment from
-the region specified by id. The address of the allocated
-segment is returned in segment. The @code{@value{RPREFIX}WAIT}
-and @code{@value{RPREFIX}NO_WAIT} components
-of the options parameter are used to specify whether the calling
-tasks wish to wait for a segment to become available or return
-immediately if no segment is available. For either option, if a
-sufficiently sized segment is available, then the segment is
-successfully acquired by returning immediately with the
-@code{@value{RPREFIX}SUCCESSFUL} status code.
-
-If the calling task chooses to return immediately and
-a segment large enough is not available, then an error code
-indicating this fact is returned. If the calling task chooses
-to wait for the segment and a segment large enough is not
-available, then the calling task is placed on the region's
-segment wait queue and blocked. If the region was created with
-the @code{@value{RPREFIX}PRIORITY} option, then the calling
-task is inserted into the
-wait queue according to its priority. However, if the region
-was created with the @code{@value{RPREFIX}FIFO} option, then the calling
-task is placed at the rear of the wait queue.
-
-The timeout parameter specifies the maximum interval
-that a task is willing to wait to obtain a segment. If timeout
-is set to @code{@value{RPREFIX}NO_TIMEOUT}, then the
-calling task will wait forever.
-
-@subheading NOTES:
-
-The actual length of the allocated segment may be
-larger than the requested size because a segment size is always
-a multiple of the region's page size.
-
-The following segment acquisition option constants
-are defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}WAIT} - task will wait for semaphore (default)
-@item @code{@value{RPREFIX}NO_WAIT} - task should not wait
-@end itemize
-
-A clock tick is required to support the timeout functionality of
-this directive.
-
-@page
-@subsection REGION_RETURN_SEGMENT - Return segment to a region
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_region_return_segment
-@example
-rtems_status_code rtems_region_return_segment(
- rtems_id id,
- void *segment
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Region_Return_Segment (
- ID : in RTEMS.ID;
- Segment : in RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-@code{@value{RPREFIX}SUCCESSFUL} - segment returned successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid region id@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - segment address not in region
-
-@subheading DESCRIPTION:
-
-This directive returns the segment specified by
-segment to the region specified by id. The returned segment is
-merged with its neighbors to form the largest possible segment.
-The first task on the wait queue is examined to determine if its
-segment request can now be satisfied. If so, it is given a
-segment and unblocked. This process is repeated until the first
-task's segment request cannot be satisfied.
-
-@subheading NOTES:
-
-This directive will cause the calling task to be
-preempted if one or more local tasks are waiting for a segment
-and the following conditions exist:
-
-@itemize @bullet
-@item a waiting task has a higher priority than the calling task
-
-@item the size of the segment required by the waiting task
-is less than or equal to the size of the segment returned.
-@end itemize
-
-@page
-@subsection REGION_GET_SEGMENT_SIZE - Obtain size of a segment
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_region_get_segment_size
-@example
-rtems_status_code rtems_region_get_segment_size(
- rtems_id id,
- void *segment,
- rtems_unsigned32 *size
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Region_Get_Segment_Size (
- ID : in RTEMS.ID;
- Segment : in RTEMS.Address;
- Size : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-
-@code{@value{RPREFIX}SUCCESSFUL} - segment obtained successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid region id@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - segment address not in region
-
-@subheading DESCRIPTION:
-
-This directive obtains the size in bytes of the specified segment.
-
-@subheading NOTES:
-
-The actual length of the allocated segment may be
-larger than the requested size because a segment size is always
-a multiple of the region's page size.
-
diff --git a/doc/user/rtemsarc.gif b/doc/user/rtemsarc.gif
deleted file mode 100644
index fea62ecb42..0000000000
--- a/doc/user/rtemsarc.gif
+++ /dev/null
Binary files differ
diff --git a/doc/user/rtemspie.gif b/doc/user/rtemspie.gif
deleted file mode 100644
index 8341861b0d..0000000000
--- a/doc/user/rtemspie.gif
+++ /dev/null
Binary files differ
diff --git a/doc/user/rtmon.t b/doc/user/rtmon.t
deleted file mode 100644
index 208a5a73e2..0000000000
--- a/doc/user/rtmon.t
+++ /dev/null
@@ -1,1123 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c Open Issues
-@c - nicen up the tables
-@c - use math mode to print formulas
-@c
-
-@chapter Rate Monotonic Manager
-
-@section Introduction
-
-The rate monotonic manager provides facilities to
-implement tasks which execute in a periodic fashion. The
-directives provided by the rate monotonic manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}rate_monotonic_create} - Create a rate monotonic period
-@item @code{@value{DIRPREFIX}rate_monotonic_ident} - Get ID of a period
-@item @code{@value{DIRPREFIX}rate_monotonic_cancel} - Cancel a period
-@item @code{@value{DIRPREFIX}rate_monotonic_delete} - Delete a rate monotonic period
-@item @code{@value{DIRPREFIX}rate_monotonic_period} - Conclude current/Start next period
-@item @code{@value{DIRPREFIX}rate_monotonic_get_status} - Obtain status information on period
-@end itemize
-
-@section Background
-
-The rate monotonic manager provides facilities to
-manage the execution of periodic tasks. This manager was
-designed to support application designers who utilize the Rate
-Monotonic Scheduling Algorithm (RMS) to insure that their
-periodic tasks will meet their deadlines, even under transient
-overload conditions. Although designed for hard real-time
-systems, the services provided by the rate monotonic manager may
-be used by any application which requires periodic tasks.
-
-@subsection Rate Monotonic Manager Required Support
-
-A clock tick is required to support the functionality provided by this manager.
-
-@subsection Rate Monotonic Manager Definitions
-
-A periodic task is one which must be executed at a
-regular interval. The interval between successive iterations of
-the task is referred to as its period. Periodic tasks can be
-characterized by the length of their period and execution time.
-The period and execution time of a task can be used to determine
-the processor utilization for that task. Processor utilization
-is the percentage of processor time used and can be calculated
-on a per-task or system-wide basis. Typically, the task's
-worst-case execution time will be less than its period. For
-example, a periodic task's requirements may state that it should
-execute for 10 milliseconds every 100 milliseconds. Although
-the execution time may be the average, worst, or best case, the
-worst-case execution time is more appropriate for use when
-analyzing system behavior under transient overload conditions.
-
-In contrast, an aperiodic task executes at irregular
-intervals and has only a soft deadline. In other words, the
-deadlines for aperiodic tasks are not rigid, but adequate
-response times are desirable. For example, an aperiodic task
-may process user input from a terminal.
-
-Finally, a sporadic task is an aperiodic task with a
-hard deadline and minimum interarrival time. The minimum
-interarrival time is the minimum period of time which exists
-between successive iterations of the task. For example, a
-sporadic task could be used to process the pressing of a fire
-button on a joystick. The mechanical action of the fire button
-insures a minimum time period between successive activations,
-but the missile must be launched by a hard deadline.
-
-@subsection Rate Monotonic Scheduling Algorithm
-
-The Rate Monotonic Scheduling Algorithm (RMS) is
-important to real-time systems designers because it allows one
-to guarantee that a set of tasks is schedulable. A set of tasks
-is said to be schedulable if all of the tasks can meet their
-deadlines. RMS provides a set of rules which can be used to
-perform a guaranteed schedulability analysis for a task set.
-This analysis determines whether a task set is schedulable under
-worst-case conditions and emphasizes the predictability of the
-system's behavior. It has been proven that:
-
-@itemize @code{ }
-@b{RMS is an optimal static priority algorithm for
-scheduling independent, preemptible, periodic tasks
-on a single processor.}
-@end itemize
-
-RMS is optimal in the sense that if a set of tasks
-can be scheduled by any static priority algorithm, then RMS will
-be able to schedule that task set. RMS bases it schedulability
-analysis on the processor utilization level below which all
-deadlines can be met.
-
-RMS calls for the static assignment of task
-priorities based upon their period. The shorter a task's
-period, the higher its priority. For example, a task with a 1
-millisecond period has higher priority than a task with a 100
-millisecond period. If two tasks have the same period, then RMS
-does not distinguish between the tasks. However, RTEMS
-specifies that when given tasks of equal priority, the task
-which has been ready longest will execute first. RMS's priority
-assignment scheme does not provide one with exact numeric values
-for task priorities. For example, consider the following task
-set and priority assignments:
-
-@ifset use-ascii
-@example
-@group
-+--------------------+---------------------+---------------------+
-| Task | Period | Priority |
-| | (in milliseconds) | |
-+--------------------+---------------------+---------------------+
-| 1 | 100 | Low |
-+--------------------+---------------------+---------------------+
-| 2 | 50 | Medium |
-+--------------------+---------------------+---------------------+
-| 3 | 50 | Medium |
-+--------------------+---------------------+---------------------+
-| 4 | 25 | High |
-+--------------------+---------------------+---------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.25in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.25in{\enskip\hfil#\hfil}&
-\vrule#\cr\noalign{\hrule}
-&\bf Task&& \bf Period && \bf Priority &\cr
-& && \bf (in milliseconds) && &\cr\noalign{\hrule}
-& 1 && 100 && Low &\cr\noalign{\hrule}
-& 2 && 50 && Medium &\cr\noalign{\hrule}
-& 3 && 50 && Medium &\cr\noalign{\hrule}
-& 4 && 25 && High &\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=3 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Task</STRONG></TD>
- <TD ALIGN=center><STRONG>Period (in milliseconds)</STRONG></TD>
- <TD ALIGN=center><STRONG>Priority</STRONG></TD></TR>
-<TR><TD ALIGN=center>1</TD>
- <TD ALIGN=center>100 </TD>
- <TD ALIGN=center>Low</TD></TR>
-<TR><TD ALIGN=center>2</TD>
- <TD ALIGN=center>50 </TD>
- <TD ALIGN=center>Medium</TD></TR>
-<TR><TD ALIGN=center>3</TD>
- <TD ALIGN=center>50 </TD>
- <TD ALIGN=center>Medium</TD></TR>
-<TR><TD ALIGN=center>4</TD>
- <TD ALIGN=center>25 </TD>
- <TD ALIGN=center>High</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-RMS only calls for task 1 to have the lowest
-priority, task 4 to have the highest priority, and tasks 2 and 3
-to have an equal priority between that of tasks 1 and 4. The
-actual RTEMS priorities assigned to the tasks must only adhere
-to those guidelines.
-
-Many applications have tasks with both hard and soft
-deadlines. The tasks with hard deadlines are typically referred
-to as the critical task set, with the soft deadline tasks being
-the non-critical task set. The critical task set can be
-scheduled using RMS, with the non-critical tasks not executing
-under transient overload, by simply assigning priorities such
-that the lowest priority critical task (i.e. longest period) has
-a higher priority than the highest priority non-critical task.
-Although RMS may be used to assign priorities to the
-non-critical tasks, it is not necessary. In this instance,
-schedulability is only guaranteed for the critical task set.
-
-@subsection Schedulability Analysis
-
-RMS allows application designers to insure that tasks
-can meet all deadlines, even under transient overload, without
-knowing exactly when any given task will execute by applying
-proven schedulability analysis rules.
-
-@lowersections
-
-@subsection Assumptions
-
-The schedulability analysis rules for RMS were
-developed based on the following assumptions:
-
-
-@itemize @bullet
-@item The requests for all tasks for which hard deadlines
-exist are periodic, with a constant interval between requests.
-
-@item Each task must complete before the next request for it
-occurs.
-
-@item The tasks are independent in that a task does not depend
-on the initiation or completion of requests for other tasks.
-
-@item The execution time for each task without preemption or
-interruption is constant and does not vary.
-
-@item Any non-periodic tasks in the system are special. These
-tasks displace periodic tasks while executing and do not have
-hard, critical deadlines.
-@end itemize
-
-Once the basic schedulability analysis is understood,
-some of the above assumptions can be relaxed and the
-side-effects accounted for.
-
-@subsection Processor Utilization Rule
-
-The Processor Utilization Rule requires that
-processor utilization be calculated based upon the period and
-execution time of each task. The fraction of processor time
-spent executing task index is Time(index) / Period(index). The
-processor utilization can be calculated as follows:
-
-@example
-@group
-Utilization = 0
-
-for index = 1 to maximum_tasks
- Utilization = Utilization + (Time(index)/Period(index))
-@end group
-@end example
-
-To insure schedulability even under transient
-overload, the processor utilization must adhere to the following
-rule:
-
-@example
-Utilization = maximum_tasks * (2(1/maximum_tasks) - 1)
-@end example
-
-As the number of tasks increases, the above formula
-approaches ln(2) for a worst-case utilization factor of
-approximately 0.693. Many tasks sets can be scheduled with a
-greater utilization factor. In fact, the average processor
-utilization threshold for a randomly generated task set is
-approximately 0.88.
-
-@subsection Processor Utilization Rule Example
-
-This example illustrates the application of the
-Processor Utilization Rule to an application with three critical
-periodic tasks. The following table details the RMS priority,
-period, execution time, and processor utilization for each task:
-
-@ifset use-ascii
-@example
-@group
- +------------+----------+--------+-----------+-------------+
- | Task | RMS | Period | Execution | Processor |
- | | Priority | | Time | Utilization |
- +------------+----------+--------+-----------+-------------+
- | 1 | High | 100 | 15 | 0.15 |
- +------------+----------+--------+-----------+-------------+
- | 2 | Medium | 200 | 50 | 0.25 |
- +------------+----------+--------+-----------+-------------+
- | 3 | Low | 300 | 100 | 0.33 |
- +------------+----------+--------+-----------+-------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#\cr\noalign{\hrule}
-&\bf Task&& \bf RMS && \bf Period && \bf Execution &&\bf Processor&\cr
-& && \bf Priority && &&\bf Time &&\bf Utilization &\cr\noalign{\hrule}
-& 1 && High && 100 && 15 && 0.15 &\cr\noalign{\hrule}
-& 2 && Medium && 200 && 50 && 0.25 &\cr\noalign{\hrule}
-& 3 && Low && 300 && 100 && 0.33 &\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=5 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Task</STRONG></TD>
- <TD ALIGN=center><STRONG>RMS Priority</STRONG></TD>
- <TD ALIGN=center><STRONG>Period</STRONG></TD>
- <TD ALIGN=center><STRONG>Execution Time</STRONG></TD>
- <TD ALIGN=center><STRONG>Processor Utilization</STRONG></TD></TR>
-<TR><TD ALIGN=center>1</TD>
- <TD ALIGN=center>High</TD>
- <TD ALIGN=center>100</TD>
- <TD ALIGN=center>15</TD>
- <TD ALIGN=center>0.15</TD></TR>
-<TR><TD ALIGN=center>2</TD>
- <TD ALIGN=center>Medium</TD>
- <TD ALIGN=center>200</TD>
- <TD ALIGN=center>50</TD>
- <TD ALIGN=center>0.25</TD></TR>
-<TR><TD ALIGN=center>3</TD>
- <TD ALIGN=center>Low</TD>
- <TD ALIGN=center>300</TD>
- <TD ALIGN=center>100</TD>
- <TD ALIGN=center>0.33</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-The total processor utilization for this task set is
-0.73 which is below the upper bound of 3 * (2(1/3) - 1), or
-0.779, imposed by the Processor Utilization Rule. Therefore,
-this task set is guaranteed to be schedulable using RMS.
-
-@subsection First Deadline Rule
-
-If a given set of tasks do exceed the processor
-utilization upper limit imposed by the Processor Utilization
-Rule, they can still be guaranteed to meet all their deadlines
-by application of the First Deadline Rule. This rule can be
-stated as follows:
-
-For a given set of independent periodic tasks, if
-each task meets its first deadline when all tasks are started at
-the same time, then the deadlines will always be met for any
-combination of start times.
-
-A key point with this rule is that ALL periodic tasks
-are assumed to start at the exact same instant in time.
-Although this assumption may seem to be invalid, RTEMS makes it
-quite easy to insure. By having a non-preemptible user
-initialization task, all application tasks, regardless of
-priority, can be created and started before the initialization
-deletes itself. This technique insures that all tasks begin to
-compete for execution time at the same instant -- when the user
-initialization task deletes itself.
-
-@subsection First Deadline Rule Example
-
-The First Deadline Rule can insure schedulability
-even when the Processor Utilization Rule fails. The example
-below is a modification of the Processor Utilization Rule
-example where task execution time has been increased from 15 to
-25 units. The following table details the RMS priority, period,
-execution time, and processor utilization for each task:
-
-@ifset use-ascii
-@example
-@group
- +------------+----------+--------+-----------+-------------+
- | Task | RMS | Period | Execution | Processor |
- | | Priority | | Time | Utilization |
- +------------+----------+--------+-----------+-------------+
- | 1 | High | 100 | 25 | 0.25 |
- +------------+----------+--------+-----------+-------------+
- | 2 | Medium | 200 | 50 | 0.25 |
- +------------+----------+--------+-----------+-------------+
- | 3 | Low | 300 | 100 | 0.33 |
- +------------+----------+--------+-----------+-------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#\cr\noalign{\hrule}
-&\bf Task&& \bf RMS && \bf Period && \bf Execution &&\bf Processor&\cr
-& && \bf Priority && &&\bf Time &&\bf Utilization &\cr\noalign{\hrule}
-& 1 && High && 100 && 25 && 0.25 &\cr\noalign{\hrule}
-& 2 && Medium && 200 && 50 && 0.25 &\cr\noalign{\hrule}
-& 3 && Low && 300 && 100 && 0.33 &\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=5 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Task</STRONG></TD>
- <TD ALIGN=center><STRONG>RMS Priority</STRONG></TD>
- <TD ALIGN=center><STRONG>Period</STRONG></TD>
- <TD ALIGN=center><STRONG>Execution Time</STRONG></TD>
- <TD ALIGN=center><STRONG>Processor Utilization</STRONG></TD></TR>
-<TR><TD ALIGN=center>1</TD>
- <TD ALIGN=center>High</TD>
- <TD ALIGN=center>100</TD>
- <TD ALIGN=center>25</TD>
- <TD ALIGN=center>0.25</TD></TR>
-<TR><TD ALIGN=center>2</TD>
- <TD ALIGN=center>Medium</TD>
- <TD ALIGN=center>200</TD>
- <TD ALIGN=center>50</TD>
- <TD ALIGN=center>0.25</TD></TR>
-<TR><TD ALIGN=center>3</TD>
- <TD ALIGN=center>Low</TD>
- <TD ALIGN=center>300</TD>
- <TD ALIGN=center>100</TD>
- <TD ALIGN=center>0.33</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-The total processor utilization for the modified task
-set is 0.83 which is above the upper bound of 3 * (2(1/3) - 1),
-or 0.779, imposed by the Processor Utilization Rule. Therefore,
-this task set is not guaranteed to be schedulable using RMS.
-However, the First Deadline Rule can guarantee the
-schedulability of this task set. This rule calls for one to
-examine each occurrence of deadline until either all tasks have
-met their deadline or one task failed to meet its first
-deadline. The following table details the time of each deadline
-occurrence, the maximum number of times each task may have run,
-the total execution time, and whether all the deadlines have
-been met.
-
-@ifset use-ascii
-@example
-@group
-+----------+------+------+------+----------------------+---------------+
-| Deadline | Task | Task | Task | Total | All Deadlines |
-| Time | 1 | 2 | 3 | Execution Time | Met? |
-+----------+------+------+------+----------------------+---------------+
-| 100 | 1 | 1 | 1 | 25 + 50 + 100 = 175 | NO |
-+----------+------+------+------+----------------------+---------------+
-| 200 | 2 | 1 | 1 | 50 + 50 + 100 = 200 | YES |
-+----------+------+------+------+----------------------+---------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\vrule\strut#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 0.75in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 2.00in{\enskip\hfil#\hfil}&
-\vrule#&
-\hbox to 1.00in{\enskip\hfil#\hfil}&
-\vrule#\cr\noalign{\hrule}
-&\bf Deadline&& \bf Task &&\bf Task&&\bf Task&&\bf Total &&\bf All Deadlines &\cr
-&\bf Time && \bf 1 &&\bf 2 &&\bf 3 &&\bf Execution Time &&\bf Net?&\cr\noalign{\hrule}
-& 100&& 1 && 1 && 1 && 25 + 50 + 100 = 175 && NO &\cr\noalign{\hrule}
-& 200&& 2 && 1 && 1 && 50 + 50 + 100 = 200 && YES &\cr\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=6 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Deadline Time</STRONG></TD>
- <TD ALIGN=center><STRONG>Task 1</STRONG></TD>
- <TD ALIGN=center><STRONG>Task 2</STRONG></TD>
- <TD ALIGN=center><STRONG>Task 3</STRONG></TD>
- <TD ALIGN=center><STRONG>Total Execution Time</STRONG></TD>
- <TD ALIGN=center><STRONG>All Deadlines Met?</STRONG></TD></TR>
-<TR><TD ALIGN=center>100</TD>
- <TD ALIGN=center>1</TD>
- <TD ALIGN=center>1</TD>
- <TD ALIGN=center>1</TD>
- <TD ALIGN=center>25 + 50 + 100 = 175</TD>
- <TD ALIGN=center>NO</TD></TR>
-<TR><TD ALIGN=center>200</TD>
- <TD ALIGN=center>2</TD>
- <TD ALIGN=center>1</TD>
- <TD ALIGN=center>1</TD>
- <TD ALIGN=center>50 + 50 + 100 = 175</TD>
- <TD ALIGN=center>YES</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-The key to this analysis is to recognize when each
-task will execute. For example at time 100, task 1 must have
-met its first deadline, but tasks 2 and 3 may also have begun
-execution. In this example, at time 100 tasks 1 and 2 have
-completed execution and thus have met their first deadline.
-Tasks 1 and 2 have used (25 + 50) = 75 time units, leaving (100
-- 75) = 25 time units for task 3 to begin. Because task 3 takes
-100 ticks to execute, it will not have completed execution at
-time 100. Thus at time 100, all of the tasks except task 3 have
-met their first deadline.
-
-At time 200, task 1 must have met its second deadline
-and task 2 its first deadline. As a result, of the first 200
-time units, task 1 uses (2 * 25) = 50 and task 2 uses 50,
-leaving (200 - 100) time units for task 3. Task 3 requires 100
-time units to execute, thus it will have completed execution at
-time 200. Thus, all of the tasks have met their first deadlines
-at time 200, and the task set is schedulable using the First
-Deadline Rule.
-
-@subsection Relaxation of Assumptions
-
-The assumptions used to develop the RMS
-schedulability rules are uncommon in most real-time systems.
-For example, it was assumed that tasks have constant unvarying
-execution time. It is possible to relax this assumption, simply
-by using the worst-case execution time of each task.
-
-Another assumption is that the tasks are independent.
-This means that the tasks do not wait for one another or
-contend for resources. This assumption can be relaxed by
-accounting for the amount of time a task spends waiting to
-acquire resources. Similarly, each task's execution time must
-account for any I/O performed and any RTEMS directive calls.
-
-In addition, the assumptions did not account for the
-time spent executing interrupt service routines. This can be
-accounted for by including all the processor utilization by
-interrupt service routines in the utilization calculation.
-Similarly, one should also account for the impact of delays in
-accessing local memory caused by direct memory access and other
-processors accessing local dual-ported memory.
-
-The assumption that nonperiodic tasks are used only
-for initialization or failure-recovery can be relaxed by placing
-all periodic tasks in the critical task set. This task set can
-be scheduled and analyzed using RMS. All nonperiodic tasks are
-placed in the non-critical task set. Although the critical task
-set can be guaranteed to execute even under transient overload,
-the non-critical task set is not guaranteed to execute.
-
-In conclusion, the application designer must be fully
-cognizant of the system and its run-time behavior when
-performing schedulability analysis for a system using RMS.
-Every hardware and software factor which impacts the execution
-time of each task must be accounted for in the schedulability
-analysis.
-
-@subsection Further Reading
-
-For more information on Rate Monotonic Scheduling and
-its schedulability analysis, the reader is referred to the
-following:
-
-@itemize @code{ }
-@item @cite{C. L. Liu and J. W. Layland. "Scheduling Algorithms for
-Multiprogramming in a Hard Real Time Environment." @b{Journal of
-the Association of Computing Machinery}. January 1973. pp. 46-61.}
-
-@item @cite{John Lehoczky, Lui Sha, and Ye Ding. "The Rate Monotonic
-Scheduling Algorithm: Exact Characterization and Average Case
-Behavior." @b{IEEE Real-Time Systems Symposium}. 1989. pp. 166-171.}
-
-@item @cite{Lui Sha and John Goodenough. "Real-Time Scheduling
-Theory and Ada." @b{IEEE Computer}. April 1990. pp. 53-62.}
-
-@item @cite{Alan Burns. "Scheduling hard real-time systems: a
-review." @b{Software Engineering Journal}. May 1991. pp. 116-128.}
-@end itemize
-
-@raisesections
-
-@section Operations
-
-@subsection Creating a Rate Monotonic Period
-
-The @code{@value{DIRPREFIX}rate_monotonic_create} directive creates a rate
-monotonic period which is to be used by the calling task to
-delineate a period. RTEMS allocates a Period Control Block
-(PCB) from the PCB free list. This data structure is used by
-RTEMS to manage the newly created rate monotonic period. RTEMS
-returns a unique period ID to the application which is used by
-other rate monotonic manager directives to access this rate
-monotonic period.
-
-@subsection Manipulating a Period
-
-The @code{@value{DIRPREFIX}rate_monotonic_period} directive is used to
-establish and maintain periodic execution utilizing a previously
-created rate monotonic period. Once initiated by the
-@code{@value{DIRPREFIX}rate_monotonic_period} directive, the period is
-said to run until it either expires or is reinitiated. The state of the rate
-monotonic period results in one of the following scenarios:
-
-@itemize @bullet
-@item If the rate monotonic period is running, the calling
-task will be blocked for the remainder of the outstanding period
-and, upon completion of that period, the period will be
-reinitiated with the specified period.
-
-@item If the rate monotonic period is not currently running
-and has not expired, it is initiated with a length of period
-ticks and the calling task returns immediately.
-
-@item If the rate monotonic period has expired before the task
-invokes the @code{@value{DIRPREFIX}rate_monotonic_period} directive,
-the period will be initiated with a length of period ticks and the calling task
-returns immediately with a timeout error status.
-
-@end itemize
-
-@subsection Obtaining a Period's Status
-
-If the @code{@value{DIRPREFIX}rate_monotonic_period} directive is invoked
-with a period of @code{@value{RPREFIX}PERIOD_STATUS} ticks, the current
-state of the specified rate monotonic period will be returned. The following
-table details the relationship between the period's status and
-the directive status code returned by the
-@code{@value{DIRPREFIX}rate_monotonic_period}
-directive:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}SUCCESSFUL} - period is running
-
-@item @code{@value{RPREFIX}TIMEOUT} - period has expired
-
-@item @code{@value{RPREFIX}NOT_DEFINED} - period has never been initiated
-@end itemize
-
-Obtaining the status of a rate monotonic period does
-not alter the state or length of that period.
-
-@subsection Canceling a Period
-
-The @code{@value{DIRPREFIX}rate_monotonic_cancel} directive is used to stop
-the period maintained by the specified rate monotonic period.
-The period is stopped and the rate monotonic period can be
-reinitiated using the @code{@value{DIRPREFIX}rate_monotonic_period} directive.
-
-@subsection Deleting a Rate Monotonic Period
-
-The @code{@value{DIRPREFIX}rate_monotonic_delete} directive is used to delete
-a rate monotonic period. If the period is running and has not
-expired, the period is automatically canceled. The rate
-monotonic period's control block is returned to the PCB free
-list when it is deleted. A rate monotonic period can be deleted
-by a task other than the task which created the period.
-
-@subsection Examples
-
-The following sections illustrate common uses of rate
-monotonic periods to construct periodic tasks.
-
-@subsection Simple Periodic Task
-
-This example consists of a single periodic task
-which, after initialization, executes every 100 clock ticks.
-
-@page
-@example
-rtems_task Periodic_task()
-@{
- rtems_name name;
- rtems_id period;
- rtems_status_code status;
-
- name = rtems_build_name( 'P', 'E', 'R', 'D' );
-
- (void) rate_monotonic_create( name, &period );
-
- while ( 1 ) @{
- if ( rate_monotonic_period( period, 100 ) == TIMEOUT )
- break;
-
- /* Perform some periodic actions */
- @}
-
- /* missed period so delete period and SELF */
-
- (void) rate_monotonic_delete( period );
- (void) task_delete( SELF );
-@}
-@end example
-
-
-The above task creates a rate monotonic period as
-part of its initialization. The first time the loop is
-executed, the @code{@value{DIRPREFIX}rate_monotonic_period}
-directive will initiate the period for 100 ticks and return
-immediately. Subsequent invocations of the
-@code{@value{DIRPREFIX}rate_monotonic_period} directive will result
-in the task blocking for the remainder of the 100 tick period.
-If, for any reason, the body of the loop takes more than 100
-ticks to execute, the @code{@value{DIRPREFIX}rate_monotonic_period}
-directive will return the @code{@value{RPREFIX}TIMEOUT} status.
-If the above task misses its deadline, it will delete the rate
-monotonic period and itself.
-
-@subsection Task with Multiple Periods
-
-This example consists of a single periodic task
-which, after initialization, performs two sets of actions every
-100 clock ticks. The first set of actions is performed in the
-first forty clock ticks of every 100 clock ticks, while the
-second set of actions is performed between the fortieth and
-seventieth clock ticks. The last thirty clock ticks are not
-used by this task.
-
-@page
-@example
-task Periodic_task()
-@{
- rtems_name name_1, name_2;
- rtems_id period_1, period_2;
- rtems_status_code status;
-
- name_1 = rtems_build_name( 'P', 'E', 'R', '1' );
- name_2 = rtems_build_name( 'P', 'E', 'R', '2' );
-
- (void ) rate_monotonic_create( name_1, &period_1 );
- (void ) rate_monotonic_create( name_2, &period_2 );
-
- while ( 1 ) @{
- if ( rate_monotonic_period( period_1, 100 ) == TIMEOUT )
- break;
-
- if ( rate_monotonic_period( period_2, 40 ) == TIMEOUT )
- break;
-
- /*
- * Perform first set of actions between clock
- * ticks 0 and 39 of every 100 ticks.
- */
-
- if ( rate_monotonic_period( period_2, 30 ) == TIMEOUT )
- break;
-
- /*
- * Perform second set of actions between clock 40 and 69
- * of every 100 ticks. THEN ...
- *
- * Check to make sure we didn't miss the period_2 period.
- */
-
- if ( rate_monotonic_period( period_2, STATUS ) == TIMEOUT )
- break;
-
- (void) rate_monotonic_cancel( period_2 );
- @}
-
- /* missed period so delete period and SELF */
-
- (void ) rate_monotonic_delete( period_1 );
- (void ) rate_monotonic_delete( period_2 );
- (void ) task_delete( SELF );
-@}
-@end example
-
-The above task creates two rate monotonic periods as
-part of its initialization. The first time the loop is
-executed, the @code{@value{DIRPREFIX}rate_monotonic_period}
-directive will initiate the period_1 period for 100 ticks
-and return immediately. Subsequent invocations of the
-@code{@value{DIRPREFIX}rate_monotonic_period} directive
-for period_1 will result in the task blocking for the remainder
-of the 100 tick period. The period_2 period is used to control
-the execution time of the two sets of actions within each 100
-tick period established by period_1. The
-@code{@value{DIRPREFIX}rate_monotonic_cancel( period_2 )}
-call is performed to insure that the period_2 period
-does not expire while the task is blocked on the period_1
-period. If this cancel operation were not performed, every time
-the @code{@value{DIRPREFIX}rate_monotonic_period( period_1, 40 )}
-call is executed, except for the initial one, a directive status
-of @code{@value{RPREFIX}TIMEOUT} is returned. It is important to
-note that every time this call is made, the period_1 period will be
-initiated immediately and the task will not block.
-
-If, for any reason, the task misses any deadline, the
-@code{@value{DIRPREFIX}rate_monotonic_period} directive will
-return the @code{@value{RPREFIX}TIMEOUT}
-directive status. If the above task misses its deadline, it
-will delete the rate monotonic periods and itself.
-
-@section Directives
-
-This section details the rate monotonic manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection RATE_MONOTONIC_CREATE - Create a rate monotonic period
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_rate_monotonic_create
-@example
-rtems_status_code rtems_rate_monotonic_create(
- rtems_name name,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Rate_Monotonic_Create (
- Name : in RTEMS.Name;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - rate monotonic period created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
-@code{@value{RPREFIX}TOO_MANY} - too many periods created
-
-@subheading DESCRIPTION:
-
-This directive creates a rate monotonic period. The
-assigned rate monotonic id is returned in id. This id is used
-to access the period with other rate monotonic manager
-directives. For control and maintenance of the rate monotonic
-period, RTEMS allocates a PCB from the local PCB free pool and
-initializes it.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-@page
-@subsection RATE_MONOTONIC_IDENT - Get ID of a period
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_rate_monotonic_ident
-@example
-rtems_status_code rtems_rate_monotonic_ident(
- rtems_name name,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Rate_Monotonic_Ident (
- Name : in RTEMS.Name;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - period identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - period name not found
-
-@subheading DESCRIPTION:
-
-This directive obtains the period id associated with
-the period name to be acquired. If the period name is not
-unique, then the period id will match one of the periods with
-that name. However, this period id is not guaranteed to
-correspond to the desired period. The period id is used to
-access this period in other rate monotonic manager directives.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-@page
-@subsection RATE_MONOTONIC_CANCEL - Cancel a period
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_rate_monotonic_cancel
-@example
-rtems_status_code rtems_rate_monotonic_cancel(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Rate_Monotonic_Cancel (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - period canceled successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid rate monotonic period id@*
-@code{@value{RPREFIX}NOT_OWNER_OF_RESOURCE} - rate monotonic period not created by calling task
-
-@subheading DESCRIPTION:
-
-This directive cancels the rate monotonic period id.
-This period will be reinitiated by the next invocation of
-@code{@value{DIRPREFIX}rate_monotonic_period} with id.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-The rate monotonic period specified by id must have
-been created by the calling task.
-
-@page
-@subsection RATE_MONOTONIC_DELETE - Delete a rate monotonic period
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_rate_monotonic_delete
-@example
-rtems_status_code rtems_rate_monotonic_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Rate_Monotonic_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - period deleted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid rate monotonic period id
-
-@subheading DESCRIPTION:
-
-This directive deletes the rate monotonic period
-specified by id. If the period is running, it is automatically
-canceled. The PCB for the deleted period is reclaimed by RTEMS.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-A rate monotonic period can be deleted by a task
-other than the task which created the period.
-
-@page
-@subsection RATE_MONOTONIC_PERIOD - Conclude current/Start next period
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_rate_monotonic_period
-@example
-rtems_status_code rtems_rate_monotonic_period(
- rtems_id id,
- rtems_interval length
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Rate_Monotonic_Period (
- ID : in RTEMS.ID;
- Length : in RTEMS.Interval;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - period initiated successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid rate monotonic period id@*
-@code{@value{RPREFIX}NOT_OWNER_OF_RESOURCE} - period not created by calling task@*
-@code{@value{RPREFIX}NOT_DEFINED} - period has never been initiated (only
-possible when period is set to PERIOD_STATUS)@*
-@code{@value{RPREFIX}TIMEOUT} - period has expired
-
-@subheading DESCRIPTION:
-
-This directive initiates the rate monotonic period id
-with a length of period ticks. If id is running, then the
-calling task will block for the remainder of the period before
-reinitiating the period with the specified period. If id was
-not running (either expired or never initiated), the period is
-immediately initiated and the directive returns immediately.
-
-If invoked with a period of @code{@value{RPREFIX}PERIOD_STATUS} ticks, the
-current state of id will be returned. The directive status
-indicates the current state of the period. This does not alter
-the state or period of the period.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be preempted.
-
----------------------
-@page
-@subsection RATE_MONOTONIC_GET_STATUS - Obtain status information on period
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_rate_monotonic_get_status
-@example
-rtems_status_code rtems_rate_monotonic_get_status(
- rtems_id id,
- rtems_rate_monotonic_period_status *status
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Rate_Monotonic_Get_Status (
- ID : in RTEMS.ID;
- Status : out RTEMS.Rate_Monotonic_Period_Status;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - period initiated successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid rate monotonic period id@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - invalid address of status@*
-
-@subheading DESCRIPTION:
-
-This directive returns status information associated with
-the rate monotonic period id in the following data @value{STRUCTURE}:
-
-@ifset is-C
-@example
-typedef struct @{
- rtems_rate_monotonic_period_states state;
- unsigned32 ticks_since_last_period;
- unsigned32 ticks_executed_since_last_period;
-@} rtems_rate_monotonic_period_status;
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Rate_Monotonic_Period_Status is
- begin
- State : RTEMS.Rate_Monotonic_Period_States;
- Ticks_Since_Last_Period : RTEMS.Unsigned32;
- Ticks_Executed_Since_Last_Period : RTEMS.Unsigned32;
- end record;
-@end example
-@end ifset
-
-@c RATE_MONOTONIC_INACTIVE does not have RTEMS_ in front of it.
-
-If the period's state is @code{RATE_MONOTONIC_INACTIVE}, both
-ticks_since_last_period and ticks_executed_since_last_period
-will be set to 0. Otherwise, ticks_since_last_period will
-contain the number of clock ticks which have occurred since
-the last invocation of the
-@code{@value{DIRPREFIX}rate_monotonic_period} directive.
-Also in this case, the ticks_executed_since_last_period will indicate
-how much processor time the owning task has consumed since the invocation
-of the @code{@value{DIRPREFIX}rate_monotonic_period} directive.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be preempted.
diff --git a/doc/user/schedule.t b/doc/user/schedule.t
deleted file mode 100644
index aa187afb13..0000000000
--- a/doc/user/schedule.t
+++ /dev/null
@@ -1,390 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c This figure is not included:
-@c Figure 17-1 RTEMS Task State Transitions
-@c
-
-@chapter Scheduling Concepts
-
-@section Introduction
-
-The concept of scheduling in real-time systems
-dictates the ability to provide immediate response to specific
-external events, particularly the necessity of scheduling tasks
-to run within a specified time limit after the occurrence of an
-event. For example, software embedded in life-support systems
-used to monitor hospital patients must take instant action if a
-change in the patient's status is detected.
-
-The component of RTEMS responsible for providing this
-capability is appropriately called the scheduler. The
-scheduler's sole purpose is to allocate the all important
-resource of processor time to the various tasks competing for
-attention. The RTEMS scheduler allocates the processor using a
-priority-based, preemptive algorithm augmented to provide
-round-robin characteristics within individual priority groups.
-The goal of this algorithm is to guarantee that the task which
-is executing on the processor at any point in time is the one
-with the highest priority among all tasks in the ready state.
-
-There are two common methods of accomplishing the
-mechanics of this algorithm. Both ways involve a list or chain
-of tasks in the ready state. One method is to randomly place
-tasks in the ready chain forcing the scheduler to scan the
-entire chain to determine which task receives the processor.
-The other method is to schedule the task by placing it in the
-proper place on the ready chain based on the designated
-scheduling criteria at the time it enters the ready state.
-Thus, when the processor is free, the first task on the ready
-chain is allocated the processor. RTEMS schedules tasks using
-the second method to guarantee faster response times to external
-events.
-
-@section Scheduling Mechanisms
-
-RTEMS provides four mechanisms which allow the user
-to impact the task scheduling process:
-
-@itemize @bullet
-@item user-selectable task priority level
-@item task preemption control
-@item task timeslicing control
-@item manual round-robin selection
-@end itemize
-
-Each of these methods provides a powerful capability
-to customize sets of tasks to satisfy the unique and particular
-requirements encountered in custom real-time applications.
-Although each mechanism operates independently, there is a
-precedence relationship which governs the effects of scheduling
-modifications. The evaluation order for scheduling
-characteristics is always priority, preemption mode, and
-timeslicing. When reading the descriptions of timeslicing and
-manual round-robin it is important to keep in mind that
-preemption (if enabled) of a task by higher priority tasks will
-occur as required, overriding the other factors presented in the
-description.
-
-@subsection Task Priority and Scheduling
-
-The most significant of these mechanisms is the
-ability for the user to assign a priority level to each
-individual task when it is created and to alter a task's
-priority at run-time. RTEMS provides 255 priority levels.
-Level 255 is the lowest priority and level 1 is the highest.
-When a task is added to the ready chain, it is placed behind all
-other tasks of the same priority. This rule provides a
-round-robin within priority group scheduling characteristic.
-This means that in a group of equal priority tasks, tasks will
-execute in the order they become ready or FIFO order. Even
-though there are ways to manipulate and adjust task priorities,
-the most important rule to remember is:
-
-@itemize @code{ }
-@item @b{The RTEMS scheduler will always select the highest
-priority task that is ready to run when allocating the processor
-to a task.}
-@end itemize
-
-@subsection Preemption
-
-Another way the user can alter the basic scheduling
-algorithm is by manipulating the preemption mode flag
-(@code{@value{RPREFIX}PREEMPT_MASK}) of individual tasks. If preemption is disabled
-for a task (@code{@value{RPREFIX}NO_PREEMPT}), then the task will not relinquish
-control of the processor until it terminates, blocks, or
-re-enables preemption. Even tasks which become ready to run and
-possess higher priority levels will not be allowed to execute.
-Note that the preemption setting has no effect on the manner in
-which a task is scheduled. It only applies once a task has
-control of the processor.
-
-@subsection Timeslicing
-
-Timeslicing or round-robin scheduling is an
-additional method which can be used to alter the basic
-scheduling algorithm. Like preemption, timeslicing is specified
-on a task by task basis using the timeslicing mode flag
-(@code{@value{RPREFIX}TIMESLICE_MASK}). If timeslicing is enabled for a task
-(@code{@value{RPREFIX}TIMESLICE}), then RTEMS will limit the amount of time the task
-can execute before the processor is allocated to another task.
-Each tick of the real-time clock reduces the currently running
-task's timeslice. When the execution time equals the timeslice,
-RTEMS will dispatch another task of the same priority to
-execute. If there are no other tasks of the same priority ready
-to execute, then the current task is allocated an additional
-timeslice and continues to run. Remember that a higher priority
-task will preempt the task (unless preemption is disabled) as
-soon as it is ready to run, even if the task has not used up its
-entire timeslice.
-
-@subsection Manual Round-Robin
-
-The final mechanism for altering the RTEMS scheduling
-algorithm is called manual round-robin. Manual round-robin is
-invoked by using the @code{@value{DIRPREFIX}task_wake_after}
-directive with a time interval of @code{@value{RPREFIX}YIELD_PROCESSOR}.
-This allows a task to give up the
-processor and be immediately returned to the ready chain at the
-end of its priority group. If no other tasks of the same
-priority are ready to run, then the task does not lose control
-of the processor.
-
-@subsection Dispatching Tasks
-
-The dispatcher is the RTEMS component responsible for
-allocating the processor to a ready task. In order to allocate
-the processor to one task, it must be deallocated or retrieved
-from the task currently using it. This involves a concept
-called a context switch. To perform a context switch, the
-dispatcher saves the context of the current task and restores
-the context of the task which has been allocated to the
-processor. Saving and restoring a task's context is the
-storing/loading of all the essential information about a task to
-enable it to continue execution without any effects of the
-interruption. For example, the contents of a task's register
-set must be the same when it is given the processor as they were
-when it was taken away. All of the information that must be
-saved or restored for a context switch is located either in the
-TCB or on the task's stacks.
-
-Tasks that utilize a numeric coprocessor and are
-created with the @code{@value{RPREFIX}FLOATING_POINT} attribute
-require additional operations during a context switch. These
-additional operations
-are necessary to save and restore the floating point context of
-@code{@value{RPREFIX}FLOATING_POINT} tasks. To avoid unnecessary save and restore
-operations, the state of the numeric coprocessor is only saved
-when a @code{@value{RPREFIX}FLOATING_POINT} task is dispatched and that task was not
-the last task to utilize the coprocessor.
-
-@section Task State Transitions
-
-Tasks in an RTEMS system must always be in one of the
-five allowable task states. These states are: executing, ready,
-blocked, dormant, and non-existent.
-
-@ifset use-ascii
-@example
-@group
- +-------------------------------------------------------------+
- | Non-existent |
- | +-------------------------------------------------------+ |
- | | | |
- | | | |
- | | Creating +---------+ Deleting | |
- | | -------------------> | Dormant | -------------------> | |
- | | +---------+ | |
- | | | | |
- | | Starting | | |
- | | | | |
- | | V Deleting | |
- | | +-------> +-------+ -------------------> | |
- | | Yielding / +----- | Ready | ------+ | |
- | | / / +-------+ <--+ \ | |
- | | / / \ \ Blocking | |
- | | / / Dispatching Readying \ \ | |
- | | / V \ V | |
- | | +-----------+ Blocking +---------+ | |
- | | | Executing | --------------> | Blocked | | |
- | | +-----------+ +---------+ | |
- | | | |
- | | | |
- | +-------------------------------------------------------+ |
- | Non-existent |
- +-------------------------------------------------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@c for now use the ascii version
-@example
-@group
- +-------------------------------------------------------------+
- | Non-existent |
- | +-------------------------------------------------------+ |
- | | | |
- | | | |
- | | Creating +---------+ Deleting | |
- | | -------------------> | Dormant | -------------------> | |
- | | +---------+ | |
- | | | | |
- | | Starting | | |
- | | | | |
- | | V Deleting | |
- | | +-------> +-------+ -------------------> | |
- | | Yielding / +----- | Ready | ------+ | |
- | | / / +-------+ <--+ \ | |
- | | / / \ \ Blocking | |
- | | / / Dispatching Readying \ \ | |
- | | / V \ V | |
- | | +-----------+ Blocking +---------+ | |
- | | | Executing | --------------> | Blocked | | |
- | | +-----------+ +---------+ | |
- | | | |
- | | | |
- | +-------------------------------------------------------+ |
- | Non-existent |
- +-------------------------------------------------------------+
-@end group
-@end example
-@tex
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<IMG SRC="states.gif" WIDTH=550 HEIGHT=400 ALT="RTEMS Task States">
-@end html
-@end ifset
-
-A task occupies the non-existent state before a
-@code{@value{DIRPREFIX}task_create} has been
-issued on its behalf. A task enters the
-non-existent state from any other state in the system when it is
-deleted with the @code{@value{DIRPREFIX}task_delete}
-directive. While a task occupies
-this state it does not have a TCB or a task ID assigned to it;
-therefore, no other tasks in the system may reference this task.
-
-When a task is created via the @code{@value{DIRPREFIX}task_create} directive
-it enters the dormant state. This state is not entered through
-any other means. Although the task exists in the system, it
-cannot actively compete for system resources. It will remain in
-the dormant state until it is started via the @code{@value{DIRPREFIX}task_start}
-directive, at which time it enters the ready state. The task is
-now permitted to be scheduled for the processor and to compete
-for other system resources.
-
-A task occupies the blocked state whenever it is
-unable to be scheduled to run. A running task may block itself
-or be blocked by other tasks in the system. The running task
-blocks itself through voluntary operations that cause the task
-to wait. The only way a task can block a task other than itself
-is with the @code{@value{DIRPREFIX}task_suspend} directive.
-A task enters the blocked state due to any of the following conditions:
-
-@itemize @bullet
-@item A task issues a @code{@value{DIRPREFIX}task_suspend} directive
-which blocks either itself or another task in the system.
-
-@item The running task issues a @code{@value{DIRPREFIX}message_queue_receive}
-directive with the wait option and the message queue is empty.
-
-@item The running task issues an @code{@value{DIRPREFIX}event_receive}
-directive with the wait option and the currently pending events do not
-satisfy the request.
-
-@item The running task issues a @code{@value{DIRPREFIX}semaphore_obtain}
-directive with the wait option and the requested semaphore is unavailable.
-
-@item The running task issues a @code{@value{DIRPREFIX}task_wake_after}
-directive which blocks the task for the given time interval. If the time
-interval specified is zero, the task yields the processor and
-remains in the ready state.
-
-@item The running task issues a @code{@value{DIRPREFIX}task_wake_when}
-directive which blocks the task until the requested date and time arrives.
-
-@item The running task issues a @code{@value{DIRPREFIX}region_get_segment}
-directive with the wait option and there is not an available segment large
-enough to satisfy the task's request.
-
-@item The running task issues a @code{@value{DIRPREFIX}rate_monotonic_period}
-directive and must wait for the specified rate monotonic period
-to conclude.
-@end itemize
-
-A blocked task may also be suspended. Therefore,
-both the suspension and the blocking condition must be removed
-before the task becomes ready to run again.
-
-A task occupies the ready state when it is able to be
-scheduled to run, but currently does not have control of the
-processor. Tasks of the same or higher priority will yield the
-processor by either becoming blocked, completing their
-timeslice, or being deleted. All tasks with the same priority
-will execute in FIFO order. A task enters the ready state due
-to any of the following conditions:
-
-@itemize @bullet
-
-@item A running task issues a @code{@value{DIRPREFIX}task_resume}
-directive for a task that is suspended and the task is not blocked
-waiting on any resource.
-
-@item A running task issues a @code{@value{DIRPREFIX}message_queue_send},
-@code{@value{DIRPREFIX}message_queue_broadcast}, or a
-@code{@value{DIRPREFIX}message_queue_urgent} directive
-which posts a message to the queue on which the blocked task is
-waiting.
-
-@item A running task issues an @code{@value{DIRPREFIX}event_send}
-directive which sends an event condition to a task which is blocked
-waiting on that event condition.
-
-@item A running task issues a @code{@value{DIRPREFIX}semaphore_release}
-directive which releases the semaphore on which the blocked task is
-waiting.
-
-@item A timeout interval expires for a task which was blocked
-by a call to the @code{@value{DIRPREFIX}task_wake_after} directive.
-
-@item A timeout period expires for a task which blocked by a
-call to the @code{@value{DIRPREFIX}task_wake_when} directive.
-
-@item A running task issues a @code{@value{DIRPREFIX}region_return_segment}
-directive which releases a segment to the region on which the blocked task
-is waiting and a resulting segment is large enough to satisfy
-the task's request.
-
-@item A rate monotonic period expires for a task which blocked
-by a call to the @code{@value{DIRPREFIX}rate_monotonic_period} directive.
-
-@item A timeout interval expires for a task which was blocked
-waiting on a message, event, semaphore, or segment with a
-timeout specified.
-
-@item A running task issues a directive which deletes a
-message queue, a semaphore, or a region on which the blocked
-task is waiting.
-
-@item A running task issues a @code{@value{DIRPREFIX}task_restart}
-directive for the blocked task.
-
-@item The running task, with its preemption mode enabled, may
-be made ready by issuing any of the directives that may unblock
-a task with a higher priority. This directive may be issued
-from the running task itself or from an ISR.
-
-A ready task occupies the executing state when it has
-control of the CPU. A task enters the executing state due to
-any of the following conditions:
-
-@item The task is the highest priority ready task in the
-system.
-
-@item The running task blocks and the task is next in the
-scheduling queue. The task may be of equal priority as in
-round-robin scheduling or the task may possess the highest
-priority of the remaining ready tasks.
-
-@item The running task may reenable its preemption mode and a
-task exists in the ready queue that has a higher priority than
-the running task.
-
-@item The running task lowers its own priority and another
-task is of higher priority as a result.
-
-@item The running task raises the priority of a task above its
-own and the running task is in preemption mode.
-
-@end itemize
diff --git a/doc/user/sem.t b/doc/user/sem.t
deleted file mode 100644
index 679fc621a6..0000000000
--- a/doc/user/sem.t
+++ /dev/null
@@ -1,729 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Semaphore Manager
-
-@section Introduction
-
-The semaphore manager utilizes standard Dijkstra
-counting semaphores to provide synchronization and mutual
-exclusion capabilities. The directives provided by the
-semaphore manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}semaphore_create} - Create a semaphore
-@item @code{@value{DIRPREFIX}semaphore_ident} - Get ID of a semaphore
-@item @code{@value{DIRPREFIX}semaphore_delete} - Delete a semaphore
-@item @code{@value{DIRPREFIX}semaphore_obtain} - Acquire a semaphore
-@item @code{@value{DIRPREFIX}semaphore_release} - Release a semaphore
-@end itemize
-
-@section Background
-
-A semaphore can be viewed as a protected variable
-whose value can be modified only with the
-@code{@value{DIRPREFIX}semaphore_create},
-@code{@value{DIRPREFIX}semaphore_obtain}, and
-@code{@value{DIRPREFIX}semaphore_release} directives. RTEMS
-supports both binary and counting semaphores. A binary semaphore
-is restricted to values of zero or one, while a counting
-semaphore can assume any non-negative integer value.
-
-A binary semaphore can be used to control access to a
-single resource. In particular, it can be used to enforce
-mutual exclusion for a critical section in user code. In this
-instance, the semaphore would be created with an initial count
-of one to indicate that no task is executing the critical
-section of code. Upon entry to the critical section, a task
-must issue the @code{@value{DIRPREFIX}semaphore_obtain}
-directive to prevent other tasks from entering the critical section.
-Upon exit from the critical section, the task must issue the
-@code{@value{DIRPREFIX}semaphore_release} directive to
-allow another task to execute the critical section.
-
-A counting semaphore can be used to control access to
-a pool of two or more resources. For example, access to three
-printers could be administered by a semaphore created with an
-initial count of three. When a task requires access to one of
-the printers, it issues the @code{@value{DIRPREFIX}semaphore_obtain}
-directive to obtain access to a printer. If a printer is not currently
-available, the task can wait for a printer to become available or return
-immediately. When the task has completed printing, it should
-issue the @code{@value{DIRPREFIX}semaphore_release}
-directive to allow other tasks access to the printer.
-
-Task synchronization may be achieved by creating a
-semaphore with an initial count of zero. One task waits for the
-arrival of another task by issuing a @code{@value{DIRPREFIX}semaphore_obtain}
-directive when it reaches a synchronization point. The other task
-performs a corresponding @code{@value{DIRPREFIX}semaphore_release}
-operation when it reaches its synchronization point, thus unblocking
-the pending task.
-
-@subsection Nested Resource Access
-
-Deadlock occurs when a task owning a binary semaphore
-attempts to acquire that same semaphore and blocks as result.
-Since the semaphore is allocated to a task, it cannot be
-deleted. Therefore, the task that currently holds the semaphore
-and is also blocked waiting for that semaphore will never
-execute again.
-
-RTEMS addresses this problem by allowing the task
-holding the binary semaphore to obtain the same binary semaphore
-multiple times in a nested manner. Each
-@code{@value{DIRPREFIX}semaphore_obtain} must be accompanied with a
-@code{@value{DIRPREFIX}semaphore_release}. The semaphore will
-only be made available for acquisition by other tasks when the
-outermost @code{@value{DIRPREFIX}semaphore_obtain} is matched with
-a @code{@value{DIRPREFIX}semaphore_release}.
-
-
-@subsection Priority Inversion
-
-Priority inversion is a form of indefinite
-postponement which is common in multitasking, preemptive
-executives with shared resources. Priority inversion occurs
-when a high priority tasks requests access to shared resource
-which is currently allocated to low priority task. The high
-priority task must block until the low priority task releases
-the resource. This problem is exacerbated when the low priority
-task is prevented from executing by one or more medium priority
-tasks. Because the low priority task is not executing, it
-cannot complete its interaction with the resource and release
-that resource. The high priority task is effectively prevented
-from executing by lower priority tasks.
-
-@subsection Priority Inheritance
-
-Priority inheritance is an algorithm that calls for
-the lower priority task holding a resource to have its priority
-increased to that of the highest priority task blocked waiting
-for that resource. Each time a task blocks attempting to obtain
-the resource, the task holding the resource may have its
-priority increased.
-
-RTEMS supports priority inheritance for local, binary
-semaphores that use the priority task wait queue blocking
-discipline. When a task of higher priority than the task
-holding the semaphore blocks, the priority of the task holding
-the semaphore is increased to that of the blocking task. When
-the task holding the task completely releases the binary
-semaphore (i.e. not for a nested release), the holder's priority
-is restored to the value it had before any higher priority was
-inherited.
-
-The RTEMS implementation of the priority inheritance
-algorithm takes into account the scenario in which a task holds
-more than one binary semaphore. The holding task will execute
-at the priority of the higher of the highest ceiling priority or
-at the priority of the highest priority task blocked waiting for
-any of the semaphores the task holds. Only when the task
-releases ALL of the binary semaphores it holds will its priority
-be restored to the normal value.
-
-@subsection Priority Ceiling
-
-Priority ceiling is an algorithm that calls for the
-lower priority task holding a resource to have its priority
-increased to that of the highest priority task which will EVER
-block waiting for that resource. This algorithm addresses the
-problem of priority inversion although it avoids the possibility
-of changing the priority of the task holding the resource
-multiple times. The priority ceiling algorithm will only change
-the priority of the task holding the resource a maximum of one
-time. The ceiling priority is set at creation time and must be
-the priority of the highest priority task which will ever
-attempt to acquire that semaphore.
-
-RTEMS supports priority ceiling for local, binary
-semaphores that use the priority task wait queue blocking
-discipline. When a task of lower priority than the ceiling
-priority successfully obtains the semaphore, its priority is
-raised to the ceiling priority. When the task holding the task
-completely releases the binary semaphore (i.e. not for a nested
-release), the holder's priority is restored to the value it had
-before any higher priority was put into effect.
-
-The need to identify the highest priority task which
-will attempt to obtain a particular semaphore can be a difficult
-task in a large, complicated system. Although the priority
-ceiling algorithm is more efficient than the priority
-inheritance algorithm with respect to the maximum number of task
-priority changes which may occur while a task holds a particular
-semaphore, the priority inheritance algorithm is more forgiving
-in that it does not require this apriori information.
-
-The RTEMS implementation of the priority ceiling
-algorithm takes into account the scenario in which a task holds
-more than one binary semaphore. The holding task will execute
-at the priority of the higher of the highest ceiling priority or
-at the priority of the highest priority task blocked waiting for
-any of the semaphores the task holds. Only when the task
-releases ALL of the binary semaphores it holds will its priority
-be restored to the normal value.
-
-@subsection Building a Semaphore's Attribute Set
-
-In general, an attribute set is built by a bitwise OR
-of the desired attribute components. The following table lists
-the set of valid semaphore attributes:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}FIFO} - tasks wait by FIFO (default)
-
-@item @code{@value{RPREFIX}PRIORITY} - tasks wait by priority
-
-@item @code{@value{RPREFIX}BINARY_SEMAPHORE} - restrict values to
-0 and 1 (default)
-
-@item @code{@value{RPREFIX}COUNTING_SEMAPHORE} - no restriction on values
-
-@item @code{@value{RPREFIX}NO_INHERIT_PRIORITY} - do not use priority
-inheritance (default)
-
-@item @code{@value{RPREFIX}INHERIT_PRIORITY} - use priority inheritance
-
-@item @code{@value{RPREFIX}PRIORITY_CEILING} - use priority ceiling
-
-@item @code{@value{RPREFIX}NO_PRIORITY_CEILING} - do not use priority
-ceiling (default)
-
-@item @code{@value{RPREFIX}LOCAL} - local task (default)
-
-@item @code{@value{RPREFIX}GLOBAL} - global task
-@end itemize
-
-Attribute values are specifically designed to be
-mutually exclusive, therefore bitwise OR and addition operations
-are equivalent as long as each attribute appears exactly once in
-the component list. An attribute listed as a default is not
-required to appear in the attribute list, although it is a good
-programming practice to specify default attributes. If all
-defaults are desired, the attribute
-@code{@value{RPREFIX}DEFAULT_ATTRIBUTES} should be
-specified on this call.
-
-This example demonstrates the attribute_set parameter
-needed to create a local semaphore with the task priority
-waiting queue discipline. The attribute_set parameter passed to
-the @code{@value{DIRPREFIX}semaphore_create} directive could be either
-@code{@value{RPREFIX}PRIORITY} or
-@code{@value{RPREFIX}LOCAL @value{OR} @value{RPREFIX}PRIORITY}.
-The attribute_set parameter can be set to @code{@value{RPREFIX}PRIORITY}
-because @code{@value{RPREFIX}LOCAL} is the default for all created tasks. If a
-similar semaphore were to be known globally, then the
-attribute_set parameter would be
-@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}PRIORITY}.
-
-@subsection Building a SEMAPHORE_OBTAIN Option Set
-
-In general, an option is built by a bitwise OR of the
-desired option components. The set of valid options for the
-@code{@value{DIRPREFIX}semaphore_obtain} directive are listed
-in the following table:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}WAIT} - task will wait for semaphore (default)
-@item @code{@value{RPREFIX}NO_WAIT} - task should not wait
-@end itemize
-
-Option values are specifically designed to be
-mutually exclusive, therefore bitwise OR and addition operations
-are equivalent as long as each attribute appears exactly once in
-the component list. An option listed as a default is not
-required to appear in the list, although it is a good
-programming practice to specify default options. If all
-defaults are desired, the option @code{@value{RPREFIX}DEFAULT_OPTIONS} should be
-specified on this call.
-
-This example demonstrates the option parameter needed
-to poll for a semaphore. The option parameter passed to the
-@code{@value{DIRPREFIX}semaphore_obtain}
-directive should be @code{@value{RPREFIX}NO_WAIT}.
-
-@section Operations
-
-@subsection Creating a Semaphore
-
-The @code{@value{DIRPREFIX}semaphore_create} directive creates a binary or
-counting semaphore with a user-specified name as well as an
-initial count. If a binary semaphore is created with a count of
-zero (0) to indicate that it has been allocated, then the task
-creating the semaphore is considered the current holder of the
-semaphore. At create time the method for ordering waiting tasks
-in the semaphore's task wait queue (by FIFO or task priority) is
-specified. Additionally, the priority inheritance or priority
-ceiling algorithm may be selected for local, binary semaphores
-that use the priority task wait queue blocking discipline. If
-the priority ceiling algorithm is selected, then the highest
-priority of any task which will attempt to obtain this semaphore
-must be specified. RTEMS allocates a Semaphore Control Block
-(SMCB) from the SMCB free list. This data structure is used by
-RTEMS to manage the newly created semaphore. Also, a unique
-semaphore ID is generated and returned to the calling task.
-
-@subsection Obtaining Semaphore IDs
-
-When a semaphore is created, RTEMS generates a unique
-semaphore ID and assigns it to the created semaphore until it is
-deleted. The semaphore ID may be obtained by either of two
-methods. First, as the result of an invocation of the
-@code{@value{DIRPREFIX}semaphore_create} directive, the
-semaphore ID is stored in a user provided location. Second,
-the semaphore ID may be obtained later using the
-@code{@value{DIRPREFIX}semaphore_ident} directive. The semaphore ID is
-used by other semaphore manager directives to access this
-semaphore.
-
-@subsection Acquiring a Semaphore
-
-The @code{@value{DIRPREFIX}semaphore_obtain} directive is used to acquire the
-specified semaphore. A simplified version of the
-@code{@value{DIRPREFIX}semaphore_obtain} directive can be described as follows:
-
-@example
-if semaphore's count is greater than zero
- then decrement semaphore's count
- else wait for release of semaphore
-
-return SUCCESSFUL
-@end example
-
-When the semaphore cannot be immediately acquired,
-one of the following situations applies:
-
-@itemize @bullet
-@item By default, the calling task will wait forever to
-acquire the semaphore.
-
-@item Specifying @code{@value{RPREFIX}NO_WAIT} forces an immediate return with an
-error status code.
-
-@item Specifying a timeout limits the interval the task will
-wait before returning with an error status code.
-@end itemize
-
-If the task waits to acquire the semaphore, then it
-is placed in the semaphore's task wait queue in either FIFO or
-task priority order. If the task blocked waiting for a binary
-semaphore using priority inheritance and the task's priority is
-greater than that of the task currently holding the semaphore,
-then the holding task will inherit the priority of the blocking
-task. All tasks waiting on a semaphore are returned an error
-code when the semaphore is deleted.
-
-When a task successfully obtains a semaphore using
-priority ceiling and the priority ceiling for this semaphore is
-greater than that of the holder, then the holder's priority will
-be elevated.
-
-@subsection Releasing a Semaphore
-
-The @code{@value{DIRPREFIX}semaphore_release} directive is used to release
-the specified semaphore. A simplified version of the
-@code{@value{DIRPREFIX}semaphore_release} directive can be described as follows:
-
-@example
-if no tasks are waiting on this semaphore
- then increment semaphore's count
- else assign semaphore to a waiting task
-
-return SUCCESSFUL
-@end example
-
-If this is the outermost release of a binary
-semaphore that uses priority inheritance or priority ceiling and
-the task does not currently hold any other binary semaphores,
-then the task performing the @code{@value{DIRPREFIX}semaphore_release}
-will have its priority restored to its normal value.
-
-@subsection Deleting a Semaphore
-
-The @code{@value{DIRPREFIX}semaphore_delete} directive removes a semaphore
-from the system and frees its control block. A semaphore can be
-deleted by any local task that knows the semaphore's ID. As a
-result of this directive, all tasks blocked waiting to acquire
-the semaphore will be readied and returned a status code which
-indicates that the semaphore was deleted. Any subsequent
-references to the semaphore's name and ID are invalid.
-
-@section Directives
-
-This section details the semaphore manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection SEMAPHORE_CREATE - Create a semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_semaphore_create
-@example
-rtems_status_code rtems_semaphore_create(
- rtems_name name,
- rtems_unsigned32 count,
- rtems_attribute attribute_set,
- rtems_task_priority priority_ceiling,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Semaphore_Create (
- Name : in RTEMS.Name;
- Count : in RTEMS.Unsigned32;
- Attribute_Set : in RTEMS.Attribute;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - semaphore created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
-@code{@value{RPREFIX}TOO_MANY} - too many semaphores created@*
-@code{@value{RPREFIX}NOT_DEFINED} - invalid attribute set@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid starting count for binary semaphore@*
-@code{@value{RPREFIX}MP_NOT_CONFIGURED} - multiprocessing not configured@*
-@code{@value{RPREFIX}TOO_MANY} - too many global objects
-
-@subheading DESCRIPTION:
-
-This directive creates a semaphore which resides on
-the local node. The created semaphore has the user-defined name
-specified in name and the initial count specified in count. For
-control and maintenance of the semaphore, RTEMS allocates and
-initializes a SMCB. The RTEMS-assigned semaphore id is returned
-in id. This semaphore id is used with other semaphore related
-directives to access the semaphore.
-
-Specifying PRIORITY in attribute_set causes tasks
-waiting for a semaphore to be serviced according to task
-priority. When FIFO is selected, tasks are serviced in First
-In-First Out order.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-The priority inheritance and priority ceiling
-algorithms are only supported for local, binary semaphores that
-use the priority task wait queue blocking discipline.
-
-The following semaphore attribute constants are
-defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}FIFO} - tasks wait by FIFO (default)
-
-@item @code{@value{RPREFIX}PRIORITY} - tasks wait by priority
-
-@item @code{@value{RPREFIX}BINARY_SEMAPHORE} - restrict values to
-0 and 1 (default)
-
-@item @code{@value{RPREFIX}COUNTING_SEMAPHORE} - no restriction on values
-
-@item @code{@value{RPREFIX}NO_INHERIT_PRIORITY} - do not use priority
-inheritance (default)
-
-@item @code{@value{RPREFIX}INHERIT_PRIORITY} - use priority inheritance
-
-@item @code{@value{RPREFIX}PRIORITY_CEILING} - use priority ceiling
-
-@item @code{@value{RPREFIX}NO_PRIORITY_CEILING} - do not use priority
-ceiling (default)
-
-@item @code{@value{RPREFIX}LOCAL} - local task (default)
-
-@item @code{@value{RPREFIX}GLOBAL} - global task
-@end itemize
-
-Semaphores should not be made global unless remote
-tasks must interact with the created semaphore. This is to
-avoid the system overhead incurred by the creation of a global
-semaphore. When a global semaphore is created, the semaphore's
-name and id must be transmitted to every node in the system for
-insertion in the local copy of the global object table.
-
-The total number of global objects, including
-semaphores, is limited by the maximum_global_objects field in
-the Configuration Table.
-
-@page
-@subsection SEMAPHORE_IDENT - Get ID of a semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_semaphore_ident
-@example
-rtems_status_code rtems_semaphore_ident(
- rtems_name name,
- rtems_unsigned32 node,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Semaphore_Ident (
- Name : in RTEMS.Name;
- Node : in RTEMS.Unsigned32;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - semaphore identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - semaphore name not found@*
-@code{@value{RPREFIX}INVALID_NODE} - invalid node id
-
-@subheading DESCRIPTION:
-
-This directive obtains the semaphore id associated
-with the semaphore name. If the semaphore name is not unique,
-then the semaphore id will match one of the semaphores with that
-name. However, this semaphore id is not guaranteed to
-correspond to the desired semaphore. The semaphore id is used
-by other semaphore related directives to access the semaphore.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-If node is @code{@value{RPREFIX}SEARCH_ALL_NODES}, all nodes are searched
-with the local node being searched first. All other nodes are
-searched with the lowest numbered node searched first.
-
-If node is a valid node number which does not
-represent the local node, then only the semaphores exported by
-the designated node are searched.
-
-This directive does not generate activity on remote
-nodes. It accesses only the local copy of the global object
-table.
-
-@page
-@subsection SEMAPHORE_DELETE - Delete a semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_semaphore_delete
-@example
-rtems_status_code rtems_semaphore_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Semaphore_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - semaphore deleted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid semaphore id@*
-@code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - cannot delete remote semaphore@*
-@code{@value{RPREFIX}RESOURCE_IN_USE} - binary semaphore is in use
-
-@subheading DESCRIPTION:
-
-This directive deletes the semaphore specified by id.
-All tasks blocked waiting to acquire the semaphore will be
-readied and returned a status code which indicates that the
-semaphore was deleted. The SMCB for this semaphore is reclaimed
-by RTEMS.
-
-@subheading NOTES:
-
-The calling task will be preempted if it is enabled
-by the task's execution mode and a higher priority local task is
-waiting on the deleted semaphore. The calling task will NOT be
-preempted if all of the tasks that are waiting on the semaphore
-are remote tasks.
-
-The calling task does not have to be the task that
-created the semaphore. Any local task that knows the semaphore
-id can delete the semaphore.
-
-When a global semaphore is deleted, the semaphore id
-must be transmitted to every node in the system for deletion
-from the local copy of the global object table.
-
-The semaphore must reside on the local node, even if
-the semaphore was created with the @code{@value{RPREFIX}GLOBAL} option.
-
-Proxies, used to represent remote tasks, are
-reclaimed when the semaphore is deleted.
-
-@page
-@subsection SEMAPHORE_OBTAIN - Acquire a semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_semaphore_obtain
-@example
-rtems_status_code rtems_semaphore_obtain(
- rtems_id id,
- rtems_unsigned32 option_set,
- rtems_interval timeout
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Semaphore_Obtain (
- ID : in RTEMS.ID;
- Option_Set : in RTEMS.Option;
- Timeout : in RTEMS.Interval;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - semaphore obtained successfully@*
-@code{@value{RPREFIX}UNSATISFIED} - semaphore not available@*
-@code{@value{RPREFIX}TIMEOUT} - timed out waiting for semaphore@*
-@code{@value{RPREFIX}OBJECT_WAS_DELETED} - semaphore deleted while waiting@*
-@code{@value{RPREFIX}INVALID_ID} - invalid semaphore id
-
-@subheading DESCRIPTION:
-
-This directive acquires the semaphore specified by
-id. The @code{@value{RPREFIX}WAIT} and @code{@value{RPREFIX}NO_WAIT} components of the options parameter
-indicate whether the calling task wants to wait for the
-semaphore to become available or return immediately if the
-semaphore is not currently available. With either @code{@value{RPREFIX}WAIT} or
-@code{@value{RPREFIX}NO_WAIT}, if the current semaphore count is positive, then it is
-decremented by one and the semaphore is successfully acquired by
-returning immediately with a successful return code.
-
-If the calling task chooses to return immediately and
-the current semaphore count is zero or negative, then a status
-code is returned indicating that the semaphore is not available.
-If the calling task chooses to wait for a semaphore and the
-current semaphore count is zero or negative, then it is
-decremented by one and the calling task is placed on the
-semaphore's wait queue and blocked. If the semaphore was
-created with the @code{@value{RPREFIX}PRIORITY} attribute, then the calling task is
-inserted into the queue according to its priority. However, if
-the semaphore was created with the @code{@value{RPREFIX}FIFO} attribute, then the
-calling task is placed at the rear of the wait queue. If the
-binary semaphore was created with the @code{@value{RPREFIX}INHERIT_PRIORITY}
-attribute, then the priority of the task currently holding the
-binary semaphore is guaranteed to be greater than or equal to
-that of the blocking task. If the binary semaphore was created
-with the @code{@value{RPREFIX}PRIORITY_CEILING} attribute, a task successfully obtains
-the semaphore, and the priority of that task is greater than the
-ceiling priority for this semaphore, then the priority of the
-task obtaining the semaphore is elevated to that of the ceiling.
-
-The timeout parameter specifies the maximum interval
-the calling task is willing to be blocked waiting for the
-semaphore. If it is set to @code{@value{RPREFIX}NO_TIMEOUT}, then the calling task
-will wait forever. If the semaphore is available or the @code{@value{RPREFIX}NO_WAIT}
-option component is set, then timeout is ignored.
-
-@subheading NOTES:
-The following semaphore acquisition option constants
-are defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}WAIT} - task will wait for semaphore (default)
-@item @code{@value{RPREFIX}NO_WAIT} - task should not wait
-@end itemize
-
-Attempting to obtain a global semaphore which does not reside on
-the local node will generate a request to the remote node to
-access the semaphore. If the semaphore is not available and
-@code{@value{RPREFIX}NO_WAIT} was not specified, then the task must be blocked until
-the semaphore is released. A proxy is allocated on the remote
-node to represent the task until the semaphore is released.
-
-A clock tick is required to support the timeout functionality of
-this directive.
-
-@page
-@subsection SEMAPHORE_RELEASE - Release a semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_semaphore_release
-@example
-rtems_status_code rtems_semaphore_release(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Semaphore_Release (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - semaphore released successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid semaphore id@*
-@code{@value{RPREFIX}NOT_OWNER_OF_RESOURCE} - calling task does not own semaphore
-
-@subheading DESCRIPTION:
-
-This directive releases the semaphore specified by
-id. The semaphore count is incremented by one. If the count is
-zero or negative, then the first task on this semaphore's wait
-queue is removed and unblocked. The unblocked task may preempt
-the running task if the running task's preemption mode is
-enabled and the unblocked task has a higher priority than the
-running task.
-
-@subheading NOTES:
-
-The calling task may be preempted if it causes a
-higher priority task to be made ready for execution.
-
-Releasing a global semaphore which does not reside on
-the local node will generate a request telling the remote node
-to release the semaphore.
-
-If the task to be unblocked resides on a different
-node from the semaphore, then the semaphore allocation is
-forwarded to the appropriate node, the waiting task is
-unblocked, and the proxy used to represent the task is reclaimed.
-
-The outermost release of a local, binary, priority
-inheritance or priority ceiling semaphore may result in the
-calling task having its priority lowered. This will occur if
-the calling task holds no other binary semaphores and it has
-inherited a higher priority.
-
diff --git a/doc/user/signal.t b/doc/user/signal.t
deleted file mode 100644
index c1afa9cfc6..0000000000
--- a/doc/user/signal.t
+++ /dev/null
@@ -1,360 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Signal Manager
-
-@section Introduction
-
-The signal manager provides the capabilities required
-for asynchronous communication. The directives provided by the
-signal manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}signal_catch} - Establish an ASR
-@item @code{@value{DIRPREFIX}signal_send} - Send signal set to a task
-@end itemize
-
-@section Background
-
-@subsection Signal Manager Definitions
-
-The signal manager allows a task to optionally define
-an asynchronous signal routine (ASR). An ASR is to a task what
-an ISR is to an application's set of tasks. When the processor
-is interrupted, the execution of an application is also
-interrupted and an ISR is given control. Similarly, when a
-signal is sent to a task, that task's execution path will be
-"interrupted" by the ASR. Sending a signal to a task has no
-effect on the receiving task's current execution state.
-
-A signal flag is used by a task (or ISR) to inform
-another task of the occurrence of a significant situation.
-Thirty-two signal flags are associated with each task. A
-collection of one or more signals is referred to as a signal
-set. A signal set is posted when it is directed (or sent) to a
-task. A pending signal is a signal that has been sent to a task
-with a valid ASR, but has not been processed by that task's ASR.
-
-
-@subsection A Comparison of ASRs and ISRs
-
-The format of an ASR is similar to that of an ISR
-with the following exceptions:
-
-@itemize @bullet
-@item ISRs are scheduled by the processor hardware. ASRs are
-scheduled by RTEMS.
-
-@item ISRs do not execute in the context of a task and may
-invoke only a subset of directives. ASRs execute in the context
-of a task and may execute any directive.
-
-@item When an ISR is invoked, it is passed the vector number
-as its argument. When an ASR is invoked, it is passed the
-signal set as its argument.
-
-@item An ASR has a task mode which can be different from that
-of the task. An ISR does not execute as a task and, as a
-result, does not have a task mode.
-@end itemize
-
-@subsection Building a Signal Set
-
-A signal set is built by a bitwise OR of the desired
-signals. The set of valid signals is @code{@value{RPREFIX}SIGNAL_0} through
-@code{@value{RPREFIX}SIGNAL_31}. If a signal is not explicitly specified in the
-signal set, then it is not present. Signal values are
-specifically designed to be mutually exclusive, therefore
-bitwise OR and addition operations are equivalent as long as
-each signal appears exactly once in the component list.
-
-This example demonstrates the signal parameter used
-when sending the signal set consisting of
-@code{@value{RPREFIX}SIGNAL_6},
-@code{@value{RPREFIX}SIGNAL_15}, and
-@code{@value{RPREFIX}SIGNAL_31}. The signal parameter provided
-to the @code{@value{DIRPREFIX}signal_send} directive should be
-@code{@value{RPREFIX}SIGNAL_6 @value{OR}
-@value{RPREFIX}SIGNAL_15 @value{OR} @value{RPREFIX}SIGNAL_31}.
-
-@subsection Building an ASR's Mode
-
-In general, an ASR's mode is built by a bitwise OR of
-the desired mode components. The set of valid mode components
-is the same as those allowed with the task_create and task_mode
-directives. A complete list of mode options is provided in the
-following table:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and enables preemption
-
-@item @code{@value{RPREFIX}NO_PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and disables preemption
-
-@item @code{@value{RPREFIX}NO_TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and disables timeslicing
-
-@item @code{@value{RPREFIX}TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and enables timeslicing
-
-@item @code{@value{RPREFIX}ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and enables ASR processing
-
-@item @code{@value{RPREFIX}NO_ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and disables ASR processing
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and enables all interrupts
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and sets interrupts level n
-@end itemize
-
-Mode values are specifically designed to be mutually
-exclusive, therefore bitwise OR and addition operations are
-equivalent as long as each mode appears exactly once in the
-component list. A mode component listed as a default is not
-required to appear in the mode list, although it is a good
-programming practice to specify default components. If all
-defaults are desired, the mode DEFAULT_MODES should be specified
-on this call.
-
-This example demonstrates the mode parameter used
-with the @code{@value{DIRPREFIX}signal_catch}
-to establish an ASR which executes at
-interrupt level three and is non-preemptible. The mode should
-be set to
-@code{@value{RPREFIX}INTERRUPT_LEVEL(3) @value{OR} @value{RPREFIX}NO_PREEMPT}
-to indicate the
-desired processor mode and interrupt level.
-
-@section Operations
-
-@subsection Establishing an ASR
-
-The @code{@value{DIRPREFIX}signal_catch} directive establishes an ASR for the
-calling task. The address of the ASR and its execution mode are
-specified to this directive. The ASR's mode is distinct from
-the task's mode. For example, the task may allow preemption,
-while that task's ASR may have preemption disabled. Until a
-task calls @code{@value{DIRPREFIX}signal_catch} the first time,
-its ASR is invalid, and no signal sets can be sent to the task.
-
-A task may invalidate its ASR and discard all pending
-signals by calling @code{@value{DIRPREFIX}signal_catch}
-with a value of NULL for the ASR's address. When a task's
-ASR is invalid, new signal sets sent to this task are discarded.
-
-A task may disable ASR processing (@code{@value{RPREFIX}NO_ASR}) via the
-task_mode directive. When a task's ASR is disabled, the signals
-sent to it are left pending to be processed later when the ASR
-is enabled.
-
-Any directive that can be called from a task can also
-be called from an ASR. A task is only allowed one active ASR.
-Thus, each call to @code{@value{DIRPREFIX}signal_catch}
-replaces the previous one.
-
-Normally, signal processing is disabled for the ASR's
-execution mode, but if signal processing is enabled for the ASR,
-the ASR must be reentrant.
-
-@subsection Sending a Signal Set
-
-The @code{@value{DIRPREFIX}signal_send} directive allows both
-tasks and ISRs to send signals to a target task. The target task and
-a set of signals are specified to the
-@code{@value{DIRPREFIX}signal_send} directive. The sending
-of a signal to a task has no effect on the execution state of
-that task. If the task is not the currently running task, then
-the signals are left pending and processed by the task's ASR the
-next time the task is dispatched to run. The ASR is executed
-immediately before the task is dispatched. If the currently
-running task sends a signal to itself or is sent a signal from
-an ISR, its ASR is immediately dispatched to run provided signal
-processing is enabled.
-
-If an ASR with signals enabled is preempted by
-another task or an ISR and a new signal set is sent, then a new
-copy of the ASR will be invoked, nesting the preempted ASR.
-Upon completion of processing the new signal set, control will
-return to the preempted ASR. In this situation, the ASR must be
-reentrant.
-
-Like events, identical signals sent to a task are not
-queued. In other words, sending the same signal multiple times
-to a task (without any intermediate signal processing occurring
-for the task), has the same result as sending that signal to
-that task once.
-
-@subsection Processing an ASR
-
-Asynchronous signals were designed to provide the
-capability to generate software interrupts. The processing of
-software interrupts parallels that of hardware interrupts. As a
-result, the differences between the formats of ASRs and ISRs is
-limited to the meaning of the single argument passed to an ASR.
-The ASR should have the following calling sequence and adhere to
-@value{LANGUAGE} calling conventions:
-
-@ifset is-C
-@example
-rtems_asr user_routine(
- rtems_signal_set signals
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Routine (
- Signals : in RTEMS.Signal_Set
-);
-@end example
-@end ifset
-
-When the ASR returns to RTEMS the mode and execution
-path of the interrupted task (or ASR) is restored to the context
-prior to entering the ASR.
-
-@section Directives
-
-This section details the signal manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection SIGNAL_CATCH - Establish an ASR
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_signal_catch
-@example
-rtems_status_code rtems_signal_catch(
- rtems_asr_entry asr_handler,
- rtems_mode mode
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Signal_Catch (
- ASR_Handler : in RTEMS.ASR_Handler;
- Mode_Set : in RTEMS.Mode;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - always successful
-
-@subheading DESCRIPTION:
-
-This directive establishes an asynchronous signal
-routine (ASR) for the calling task. The asr_handler parameter
-specifies the entry point of the ASR. If asr_handler is NULL,
-the ASR for the calling task is invalidated and all pending
-signals are cleared. Any signals sent to a task with an invalid
-ASR are discarded. The mode parameter specifies the execution
-mode for the ASR. This execution mode supersedes the task's
-execution mode while the ASR is executing.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-The following task mode constants are defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and enables preemption
-
-@item @code{@value{RPREFIX}NO_PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and disables preemption
-
-@item @code{@value{RPREFIX}NO_TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and disables timeslicing
-
-@item @code{@value{RPREFIX}TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and enables timeslicing
-
-@item @code{@value{RPREFIX}ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and enables ASR processing
-
-@item @code{@value{RPREFIX}NO_ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and disables ASR processing
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and enables all interrupts
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and sets interrupts level n
-@end itemize
-
-@page
-@subsection SIGNAL_SEND - Send signal set to a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_signal_send
-@example
-rtems_status_code rtems_signal_send(
- rtems_id id,
- rtems_signal_set signal_set
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Signal_Send (
- ID : in RTEMS.ID;
- Signal_Set : in RTEMS.Signal_Set;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - signal sent successfully@*
-@code{@value{RPREFIX}INVALID_ID} - task id invalid@*
-@code{@value{RPREFIX}NOT_DEFINED} - ASR invalid
-
-@subheading DESCRIPTION:
-
-This directive sends a signal set to the task
-specified in id. The signal_set parameter contains the signal
-set to be sent to the task.
-
-If a caller sends a signal set to a task with an
-invalid ASR, then an error code is returned to the caller. If a
-caller sends a signal set to a task whose ASR is valid but
-disabled, then the signal set will be caught and left pending
-for the ASR to process when it is enabled. If a caller sends a
-signal set to a task with an ASR that is both valid and enabled,
-then the signal set is caught and the ASR will execute the next
-time the task is dispatched to run.
-
-@subheading NOTES:
-
-Sending a signal set to a task has no effect on that
-task's state. If a signal set is sent to a blocked task, then
-the task will remain blocked and the signals will be processed
-when the task becomes the running task.
-
-Sending a signal set to a global task which does not
-reside on the local node will generate a request telling the
-remote node to send the signal set to the specified task.
-
diff --git a/doc/user/states.gif b/doc/user/states.gif
deleted file mode 100644
index cd0799ea2e..0000000000
--- a/doc/user/states.gif
+++ /dev/null
Binary files differ
diff --git a/doc/user/task.t b/doc/user/task.t
deleted file mode 100644
index eaf8821321..0000000000
--- a/doc/user/task.t
+++ /dev/null
@@ -1,1440 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Task Manager
-
-@section Introduction
-
-The task manager provides a comprehensive set of directives to
-create, delete, and administer tasks. The directives provided
-by the task manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}task_create} - Create a task
-@item @code{@value{DIRPREFIX}task_ident} - Get ID of a task
-@item @code{@value{DIRPREFIX}task_start} - Start a task
-@item @code{@value{DIRPREFIX}task_restart} - Restart a task
-@item @code{@value{DIRPREFIX}task_delete} - Delete a task
-@item @code{@value{DIRPREFIX}task_suspend} - Suspend a task
-@item @code{@value{DIRPREFIX}task_resume} - Resume a task
-@item @code{@value{DIRPREFIX}task_set_priority} - Set task priority
-@item @code{@value{DIRPREFIX}task_mode} - Change current task's mode
-@item @code{@value{DIRPREFIX}task_get_note} - Get task notepad entry
-@item @code{@value{DIRPREFIX}task_set_note} - Set task notepad entry
-@item @code{@value{DIRPREFIX}task_wake_after} - Wake up after interval
-@item @code{@value{DIRPREFIX}task_wake_when} - Wake up when specified
-@end itemize
-
-@section Background
-
-@subsection Task Definition
-
-Many definitions of a task have been proposed in computer literature.
-Unfortunately, none of these definitions encompasses all facets of the
-concept in a manner which is operating system independent. Several of the
-more common definitions are provided to enable each user to select a
-definition which best matches their own experience and understanding of the
-task concept:
-
-@itemize @bullet
-@item a "dispatchable" unit.
-
-@item an entity to which the processor is allocated.
-
-@item an atomic unit of a real-time, multiprocessor system.
-
-@item single threads of execution which concurrently compete for resources.
-
-@item a sequence of closely related computations which can execute
-concurrently with other computational sequences.
-
-@end itemize
-
-From RTEMS' perspective, a task is the smallest thread of
-execution which can compete on its own for system resources. A
-task is manifested by the existence of a task control block
-(TCB).
-
-@subsection Task Control Block
-
-The Task Control Block (TCB) is an RTEMS defined data structure
-which contains all the information that is pertinent to the
-execution of a task. During system initialization, RTEMS
-reserves a TCB for each task configured. A TCB is allocated
-upon creation of the task and is returned to the TCB free list
-upon deletion of the task.
-
-The TCB's elements are modified as a result of system calls made
-by the application in response to external and internal stimuli.
-TCBs are the only RTEMS internal data structure that can be
-accessed by an application via user extension routines. The TCB
-contains a task's name, ID, current priority, current and
-starting states, execution mode, set of notepad locations, TCB
-user extension pointer, scheduling control structures, as well
-as data required by a blocked task.
-
-A task's context is stored in the TCB when a task switch occurs.
-When the task regains control of the processor, its context is
-restored from the TCB. When a task is restarted, the initial
-state of the task is restored from the starting context area in
-the task's TCB.
-
-@subsection Task States
-
-A task may exist in one of the following five states:
-
-@itemize @bullet
-@item @b{executing} - Currently scheduled to the CPU
-@item @b{ready} - May be scheduled to the CPU
-@item @b{blocked} - Unable to be scheduled to the CPU
-@item @b{dormant} - Created task that is not started
-@item @b{non-existent} - Uncreated or deleted task
-@end itemize
-
-An active task may occupy the executing, ready, blocked or
-dormant state, otherwise the task is considered non-existent.
-One or more tasks may be active in the system simultaneously.
-Multiple tasks communicate, synchronize, and compete for system
-resources with each other via system calls. The multiple tasks
-appear to execute in parallel, but actually each is dispatched
-to the CPU for periods of time determined by the RTEMS
-scheduling algorithm. The scheduling of a task is based on its
-current state and priority.
-
-@subsection Task Priority
-
-A task's priority determines its importance in relation to the
-other tasks executing on the same processor. RTEMS supports 255
-levels of priority ranging from 1 to 255. Tasks of numerically
-smaller priority values are more important tasks than tasks of
-numerically larger priority values. For example, a task at
-priority level 5 is of higher privilege than a task at priority
-level 10. There is no limit to the number of tasks assigned to
-the same priority.
-
-Each task has a priority associated with it at all times. The
-initial value of this priority is assigned at task creation
-time. The priority of a task may be changed at any subsequent
-time.
-
-Priorities are used by the scheduler to determine which ready
-task will be allowed to execute. In general, the higher the
-logical priority of a task, the more likely it is to receive
-processor execution time.
-
-@subsection Task Mode
-
-A task's mode is a combination of the following four components:
-
-@itemize @bullet
-@item preemption
-@item ASR processing
-@item timeslicing
-@item interrupt level
-@end itemize
-
-It is used to modify RTEMS' scheduling process and to alter the
-execution environment of the task.
-
-The preemption component allows a task to determine when control of the
-processor is relinquished. If preemption is disabled
-(@code{@value{RPREFIX}NO_PREEMPT}), the task will retain control of the
-processor as long as it is in the executing state -- even if a higher
-priority task is made ready. If preemption is enabled
-(@code{@value{RPREFIX}PREEMPT}) and a higher priority task is made ready,
-then the processor will be taken away from the current task immediately and
-given to the higher priority task.
-
-The timeslicing component is used by the RTEMS scheduler to determine how
-the processor is allocated to tasks of equal priority. If timeslicing is
-enabled (@code{@value{RPREFIX}TIMESLICE}), then RTEMS will limit the amount
-of time the task can execute before the processor is allocated to another
-ready task of equal priority. The length of the timeslice is application
-dependent and specified in the Configuration Table. If timeslicing is
-disabled (@code{@value{RPREFIX}NO_TIMESLICE}), then the task will be
-allowed to execute until a task of higher priority is made ready. If
-@code{@value{RPREFIX}NO_PREEMPT} is selected, then the timeslicing
-component is ignored by the scheduler.
-
-The asynchronous signal processing component is used to determine when
-received signals are to be processed by the task.
-If signal processing is enabled (@code{@value{RPREFIX}ASR}), then signals
-sent to the task will be processed the next time the task executes. If
-signal processing is disabled (@code{@value{RPREFIX}NO_ASR}), then all
-signals received by the task will remain posted until signal processing is
-enabled. This component affects only tasks which have established a
-routine to process asynchronous signals.
-
-The interrupt level component is used to determine which
-interrupts will be enabled when the task is executing.
-@code{@value{RPREFIX}INTERRUPT_LEVEL(n)}
-specifies that the task will execute at interrupt level n.
-
-@itemize @bullet
-@item @code{@value{RPREFIX}PREEMPT} - enable preemption (default)
-@item @code{@value{RPREFIX}NO_PREEMPT} - disable preemption
-@item @code{@value{RPREFIX}NO_TIMESLICE} - disable timeslicing (default)
-@item @code{@value{RPREFIX}TIMESLICE} - enable timeslicing
-@item @code{@value{RPREFIX}ASR} - enable ASR processing (default)
-@item @code{@value{RPREFIX}NO_ASR} - disable ASR processing
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} - enable all interrupts (default)
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} - execute at interrupt level n
-@end itemize
-
-@subsection Accessing Task Arguments
-
-All RTEMS tasks are invoked with a single argument which is
-specified when they are started or restarted. The argument is
-commonly used to communicate startup information to the task.
-The simplest manner in which to define a task which accesses it
-argument is:
-
-@ifset is-C
-@example
-rtems_task user_task(
- rtems_task_argument argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task (
- Argument : in RTEMS.Task_Argument_Ptr
-);
-@end example
-@end ifset
-
-Application tasks requiring more information may view this
-single argument as an index into an array of parameter blocks.
-
-@subsection Floating Point Considerations
-
-Creating a task with the @code{@value{RPREFIX}FLOATING_POINT} flag results
-in additional memory being allocated for the TCB to store the state of the
-numeric coprocessor during task switches. This additional memory is
-@b{NOT} allocated for @code{@value{RPREFIX}NO_FLOATING_POINT} tasks. Saving
-and restoring the context of a @code{@value{RPREFIX}FLOATING_POINT} task
-takes longer than that of a @code{@value{RPREFIX}NO_FLOATING_POINT} task
-because of the relatively large amount of time required for the numeric
-coprocessor to save or restore its computational state.
-
-Since RTEMS was designed specifically for embedded military applications
-which are floating point intensive, the executive is optimized to avoid
-unnecessarily saving and restoring the state of the numeric coprocessor.
-The state of the numeric coprocessor is only saved when a
-@code{@value{RPREFIX}FLOATING_POINT} task is dispatched and that task was
-not the last task to utilize the coprocessor. In a system with only one
-@code{@value{RPREFIX}FLOATING_POINT} task, the state of the numeric
-coprocessor will never be saved or restored.
-
-Although the overhead imposed by @code{@value{RPREFIX}FLOATING_POINT} tasks
-is minimal, some applications may wish to completely avoid the overhead
-associated with @code{@value{RPREFIX}FLOATING_POINT} tasks and still
-utilize a numeric coprocessor. By preventing a task from being preempted
-while performing a sequence of floating point operations, a
-@code{@value{RPREFIX}NO_FLOATING_POINT} task can utilize the numeric
-coprocessor without incurring the overhead of a
-@code{@value{RPREFIX}FLOATING_POINT} context switch. This approach also
-avoids the allocation of a floating point context area. However, if this
-approach is taken by the application designer, NO tasks should be created
-as @code{@value{RPREFIX}FLOATING_POINT} tasks. Otherwise, the floating
-point context will not be correctly maintained because RTEMS assumes that
-the state of the numeric coprocessor will not be altered by
-@code{@value{RPREFIX}NO_FLOATING_POINT} tasks.
-
-If the supported processor type does not have hardware floating
-capabilities or a standard numeric coprocessor, RTEMS will not provide
-built-in support for hardware floating point on that processor. In this
-case, all tasks are considered @code{@value{RPREFIX}NO_FLOATING_POINT}
-whether created as @code{@value{RPREFIX}FLOATING_POINT} or
-@code{@value{RPREFIX}NO_FLOATING_POINT} tasks. A floating point emulation
-software library must be utilized for floating point operations.
-
-On some processors, it is possible to disable the floating point unit
-dynamically. If this capability is supported by the target processor, then
-RTEMS will utilize this capability to enable the floating point unit only
-for tasks which are created with the @code{@value{RPREFIX}FLOATING_POINT}
-attribute. The consequence of a @code{@value{RPREFIX}NO_FLOATING_POINT}
-task attempting to access the floating point unit is CPU dependent but will
-generally result in an exception condition.
-
-@subsection Building a Task's Attribute Set
-
-In general, an attribute set is built by a bitwise OR of the
-desired components. The set of valid task attribute components
-is listed below:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}NO_FLOATING_POINT} - does not use coprocessor (default)
-@item @code{@value{RPREFIX}FLOATING_POINT} - uses numeric coprocessor
-@item @code{@value{RPREFIX}LOCAL} - local task (default)
-@item @code{@value{RPREFIX}GLOBAL} - global task
-@end itemize
-
-Attribute values are specifically designed to be mutually
-exclusive, therefore bitwise OR and addition operations are
-equivalent as long as each attribute appears exactly once in the
-component list. A component listed as a default is not required
-to appear in the component list, although it is a good
-programming practice to specify default components. If all
-defaults are desired, then @code{@value{RPREFIX}DEFAULT_ATTRIBUTES} should be used.
-
-This example demonstrates the attribute_set parameter needed to
-create a local task which utilizes the numeric coprocessor. The
-attribute_set parameter could be @code{@value{RPREFIX}FLOATING_POINT} or
-@code{@value{RPREFIX}LOCAL @value{OR} @value{RPREFIX}FLOATING_POINT}.
-The attribute_set parameter can be set to
-@code{@value{RPREFIX}FLOATING_POINT} because @code{@value{RPREFIX}LOCAL} is the default for all created
-tasks. If the task were global and used the numeric
-coprocessor, then the attribute_set parameter would be
-@code{@value{RPREFIX}GLOBAL @value{OR} @value{RPREFIX}FLOATING_POINT}.
-
-@subsection Building a Mode and Mask
-
-In general, a mode and its corresponding mask is built by a
-bitwise OR of the desired components. The set of valid mode
-constants and each mode's corresponding mask constant is
-listed below:
-
-@ifset use-ascii
-@itemize @bullet
-@item @code{@value{RPREFIX}PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and enables preemption
-
-@item @code{@value{RPREFIX}NO_PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and disables preemption
-
-@item @code{@value{RPREFIX}NO_TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and disables timeslicing
-
-@item @code{@value{RPREFIX}TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and enables timeslicing
-
-@item @code{@value{RPREFIX}ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and enables ASR processing
-
-@item @code{@value{RPREFIX}NO_ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and disables ASR processing
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and enables all interrupts
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and sets interrupts level n
-@end itemize
-@end ifset
-
-@ifset use-tex
-@sp 1
-@c this is temporary
-@itemize @bullet
-@item @code{@value{RPREFIX}PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and enables preemption
-
-@item @code{@value{RPREFIX}NO_PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and disables preemption
-
-@item @code{@value{RPREFIX}NO_TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and disables timeslicing
-
-@item @code{@value{RPREFIX}TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and enables timeslicing
-
-@item @code{@value{RPREFIX}ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and enables ASR processing
-
-@item @code{@value{RPREFIX}NO_ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and disables ASR processing
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and enables all interrupts
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and sets interrupts level n
-
-@end itemize
-
-@tex
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=3 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Mode Constant</STRONG></TD>
- <TD ALIGN=center><STRONG>Mask Constant</STRONG></TD>
- <TD ALIGN=center><STRONG>Description</STRONG></TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}PREEMPT</TD>
- <TD ALIGN=center>@value{RPREFIX}PREEMPT_MASK</TD>
- <TD ALIGN=center>enables preemption</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}NO_PREEMPT</TD>
- <TD ALIGN=center>@value{RPREFIX}PREEMPT_MASK</TD>
- <TD ALIGN=center>disables preemption</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}NO_TIMESLICE</TD>
- <TD ALIGN=center>@value{RPREFIX}TIMESLICE_MASK</TD>
- <TD ALIGN=center>disables timeslicing</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}TIMESLICE</TD>
- <TD ALIGN=center>@value{RPREFIX}TIMESLICE_MASK</TD>
- <TD ALIGN=center>enables timeslicing</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}ASR</TD>
- <TD ALIGN=center>@value{RPREFIX}ASR_MASK</TD>
- <TD ALIGN=center>enables ASR processing</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}NO_ASR</TD>
- <TD ALIGN=center>@value{RPREFIX}ASR_MASK</TD>
- <TD ALIGN=center>disables ASR processing</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}INTERRUPT_LEVEL(0)</TD>
- <TD ALIGN=center>@value{RPREFIX}INTERRUPT_MASK</TD>
- <TD ALIGN=center>enables all interrupts</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}INTERRUPT_LEVEL(n)</TD>
- <TD ALIGN=center>@value{RPREFIX}INTERRUPT_MASK</TD>
- <TD ALIGN=center>sets interrupts level n</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-Mode values are specifically designed to be mutually exclusive, therefore
-bitwise OR and addition operations are equivalent as long as each mode
-appears exactly once in the component list. A mode component listed as a
-default is not required to appear in the mode component list, although it
-is a good programming practice to specify default components. If all
-defaults are desired, the mode @code{@value{RPREFIX}DEFAULT_MODES} and the
-mask @code{@value{RPREFIX}ALL_MODE_MASKS} should be used.
-
-The following example demonstrates the mode and mask parameters used with
-the @code{@value{DIRPREFIX}task_mode}
-directive to place a task at interrupt level 3 and make it
-non-preemptible. The mode should be set to
-@code{@value{RPREFIX}INTERRUPT_LEVEL(3) @value{OR}
-@value{RPREFIX}NO_PREEMPT} to indicate the desired preemption mode and
-interrupt level, while the mask parameter should be set to
-@code{@value{RPREFIX}INTERRUPT_MASK @value{OR}
-@value{RPREFIX}NO_PREEMPT_MASK} to indicate that the calling task's
-interrupt level and preemption mode are being altered.
-
-@section Operations
-
-@subsection Creating Tasks
-
-The @code{@value{DIRPREFIX}task_create}
-directive creates a task by allocating a task
-control block, assigning the task a user-specified name,
-allocating it a stack and floating point context area, setting a
-user-specified initial priority, setting a user-specified
-initial mode, and assigning it a task ID. Newly created tasks
-are initially placed in the dormant state. All RTEMS tasks
-execute in the most privileged mode of the processor.
-
-@subsection Obtaining Task IDs
-
-When a task is created, RTEMS generates a unique task ID and
-assigns it to the created task until it is deleted. The task ID
-may be obtained by either of two methods. First, as the result
-of an invocation of the @code{@value{DIRPREFIX}task_create}
-directive, the task ID is
-stored in a user provided location. Second, the task ID may be
-obtained later using the @code{@value{DIRPREFIX}task_ident}
-directive. The task ID is
-used by other directives to manipulate this task.
-
-@subsection Starting and Restarting Tasks
-
-The @code{@value{DIRPREFIX}task_start}
-directive is used to place a dormant task in the
-ready state. This enables the task to compete, based on its
-current priority, for the processor and other system resources.
-Any actions, such as suspension or change of priority, performed
-on a task prior to starting it are nullified when the task is
-started.
-
-With the @code{@value{DIRPREFIX}task_start}
-directive the user specifies the task's
-starting address and argument. The argument is used to
-communicate some startup information to the task. As part of
-this directive, RTEMS initializes the task's stack based upon
-the task's initial execution mode and start address. The
-starting argument is passed to the task in accordance with the
-target processor's calling convention.
-
-The @code{@value{DIRPREFIX}task_restart}
-directive restarts a task at its initial
-starting address with its original priority and execution mode,
-but with a possibly different argument. The new argument may be
-used to distinguish between the original invocation of the task
-and subsequent invocations. The task's stack and control block
-are modified to reflect their original creation values.
-Although references to resources that have been requested are
-cleared, resources allocated by the task are NOT automatically
-returned to RTEMS. A task cannot be restarted unless it has
-previously been started (i.e. dormant tasks cannot be
-restarted). All restarted tasks are placed in the ready state.
-
-@subsection Suspending and Resuming Tasks
-
-The @code{@value{DIRPREFIX}task_suspend}
-directive is used to place either the caller or
-another task into a suspended state. The task remains suspended
-until a @code{@value{DIRPREFIX}task_resume}
-directive is issued. This implies that a
-task may be suspended as well as blocked waiting either to
-acquire a resource or for the expiration of a timer.
-
-The @code{@value{DIRPREFIX}task_resume}
-directive is used to remove another task from
-the suspended state. If the task is not also blocked, resuming
-it will place it in the ready state, allowing it to once again
-compete for the processor and resources. If the task was
-blocked as well as suspended, this directive clears the
-suspension and leaves the task in the blocked state.
-
-Suspending a task which is already suspended or resuming a
-task which is not suspended is considered an error.
-
-@subsection Delaying the Currently Executing Task
-
-The @code{@value{DIRPREFIX}task_wake_after} directive creates a sleep timer
-which allows a task to go to sleep for a specified interval. The task is
-blocked until the delay interval has elapsed, at which time the task is
-unblocked. A task calling the @code{@value{DIRPREFIX}task_wake_after}
-directive with a delay
-interval of @code{@value{RPREFIX}YIELD_PROCESSOR} ticks will yield the
-processor to any other ready task of equal or greater priority and remain
-ready to execute.
-
-The @code{@value{DIRPREFIX}task_wake_when}
-directive creates a sleep timer which allows
-a task to go to sleep until a specified date and time. The
-calling task is blocked until the specified date and time has
-occurred, at which time the task is unblocked.
-
-@subsection Changing Task Priority
-
-The @code{@value{DIRPREFIX}task_set_priority}
-directive is used to obtain or change the
-current priority of either the calling task or another task. If
-the new priority requested is
-@code{@value{RPREFIX}CURRENT_PRIORITY} or the task's
-actual priority, then the current priority will be returned and
-the task's priority will remain unchanged. If the task's
-priority is altered, then the task will be scheduled according
-to its new priority.
-
-The @code{@value{DIRPREFIX}task_restart}
-directive resets the priority of a task to its
-original value.
-
-@subsection Changing Task Mode
-
-The @code{@value{DIRPREFIX}task_mode}
-directive is used to obtain or change the current
-execution mode of the calling task. A task's execution mode is
-used to enable preemption, timeslicing, ASR processing, and to
-set the task's interrupt level.
-
-The @code{@value{DIRPREFIX}task_restart}
-directive resets the mode of a task to its
-original value.
-
-@subsection Notepad Locations
-
-RTEMS provides sixteen notepad locations for each task. Each
-notepad location may contain a note consisting of four bytes of
-information. RTEMS provides two directives,
-@code{@value{DIRPREFIX}task_set_note} and
-@code{@value{DIRPREFIX}task_get_note}, that enable a user
-to access and change the
-notepad locations. The @code{@value{DIRPREFIX}task_set_note}
-directive enables the user
-to set a task's notepad entry to a specified note. The
-@code{@value{DIRPREFIX}task_get_note}
-directive allows the user to obtain the note
-contained in any one of the sixteen notepads of a specified task.
-
-@subsection Task Deletion
-
-RTEMS provides the @code{@value{DIRPREFIX}task_delete}
-directive to allow a task to
-delete itself or any other task. This directive removes all
-RTEMS references to the task, frees the task's control block,
-removes it from resource wait queues, and deallocates its stack
-as well as the optional floating point context. The task's name
-and ID become inactive at this time, and any subsequent
-references to either of them is invalid. In fact, RTEMS may
-reuse the task ID for another task which is created later in the
-application.
-
-Unexpired delay timers (i.e. those used by
-@code{@value{DIRPREFIX}task_wake_after} and
-@code{@value{DIRPREFIX}task_wake_when}) and
-timeout timers associated with the task are
-automatically deleted, however, other resources dynamically
-allocated by the task are NOT automatically returned to RTEMS.
-Therefore, before a task is deleted, all of its dynamically
-allocated resources should be deallocated by the user. This may
-be accomplished by instructing the task to delete itself rather
-than directly deleting the task. Other tasks may instruct a
-task to delete itself by sending a "delete self" message, event,
-or signal, or by restarting the task with special arguments
-which instruct the task to delete itself.
-
-@section Directives
-
-This section details the task manager's directives. A
-subsection is dedicated to each of this manager's directives and
-describes the calling sequence, related constants, usage, and
-status codes.
-
-@page
-
-@subsection TASK_CREATE - Create a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_create
-@example
-rtems_status_code rtems_task_create(
- rtems_name name,
- rtems_task_priority initial_priority,
- rtems_unsigned32 stack_size,
- rtems_mode initial_modes,
- rtems_attribute attribute_set,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Create (
- Name : in RTEMS.Name;
- Initial_Priority : in RTEMS.Task_Priority;
- Stack_Size : in RTEMS.Unsigned32;
- Initial_Modes : in RTEMS.Mode;
- Attribute_Set : in RTEMS.Attribute;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
-@code{@value{RPREFIX}INVALID_SIZE} - stack too small@*
-@code{@value{RPREFIX}INVALID_PRIORITY} - invalid task priority@*
-@code{@value{RPREFIX}MP_NOT_CONFIGURED} - multiprocessing not configured@*
-@code{@value{RPREFIX}TOO_MANY} - too many tasks created@*
-@code{@value{RPREFIX}UNSATISFIED} - not enough memory for stack/FP context@*
-@code{@value{RPREFIX}TOO_MANY} - too many global objects
-
-@subheading DESCRIPTION:
-This directive creates a task which resides on the local node.
-It allocates and initializes a TCB, a stack, and an optional
-floating point context area. The mode parameter contains values
-which sets the task's initial execution mode. The
-@code{@value{RPREFIX}FLOATING_POINT} attribute should be
-specified if the created task
-is to use a numeric coprocessor. For performance reasons, it is
-recommended that tasks not using the numeric coprocessor should
-specify the @code{@value{RPREFIX}NO_FLOATING_POINT} attribute.
-If the @code{@value{RPREFIX}GLOBAL}
-attribute is specified, the task can be accessed from remote
-nodes. The task id, returned in id, is used in other task
-related directives to access the task. When created, a task is
-placed in the dormant state and can only be made ready to
-execute using the directive @code{@value{DIRPREFIX}task_start}.
-
-@subheading NOTES:
-This directive will not cause the calling task to be preempted.
-
-Valid task priorities range from a high of 1 to a low of 255.
-
-RTEMS supports a maximum of 256 interrupt levels which are
-mapped onto the interrupt levels actually supported by the
-target processor.
-
-The requested stack size should be at least
-@code{@value{RPREFIX}MINIMUM_STACK_SIZE}
-bytes. The value of @code{@value{RPREFIX}MINIMUM_STACK_SIZE}
-is processor dependent.
-Application developers should consider the stack usage of the
-device drivers when calculating the stack size required for
-tasks which utilize the driver.
-
-The following task attribute constants are defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}NO_FLOATING_POINT} - does not use coprocessor (default)
-@item @code{@value{RPREFIX}FLOATING_POINT} - uses numeric coprocessor
-@item @code{@value{RPREFIX}LOCAL} - local task (default)
-@item @code{@value{RPREFIX}GLOBAL} - global task
-@end itemize
-
-The following task mode constants are defined by RTEMS:
-
-@itemize @bullet
-@item @code{@value{RPREFIX}PREEMPT} - enable preemption (default)
-@item @code{@value{RPREFIX}NO_PREEMPT} - disable preemption
-@item @code{@value{RPREFIX}NO_TIMESLICE} - disable timeslicing (default)
-@item @code{@value{RPREFIX}TIMESLICE} - enable timeslicing
-@item @code{@value{RPREFIX}ASR} - enable ASR processing (default)
-@item @code{@value{RPREFIX}NO_ASR} - disable ASR processing
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} - enable all interrupts (default)
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} - execute at interrupt level n
-@end itemize
-
-Tasks should not be made global unless remote tasks must
-interact with them. This avoids the system overhead incurred by
-the creation of a global task. When a global task is created,
-the task's name and id must be transmitted to every node in the
-system for insertion in the local copy of the global object
-table.
-
-The total number of global objects, including tasks, is limited
-by the maximum_global_objects field in the Configuration Table.
-
-@page
-
-@subsection TASK_IDENT - Get ID of a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_ident
-@example
-rtems_status_code rtems_task_ident(
- rtems_name name,
- rtems_unsigned32 node,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Ident (
- Name : in RTEMS.Name;
- Node : in RTEMS.Node;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
-@code{@value{RPREFIX}INVALID_NODE} - invalid node id
-
-@subheading DESCRIPTION:
-This directive obtains the task id associated with the task name
-specified in name. A task may obtain its own id by specifying
-@code{@value{RPREFIX}SELF} or its own task name in name. If the task name is not
-unique, then the task id returned will match one of the tasks
-with that name. However, this task id is not guaranteed to
-correspond to the desired task. The task id, returned in id, is
-used in other task related directives to access the task.
-
-@subheading NOTES:
-This directive will not cause the running task to be preempted.
-
-If node is @code{@value{RPREFIX}SEARCH_ALL_NODES}, all nodes are searched with the
-local node being searched first. All other nodes are searched
-with the lowest numbered node searched first.
-
-If node is a valid node number which does not represent the
-local node, then only the tasks exported by the designated node
-are searched.
-
-This directive does not generate activity on remote nodes. It
-accesses only the local copy of the global object table.
-
-@page
-
-@subsection TASK_START - Start a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_start
-@example
-rtems_status_code rtems_task_start(
- rtems_id id,
- rtems_task_entry entry_point,
- rtems_task_argument argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Start (
- ID : in RTEMS.ID;
- Entry_Point : in System.Address;
- Argument : in RTEMS.Task_Argument_PTR;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - ask started successfully@*
-@code{@value{RPREFIX}INVALID_ADDRESS} - invalid task entry point@*
-@code{@value{RPREFIX}INVALID_ID} - invalid task id@*
-@code{@value{RPREFIX}INCORRECT_STATE} - task not in the dormant state@*
-@code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - cannot start remote task
-
-@subheading DESCRIPTION:
-This directive readies the task, specified by tid, for execution
-based on the priority and execution mode specified when the task
-was created. The starting address of the task is given in
-entry_point. The task's starting argument is contained in
-argument. This argument can be a single value or used as an
-index into an array of parameter blocks.
-
-@subheading NOTES:
-The calling task will be preempted if its preemption mode is
-enabled and the task being started has a higher priority.
-
-Any actions performed on a dormant task such as suspension or
-change of priority are nullified when the task is initiated via
-the @code{@value{DIRPREFIX}task_start} directive.
-
-@page
-
-@subsection TASK_RESTART - Restart a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_restart
-@example
-rtems_status_code rtems_task_restart(
- rtems_id id,
- rtems_task_argument argument
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Restart (
- ID : in RTEMS.ID;
- Argument : in RTEMS.Task_Argument_PTR;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task restarted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - task id invalid@*
-@code{@value{RPREFIX}INCORRECT_STATE} - task never started@*
-@code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - cannot restart remote task
-
-@subheading DESCRIPTION:
-This directive resets the task specified by id to begin
-execution at its original starting address. The task's priority
-and execution mode are set to the original creation values. If
-the task is currently blocked, RTEMS automatically makes the
-task ready. A task can be restarted from any state, except the
-dormant state.
-
-The task's starting argument is contained in argument. This
-argument can be a single value or an index into an array of
-parameter blocks. This new argument may be used to distinguish
-between the initial @code{@value{DIRPREFIX}task_start}
-of the task and any ensuing calls
-to @code{@value{DIRPREFIX}task_restart}
-of the task. This can be beneficial in deleting
-a task. Instead of deleting a task using
-the @code{@value{DIRPREFIX}task_delete}
-directive, a task can delete another task by restarting that
-task, and allowing that task to release resources back to RTEMS
-and then delete itself.
-
-@subheading NOTES:
-If id is @code{@value{RPREFIX}SELF}, the calling task will be restarted and will not
-return from this directive.
-
-The calling task will be preempted if its preemption mode is
-enabled and the task being restarted has a higher priority.
-
-The task must reside on the local node, even if the task was
-created with the @code{@value{RPREFIX}GLOBAL} option.
-
-@page
-
-@subsection TASK_DELETE - Delete a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_delete
-@example
-rtems_status_code rtems_task_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task restarted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - task id invalid@*
-@code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - cannot restart remote task
-
-@subheading DESCRIPTION:
-This directive deletes a task, either the calling task or
-another task, as specified by id. RTEMS stops the execution of
-the task and reclaims the stack memory, any allocated delay or
-timeout timers, the TCB, and, if the task is @code{@value{RPREFIX}FLOATING_POINT}, its
-floating point context area. RTEMS does not reclaim the
-following resources: region segments, partition buffers,
-semaphores, timers, or rate monotonic periods.
-
-@subheading NOTES:
-A task is responsible for releasing its resources back to RTEMS
-before deletion. To insure proper deallocation of resources, a
-task should not be deleted unless it is unable to execute or
-does not hold any RTEMS resources. If a task holds RTEMS
-resources, the task should be allowed to deallocate its
-resources before deletion. A task can be directed to release
-its resources and delete itself by restarting it with a special
-argument or by sending it a message, an event, or a signal.
-
-Deletion of the current task (@code{@value{RPREFIX}SELF}) will force RTEMS to select
-another task to execute.
-
-When a global task is deleted, the task id must be transmitted
-to every node in the system for deletion from the local copy of
-the global object table.
-
-The task must reside on the local node, even if the task was
-created with the @code{@value{RPREFIX}GLOBAL} option.
-
-@page
-
-@subsection TASK_SUSPEND - Suspend a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_suspend
-@example
-rtems_status_code rtems_task_suspend(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Suspend (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task restarted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - task id invalid@*
-@code{@value{RPREFIX}ALREADY_SUSPENDED} - task already suspended
-
-@subheading DESCRIPTION:
-This directive suspends the task specified by id from further
-execution by placing it in the suspended state. This state is
-additive to any other blocked state that the task may already be
-in. The task will not execute again until another task issues
-the @code{@value{DIRPREFIX}task_resume}
-directive for this task and any blocked state
-has been removed.
-
-@subheading NOTES:
-The requesting task can suspend itself by specifying @code{@value{RPREFIX}SELF} as id.
-In this case, the task will be suspended and a successful
-return code will be returned when the task is resumed.
-
-Suspending a global task which does not reside on the local node
-will generate a request to the remote node to suspend the
-specified task.
-
-If the task specified by id is already suspended, then the
-@code{@value{RPREFIX}ALREADY_SUSPENDED} status code is returned.
-
-@page
-
-@subsection TASK_RESUME - Resume a task
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_resume
-@example
-rtems_status_code rtems_task_resume(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Resume (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task restarted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - task id invalid@*
-@code{@value{RPREFIX}INCORRECT_STATE} - task not suspended
-
-@subheading DESCRIPTION:
-This directive removes the task specified by id from the
-suspended state. If the task is in the ready state after the
-suspension is removed, then it will be scheduled to run. If the
-task is still in a blocked state after the suspension is
-removed, then it will remain in that blocked state.
-
-@subheading NOTES:
-The running task may be preempted if its preemption mode is
-enabled and the local task being resumed has a higher priority.
-
-Resuming a global task which does not reside on the local node
-will generate a request to the remote node to resume the
-specified task.
-
-If the task specified by id is not suspended, then the
-@code{@value{RPREFIX}INCORRECT_STATE} status code is returned.
-
-@page
-
-@subsection TASK_SET_PRIORITY - Set task priority
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_set_priority
-@example
-rtems_status_code rtems_task_set_priority(
- rtems_id id,
- rtems_task_priority new_priority,
- rtems_task_priority *old_priority
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Set_Priority (
- ID : in RTEMS.ID;
- New_Priority : in RTEMS.Task_Priority;
- Old_Priority : out RTEMS.Task_Priority;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task priority set successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid task id@*
-@code{@value{RPREFIX}INVALID_PRIORITY} - invalid task priority
-
-@subheading DESCRIPTION:
-This directive manipulates the priority of the task specified by
-id. An id of @code{@value{RPREFIX}SELF} is used to indicate
-the calling task. When new_priority is not equal to
-@code{@value{RPREFIX}CURRENT_PRIORITY}, the specified
-task's previous priority is returned in old_priority. When
-new_priority is @code{@value{RPREFIX}CURRENT_PRIORITY},
-the specified task's current
-priority is returned in old_priority. Valid priorities range
-from a high of 1 to a low of 255.
-
-@subheading NOTES:
-The calling task may be preempted if its preemption mode is
-enabled and it lowers its own priority or raises another task's
-priority.
-
-Setting the priority of a global task which does not reside on
-the local node will generate a request to the remote node to
-change the priority of the specified task.
-
-If the task specified by id is currently holding any binary
-semaphores which use the priority inheritance algorithm, then
-the task's priority cannot be lowered immediately. If the
-task's priority were lowered immediately, then priority
-inversion results. The requested lowering of the task's
-priority will occur when the task has released all priority
-inheritance binary semaphores. The task's priority can be
-increased regardless of the task's use of priority inheritance
-binary semaphores.
-
-@page
-
-@subsection TASK_MODE - Change current task's mode
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_mode
-@example
-rtems_status_code rtems_task_mode(
- rtems_mode mode_set,
- rtems_mode mask,
- rtems_mode *previous_mode_set
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Delete (
- Mode_Set : in RTEMS.Mode;
- Mask : in RTEMS.Mode;
- Previous_Mode_Set : in RTEMS.Mode;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task mode set successfully
-
-@subheading DESCRIPTION:
-This directive manipulates the execution mode of the calling
-task. A task's execution mode enables and disables preemption,
-timeslicing, asynchronous signal processing, as well as
-specifying the current interrupt level. To modify an execution
-mode, the mode class(es) to be changed must be specified in the
-mask parameter and the desired mode(s) must be specified in the
-mode parameter.
-
-@subheading NOTES:
-The calling task will be preempted if it enables preemption and
-a higher priority task is ready to run.
-
-Enabling timeslicing has no effect if preemption is enabled.
-
-A task can obtain its current execution mode, without modifying
-it, by calling this directive with a mask value of
-@code{@value{RPREFIX}CURRENT_MODE}.
-
-To temporarily disable the processing of a valid ASR, a task
-should call this directive with the @code{@value{RPREFIX}NO_ASR}
-indicator specified in mode.
-
-The set of task mode constants and each mode's corresponding
-mask constant is provided in the following table:
-
-@ifset use-ascii
-@itemize @bullet
-@item @code{@value{RPREFIX}PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and enables preemption
-
-@item @code{@value{RPREFIX}NO_PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and disables preemption
-
-@item @code{@value{RPREFIX}NO_TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and disables timeslicing
-
-@item @code{@value{RPREFIX}TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and enables timeslicing
-
-@item @code{@value{RPREFIX}ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and enables ASR processing
-
-@item @code{@value{RPREFIX}NO_ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and disables ASR processing
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and enables all interrupts
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and sets interrupts level n
-
-@end itemize
-@end ifset
-
-@ifset use-tex
-@sp 1
-@c this is temporary
-@itemize @bullet
-@item @code{@value{RPREFIX}PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and enables preemption
-
-@item @code{@value{RPREFIX}NO_PREEMPT} is masked by
-@code{@value{RPREFIX}PREEMPT_MASK} and disables preemption
-
-@item @code{@value{RPREFIX}NO_TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and disables timeslicing
-
-@item @code{@value{RPREFIX}TIMESLICE} is masked by
-@code{@value{RPREFIX}TIMESLICE_MASK} and enables timeslicing
-
-@item @code{@value{RPREFIX}ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and enables ASR processing
-
-@item @code{@value{RPREFIX}NO_ASR} is masked by
-@code{@value{RPREFIX}ASR_MASK} and disables ASR processing
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(0)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and enables all interrupts
-
-@item @code{@value{RPREFIX}INTERRUPT_LEVEL(n)} is masked by
-@code{@value{RPREFIX}INTERRUPT_MASK} and sets interrupts level n
-
-@end itemize
-
-@tex
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=3 WIDTH="80%" BORDER=2>
-<TR><TD ALIGN=center><STRONG>Mode Constant</STRONG></TD>
- <TD ALIGN=center><STRONG>Mask Constant</STRONG></TD>
- <TD ALIGN=center><STRONG>Description</STRONG></TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}PREEMPT</TD>
- <TD ALIGN=center>@value{RPREFIX}PREEMPT_MASK</TD>
- <TD ALIGN=center>enables preemption</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}NO_PREEMPT</TD>
- <TD ALIGN=center>@value{RPREFIX}PREEMPT_MASK</TD>
- <TD ALIGN=center>disables preemption</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}NO_TIMESLICE</TD>
- <TD ALIGN=center>@value{RPREFIX}TIMESLICE_MASK</TD>
- <TD ALIGN=center>disables timeslicing</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}TIMESLICE</TD>
- <TD ALIGN=center>@value{RPREFIX}TIMESLICE_MASK</TD>
- <TD ALIGN=center>enables timeslicing</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}ASR</TD>
- <TD ALIGN=center>@value{RPREFIX}ASR_MASK</TD>
- <TD ALIGN=center>enables ASR processing</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}NO_ASR</TD>
- <TD ALIGN=center>@value{RPREFIX}ASR_MASK</TD>
- <TD ALIGN=center>disables ASR processing</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}INTERRUPT_LEVEL(0)</TD>
- <TD ALIGN=center>@value{RPREFIX}INTERRUPT_MASK</TD>
- <TD ALIGN=center>enables all interrupts</TD></TR>
-<TR><TD ALIGN=center>@value{RPREFIX}INTERRUPT_LEVEL(n)</TD>
- <TD ALIGN=center>@value{RPREFIX}INTERRUPT_MASK</TD>
- <TD ALIGN=center>sets interrupts level n</TD></TR>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-@page
-
-@subsection TASK_GET_NOTE - Get task notepad entry
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_get_note
-@example
-rtems_status_code rtems_task_get_note(
- rtems_id id,
- rtems_unsigned32 notepad,
- rtems_unsigned32 *note
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Get_Note (
- ID : in RTEMS.ID;
- Notepad : in RTEMS.Notepad_Index;
- Note : out RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - note obtained successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid task id@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid notepad location
-
-@subheading DESCRIPTION:
-This directive returns the note contained in the notepad
-location of the task specified by id.
-
-@subheading NOTES:
-This directive will not cause the running task to be preempted.
-
-If id is set to @code{@value{RPREFIX}SELF},
-the calling task accesses its own notepad.
-
-@c This version of the paragraph avoids the overfull hbox error.
-@c The constants NOTEPAD_0 through NOTEPAD_15 can be used to access the
-@c sixteen notepad locations.
-
-The sixteen notepad locations can be accessed using the constants
-@code{@value{RPREFIX}NOTEPAD_0} through @code{@value{RPREFIX}NOTEPAD_15}.
-
-Getting a note of a global task which does not reside on the
-local node will generate a request to the remote node to obtain
-the notepad entry of the specified task.
-
-@page
-
-@subsection TASK_SET_NOTE - Set task notepad entry
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_set_note
-@example
-rtems_status_code rtems_task_set_note(
- rtems_id id,
- rtems_unsigned32 notepad,
- rtems_unsigned32 note
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Set_Note (
- ID : in RTEMS.ID;
- Notepad : in RTEMS.Notepad_Index;
- Note : in RTEMS.Unsigned32;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - task's note set successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid task id@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid notepad location
-
-@subheading DESCRIPTION:
-This directive sets the notepad entry for the task specified by
-id to the value note.
-
-@subheading NOTES:
-If id is set to @code{@value{RPREFIX}SELF}, the calling
-task accesses its own notepad locations.
-
-This directive will not cause the running task to be preempted.
-
-@c This version of the paragraph avoids the overfull hbox error.
-@c The constants NOTEPAD_0 through NOTEPAD_15 can be used to access the
-@c sixteen notepad locations.
-
-The sixteen notepad locations can be accessed using the constants
-@code{@value{RPREFIX}NOTEPAD_0} through @code{@value{RPREFIX}NOTEPAD_15}.
-
-Setting a notepad location of a global task which does not
-reside on the local node will generate a request to the remote
-node to set the specified notepad entry.
-
-@page
-
-@subsection TASK_WAKE_AFTER - Wake up after interval
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_wake_after
-@example
-rtems_status_code rtems_task_wake_after(
- rtems_interval ticks
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Wake_After (
- Ticks : in RTEMS.Interval;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - always successful
-
-@subheading DESCRIPTION:
-This directive blocks the calling task for the specified number
-of system clock ticks. When the requested interval has elapsed,
-the task is made ready. The @code{@value{DIRPREFIX}clock_tick}
-directive automatically updates the delay period.
-
-@subheading NOTES:
-Setting the system date and time with the
-@code{@value{DIRPREFIX}clock_set} directive
-has no effect on a @code{@value{DIRPREFIX}task_wake_after} blocked task.
-
-A task may give up the processor and remain in the ready state
-by specifying a value of @code{@value{RPREFIX}YIELD_PROCESSOR} in ticks.
-
-The maximum timer interval that can be specified is the maximum
-value which can be represented by the rtems_unsigned32 type.
-
-A clock tick is required to support the functionality of this directive.
-
-@page
-
-@subsection TASK_WAKE_WHEN - Wake up when specified
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_task_wake_when
-@example
-rtems_status_code rtems_task_wake_when(
- rtems_time_of_day *time_buffer
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Task_Wake_When (
- Time_Buffer : in RTEMS.Time_Of_Day;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - awakened at date/time successfully@*
-@code{INVALID_TIME_OF_DAY} - invalid time buffer@*
-@code{@value{RPREFIX}NOT_DEFINED} - system date and time is not set
-
-@subheading DESCRIPTION:
-This directive blocks a task until the date and time specified
-in time_buffer. At the requested date and time, the calling
-task will be unblocked and made ready to execute.
-
-@subheading NOTES:
-The ticks portion of time_buffer @value{STRUCTURE} is ignored. The
-timing granularity of this directive is a second.
-
-A clock tick is required to support the functionality of this directive.
diff --git a/doc/user/timer.t b/doc/user/timer.t
deleted file mode 100644
index a962512925..0000000000
--- a/doc/user/timer.t
+++ /dev/null
@@ -1,467 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Timer Manager
-
-@section Introduction
-
-The timer manager provides support for timer
-facilities. The directives provided by the timer manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}timer_create} - Create a timer
-@item @code{@value{DIRPREFIX}timer_ident} - Get ID of a timer
-@item @code{@value{DIRPREFIX}timer_cancel} - Cancel a timer
-@item @code{@value{DIRPREFIX}timer_delete} - Delete a timer
-@item @code{@value{DIRPREFIX}timer_fire_after} - Fire timer after interval
-@item @code{@value{DIRPREFIX}timer_fire_when} - Fire timer when specified
-@item @code{@value{DIRPREFIX}timer_reset} - Reset an interval timer
-@end itemize
-
-
-@section Background
-
-@subsection Required Support
-
-A clock tick is required to support the functionality provided by this manager.
-
-@subsection Timers
-
-A timer is an RTEMS object which allows the
-application to schedule operations to occur at specific times in
-the future. User supplied timer service routines are invoked by
-the @code{@value{DIRPREFIX}clock_tick} directive
-when the timer fires. Timer service routines may perform
-any operations or directives which normally
-would be performed by the application code which invoked the
-@code{@value{DIRPREFIX}clock_tick} directive.
-
-The timer can be used to implement watchdog routines
-which only fire to denote that an application error has
-occurred. The timer is reset at specific points in the
-application to insure that the watchdog does not fire. Thus, if
-the application does not reset the watchdog timer, then the
-timer service routine will fire to indicate that the application
-has failed to reach a reset point. This use of a timer is
-sometimes referred to as a "keep alive" or a "deadman" timer.
-
-@subsection Timer Service Routines
-
-The timer service routine should adhere to @value{LANGUAGE} calling
-conventions and have a prototype similar to the following:
-
-@ifset is-C
-@example
-rtems_timer_service_routine user_routine(
- rtems_id timer_id,
- void *user_data
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Routine(
- Timer_ID : in RTEMS.ID;
- User_Data : in System.Address
-);
-@end example
-@end ifset
-
-Where the timer_id parameter is the RTEMS object ID
-of the timer which is being fired and user_data is a pointer to
-user-defined information which may be utilized by the timer
-service routine. The argument user_data may be NULL.
-
-@section Operations
-
-@subsection Creating a Timer
-
-The @code{@value{DIRPREFIX}timer_create} directive creates a timer by
-allocating a Timer Control Block (TMCB), assigning the timer a
-user-specified name, and assigning it a timer ID. Newly created
-timers do not have a timer service routine associated with them
-and are not active.
-
-@subsection Obtaining Timer IDs
-
-When a timer is created, RTEMS generates a unique
-timer ID and assigns it to the created timer until it is
-deleted. The timer ID may be obtained by either of two methods.
-First, as the result of an invocation of the
-@code{@value{DIRPREFIX}timer_create}
-directive, the timer ID is stored in a user provided location.
-Second, the timer ID may be obtained later using the
-@code{@value{DIRPREFIX}timer_ident} directive. The timer ID
-is used by other directives to manipulate this timer.
-
-@subsection Initiating an Interval Timer
-
-The @code{@value{DIRPREFIX}timer_fire_after} directive initiates a timer to
-fire a user provided timer service routine after the specified
-number of clock ticks have elapsed. When the interval has
-elapsed, the timer service routine will be invoked from the
-@code{@value{DIRPREFIX}clock_tick} directive.
-
-@subsection Initiating a Time of Day Timer
-
-The @code{@value{DIRPREFIX}timer_fire_when} directive initiates a timer to
-fire a user provided timer service routine when the specified
-time of day has been reached. When the interval has elapsed,
-the timer service routine will be invoked from the
-@code{@value{DIRPREFIX}clock_tick} directive.
-
-@subsection Canceling a Timer
-
-The @code{@value{DIRPREFIX}timer_cancel} directive is used to halt the
-specified timer. Once canceled, the timer service routine will
-not fire unless the timer is reinitiated. The timer can be
-reinitiated using the @code{@value{DIRPREFIX}timer_reset},
-@code{@value{DIRPREFIX}timer_fire_after}, and
-@code{@value{DIRPREFIX}timer_fire_when} directives.
-
-@subsection Resetting a Timer
-
-The @code{@value{DIRPREFIX}timer_reset} directive is used to restore an
-interval timer initiated by a previous invocation of
-@code{@value{DIRPREFIX}timer_fire_after} to
-its original interval length. If the
-timer has not been used or the last usage of this timer
-was by a @code{@value{DIRPREFIX}timer_fire_when} directive, then an error is
-returned. The timer service routine is not changed or
-fired by this directive.
-
-@subsection Deleting a Timer
-
-The @code{@value{DIRPREFIX}timer_delete} directive is used to delete a timer.
-If the timer is running and has not expired, the timer is
-automatically canceled. The timer's control block is returned
-to the TMCB free list when it is deleted. A timer can be
-deleted by a task other than the task which created the timer.
-Any subsequent references to the timer's name and ID are invalid.
-
-@section Directives
-
-This section details the timer manager's directives.
-A subsection is dedicated to each of this manager's directives
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-@page
-@subsection TIMER_CREATE - Create a timer
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_timer_create
-@example
-rtems_status_code rtems_timer_create(
- rtems_name name,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Timer_Create (
- Name : in RTEMS.Name;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - timer created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid timer name@*
-@code{@value{RPREFIX}TOO_MANY} - too many timers created
-
-@subheading DESCRIPTION:
-
-This directive creates a timer. The assigned timer
-id is returned in id. This id is used to access the timer with
-other timer manager directives. For control and maintenance of
-the timer, RTEMS allocates a TMCB from the local TMCB free pool
-and initializes it.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-@page
-@subsection TIMER_IDENT - Get ID of a timer
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_timer_ident
-@example
-rtems_status_code rtems_timer_ident(
- rtems_name name,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Timer_Ident (
- Name : in RTEMS.Name;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - timer identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - timer name not found
-
-@subheading DESCRIPTION:
-
-This directive obtains the timer id associated with
-the timer name to be acquired. If the timer name is not unique,
-then the timer id will match one of the timers with that name.
-However, this timer id is not guaranteed to correspond to the
-desired timer. The timer id is used to access this timer in
-other timer related directives.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-@page
-@subsection TIMER_CANCEL - Cancel a timer
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_timer_cancel
-@example
-rtems_status_code rtems_timer_cancel(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Timer_Cancel (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - timer canceled successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid timer id
-
-@subheading DESCRIPTION:
-
-This directive cancels the timer id. This timer will
-be reinitiated by the next invocation of @code{@value{DIRPREFIX}timer_reset},
-@code{@value{DIRPREFIX}timer_fire_after}, or
-@code{@value{DIRPREFIX}timer_fire_when} with id.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be preempted.
-
-@page
-@subsection TIMER_DELETE - Delete a timer
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_timer_delete
-@example
-rtems_status_code rtems_timer_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Timer_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - timer deleted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid timer id
-
-@subheading DESCRIPTION:
-
-This directive deletes the timer specified by id. If
-the timer is running, it is automatically canceled. The TMCB
-for the deleted timer is reclaimed by RTEMS.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-A timer can be deleted by a task other than the task
-which created the timer.
-
-@page
-@subsection TIMER_FIRE_AFTER - Fire timer after interval
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_timer_fire_after
-@example
-rtems_status_code rtems_timer_fire_after(
- rtems_id id,
- rtems_interval ticks,
- rtems_timer_service_routine_entry routine,
- void *user_data
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Timer_Fire_After (
- ID : in RTEMS.ID;
- Ticks : in RTEMS.Interval;
- Routine : in RTEMS.Timer_Service_Routine;
- User_Data : in RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - timer initiated successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid timer id@*
-@code{@value{RPREFIX}INVALID_NUMBER} - invalid interval
-
-@subheading DESCRIPTION:
-
-This directive initiates the timer specified by id.
-If the timer is running, it is automatically canceled before
-being initiated. The timer is scheduled to fire after an
-interval ticks clock ticks has passed. When the timer fires,
-the timer service routine routine will be invoked with the
-argument user_data.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-@page
-@subsection TIMER_FIRE_WHEN - Fire timer when specified
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_timer_fire_when
-@example
-rtems_status_code rtems_timer_fire_when(
- rtems_id id,
- rtems_time_of_day *wall_time,
- rtems_timer_service_routine_entry routine,
- void *user_data
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Timer_Fire_When (
- ID : in RTEMS.ID;
- Wall_Time : in RTEMS.Time_Of_Day;
- Routine : in RTEMS.Timer_Service_Routine;
- User_Data : in RTEMS.Address;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - timer initiated successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid timer id@*
-@code{@value{RPREFIX}NOT_DEFINED} - system date and time is not set@*
-@code{@value{RPREFIX}INVALID_CLOCK} - invalid time of day
-
-@subheading DESCRIPTION:
-
-This directive initiates the timer specified by id.
-If the timer is running, it is automatically canceled before
-being initiated. The timer is scheduled to fire at the time of
-day specified by wall_time. When the timer fires, the timer
-service routine routine will be invoked with the argument
-user_data.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-@page
-@subsection TIMER_RESET - Reset an interval timer
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_timer_reset
-@example
-rtems_status_code rtems_timer_reset(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Timer_Reset (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - timer reset successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid timer id@*
-@code{@value{RPREFIX}NOT_DEFINED} - attempted to reset a when or newly created timer
-
-@subheading DESCRIPTION:
-
-This directive resets the timer associated with id.
-This timer must have been previously initiated with a
-@code{@value{DIRPREFIX}timer_fire_after}
-directive. If active the timer is canceled,
-after which the timer is reinitiated using the same interval and
-timer service routine which the original
-@code{@value{DIRPREFIX}timer_fire_after}
-directive used.
-
-@subheading NOTES:
-
-If the timer has not been used or the last usage of this timer
-was by a @code{@value{DIRPREFIX}timer_fire_when}
-directive, then the @code{@value{RPREFIX}NOT_DEFINED} error is
-returned.
-
-Restarting a cancelled after timer results in the timer being
-reinitiated with its previous timer service routine and interval.
-
-This directive will not cause the running task to be preempted.
-
diff --git a/doc/user/userext.t b/doc/user/userext.t
deleted file mode 100644
index b73799a7ba..0000000000
--- a/doc/user/userext.t
+++ /dev/null
@@ -1,696 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter User Extensions Manager
-
-@section Introduction
-
-The RTEMS User Extensions Manager allows the
-application developer to augment the executive by allowing them
-to supply extension routines which are invoked at critical
-system events. The directives provided by the user extensions
-manager are:
-
-@itemize @bullet
-@item @code{@value{DIRPREFIX}extension_create} - Create an extension set
-@item @code{@value{DIRPREFIX}extension_ident} - Get ID of an extension set
-@item @code{@value{DIRPREFIX}extension_delete} - Delete an extension set
-@end itemize
-
-@section Background
-
-User extension routines are invoked when the
-following system events occur:
-
-@itemize @bullet
-@item Task creation
-@item Task initiation
-@item Task reinitiation
-@item Task deletion
-@item Task context switch
-@item Post task context switch
-@item Task begin
-@item Task exits
-@item Fatal error detection
-@end itemize
-
-These extensions are invoked as a function with
-arguments that are appropriate to the system event.
-
-@subsection Extension Sets
-
-An extension set is defined as a set of routines
-which are invoked at each of the critical system events at which
-user extension routines are invoked. Together a set of these
-routines typically perform a specific functionality such as
-performance monitoring or debugger support. RTEMS is informed of
-the entry points which constitute an extension set via the
-following @value{STRUCTURE}:
-
-@ifset is-C
-@example
-@group
-typedef struct @{
- User_extensions_thread_create_extension thread_create;
- User_extensions_thread_start_extension thread_start;
- User_extensions_thread_restart_extension thread_restart;
- User_extensions_thread_delete_extension thread_delete;
- User_extensions_thread_switch_extension thread_switch;
- User_extensions_thread_post_switch_extension thread_post_switch;
- User_extensions_thread_begin_extension thread_begin;
- User_extensions_thread_exitted_extension thread_exitted;
- User_extensions_fatal_error_extension fatal;
-@} User_extensions_Table;
-@end group
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-type Extensions_Table is
- record
- Task_Create : RTEMS.Task_Create_Extension;
- Task_Start : RTEMS.Task_Start_Extension;
- Task_Restart : RTEMS.Task_Restart_Extension;
- Task_Delete : RTEMS.Task_Delete_Extension;
- Task_Switch : RTEMS.Task_Switch_Extension;
- Task_Post_Switch : RTEMS.Task_Post_Switch_Extension;
- Task_Begin : RTEMS.Task_Begin_Extension;
- Task_Exitted : RTEMS.Task_Exitted_Extension;
- Fatal : RTEMS.Fatal_Error_Extension;
- end record;
-@end example
-@end ifset
-
-
-RTEMS allows the user to have multiple extension sets
-active at the same time. First, a single static extension set
-may be defined as the application's User Extension Table which
-is included as part of the Configuration Table. This extension
-set is active for the entire life of the system and may not be
-deleted. This extension set is especially important because it
-is the only way the application can provided a FATAL error
-extension which is invoked if RTEMS fails during the
-initialize_executive directive. The static extension set is
-optional and may be configured as NULL if no static extension
-set is required.
-
-Second, the user can install dynamic extensions using
-the @code{@value{DIRPREFIX}extension_create}
-directive. These extensions are RTEMS
-objects in that they have a name, an ID, and can be dynamically
-created and deleted. In contrast to the static extension set,
-these extensions can only be created and installed after the
-initialize_executive directive successfully completes execution.
-Dynamic extensions are useful for encapsulating the
-functionality of an extension set. For example, the application
-could use extensions to manage a special coprocessor, do
-performance monitoring, and to do stack bounds checking. Each
-of these extension sets could be written and installed
-independently of the others.
-
-All user extensions are optional and RTEMS places no
-naming restrictions on the user.
-
-@subsection TCB Extension Area
-
-RTEMS provides for a pointer to a user-defined data
-area for each extension set to be linked to each task's control
-block. This set of pointers is an extension of the TCB and can
-be used to store additional data required by the user's
-extension functions. It is also possible for a user extension
-to utilize the notepad locations associated with each task
-although this may conflict with application usage of those
-particular notepads.
-
-The TCB extension is an array of pointers in the TCB.
-The number of pointers in the area is the same as the number of
-user extension sets configured. This allows an application to
-augment the TCB with user-defined information. For example, an
-application could implement task profiling by storing timing
-statistics in the TCB's extended memory area. When a task
-context switch is being executed, the TASK_SWITCH extension
-could read a real-time clock to calculate how long the task
-being swapped out has run as well as timestamp the starting time
-for the task being swapped in.
-
-If used, the extended memory area for the TCB should
-be allocated and the TCB extension pointer should be set at the
-time the task is created or started by either the TASK_CREATE or
-TASK_START extension. The application is responsible for
-managing this extended memory area for the TCBs. The memory may
-be reinitialized by the TASK_RESTART extension and should be
-deallocated by the TASK_DELETE extension when the task is
-deleted. Since the TCB extension buffers would most likely be
-of a fixed size, the RTEMS partition manager could be used to
-manage the application's extended memory area. The application
-could create a partition of fixed size TCB extension buffers and
-use the partition manager's allocation and deallocation
-directives to obtain and release the extension buffers.
-
-@subsection Extensions
-
-The sections that follow will contain a description
-of each extension. Each section will contain a prototype of a
-function with the appropriate calling sequence for the
-corresponding extension. The names given for the @value{LANGUAGE}
-@value{ROUTINE} and
-its arguments are all defined by the user. The names used in
-the examples were arbitrarily chosen and impose no naming
-conventions on the user.
-
-@subsection TASK_CREATE Extension
-
-The TASK_CREATE extension directly corresponds to the
-task_create directive. If this extension is defined in any
-static or dynamic extension set and a task is being created,
-then the extension routine will automatically be invoked by
-RTEMS. The extension should have a prototype similar to the
-following:
-
-@ifset is-C
-@example
-rtems_extension user_task_create(
- rtems_tcb *current_task,
- rtems_tcb *new_task
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task_Create (
- Current_Task : in RTEMS.TCB_Pointer;
- New_Task : in RTEMS.TCB_Pointer
-);
-@end example
-@end ifset
-
-where current_task can be used to access the TCB for
-the currently executing task, and new_task can be used to access
-the TCB for the new task being created. This extension is
-invoked from the task_create directive after new_task has been
-completely initialized, but before it is placed on a ready TCB
-chain.
-
-@subsection TASK_START Extension
-
-The TASK_START extension directly corresponds to the
-task_start directive. If this extension is defined in any
-static or dynamic extension set and a task is being started,
-then the extension routine will automatically be invoked by
-RTEMS. The extension should have a prototype similar to the
-following:
-
-@ifset is-C
-@example
-rtems_extension user_task_start(
- rtems_tcb *current_task,
- rtems_tcb *started_task
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task_Start (
- Current_Task : in RTEMS.TCB_Pointer;
- Started_Task : in RTEMS.TCB_Pointer
-);
-@end example
-@end ifset
-
-where current_task can be used to access the TCB for
-the currently executing task, and started_task can be used to
-access the TCB for the dormant task being started. This
-extension is invoked from the task_start directive after
-started_task has been made ready to start execution, but before
-it is placed on a ready TCB chain.
-
-@subsection TASK_RESTART Extension
-
-The TASK_RESTART extension directly corresponds to
-the task_restart directive. If this extension is defined in any
-static or dynamic extension set and a task is being restarted,
-then the extension should have a prototype similar to the
-following:
-
-@ifset is-C
-@example
-rtems_extension user_task_restart(
- rtems_tcb *current_task,
- rtems_tcb *restarted_task
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task_Restart (
- Current_Task : in RTEMS.TCB_Pointer;
- Restarted_Task : in RTEMS.TCB_Pointer
-);
-@end example
-@end ifset
-
-where current_task can be used to access the TCB for
-the currently executing task, and restarted_task can be used to
-access the TCB for the task being restarted. This extension is
-invoked from the task_restart directive after restarted_task has
-been made ready to start execution, but before it is placed on a
-ready TCB chain.
-
-@subsection TASK_DELETE Extension
-
-The TASK_DELETE extension is associated with the
-task_delete directive. If this extension is defined in any
-static or dynamic extension set and a task is being deleted,
-then the extension routine will automatically be invoked by
-RTEMS. The extension should have a prototype similar to the
-following:
-
-@ifset is-C
-@example
-rtems_extension user_task_delete(
- rtems_tcb *current_task,
- rtems_tcb *deleted_task
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task_Delete (
- Current_Task : in RTEMS.TCB_Pointer;
- Deleted_Task : in RTEMS.TCB_Pointer
-);
-@end example
-@end ifset
-
-where current_task can be used to access the TCB for
-the currently executing task, and deleted_task can be used to
-access the TCB for the task being deleted. This extension is
-invoked from the task_delete directive after the TCB has been
-removed from a ready TCB chain, but before all its resources
-including the TCB have been returned to their respective free
-pools. This extension should not call any RTEMS directives if a
-task is deleting itself (current_task is equal to deleted_task).
-
-@subsection TASK_SWITCH Extension
-
-The TASK_SWITCH extension corresponds to a task
-context switch. If this extension is defined in any static or
-dynamic extension set and a task context switch is in progress,
-then the extension routine will automatically be invoked by
-RTEMS. The extension should have a prototype similar to the
-following:
-
-@ifset is-C
-@example
-rtems_extension user_task_switch(
- rtems_tcb *current_task,
- rtems_tcb *heir_task
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task_Switch (
- Current_Task : in RTEMS.TCB_Pointer;
- Heir_Task : in RTEMS.TCB_Pointer
-);
-@end example
-@end ifset
-
-where current_task can be used to access the TCB for
-the task that is being swapped out, and heir_task can be used to
-access the TCB for the task being swapped in. This extension is
-invoked from RTEMS' dispatcher routine after the current_task
-context has been saved, but before the heir_task context has
-been restored. This extension should not call any RTEMS
-directives.
-
-@subsection TASK_POST_SWITCH Extension
-
-The TASK_POST_SWITCH extension corresponds to a task
-context switch. If this extension is defined in any static or
-dynamic extension set and a raw task context switch has been
-completed, then the extension routine will automatically be
-invoked by RTEMS. The extension should have a prototype similar
-to the following:
-
-@ifset is-C
-@example
-rtems_extension user_task_post_switch(
- rtems_tcb *current_task
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task_Post_Switch (
- Current_Task : in RTEMS.TCB_Pointer
-);
-@end example
-@end ifset
-
-where current_task can be used to access the TCB for
-the task that is being swapped out, and heir_task can be used to
-access the TCB for the task being swapped in. This extension is
-invoked from RTEMS' dispatcher routine after the current_task
-context has been restored and the extension runs in the context
-of the current_task.
-
-@subsection TASK_BEGIN Extension
-
-The TASK_BEGIN extension is invoked when a task
-begins execution. It is invoked immediately before the body of
-the starting procedure and executes in the context in the task.
-This user extension have a prototype similar to the following:
-
-@ifset is-C
-@example
-rtems_extension user_task_begin(
- rtems_tcb *current_task
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task_Begin (
- Current_Task : in RTEMS.TCB_Pointer
-);
-@end example
-@end ifset
-
-where current_task can be used to access the TCB for
-the currently executing task which has begun. The distinction
-between the TASK_BEGIN and TASK_START extension is that the
-TASK_BEGIN extension is executed in the context of the actual
-task while the TASK_START extension is executed in the context
-of the task performing the task_start directive. For most
-extensions, this is not a critical distinction.
-
-@subsection TASK_EXITTED Extension
-
-The TASK_EXITTED extension is invoked when a task
-exits the body of the starting procedure by either an implicit
-or explicit return statement. This user extension have a
-prototype similar to the following:
-
-@ifset is-C
-@example
-rtems_extension user_task_exitted(
- rtems_tcb *current_task
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Task_Exitted (
- Current_Task : in RTEMS.TCB_Pointer
-);
-@end example
-@end ifset
-
-where current_task can be used to access the TCB for
-the currently executing task which has just exitted.
-
-Although exiting of task is often considered to be a
-fatal error, this extension allows recovery by either restarting
-or deleting the exiting task. If the user does not wish to
-recover, then a fatal error may be reported. If the user does
-not provide a TASK_EXITTED extension or the provided handler
-returns control to RTEMS, then the RTEMS default handler will be
-used. This default handler invokes the directive
-fatal_error_occurred with the @code{@value{RPREFIX}TASK_EXITTED} directive status.
-
-@lowersections
-
-@subsection FATAL Error Extension
-
-The FATAL error extension is associated with the
-fatal_error_occurred directive. If this extension is defined in
-any static or dynamic extension set and the fatal_error_occurred
-directive has been invoked, then this extension will be called.
-This extension should have a prototype similar to the following:
-
-@ifset is-C
-@example
-rtems_extension user_fatal_error(
- Internal_errors_Source the_source,
- rtems_boolean is_internal,
- rtems_unsigned32 the_error
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure User_Fatal_Error (
- Error : in RTEMS.Unsigned32
-);
-@end example
-@end ifset
-
-where the_error is the error code passed to the
-fatal_error_occurred directive. This extension is invoked from
-the fatal_error_occurred directive.
-
-If defined, the user's FATAL error extension is
-invoked before RTEMS' default fatal error routine is invoked and
-the processor is stopped. For example, this extension could be
-used to pass control to a debugger when a fatal error occurs.
-This extension should not call any RTEMS directives.
-
-@raisesections
-
-@subsection Order of Invocation
-
-When one of the critical system events occur, the
-user extensions are invoked in either "forward" or "reverse"
-order. Forward order indicates that the static extension set is
-invoked followed by the dynamic extension sets in the order in
-which they were created. Reverse order means that the dynamic
-extension sets are invoked in the opposite of the order in which
-they were created followed by the static extension set. By
-invoking the extension sets in this order, extensions can be
-built upon one another. At the following system events, the
-extensions are invoked in forward order:
-
-@itemize @bullet
-@item Task creation
-@item Task initiation
-@item Task reinitiation
-@item Task deletion
-@item Task context switch
-@item Post task context switch
-@item Task begins to execute
-@end itemize
-
-
-At the following system events, the extensions are
-invoked in reverse order:
-
-@itemize @bullet
-@item Task deletion
-@item Fatal error detection
-@end itemize
-
-At these system events, the extensions are invoked in
-reverse order to insure that if an extension set is built upon
-another, the more complicated extension is invoked before the
-extension set it is built upon. For example, by invoking the
-static extension set last it is known that the "system" fatal
-error extension will be the last fatal error extension executed.
-Another example is use of the task delete extension by the
-Standard C Library. Extension sets which are installed after
-the Standard C Library will operate correctly even if they
-utilize the C Library because the C Library's TASK_DELETE
-extension is invoked after that of the other extensions.
-
-@section Operations
-
-@subsection Creating an Extension Set
-
-The @code{@value{DIRPREFIX}extension_create} directive creates and installs
-an extension set by allocating a Extension Set Control Block
-(ESCB), assigning the extension set a user-specified name, and
-assigning it an extension set ID. Newly created extension sets
-are immediately installed and are invoked upon the next system
-even supporting an extension.
-
-@subsection Obtaining Extension Set IDs
-
-When an extension set is created, RTEMS generates a
-unique extension set ID and assigns it to the created extension
-set until it is deleted. The extension ID may be obtained by
-either of two methods. First, as the result of an invocation of
-the @code{@value{DIRPREFIX}extension_create}
-directive, the extension set ID is stored
-in a user provided location. Second, the extension set ID may
-be obtained later using the @code{@value{DIRPREFIX}extension_ident}
-directive. The extension set ID is used by other directives
-to manipulate this extension set.
-
-@subsection Deleting an Extension Set
-
-The @code{@value{DIRPREFIX}extension_delete} directive is used to delete an
-extension set. The extension set's control block is returned to
-the ESCB free list when it is deleted. An extension set can be
-deleted by a task other than the task which created the
-extension set. Any subsequent references to the extension's
-name and ID are invalid.
-
-@section Directives
-
-This section details the user extension manager's
-directives. A subsection is dedicated to each of this manager's
-directives and describes the calling sequence, related
-constants, usage, and status codes.
-
-@page
-@subsection EXTENSION_CREATE - Create a extension set
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_extension_create
-@example
-rtems_status_code rtems_extension_create(
- rtems_name name,
- rtems_extensions_table *table,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Extension_Create (
- Name : in RTEMS.Name;
- Table : in RTEMS.Extensions_Table_Pointer;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - extension set created successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - invalid extension set name@*
-@code{@value{RPREFIX}TOO_MANY} - too many extension sets created
-
-@subheading DESCRIPTION:
-
-This directive creates a extension set. The assigned
-extension set id is returned in id. This id is used to access
-the extension set with other user extension manager directives.
-For control and maintenance of the extension set, RTEMS
-allocates an ESCB from the local ESCB free pool and initializes
-it.
-
-@subheading NOTES:
-
-This directive will not cause the calling task to be
-preempted.
-
-@page
-@subsection EXTENSION_IDENT - Get ID of a extension set
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_extension_ident
-@example
-rtems_status_code rtems_extension_ident(
- rtems_name name,
- rtems_id *id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Extension_Ident (
- Name : in RTEMS.Name;
- ID : out RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - extension set identified successfully@*
-@code{@value{RPREFIX}INVALID_NAME} - extension set name not found
-
-@subheading DESCRIPTION:
-
-This directive obtains the extension set id
-associated with the extension set name to be acquired. If the
-extension set name is not unique, then the extension set id will
-match one of the extension sets with that name. However, this
-extension set id is not guaranteed to correspond to the desired
-extension set. The extension set id is used to access this
-extension set in other extension set related directives.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-@page
-@subsection EXTENSION_DELETE - Delete a extension set
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@c @findex rtems_extension_delete
-@example
-rtems_status_code rtems_extension_delete(
- rtems_id id
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@example
-procedure Extension_Delete (
- ID : in RTEMS.ID;
- Result : out RTEMS.Status_Codes
-);
-@end example
-@end ifset
-
-@subheading DIRECTIVE STATUS CODES:
-@code{@value{RPREFIX}SUCCESSFUL} - extension set deleted successfully@*
-@code{@value{RPREFIX}INVALID_ID} - invalid extension set id
-
-@subheading DESCRIPTION:
-
-This directive deletes the extension set specified by
-id. If the extension set is running, it is automatically
-canceled. The ESCB for the deleted extension set is reclaimed
-by RTEMS.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.
-
-A extension set can be deleted by a task other than
-the task which created the extension set.
-
-@subheading NOTES:
-
-This directive will not cause the running task to be
-preempted.