forked from Imagelibrary/rtems
This commit was manufactured by cvs2svn to create tag 'rtems-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
This commit is contained in:
@@ -1,24 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
Misc. support tools for RTEMS workspaces.
|
||||
More will be added later as they are converted from Teamware
|
||||
to CVS.
|
||||
|
||||
install-if-change
|
||||
Smart install script that also can append suffixes as it
|
||||
installs (suffixes used for debug and profile variants).
|
||||
Requires bash or ksh.
|
||||
|
||||
rcs-clean
|
||||
deletes all files from the current directory that can be
|
||||
re-created from RCS. Careful to not delete locked files.
|
||||
May be used by 'gmake clobber'
|
||||
|
||||
lock-directory
|
||||
unlock-directory
|
||||
traverse a directory structure making it unwritable.
|
||||
Useful to keep people from accidentally overwriting
|
||||
"released" trees if they get confused about which
|
||||
module they have loaded.
|
||||
@@ -1,377 +0,0 @@
|
||||
/*
|
||||
* cklength - check the length of lines in a file
|
||||
*
|
||||
* This program check to see if the files passed to it on the command line
|
||||
* contain a line which exceeds the maximum allowable length. The default
|
||||
* maximum line length is 80.
|
||||
*
|
||||
* usage: cklength [ -v ] [ arg ... ] files...
|
||||
* -l length -- maximum line length
|
||||
* -v -- verbose
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define GETOPTARGS "l:nNv"
|
||||
|
||||
char *USAGE = "\
|
||||
usage: cklength [ -v ] [ arg ... ] files... \n\
|
||||
-l length -- maximum line length\n\
|
||||
-n -- report line numbers for offending lines\n\
|
||||
-N -- report line numbers and length for offending lines\n\
|
||||
-v -- verbose\n\
|
||||
\n\
|
||||
Print the name of files which have at least 1 line which exceeds the\n\
|
||||
maximum line length. The default maximum line length is 80.\n\
|
||||
";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <memory.h>
|
||||
#include <stdarg.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifndef VMS
|
||||
#ifndef HAVE_STRERROR
|
||||
extern int sys_nerr;
|
||||
extern char *sys_errlist[];
|
||||
|
||||
#define strerror( _err ) \
|
||||
((_err) < sys_nerr) ? sys_errlist [(_err)] : "unknown error"
|
||||
|
||||
#else /* HAVE_STRERROR */
|
||||
char *strerror ();
|
||||
#endif
|
||||
#else /* VMS */
|
||||
char *strerror (int,...);
|
||||
#endif
|
||||
|
||||
|
||||
#define BUFFER_SIZE 512
|
||||
|
||||
#define SUCCESS 0
|
||||
#define FAILURE -1
|
||||
#define Failed(x) (((int) (x)) == FAILURE)
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
#define STREQ(a,b) (strcmp(a,b) == 0)
|
||||
#define NUMELEMS(arr) (sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
/*
|
||||
* Definitions for unsigned "ints"; especially for use in data structures
|
||||
* that will be shared among (potentially) different cpu's (we punt on
|
||||
* byte ordering problems tho)
|
||||
*/
|
||||
|
||||
typedef unsigned char u8;
|
||||
typedef unsigned short u16;
|
||||
typedef unsigned long u32;
|
||||
|
||||
/*
|
||||
* vars controlled by command line options
|
||||
*/
|
||||
|
||||
int verbose = FALSE; /* be verbose */
|
||||
int report_line_numbers = FALSE; /* report line numbers of offenders */
|
||||
int report_line_length = FALSE; /* report line length of offenders */
|
||||
|
||||
int line_length = 80; /* maximum allowable line length */
|
||||
|
||||
extern char *optarg; /* getopt(3) control vars */
|
||||
extern int optind, opterr;
|
||||
|
||||
char *progname; /* for error() */
|
||||
|
||||
int process(char *arg);
|
||||
void error(int errn, ...);
|
||||
long getparm(char *s, long min, long max, char *msg);
|
||||
|
||||
#define ERR_ERRNO (1<<((sizeof(int) * 8) - 2)) /* hi bit; use 'errno' */
|
||||
#define ERR_FATAL (ERR_ERRNO / 2) /* fatal error ; no return */
|
||||
#define ERR_ABORT (ERR_ERRNO / 4) /* fatal error ; abort */
|
||||
#define ERR_MASK (ERR_ERRNO | ERR_FATAL | ERR_ABORT) /* all */
|
||||
|
||||
#define stol(p) strtol(p, (char **) NULL, 0)
|
||||
int Open(), Read(), Write();
|
||||
|
||||
int main(
|
||||
int argc,
|
||||
char **argv
|
||||
)
|
||||
{
|
||||
register int c;
|
||||
int showusage = FALSE; /* usage error? */
|
||||
int rc = 0;
|
||||
|
||||
/*
|
||||
* figure out invocation leaf-name
|
||||
*/
|
||||
|
||||
if ((progname = strrchr(argv[0], '/')) == (char *) NULL)
|
||||
progname = argv[0];
|
||||
else
|
||||
progname++;
|
||||
|
||||
argv[0] = progname; /* for getopt err reporting */
|
||||
|
||||
/*
|
||||
* Check options and arguments.
|
||||
*/
|
||||
|
||||
opterr = 0; /* we'll report all errors */
|
||||
while ((c = getopt(argc, argv, GETOPTARGS)) != EOF)
|
||||
switch (c)
|
||||
{
|
||||
case 'l': /* line length */
|
||||
line_length = atoi( optarg );
|
||||
if ( line_length < 0 || line_length > BUFFER_SIZE )
|
||||
error(ERR_FATAL, "(%d) is illegal line length\n",line_length);
|
||||
break;
|
||||
|
||||
case 'n': /* toggle report_line_numbers */
|
||||
report_line_numbers = ! report_line_numbers;
|
||||
break;
|
||||
|
||||
case 'N': /* toggle both reports */
|
||||
report_line_numbers = ! report_line_numbers;
|
||||
report_line_length = ! report_line_length;
|
||||
break;
|
||||
|
||||
case 'v': /* toggle verbose */
|
||||
verbose = ! verbose;
|
||||
break;
|
||||
|
||||
case '?':
|
||||
showusage = TRUE;
|
||||
}
|
||||
|
||||
if (showusage)
|
||||
{
|
||||
(void) fprintf(stderr, "%s", USAGE);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
* traverse and process the arguments
|
||||
*/
|
||||
|
||||
for ( ; argv[optind]; optind++)
|
||||
if (Failed(process(argv[optind])))
|
||||
rc = FAILURE;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* process(arg)
|
||||
*/
|
||||
|
||||
int
|
||||
process(char *arg)
|
||||
{
|
||||
FILE *in;
|
||||
char *bptr;
|
||||
char buffer[ BUFFER_SIZE ];
|
||||
int line_number;
|
||||
int length;
|
||||
int count;
|
||||
int rc = SUCCESS; /* succeed by default */
|
||||
|
||||
in = fopen( arg, "r" );
|
||||
if (!in)
|
||||
error( ERR_ERRNO | ERR_FATAL, "Unable to open file (%s)\n", arg );
|
||||
|
||||
count = 0;
|
||||
|
||||
for ( line_number=1 ; ; line_number++ ) {
|
||||
bptr = fgets( buffer, BUFFER_SIZE, in );
|
||||
if (!bptr)
|
||||
break;
|
||||
|
||||
/*
|
||||
* Don't count the carriage return.
|
||||
*/
|
||||
|
||||
length = strlen( buffer ) - 1;
|
||||
|
||||
if ( length <= line_length )
|
||||
continue;
|
||||
|
||||
if ( count == 0 ) {
|
||||
fprintf( stderr, "%s\n", arg );
|
||||
if ( !report_line_numbers )
|
||||
break;
|
||||
}
|
||||
|
||||
if ( verbose )
|
||||
fprintf( stderr, "TOO LONG:%d: %s\n", line_number, buffer );
|
||||
|
||||
if ( report_line_numbers ) {
|
||||
if ( report_line_length )
|
||||
fprintf( stderr, "%d: %d\n" , line_number, length );
|
||||
else
|
||||
fprintf( stderr, "%d\n" , line_number );
|
||||
}
|
||||
|
||||
count++;
|
||||
|
||||
}
|
||||
|
||||
fclose( in );
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* error(errn, arglist)
|
||||
* report an error to stderr using printf(3) conventions.
|
||||
* Any output is preceded by '<progname>: '
|
||||
*
|
||||
* Uses ERR_FATAL bit to request exit(errn)
|
||||
* ERR_ABORT to request abort()
|
||||
* ERR_ERRNO to indicate use of errno instead of argument.
|
||||
*
|
||||
* If resulting 'errn' is non-zero, it is assumed to be an 'errno' and its
|
||||
* associated error message is appended to the output.
|
||||
*/
|
||||
|
||||
/*VARARGS*/
|
||||
|
||||
void
|
||||
error(int error_flag, ...)
|
||||
{
|
||||
va_list arglist;
|
||||
register char *format;
|
||||
int local_errno;
|
||||
|
||||
extern int errno;
|
||||
|
||||
(void) fflush(stdout); /* in case stdout/stderr same */
|
||||
|
||||
local_errno = error_flag & ~ERR_MASK;
|
||||
if (error_flag & ERR_ERRNO) /* use errno? */
|
||||
local_errno = errno;
|
||||
|
||||
va_start(arglist, error_flag);
|
||||
format = va_arg(arglist, char *);
|
||||
(void) fprintf(stderr, "%s: ", progname);
|
||||
(void) vfprintf(stderr, format, arglist);
|
||||
va_end(arglist);
|
||||
|
||||
if (local_errno)
|
||||
(void) fprintf(stderr, " (%s)\n", strerror(local_errno));
|
||||
|
||||
(void) fflush(stderr);
|
||||
|
||||
if (error_flag & (ERR_FATAL | ERR_ABORT))
|
||||
{
|
||||
if (error_flag & ERR_FATAL)
|
||||
{
|
||||
error(0, "fatal error, exiting");
|
||||
exit(local_errno ? local_errno : 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
error(0, "fatal error, aborting");
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
long
|
||||
getparm(char *s,
|
||||
long min,
|
||||
long max,
|
||||
char *msg)
|
||||
{
|
||||
long val;
|
||||
|
||||
if ( ! strchr("0123456789-", *s))
|
||||
{
|
||||
error(ERR_FATAL, "'%s' is not a number", s);
|
||||
return min;
|
||||
}
|
||||
|
||||
val = strtol(s, (char **) NULL, 0);
|
||||
if ((val < min) || (val > max))
|
||||
{
|
||||
if (min == max)
|
||||
error(ERR_FATAL, "%s can only be %ld", s, min);
|
||||
else
|
||||
error(ERR_FATAL, "%s must be between %ld and %ld", msg, min, max);
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Open()
|
||||
* Perform open(2), returning the file descriptor. Prints
|
||||
* error message if open fails.
|
||||
*/
|
||||
|
||||
int
|
||||
Open(char *file,
|
||||
int oflag,
|
||||
int mode)
|
||||
{
|
||||
int O_fd;
|
||||
|
||||
if (Failed(O_fd = open(file, oflag, mode)))
|
||||
error(
|
||||
ERR_ERRNO | ERR_FATAL,
|
||||
"open('%s', 0x%x, 0%o) failed", file, oflag, mode
|
||||
);
|
||||
|
||||
return O_fd;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read()
|
||||
* Perform read(2); prints error message if fails.
|
||||
*/
|
||||
|
||||
int
|
||||
Read(int file,
|
||||
char *buffer,
|
||||
unsigned int count)
|
||||
{
|
||||
int nbytes;
|
||||
|
||||
if (Failed(nbytes = read(file, buffer, count)))
|
||||
error(
|
||||
ERR_ERRNO | ERR_FATAL,
|
||||
"read(%d, 0x%x, %d) failed", file, buffer, count
|
||||
);
|
||||
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
/*
|
||||
* Write()
|
||||
* Perform write(2); prints error message if fails.
|
||||
*/
|
||||
|
||||
int
|
||||
Write(int file,
|
||||
char *buffer,
|
||||
unsigned int count)
|
||||
{
|
||||
int nbytes;
|
||||
|
||||
if (Failed(nbytes = write(file, buffer, count)))
|
||||
error(
|
||||
ERR_ERRNO | ERR_FATAL,
|
||||
"write(%d, 0x%x, %d) failed", file, buffer, count
|
||||
);
|
||||
|
||||
return nbytes;
|
||||
}
|
||||
@@ -1,366 +0,0 @@
|
||||
/*
|
||||
* eolstrip - strip white space from end of lines
|
||||
*
|
||||
* This program strips the white space from the end of every line in the
|
||||
* specified program.
|
||||
*
|
||||
* usage: eolstrip [ -v ] [ arg ... ] files...
|
||||
* -v -- verbose
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define GETOPTARGS "vt"
|
||||
|
||||
char *USAGE = "\
|
||||
usage: cklength [ -v ] [ arg ... ] files... \n\
|
||||
-v -- verbose\n\
|
||||
-t -- test only .. DO NOT OVERWRITE FILE!!!\n\
|
||||
\n\
|
||||
Strip the white space from the end of every line on the list of files.\n\
|
||||
";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <memory.h>
|
||||
#include <stdarg.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifndef VMS
|
||||
#ifndef HAVE_STRERROR
|
||||
extern int sys_nerr;
|
||||
extern char *sys_errlist[];
|
||||
|
||||
#define strerror( _err ) \
|
||||
((_err) < sys_nerr) ? sys_errlist [(_err)] : "unknown error"
|
||||
|
||||
#else /* HAVE_STRERROR */
|
||||
char *strerror ();
|
||||
#endif
|
||||
#else /* VMS */
|
||||
char *strerror (int,...);
|
||||
#endif
|
||||
|
||||
|
||||
#define BUFFER_SIZE 2048
|
||||
#define MAX_PATH 2048
|
||||
|
||||
#define SUCCESS 0
|
||||
#define FAILURE -1
|
||||
#define Failed(x) (((int) (x)) == FAILURE)
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
#define STREQ(a,b) (strcmp(a,b) == 0)
|
||||
#define NUMELEMS(arr) (sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
/*
|
||||
* Definitions for unsigned "ints"; especially for use in data structures
|
||||
* that will be shared among (potentially) different cpu's (we punt on
|
||||
* byte ordering problems tho)
|
||||
*/
|
||||
|
||||
typedef unsigned char u8;
|
||||
typedef unsigned short u16;
|
||||
typedef unsigned long u32;
|
||||
|
||||
/*
|
||||
* vars controlled by command line options
|
||||
*/
|
||||
|
||||
int verbose = FALSE; /* be verbose */
|
||||
int test_only = FALSE; /* test only */
|
||||
|
||||
extern char *optarg; /* getopt(3) control vars */
|
||||
extern int optind, opterr;
|
||||
|
||||
char *progname; /* for error() */
|
||||
|
||||
int process(char *arg);
|
||||
void error(int errn, ...);
|
||||
long getparm(char *s, long min, long max, char *msg);
|
||||
|
||||
#define ERR_ERRNO (1<<((sizeof(int) * 8) - 2)) /* hi bit; use 'errno' */
|
||||
#define ERR_FATAL (ERR_ERRNO / 2) /* fatal error ; no return */
|
||||
#define ERR_ABORT (ERR_ERRNO / 4) /* fatal error ; abort */
|
||||
#define ERR_MASK (ERR_ERRNO | ERR_FATAL | ERR_ABORT) /* all */
|
||||
|
||||
#define stol(p) strtol(p, (char **) NULL, 0)
|
||||
int Open(), Read(), Write();
|
||||
|
||||
int main(
|
||||
int argc,
|
||||
char **argv
|
||||
)
|
||||
{
|
||||
register int c;
|
||||
int showusage = FALSE; /* usage error? */
|
||||
int rc = 0;
|
||||
|
||||
/*
|
||||
* figure out invocation leaf-name
|
||||
*/
|
||||
|
||||
if ((progname = strrchr(argv[0], '/')) == (char *) NULL)
|
||||
progname = argv[0];
|
||||
else
|
||||
progname++;
|
||||
|
||||
argv[0] = progname; /* for getopt err reporting */
|
||||
|
||||
/*
|
||||
* Check options and arguments.
|
||||
*/
|
||||
|
||||
opterr = 0; /* we'll report all errors */
|
||||
while ((c = getopt(argc, argv, GETOPTARGS)) != EOF)
|
||||
switch (c)
|
||||
{
|
||||
case 't': /* toggle test only mode */
|
||||
test_only = ! test_only;
|
||||
break;
|
||||
|
||||
case 'v': /* toggle verbose */
|
||||
verbose = ! verbose;
|
||||
break;
|
||||
|
||||
case '?':
|
||||
showusage = TRUE;
|
||||
}
|
||||
|
||||
if (showusage)
|
||||
{
|
||||
(void) fprintf(stderr, "%s", USAGE);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
* traverse and process the arguments
|
||||
*/
|
||||
|
||||
for ( ; argv[optind]; optind++)
|
||||
if (Failed(process(argv[optind])))
|
||||
rc = FAILURE;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* process(arg)
|
||||
*/
|
||||
|
||||
int
|
||||
process(char *arg)
|
||||
{
|
||||
FILE *in;
|
||||
FILE *out = (FILE *) 0;
|
||||
char outname[ MAX_PATH ];
|
||||
char *bptr;
|
||||
char buffer[ BUFFER_SIZE ];
|
||||
int length;
|
||||
int line_number;
|
||||
int rc = SUCCESS; /* succeed by default */
|
||||
|
||||
in = fopen( arg, "r" );
|
||||
if (!in)
|
||||
error( ERR_ERRNO | ERR_FATAL, "Unable to open file (%s)\n", arg );
|
||||
|
||||
if ( !test_only ) {
|
||||
sprintf( outname, "%s.eoltmp", arg );
|
||||
|
||||
out = fopen( outname, "w" );
|
||||
if (!out)
|
||||
error( ERR_ERRNO | ERR_FATAL, "Unable to open file (%s)\n", arg );
|
||||
}
|
||||
|
||||
if ( verbose )
|
||||
fprintf( stderr, "Processing %s\n", arg );
|
||||
|
||||
for ( line_number=1 ; ; line_number++ ) {
|
||||
bptr = fgets( buffer, BUFFER_SIZE, in );
|
||||
if (!bptr)
|
||||
break;
|
||||
|
||||
/*
|
||||
* Don't count the carriage return.
|
||||
*/
|
||||
|
||||
length = strlen( buffer ) - 1;
|
||||
|
||||
if ( buffer[ length ] != '\n' )
|
||||
error(ERR_ERRNO|ERR_FATAL, "Line %d too long in %s\n", line_number, arg);
|
||||
|
||||
while ( isspace( (int) buffer[ length ] ) )
|
||||
buffer[ length-- ] = '\0';
|
||||
|
||||
if ( test_only ) {
|
||||
fprintf( stderr, "%s\n", arg );
|
||||
break;
|
||||
}
|
||||
|
||||
fprintf( out, "%s\n", buffer );
|
||||
}
|
||||
|
||||
fclose( in );
|
||||
if ( !test_only ) {
|
||||
fclose( out );
|
||||
rename( outname, arg );
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* error(errn, arglist)
|
||||
* report an error to stderr using printf(3) conventions.
|
||||
* Any output is preceded by '<progname>: '
|
||||
*
|
||||
* Uses ERR_FATAL bit to request exit(errn)
|
||||
* ERR_ABORT to request abort()
|
||||
* ERR_ERRNO to indicate use of errno instead of argument.
|
||||
*
|
||||
* If resulting 'errn' is non-zero, it is assumed to be an 'errno' and its
|
||||
* associated error message is appended to the output.
|
||||
*/
|
||||
|
||||
/*VARARGS*/
|
||||
|
||||
void
|
||||
error(int error_flag, ...)
|
||||
{
|
||||
va_list arglist;
|
||||
register char *format;
|
||||
int local_errno;
|
||||
|
||||
extern int errno;
|
||||
|
||||
(void) fflush(stdout); /* in case stdout/stderr same */
|
||||
|
||||
local_errno = error_flag & ~ERR_MASK;
|
||||
if (error_flag & ERR_ERRNO) /* use errno? */
|
||||
local_errno = errno;
|
||||
|
||||
va_start(arglist, error_flag);
|
||||
format = va_arg(arglist, char *);
|
||||
(void) fprintf(stderr, "%s: ", progname);
|
||||
(void) vfprintf(stderr, format, arglist);
|
||||
va_end(arglist);
|
||||
|
||||
if (local_errno)
|
||||
(void) fprintf(stderr, " (%s)\n", strerror(local_errno));
|
||||
else
|
||||
(void) fprintf(stderr, "\n");
|
||||
|
||||
(void) fflush(stderr);
|
||||
|
||||
if (error_flag & (ERR_FATAL | ERR_ABORT))
|
||||
{
|
||||
if (error_flag & ERR_FATAL)
|
||||
{
|
||||
error(0, "fatal error, exiting");
|
||||
exit(local_errno ? local_errno : 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
error(0, "fatal error, aborting");
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
long
|
||||
getparm(char *s,
|
||||
long min,
|
||||
long max,
|
||||
char *msg)
|
||||
{
|
||||
long val;
|
||||
|
||||
if ( ! strchr("0123456789-", *s))
|
||||
{
|
||||
error(ERR_FATAL, "'%s' is not a number", s);
|
||||
return min;
|
||||
}
|
||||
|
||||
val = strtol(s, (char **) NULL, 0);
|
||||
if ((val < min) || (val > max))
|
||||
{
|
||||
if (min == max)
|
||||
error(ERR_FATAL, "%s can only be %ld", s, min);
|
||||
else
|
||||
error(ERR_FATAL, "%s must be between %ld and %ld", msg, min, max);
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Open()
|
||||
* Perform open(2), returning the file descriptor. Prints
|
||||
* error message if open fails.
|
||||
*/
|
||||
|
||||
int
|
||||
Open(char *file,
|
||||
int oflag,
|
||||
int mode)
|
||||
{
|
||||
int O_fd;
|
||||
|
||||
if (Failed(O_fd = open(file, oflag, mode)))
|
||||
error(
|
||||
ERR_ERRNO | ERR_FATAL,
|
||||
"open('%s', 0x%x, 0%o) failed", file, oflag, mode
|
||||
);
|
||||
|
||||
return O_fd;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read()
|
||||
* Perform read(2); prints error message if fails.
|
||||
*/
|
||||
|
||||
int
|
||||
Read(int file,
|
||||
char *buffer,
|
||||
unsigned int count)
|
||||
{
|
||||
int nbytes;
|
||||
|
||||
if (Failed(nbytes = read(file, buffer, count)))
|
||||
error(
|
||||
ERR_ERRNO | ERR_FATAL,
|
||||
"read(%d, 0x%x, %d) failed", file, buffer, count
|
||||
);
|
||||
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
/*
|
||||
* Write()
|
||||
* Perform write(2); prints error message if fails.
|
||||
*/
|
||||
|
||||
int
|
||||
Write(int file,
|
||||
char *buffer,
|
||||
unsigned int count)
|
||||
{
|
||||
int nbytes;
|
||||
|
||||
if (Failed(nbytes = write(file, buffer, count)))
|
||||
error(
|
||||
ERR_ERRNO | ERR_FATAL,
|
||||
"write(%d, 0x%x, %d) failed", file, buffer, count
|
||||
);
|
||||
|
||||
return nbytes;
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
#!@KSH@ -p
|
||||
#
|
||||
# Either bash or ksh will be ok for this; requires (( )) arithmetic
|
||||
# (-p above just says to not parse $ENV file; makes it faster for
|
||||
# those of us who set $ENV)
|
||||
#
|
||||
# install files if they have changed by running 'cmp', then 'install'
|
||||
# as necessary.
|
||||
#
|
||||
# Optionally, can append a suffix before last existing suffix (if any)
|
||||
#
|
||||
# NOTE
|
||||
# We avoid using typical install(1M) programs since they have
|
||||
# large variability across systems and we also need to support ou
|
||||
# -V option.
|
||||
# So we just copy and chmod by hand.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
progname=`basename $0`
|
||||
#progname=${0##*/} # fast basename hack for ksh, bash
|
||||
|
||||
USAGE=\
|
||||
"usage: $progname [ -vmV ] file [ file ... ] dest-directory-or-file
|
||||
-v -- verbose
|
||||
-V suffix -- suffix to append to targets (before any . suffix)
|
||||
eg: -V _g would change 'foo' to 'foo_g' and
|
||||
'libfoo.a' to 'libfoo_g.a'
|
||||
-m mode -- mode for new file(s)"
|
||||
|
||||
fatal() {
|
||||
if [ "$1" ]
|
||||
then
|
||||
echo $* >&2
|
||||
fi
|
||||
echo "$USAGE" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# process the options
|
||||
#
|
||||
|
||||
verbose=""
|
||||
suffix=""
|
||||
mode=""
|
||||
|
||||
while getopts vm:V: OPT
|
||||
do
|
||||
case "$OPT" in
|
||||
v)
|
||||
verbose="yes";;
|
||||
V)
|
||||
eval suffix=$OPTARG;;
|
||||
m)
|
||||
mode="$OPTARG";;
|
||||
*)
|
||||
fatal
|
||||
esac
|
||||
done
|
||||
|
||||
shiftcount=`expr $OPTIND - 1`
|
||||
shift $shiftcount
|
||||
|
||||
args=$*
|
||||
|
||||
#
|
||||
# Separate source file(s) from dest directory or file
|
||||
#
|
||||
|
||||
files=""
|
||||
dest=""
|
||||
for d in $args
|
||||
do
|
||||
files="$files $dest"
|
||||
dest=$d
|
||||
done
|
||||
|
||||
if [ ! "$files" ] || [ ! "$dest" ]
|
||||
then
|
||||
fatal "missing files or invalid destination"
|
||||
fi
|
||||
|
||||
#
|
||||
# Process the arguments
|
||||
#
|
||||
|
||||
targets=""
|
||||
for f in $files
|
||||
do
|
||||
# leaf=`basename $f`
|
||||
leaf=${f##*/} # fast basename hack for ksh, bash
|
||||
|
||||
target=$dest
|
||||
if [ -d $dest ]
|
||||
then
|
||||
# if we were given a suffix, then add it as appropriate
|
||||
if [ "$suffix" ]
|
||||
then
|
||||
case $f in
|
||||
*.*)
|
||||
# leaf=`echo $leaf |
|
||||
# /bin/sed "s/\([~\.]*\)\.\(.*\)$/\1$suffix.\2/"`
|
||||
# ksh,bash hack for above sed script
|
||||
leaf=${leaf%%.*}$suffix.${leaf#*.}
|
||||
|
||||
[ "$verbose" = "yes" ] &&
|
||||
echo "$progname: $f will be installed as $leaf"
|
||||
;;
|
||||
*)
|
||||
leaf=$leaf$suffix;;
|
||||
esac
|
||||
fi
|
||||
target=$target/$leaf
|
||||
fi
|
||||
|
||||
[ ! -r $f ] && fatal "can not read $f"
|
||||
|
||||
if cmp -s $f $target
|
||||
then
|
||||
[ "$verbose" = "yes" ] && echo "'$f' not newer than '$target'"
|
||||
else
|
||||
[ "$verbose" = "yes" ] && echo "rm -f $target"
|
||||
rm -f $target
|
||||
echo "cp -p $f $target"
|
||||
cp -p $f $target || exit 1
|
||||
targets="$targets $target" # keep list for chmod below
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$mode" -a "$targets" ]
|
||||
then
|
||||
[ "$verbose" = "yes" ] && echo "chmod $mode $targets"
|
||||
chmod $mode $targets
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
@@ -1,43 +0,0 @@
|
||||
#!@KSH@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Make a directory write protected
|
||||
# Used to write protect the install point after a build
|
||||
# to prevent inadvertant overwriting.
|
||||
#
|
||||
|
||||
# is a particular command available on this machine?
|
||||
#
|
||||
cmd_avail()
|
||||
{
|
||||
set -- `type $1 2>&1`
|
||||
if [ "$2" = "not" -a "$3" = "found" ] || [ "$3" = "not" -a "$4" = "found" ]
|
||||
then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
lock_directory() {
|
||||
l_dir=$1/. # get any symlink out of the way using '.'
|
||||
if [ -d $l_dir ]
|
||||
then
|
||||
find $l_dir -type d -perm -0200 -print | $XARGS chmod -w
|
||||
fi
|
||||
}
|
||||
|
||||
# Use gnu xargs if available; faster, more reliable in general
|
||||
XARGS=xargs
|
||||
cmd_avail gxargs && XARGS=gxargs
|
||||
|
||||
for dir
|
||||
do
|
||||
lock_directory $dir
|
||||
done
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
|
||||
@@ -1,565 +0,0 @@
|
||||
|
||||
/***** P A C K H E X . C ************************************************
|
||||
*
|
||||
* Packhex is a hex-file compaction utility. It attempts to concatenate
|
||||
* hex records to produce more size-efficient packaging.
|
||||
*
|
||||
* Limitations: Input files must be correctly formatted. This utility
|
||||
* is not robust enough to detect hex-record formatting
|
||||
* errors.
|
||||
*
|
||||
* Published: May 1993 Embedded Systems Programming magazine
|
||||
* "Creating Faster Hex Files"
|
||||
*
|
||||
* URL: ESP magazine: http://www.embedded.com
|
||||
* Source Code: ftp://ftp.mfi.com/pub/espmag/1993/pakhex.zip
|
||||
*
|
||||
* Author: Mark Gringrich
|
||||
*
|
||||
* Compiler: Microsoft C 6.0
|
||||
* cl /F 1000 packhex.c
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
/* #define SMALLER_RECORDS */
|
||||
#ifdef SMALLER_RECORDS
|
||||
#define MAX_LEN_S1_RECS 128
|
||||
#define MAX_LEN_S2_RECS 128
|
||||
#define MAX_LEN_S3_RECS 128
|
||||
#else
|
||||
#define MAX_LEN_S1_RECS 252
|
||||
#define MAX_LEN_S2_RECS 251
|
||||
#define MAX_LEN_S3_RECS 250
|
||||
#endif
|
||||
|
||||
|
||||
/*--------------------------------- includes ---------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifndef VMS
|
||||
#ifndef HAVE_STRERROR
|
||||
extern int sys_nerr;
|
||||
extern char *sys_errlist[];
|
||||
|
||||
#define strerror( _err ) \
|
||||
((_err) < sys_nerr) ? sys_errlist [(_err)] : "unknown error"
|
||||
|
||||
#else /* HAVE_STRERROR */
|
||||
char *strerror ();
|
||||
#endif
|
||||
#else /* VMS */
|
||||
char *strerror (int,...);
|
||||
#endif
|
||||
|
||||
#if defined(__unix__) && !defined(EXIT_FAILURE)
|
||||
#define EXIT_FAILURE -1
|
||||
#define EXIT_SUCCESS 0
|
||||
#endif
|
||||
|
||||
/*--------------------------------- defines ----------------------------------*/
|
||||
|
||||
#define YES 1
|
||||
#define MAX_LINE_SIZE 600
|
||||
#define EOS '\0'
|
||||
|
||||
|
||||
/*---------------------------------- macros ----------------------------------*/
|
||||
|
||||
/* Convert ASCII hexadecimal digit to value. */
|
||||
|
||||
#define HEX_DIGIT( C ) ( ( ( ( C ) > '9' ) ? ( C ) + 25 : ( C ) ) & 0xF )
|
||||
|
||||
|
||||
/*--------------------------------- typedefs ---------------------------------*/
|
||||
|
||||
typedef unsigned char Boolean;
|
||||
typedef unsigned char Uchar;
|
||||
typedef unsigned int Uint;
|
||||
typedef unsigned long Ulong;
|
||||
|
||||
typedef struct /* Functions and constant returning Hex-record vital stats. */
|
||||
{
|
||||
Boolean ( *is_data_record )( char * );
|
||||
Ulong ( *get_address )( char * );
|
||||
Uint ( *get_data_count )( char * );
|
||||
const Uint max_data_count;
|
||||
char *( *get_data_start )( char * );
|
||||
void ( *put_data_record )( Uint, Ulong, char * );
|
||||
} Rec_vitals;
|
||||
|
||||
|
||||
/*--------------------------- function prototypes ----------------------------*/
|
||||
|
||||
Rec_vitals * identify_first_data_record( char *, int );
|
||||
Ulong get_ndigit_hex( char *, int );
|
||||
|
||||
|
||||
/*----------------------------- Intel Hex format -----------------------------*/
|
||||
|
||||
/*
|
||||
* Intel Hex data-record layout
|
||||
*
|
||||
* :aabbbbccd...dee
|
||||
*
|
||||
* : - header character
|
||||
* aa - record data byte count, a 2-digit hex value
|
||||
* bbbb - record address, a 4-digit hex value
|
||||
* cc - record type, a 2-digit hex value:
|
||||
* "00" is a data record
|
||||
* "01" is an end-of-data record
|
||||
* "02" is an extended-address record
|
||||
* "03" is a start record
|
||||
* d...d - data (always an even number of chars)
|
||||
* ee - record checksum, a 2-digit hex value
|
||||
* checksum = 2's complement
|
||||
* [ (sum of bytes: aabbbbccd...d) modulo 256 ]
|
||||
*/
|
||||
|
||||
|
||||
Boolean is_intel_data_rec( char * rec_str )
|
||||
{
|
||||
return( ( rec_str[ 0 ] == ':' ) && ( rec_str[ 8 ] == '0' ) );
|
||||
}
|
||||
|
||||
Uint get_intel_rec_data_count( char * rec_str )
|
||||
{
|
||||
return( ( Uint ) get_ndigit_hex( rec_str + 1, 2 ) );
|
||||
}
|
||||
|
||||
Ulong get_intel_rec_address( char * rec_str )
|
||||
{
|
||||
return( get_ndigit_hex( rec_str + 3, 4 ) );
|
||||
}
|
||||
|
||||
char * get_intel_rec_data_start( char * rec_str )
|
||||
{
|
||||
return( rec_str + 9 );
|
||||
}
|
||||
|
||||
void put_intel_data_rec( Uint count, Ulong address, char * data_str )
|
||||
{
|
||||
char *ptr;
|
||||
Uint sum = count + ( address >> 8 & 0xff ) + ( address & 0xff );
|
||||
|
||||
for ( ptr = data_str ; *ptr != EOS ; ptr += 2 )
|
||||
sum += ( Uint ) get_ndigit_hex( ptr, 2 );
|
||||
|
||||
printf(
|
||||
":%02X%04lX00%s%02X\n", count, address, data_str, (~sum + 1) & 0xff
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Rec_vitals intel_hex =
|
||||
{
|
||||
is_intel_data_rec,
|
||||
get_intel_rec_address,
|
||||
get_intel_rec_data_count,
|
||||
255, /* Maximum data bytes in a record. */
|
||||
get_intel_rec_data_start,
|
||||
put_intel_data_rec
|
||||
};
|
||||
|
||||
|
||||
/*------------------------- Motorola S1-record format ------------------------*/
|
||||
|
||||
/*
|
||||
* Motorola S-record data-record layout
|
||||
*
|
||||
* Sabbc...cd...dee
|
||||
*
|
||||
* S - header character
|
||||
* a - record type, a 1-digit value:
|
||||
* "0" is a header record
|
||||
* "1" is a 2-byte-address data record
|
||||
* "2" is a 3-byte-address data record
|
||||
* "3" is a 4-byte-address data record
|
||||
* "7" is a 4-byte-address end-of-data record
|
||||
* "8" is a 3-byte-address end-of-data record
|
||||
* "9" is a 2-byte-address end-of-data record
|
||||
* bb - record length in bytes, a 2-digit hex value
|
||||
* (record length doesn't count the header/type
|
||||
* chars and checksum byte)
|
||||
* c...c - record address, a 4-, 6-, or 8-digit value,
|
||||
* depending on record type
|
||||
* d...d - data (always an even number of chars)
|
||||
* ee - record checksum, a 2-digit hex value
|
||||
* checksum = 1's complement
|
||||
* [ (sum of all bytes: bbc..cd...d) modulo 256 ]
|
||||
*/
|
||||
|
||||
#define S1_COUNT_OFFSET 3
|
||||
|
||||
|
||||
Boolean is_moto_s1_data_rec( char * rec_str )
|
||||
{
|
||||
return ( ( rec_str[ 0 ] == 'S' ) && ( rec_str[ 1 ] == '1' ) );
|
||||
}
|
||||
|
||||
Uint get_moto_s1_rec_data_count( char * rec_str )
|
||||
{
|
||||
return( ( Uint ) get_ndigit_hex( rec_str + 2, 2 ) - S1_COUNT_OFFSET );
|
||||
}
|
||||
|
||||
Ulong get_moto_s1_rec_address( char * rec_str )
|
||||
{
|
||||
return( get_ndigit_hex( rec_str + 4, 4 ) );
|
||||
}
|
||||
|
||||
char * get_moto_s1_rec_data_start( char * rec_str )
|
||||
{
|
||||
return( rec_str + 8 );
|
||||
}
|
||||
|
||||
void put_moto_s1_data_rec( Uint count, Ulong address, char * data_str )
|
||||
{
|
||||
char *ptr;
|
||||
Uint sum = S1_COUNT_OFFSET + count +
|
||||
( address >> 8 & 0xff ) + ( address & 0xff );
|
||||
|
||||
for ( ptr = data_str ; *ptr != EOS ; ptr += 2 )
|
||||
sum += ( Uint ) get_ndigit_hex( ptr, 2 );
|
||||
|
||||
printf(
|
||||
"S1%02X%04lX%s%02X\n",
|
||||
count + S1_COUNT_OFFSET, address, data_str, ~sum & 0xff
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Rec_vitals motorola_s1_rec =
|
||||
{
|
||||
is_moto_s1_data_rec,
|
||||
get_moto_s1_rec_address,
|
||||
get_moto_s1_rec_data_count,
|
||||
MAX_LEN_S1_RECS, /* Maximum data bytes in a record. */
|
||||
get_moto_s1_rec_data_start,
|
||||
put_moto_s1_data_rec
|
||||
};
|
||||
|
||||
|
||||
/*------------------------- Motorola S2-record format ------------------------*/
|
||||
|
||||
#define S2_COUNT_OFFSET 4
|
||||
|
||||
Boolean is_moto_s2_data_rec( char * rec_str )
|
||||
{
|
||||
return ( ( rec_str[ 0 ] == 'S' ) && ( rec_str[ 1 ] == '2' ) );
|
||||
}
|
||||
|
||||
Uint get_moto_s2_rec_data_count( char * rec_str )
|
||||
{
|
||||
return( ( Uint ) get_ndigit_hex( rec_str + 2, 2 ) - S2_COUNT_OFFSET );
|
||||
}
|
||||
|
||||
Ulong get_moto_s2_rec_address( char * rec_str )
|
||||
{
|
||||
return( get_ndigit_hex( rec_str + 4, 6 ) );
|
||||
}
|
||||
|
||||
char * get_moto_s2_rec_data_start( char * rec_str )
|
||||
{
|
||||
return( rec_str + 10 );
|
||||
}
|
||||
|
||||
void put_moto_s2_data_rec( Uint count, Ulong address, char * data_str )
|
||||
{
|
||||
char *ptr;
|
||||
Uint sum = S2_COUNT_OFFSET + count + ( address >> 16 & 0xff ) +
|
||||
( address >> 8 & 0xff ) +
|
||||
( address & 0xff );
|
||||
|
||||
for ( ptr = data_str ; *ptr != EOS ; ptr += 2 )
|
||||
sum += ( Uint ) get_ndigit_hex( ptr, 2 );
|
||||
|
||||
printf(
|
||||
"S2%02X%06lX%s%02X\n",
|
||||
count + S2_COUNT_OFFSET, address, data_str, ~sum & 0xff
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Rec_vitals motorola_s2_rec =
|
||||
{
|
||||
is_moto_s2_data_rec,
|
||||
get_moto_s2_rec_address,
|
||||
get_moto_s2_rec_data_count,
|
||||
MAX_LEN_S2_RECS, /* Maximum data bytes in a record. */
|
||||
get_moto_s2_rec_data_start,
|
||||
put_moto_s2_data_rec
|
||||
};
|
||||
|
||||
|
||||
/*------------------------- Motorola S3-record format ------------------------*/
|
||||
|
||||
#define S3_COUNT_OFFSET 5
|
||||
|
||||
Boolean is_moto_s3_data_rec( char * rec_str )
|
||||
{
|
||||
return ( ( rec_str[ 0 ] == 'S' ) && ( rec_str[ 1 ] == '3' ) );
|
||||
}
|
||||
|
||||
Uint get_moto_s3_rec_data_count( char * rec_str )
|
||||
{
|
||||
return( ( Uint ) get_ndigit_hex( rec_str + 2, 2 ) - S3_COUNT_OFFSET );
|
||||
}
|
||||
|
||||
Ulong get_moto_s3_rec_address( char * rec_str )
|
||||
{
|
||||
return( get_ndigit_hex( rec_str + 4, 8 ) );
|
||||
}
|
||||
|
||||
char * get_moto_s3_rec_data_start( char * rec_str )
|
||||
{
|
||||
return( rec_str + 12 );
|
||||
}
|
||||
|
||||
void put_moto_s3_data_rec( Uint count, Ulong address, char * data_str )
|
||||
{
|
||||
char *ptr;
|
||||
Uint sum = S3_COUNT_OFFSET + count + ( address >> 24 & 0xff ) +
|
||||
( address >> 16 & 0xff ) +
|
||||
( address >> 8 & 0xff ) +
|
||||
( address & 0xff );
|
||||
|
||||
for ( ptr = data_str ; *ptr != EOS ; ptr += 2 )
|
||||
sum += ( Uint ) get_ndigit_hex( ptr, 2 );
|
||||
|
||||
printf(
|
||||
"S3%02X%08lX%s%02X\n",
|
||||
count + S3_COUNT_OFFSET, address, data_str, ~sum & 0xff
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Rec_vitals motorola_s3_rec =
|
||||
{
|
||||
is_moto_s3_data_rec,
|
||||
get_moto_s3_rec_address,
|
||||
get_moto_s3_rec_data_count,
|
||||
MAX_LEN_S3_RECS, /* Maximum data bytes in a record. */
|
||||
get_moto_s3_rec_data_start,
|
||||
put_moto_s3_data_rec
|
||||
};
|
||||
|
||||
|
||||
/*-------------------- Put your favorite hex format here ---------------------*/
|
||||
|
||||
/*
|
||||
* * * * The following is a template for an additional hex format: * * *
|
||||
*
|
||||
*
|
||||
* Boolean is_X_data_rec( char * rec_str ) {}
|
||||
*
|
||||
* Uint get_X_rec_data_count( char * rec_str ) {}
|
||||
*
|
||||
* Ulong get_X_rec_address( char * rec_str ) {}
|
||||
*
|
||||
* char * get_X_rec_data_start( char * rec_str ) {}
|
||||
*
|
||||
* void put_X_data_rec( Uint count, Ulong address, char * data_str ) {}
|
||||
*
|
||||
* Rec_vitals X_rec =
|
||||
* {
|
||||
* is_X_data_rec,
|
||||
* get_X_rec_address,
|
||||
* get_X_rec_data_count,
|
||||
* MAXIMUM DATA BYTES IN A RECORD,
|
||||
* get_X_rec_data_start,
|
||||
* put_X_data_rec
|
||||
* };
|
||||
*
|
||||
*/
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/*
|
||||
* Put address of additional Rec_vitals structures
|
||||
* in this array, before the NULL entry.
|
||||
*/
|
||||
|
||||
Rec_vitals *formats[] =
|
||||
{
|
||||
&intel_hex,
|
||||
&motorola_s1_rec,
|
||||
&motorola_s2_rec,
|
||||
&motorola_s3_rec,
|
||||
( Rec_vitals * ) NULL
|
||||
};
|
||||
|
||||
|
||||
/**** main *****************************************************************
|
||||
*
|
||||
*
|
||||
* Expects: Nothing (no command-line parameters).
|
||||
*
|
||||
* Returns: Exit status (EXIT_SUCCESS or EXIT_FAILURE).
|
||||
*
|
||||
* Reads hex records on the standard input and attempts to
|
||||
* splice adjacent data fields together. Results appear on
|
||||
* the standard output.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
int main(
|
||||
int argc,
|
||||
char **argv
|
||||
)
|
||||
{
|
||||
|
||||
char inbuff[ MAX_LINE_SIZE ], outbuff[ MAX_LINE_SIZE ];
|
||||
char *in_dptr, *out_dptr;
|
||||
int d_total, d_count, d_excess, n;
|
||||
int length;
|
||||
Ulong in_rec_addr, out_rec_addr = 0;
|
||||
Rec_vitals *rptr;
|
||||
|
||||
|
||||
/* Sift through file until first hex record is identified. */
|
||||
|
||||
rptr = identify_first_data_record( inbuff, MAX_LINE_SIZE );
|
||||
if ( rptr == NULL )
|
||||
{
|
||||
fputs( "No hex records found.\n", stderr );
|
||||
exit( EXIT_FAILURE );
|
||||
}
|
||||
|
||||
|
||||
/* Attempt data-record splicing until end-of-file is reached. */
|
||||
d_total = 0;
|
||||
for (;;) {
|
||||
if ( rptr->is_data_record( inbuff ) == YES )
|
||||
{ /* Input record is a data record. */
|
||||
d_count = rptr->get_data_count( inbuff );
|
||||
in_rec_addr = rptr->get_address( inbuff );
|
||||
in_dptr = rptr->get_data_start( inbuff );
|
||||
|
||||
if ( d_total == 0 || in_rec_addr != out_rec_addr + d_total )
|
||||
{ /* Begin a new output record. */
|
||||
if ( d_total != 0 )
|
||||
rptr->put_data_record( d_total, out_rec_addr, outbuff );
|
||||
out_dptr = outbuff;
|
||||
n = d_total = d_count;
|
||||
out_rec_addr = in_rec_addr;
|
||||
}
|
||||
else if
|
||||
( ( d_excess = d_total + d_count - rptr->max_data_count ) > 0 )
|
||||
{ /* Output a maximum-length record, then start a new record. */
|
||||
strncat( outbuff, in_dptr, 2 * ( d_count - d_excess ) );
|
||||
rptr->put_data_record(
|
||||
rptr->max_data_count, out_rec_addr, outbuff
|
||||
);
|
||||
in_dptr += 2 * ( d_count - d_excess );
|
||||
out_dptr = outbuff;
|
||||
n = d_total = d_excess;
|
||||
out_rec_addr += rptr->max_data_count;
|
||||
}
|
||||
else
|
||||
{ /* Append input record's data field with accumulated data. */
|
||||
out_dptr = outbuff + ( 2 * d_total );
|
||||
d_total += n = d_count;
|
||||
}
|
||||
strncpy( out_dptr, in_dptr, 2 * n );
|
||||
out_dptr[ 2 * n ] = EOS;
|
||||
}
|
||||
else
|
||||
{ /* Not a data record;
|
||||
* flush accumulated data then echo non-data record.
|
||||
*/
|
||||
if ( d_total != 0 )
|
||||
{
|
||||
rptr->put_data_record( d_total, out_rec_addr, outbuff );
|
||||
d_total = 0;
|
||||
}
|
||||
puts( inbuff );
|
||||
}
|
||||
|
||||
inbuff[ MAX_LINE_SIZE - 1 ] = '\0';
|
||||
if ( !fgets( inbuff, MAX_LINE_SIZE, stdin ) )
|
||||
break;
|
||||
if ( inbuff[ MAX_LINE_SIZE - 1 ] ) {
|
||||
fprintf( stderr, "Input line too long" );
|
||||
exit( 1 );
|
||||
}
|
||||
length = strlen(inbuff);
|
||||
inbuff[length - 1] = '\0';
|
||||
|
||||
}
|
||||
|
||||
|
||||
return ( EXIT_SUCCESS );
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**** identify_first_data_record *******************************************
|
||||
*
|
||||
* Expects: Pointer to hex-record line buffer.
|
||||
*
|
||||
* Returns: Pointer to hex-record structure (NULL if no match found).
|
||||
*
|
||||
* Reads the standard input, line by line, searching for a valid
|
||||
* record header character. If a valid header is found, a pointer
|
||||
* to the hex-record's type structure is returned, otherwise NULL.
|
||||
*
|
||||
* The input-stream pointer is left pointing to the first valid hex record.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
Rec_vitals * identify_first_data_record( char * buff_ptr, int max_length )
|
||||
{
|
||||
Rec_vitals ** ptr;
|
||||
int length;
|
||||
|
||||
|
||||
|
||||
for ( ;; ) {
|
||||
|
||||
buff_ptr[ max_length - 1 ] = '\0';
|
||||
if ( !fgets( buff_ptr, max_length, stdin ) )
|
||||
break;
|
||||
if ( buff_ptr[ max_length - 1 ] ) {
|
||||
fprintf( stderr, "Input line too long" );
|
||||
exit( 1 );
|
||||
}
|
||||
length = strlen(buff_ptr);
|
||||
buff_ptr[length - 1] = '\0';
|
||||
|
||||
for ( ptr = formats ; *ptr != ( Rec_vitals * ) NULL ; ptr++ )
|
||||
if ( ( *ptr )->is_data_record( buff_ptr ) == YES )
|
||||
return( *ptr ); /* Successful return. */
|
||||
|
||||
puts( buff_ptr ); /* Echo non-hex-record line. */
|
||||
}
|
||||
|
||||
return( ( Rec_vitals * ) NULL ); /* Unsuccessful return. */
|
||||
}
|
||||
|
||||
|
||||
/**** get_ndigit_hex *******************************************************
|
||||
*
|
||||
* Expects: Pointer to first ASCII hexadecimal digit, number of digits.
|
||||
*
|
||||
* Returns: Value of hexadecimal string as an unsigned long.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
Ulong get_ndigit_hex( char * cptr, int digits )
|
||||
{
|
||||
Ulong value;
|
||||
|
||||
for ( value = 0 ; --digits >= 0 ; cptr++ )
|
||||
value = ( value * 16L ) + HEX_DIGIT( *cptr );
|
||||
|
||||
return( value );
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
#!@KSH@ -p
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Delete all files from the current directory that can be recreated
|
||||
# via RCS 'co' commonds
|
||||
# Used by 'make clobber'
|
||||
#
|
||||
|
||||
progname=${0##*/} # fast basename hack for ksh, bash
|
||||
|
||||
USAGE=\
|
||||
"usage: $progname [ -v ]"
|
||||
|
||||
fatal() {
|
||||
if [ "$1" ]
|
||||
then
|
||||
echo $* >&2
|
||||
fi
|
||||
echo "$USAGE" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# process the options
|
||||
#
|
||||
|
||||
verbose=""
|
||||
|
||||
while getopts v OPT
|
||||
do
|
||||
case "$OPT" in
|
||||
v)
|
||||
verbose="yes";;
|
||||
*)
|
||||
fatal
|
||||
esac
|
||||
done
|
||||
|
||||
let $((shiftcount = $OPTIND - 1))
|
||||
shift $shiftcount
|
||||
|
||||
args=$*
|
||||
[ "$args" ] && fatal
|
||||
|
||||
[ -d RCS/. ] || exit 0
|
||||
|
||||
# there is probably a better way to do this
|
||||
|
||||
rcs_files=`echo RCS/*,v | sed -e 's?RCS/??g' -e's/,v//g'`
|
||||
|
||||
kills=""
|
||||
for f in $rcs_files
|
||||
do
|
||||
# build list of all files in RCS/*,v that are *not* locked
|
||||
if [ -f $f ] && [ ! -w $f ] && [ -f RCS/$f,v ]
|
||||
then
|
||||
locked=`rlog -L -R $f`
|
||||
[ "$locked" = "" ] && kills="$kills $f"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$kills" ]
|
||||
then
|
||||
[ "$verbose" ] && echo rm -f $kills
|
||||
rm -f $kills
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
@@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
find $1 -type f -a ! -name "*.scn" -a ! -name "bsp_specs" -a \
|
||||
-print > /tmp/$$.0
|
||||
find $1 -type f -a ! -name "*.scn" -a ! -name "bsp_specs" -a \
|
||||
-exec grep -l '$Id' {} \; > /tmp/$$.1
|
||||
|
||||
diff /tmp/$$.0 /tmp/$$.1 > /tmp/$$.2
|
||||
|
||||
grep "<" /tmp/$$.2 | sed 's/< //' >&1
|
||||
|
||||
rm -f /tmp/$$*
|
||||
@@ -1,738 +0,0 @@
|
||||
/*
|
||||
* unhex
|
||||
* convert a hex file to binary equivalent. If more than one file name
|
||||
* is given, then the output will be logically concatenated together.
|
||||
* stdin and stdout are defaults. Verbose will enable checksum output.
|
||||
*
|
||||
* Supported input formats are Intel hex, Motorola S records, and TI 'B'
|
||||
* records.
|
||||
*
|
||||
* Intel hex input format is
|
||||
* Byte
|
||||
* 1 Colon :
|
||||
* 2..3 Record length, eg: "20"
|
||||
* 4..7 load address nibbles
|
||||
* 8..9 record type: "00" (data) or "02" base addr
|
||||
* 10..x data bytes in ascii-hex
|
||||
* x+1..x+2 cksum (2's compl of (len+addr+data))
|
||||
* x+3 \n -- newline
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
char *USAGE = "\
|
||||
usage: unhex [-va] [ -o file ] [ file [file ... ] ]\n\
|
||||
-v -- verbose\n\
|
||||
-a base -- 1st byte of output corresponds to this address\n\
|
||||
-l -- linear, just writes data out\n\
|
||||
-o file -- output file; must not be input file\n\
|
||||
-F k_bits -- \"holes\" in input will be filled with 0xFF's\n\
|
||||
up to \"k_bits\" * 1024 bits\n\
|
||||
";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifndef VMS
|
||||
#ifndef HAVE_STRERROR
|
||||
extern int sys_nerr;
|
||||
extern char *sys_errlist[];
|
||||
|
||||
#define strerror( _err ) \
|
||||
((_err) < sys_nerr) ? sys_errlist [(_err)] : "unknown error"
|
||||
|
||||
#else /* HAVE_STRERROR */
|
||||
char *strerror ();
|
||||
#endif
|
||||
#else /* VMS */
|
||||
char *strerror (int,...);
|
||||
#endif
|
||||
|
||||
|
||||
#define OK 0
|
||||
#define FAILURE (-1)
|
||||
#define Failed(x) ((x) == FAILURE)
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
typedef char bool;
|
||||
#define STREQ(a,b) (strcmp(a,b) == 0)
|
||||
|
||||
typedef unsigned char u8;
|
||||
typedef unsigned short u16;
|
||||
typedef unsigned long u32;
|
||||
|
||||
/*
|
||||
* Pick out designated bytes
|
||||
*/
|
||||
|
||||
#define B0(x) ((x) & 0xff)
|
||||
#define B1(x) B0((x) >> 8)
|
||||
#define B2(x) B0((x) >> 16)
|
||||
#define B3(x) B0((x) >> 24)
|
||||
|
||||
typedef struct buffer_rec {
|
||||
u32 dl_destaddr;
|
||||
u32 dl_jumpaddr;
|
||||
int dl_count;
|
||||
u8 dl_buf[512];
|
||||
} buffer_rec;
|
||||
|
||||
/*
|
||||
* vars controlled by command line options
|
||||
*/
|
||||
|
||||
bool verbose = FALSE; /* be verbose */
|
||||
bool linear = FALSE; /* just write out linear data */
|
||||
char *outfilename = "-"; /* default output is stdout */
|
||||
u32 base = 0L; /* base address */
|
||||
u32 FFfill = 0L; /* how far to fill w 0xFF's */
|
||||
|
||||
extern char *optarg; /* getopt(3) control vars */
|
||||
extern int optind;
|
||||
|
||||
char *progname; /* for error() */
|
||||
|
||||
void error(int errn, ...);
|
||||
#define ERR_ERRNO (1<<((sizeof(int) * 8) - 2)) /* hi bit; use 'errno' */
|
||||
#define ERR_FATAL (ERR_ERRNO / 2) /* error is fatal; no return */
|
||||
#define ERR_ABORT (ERR_ERRNO / 4) /* error is fatal; abort */
|
||||
#define ERR_MASK (ERR_ERRNO | ERR_FATAL | ERR_ABORT) /* all */
|
||||
|
||||
#ifdef HAVE_STRTOUL
|
||||
#define stol(p) strtoul(p, (char **) NULL, 0)
|
||||
#else
|
||||
#define stol(p) strtol(p, (char **) NULL, 0)
|
||||
#endif
|
||||
|
||||
int unhex(FILE *ifp, char *inm, FILE *ofp, char *onm);
|
||||
int convert_Intel_records(FILE *ifp, char *inm, FILE *ofp, char *onm);
|
||||
int convert_S_records(FILE *ifp, char *inm, FILE *ofp, char *onm);
|
||||
int convert_TI_records(FILE *ifp, char *inm, FILE *ofp, char *onm);
|
||||
void write_record(buffer_rec *tb, FILE *fp);
|
||||
int getnibble(char **p);
|
||||
int getbyte(char **p);
|
||||
long getNbytes(char **p, int n);
|
||||
void badformat(char *s, char *fname, char *msg);
|
||||
|
||||
#define get1bytes(p) ((int) getbyte(p))
|
||||
#define get2bytes(p) ((int) getNbytes(p, 2))
|
||||
#define get3bytes(p) getNbytes(p, 3)
|
||||
#define get4bytes(p) getNbytes(p, 4)
|
||||
|
||||
char *BADADDR = "Invalid record address";
|
||||
char *BADLEN = "Invalid record length";
|
||||
char *BADBASE = "Bad base or starting address";
|
||||
char *BADFMT = "Unrecognized record type";
|
||||
char *BADDATA = "Invalid data byte";
|
||||
char *BADCSUM = "Invalid checksum";
|
||||
char *MISCSUM = "Checksum mismatch";
|
||||
char *BADTYPE = "Unrecognized record type";
|
||||
char *MISTYPE = "Incompatible record types";
|
||||
|
||||
int main(
|
||||
int argc,
|
||||
char **argv
|
||||
)
|
||||
{
|
||||
register int c;
|
||||
bool showusage = FALSE; /* usage error? */
|
||||
int rc = 0;
|
||||
FILE *outfp, *infp;
|
||||
|
||||
/*
|
||||
* figure out invocation leaf-name
|
||||
*/
|
||||
|
||||
if ((progname = strrchr(argv[0], '/')) == (char *) NULL)
|
||||
progname = argv[0];
|
||||
else
|
||||
progname++;
|
||||
|
||||
argv[0] = progname; /* for getopt err reporting */
|
||||
|
||||
/*
|
||||
* Check options and arguments.
|
||||
*/
|
||||
|
||||
progname = argv[0];
|
||||
while ((c = getopt(argc, argv, "F:a:o:vl")) != EOF)
|
||||
switch (c)
|
||||
{
|
||||
case 'a': /* base address */
|
||||
base = stol(optarg);
|
||||
break;
|
||||
|
||||
case 'l': /* linear output */
|
||||
linear = TRUE;
|
||||
break;
|
||||
|
||||
case 'v': /* toggle verbose */
|
||||
verbose = ! verbose;
|
||||
break;
|
||||
|
||||
case 'o': /* output file */
|
||||
outfilename = optarg;
|
||||
break;
|
||||
|
||||
case 'F': /* 0xFF fill amount (bytes) */
|
||||
FFfill = stol(optarg) * 1024L / 8L;
|
||||
break;
|
||||
|
||||
case '?':
|
||||
showusage = TRUE;
|
||||
}
|
||||
|
||||
if (showusage)
|
||||
{
|
||||
(void) fprintf(stderr, "%s", USAGE);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (linear && (base != 0))
|
||||
{
|
||||
error(0, "-l and -a may not be specified in combination");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (STREQ(outfilename, "-"))
|
||||
{
|
||||
outfp = stdout;
|
||||
outfilename = "stdout";
|
||||
}
|
||||
else
|
||||
if ((outfp = fopen(outfilename, "w")) == (FILE *) NULL)
|
||||
{
|
||||
error(-1, "couldn't open '%s' for output", outfilename);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Now process the input files (or stdin, if none specified)
|
||||
*/
|
||||
|
||||
if (argv[optind] == (char *) NULL) /* just stdin */
|
||||
exit(unhex(stdin, "stdin", outfp, outfilename));
|
||||
else
|
||||
for (; (optarg = argv[optind]); optind++)
|
||||
{
|
||||
if (STREQ(optarg, "-"))
|
||||
rc += unhex(stdin, "stdin", outfp, outfilename);
|
||||
else
|
||||
{
|
||||
if ((infp = fopen(optarg, "r")) == (FILE *) NULL)
|
||||
{
|
||||
error(-1, "couldn't open '%s' for input", optarg);
|
||||
exit(1);
|
||||
}
|
||||
rc += unhex(infp, optarg, outfp, outfilename);
|
||||
}
|
||||
}
|
||||
|
||||
return(rc);
|
||||
}
|
||||
|
||||
u16 filesum;
|
||||
|
||||
int
|
||||
unhex(FILE *ifp,
|
||||
char *inm,
|
||||
FILE *ofp,
|
||||
char *onm)
|
||||
{
|
||||
int c;
|
||||
|
||||
filesum = 0;
|
||||
|
||||
/*
|
||||
* Make sure holes will be filled with 0xFF's if requested. We
|
||||
* do this the easy way by just filling the file with FF's before
|
||||
* getting started. To do it more optimally would be quite a bit
|
||||
* more difficult since the user can skip around as much as he/she
|
||||
* likes in the input hex file addressing.
|
||||
*
|
||||
* We'll clean this up later (after this program has run) with
|
||||
* 'stripffs'
|
||||
*/
|
||||
|
||||
if (FFfill)
|
||||
{
|
||||
(void) fseek(ofp, 0, 0);
|
||||
for (c = FFfill; c > 0; c--)
|
||||
(void) fputc(0xFF, ofp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Read the first char from file and determine record types
|
||||
*/
|
||||
|
||||
if ((c = getc(ifp)) != EOF)
|
||||
{
|
||||
ungetc(c, ifp);
|
||||
switch(c)
|
||||
{
|
||||
case 'S':
|
||||
convert_S_records(ifp, inm, ofp, onm);
|
||||
break;
|
||||
|
||||
case ':':
|
||||
convert_Intel_records(ifp, inm, ofp, onm);
|
||||
break;
|
||||
|
||||
case '9':
|
||||
case 'B':
|
||||
convert_TI_records(ifp, inm, ofp, onm);
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
char tmp[2];
|
||||
tmp[0] = c; tmp[1] = 0;
|
||||
badformat(tmp, inm, BADFMT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
fprintf(stderr, "'%s' checksum is 0x%04x\n", inm, filesum);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
convert_Intel_records(
|
||||
FILE *ifp,
|
||||
char *inm,
|
||||
FILE *ofp,
|
||||
char *onm)
|
||||
{
|
||||
char buff[512];
|
||||
char *p;
|
||||
u8 cksum;
|
||||
int incksum;
|
||||
int c;
|
||||
int rectype; /* record type */
|
||||
int len; /* data length of current line */
|
||||
u32 addr;
|
||||
u32 base_address = 0;
|
||||
bool endrecord = FALSE;
|
||||
buffer_rec tb;
|
||||
|
||||
while ( ! endrecord && (fgets(buff, sizeof(buff), ifp)))
|
||||
{
|
||||
p = &buff[0];
|
||||
|
||||
if (p[strlen(p)-1] == '\n') /* get rid of newline */
|
||||
p[strlen(p)-1] = '\0';
|
||||
|
||||
if (p[strlen(p)-1] == '\r') /* get rid of any CR */
|
||||
p[strlen(p)-1] = '\0';
|
||||
|
||||
tb.dl_count = 0;
|
||||
|
||||
if (*p != ':')
|
||||
badformat(p, inm, BADFMT);
|
||||
p++;
|
||||
|
||||
if ((len = getbyte(&p)) == -1) /* record len */
|
||||
badformat(buff, inm, BADLEN);
|
||||
|
||||
if ((addr = get2bytes(&p)) == -1L) /* record addr */
|
||||
badformat(buff, inm, BADADDR);
|
||||
|
||||
rectype = getbyte(&p);
|
||||
|
||||
cksum = len + B0(addr) + B1(addr) + rectype;
|
||||
|
||||
switch (rectype)
|
||||
{
|
||||
case 0x00: /* normal data record */
|
||||
tb.dl_destaddr = base_address + addr;
|
||||
while (len--)
|
||||
{
|
||||
if ((c = getbyte(&p)) == -1)
|
||||
badformat(buff, inm, BADDATA);
|
||||
cksum += c;
|
||||
filesum += c;
|
||||
tb.dl_buf[tb.dl_count++] = c;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x01: /* execution start address */
|
||||
base_address = addr;
|
||||
endrecord = TRUE;
|
||||
break;
|
||||
|
||||
case 0x02: /* new base */
|
||||
if ((base_address = get2bytes(&p)) == -1L)
|
||||
badformat(buff, inm, BADBASE);
|
||||
cksum += B0(base_address) + B1(base_address);
|
||||
base_address <<= 4;
|
||||
break;
|
||||
|
||||
case 0x03: /* seg/off execution start address */
|
||||
{
|
||||
u32 seg, off;
|
||||
|
||||
seg = get2bytes(&p);
|
||||
off = get2bytes(&p);
|
||||
if ((seg == -1L) || (off == -1L))
|
||||
badformat(buff, inm, BADADDR);
|
||||
|
||||
cksum += B0(seg) + B1(seg) + B0(off) + B1(off);
|
||||
|
||||
tb.dl_jumpaddr = (seg << 4) + off;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
error(0, "unknown Intel-hex record type: 0x%02x", rectype);
|
||||
badformat(buff, inm, BADTYPE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Verify checksums are correct in file.
|
||||
*/
|
||||
|
||||
cksum = (-cksum) & 0xff;
|
||||
if ((incksum = getbyte(&p)) == -1)
|
||||
badformat(buff, inm, BADCSUM);
|
||||
if (((u8) incksum) != cksum)
|
||||
badformat(buff, inm, MISCSUM);
|
||||
|
||||
if (tb.dl_count)
|
||||
write_record(&tb, ofp);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
convert_S_records(
|
||||
FILE *ifp,
|
||||
char *inm,
|
||||
FILE *ofp,
|
||||
char *onm)
|
||||
{
|
||||
char buff[512];
|
||||
char *p;
|
||||
u8 cksum;
|
||||
int incksum;
|
||||
int c;
|
||||
int len; /* data length of current line */
|
||||
int rectype; /* record type */
|
||||
u32 addr;
|
||||
bool endrecord = FALSE;
|
||||
buffer_rec tb;
|
||||
|
||||
while ( ! endrecord && (fgets(buff, sizeof(buff), ifp)))
|
||||
{
|
||||
p = &buff[0];
|
||||
|
||||
if (p[strlen(p)-1] == '\n') /* get rid of newline */
|
||||
p[strlen(p)-1] = '\0';
|
||||
|
||||
if (p[strlen(p)-1] == '\r') /* get rid of any CR */
|
||||
p[strlen(p)-1] = '\0';
|
||||
|
||||
tb.dl_count = 0;
|
||||
|
||||
if (*p != 'S')
|
||||
badformat(p, inm, BADFMT);
|
||||
p++;
|
||||
|
||||
if ((rectype = getnibble(&p)) == -1) /* record type */
|
||||
badformat(buff, inm, BADTYPE);
|
||||
|
||||
if ((len = getbyte(&p)) == -1) /* record len */
|
||||
badformat(buff, inm, BADLEN);
|
||||
cksum = len;
|
||||
|
||||
switch (rectype)
|
||||
{
|
||||
case 0x00: /* comment field, ignored */
|
||||
goto write_it;
|
||||
|
||||
case 0x01: /* data record, 16 bit addr */
|
||||
if ((addr = get2bytes(&p)) == -1L)
|
||||
badformat(buff, inm, BADADDR);
|
||||
len -= 3;
|
||||
goto doit;
|
||||
|
||||
case 0x02: /* ... 24 bit addr */
|
||||
if ((addr = get3bytes(&p)) == -1L)
|
||||
badformat(buff, inm, BADADDR);
|
||||
len -= 4;
|
||||
goto doit;
|
||||
|
||||
case 0x03: /* ... 32 bit addr */
|
||||
if ((addr = get4bytes(&p)) == -1L)
|
||||
badformat(buff, inm, BADADDR);
|
||||
len -= 5;
|
||||
doit:
|
||||
cksum += B0(addr) + B1(addr) + B2(addr) + B3(addr);
|
||||
|
||||
tb.dl_destaddr = addr;
|
||||
while (len--)
|
||||
{
|
||||
if ((c = getbyte(&p)) == -1)
|
||||
badformat(buff, inm, BADDATA);
|
||||
cksum += c;
|
||||
filesum += c;
|
||||
tb.dl_buf[tb.dl_count++] = c;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x07: /* 32 bit end record */
|
||||
if ((addr = get4bytes(&p)) == -1L)
|
||||
badformat(buff, inm, BADADDR);
|
||||
goto end_rec;
|
||||
|
||||
case 0x08: /* 24 bit end record */
|
||||
if ((addr = get3bytes(&p)) == -1L)
|
||||
badformat(buff, inm, BADADDR);
|
||||
goto end_rec;
|
||||
|
||||
case 0x09: /* 16 bit end record */
|
||||
if ((addr = get2bytes(&p)) == -1L)
|
||||
badformat(buff, inm, BADADDR);
|
||||
|
||||
end_rec:
|
||||
cksum += B0(addr) + B1(addr) + B2(addr) + B3(addr);
|
||||
tb.dl_jumpaddr = addr;
|
||||
break;
|
||||
|
||||
default:
|
||||
error(0, "unknown Motorola-S record type: 0x%02x", rectype);
|
||||
badformat(buff, inm, BADTYPE);
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Verify checksums are correct in file.
|
||||
*/
|
||||
|
||||
cksum = (~cksum) & 0xff;
|
||||
if ((incksum = getbyte(&p)) == -1)
|
||||
badformat(buff, inm, BADCSUM);
|
||||
if (((u8) incksum) != cksum)
|
||||
badformat(buff, inm, MISCSUM);
|
||||
|
||||
write_it:
|
||||
if (tb.dl_count)
|
||||
write_record(&tb, ofp);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
convert_TI_records(
|
||||
FILE *ifp,
|
||||
char *inm,
|
||||
FILE *ofp,
|
||||
char *onm)
|
||||
{
|
||||
char buff[512];
|
||||
char *p;
|
||||
int c;
|
||||
bool endrecord = FALSE;
|
||||
bool eol;
|
||||
buffer_rec tb;
|
||||
|
||||
while ( ! endrecord && (fgets(buff, sizeof(buff), ifp)))
|
||||
{
|
||||
if (p[strlen(p)-1] == '\n') /* get rid of newline */
|
||||
p[strlen(p)-1] = '\0';
|
||||
|
||||
if (p[strlen(p)-1] == '\r') /* get rid of any CR */
|
||||
p[strlen(p)-1] = '\0';
|
||||
|
||||
tb.dl_count = 0;
|
||||
|
||||
p = &buff[0];
|
||||
eol = FALSE;
|
||||
while ( ! eol && ! endrecord)
|
||||
{
|
||||
switch (*p++)
|
||||
{
|
||||
case '9':
|
||||
if (tb.dl_count)
|
||||
write_record(&tb, ofp);
|
||||
tb.dl_destaddr = get2bytes(&p);
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
c = getbyte(&p);
|
||||
filesum += c;
|
||||
tb.dl_buf[tb.dl_count++] = c;
|
||||
c = getbyte(&p);
|
||||
filesum += c;
|
||||
tb.dl_buf[tb.dl_count++] = c;
|
||||
break;
|
||||
|
||||
case 'F':
|
||||
eol = TRUE;
|
||||
break;
|
||||
|
||||
case ':':
|
||||
endrecord = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
badformat(p, inm, BADFMT);
|
||||
}
|
||||
}
|
||||
if (tb.dl_count)
|
||||
write_record(&tb, ofp);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
write_record(buffer_rec *tb,
|
||||
FILE *fp)
|
||||
{
|
||||
if ( ! linear)
|
||||
{
|
||||
if (tb->dl_destaddr < base)
|
||||
error(ERR_FATAL, "record at address 0x%x precedes base of 0x%x",
|
||||
tb->dl_destaddr, base);
|
||||
(void) fseek(fp, tb->dl_destaddr - base, 0);
|
||||
}
|
||||
|
||||
(void) fwrite(tb->dl_buf, tb->dl_count, 1, fp);
|
||||
tb->dl_destaddr += tb->dl_count;
|
||||
tb->dl_count = 0;
|
||||
}
|
||||
|
||||
int
|
||||
getnibble(char **p)
|
||||
{
|
||||
register int val;
|
||||
|
||||
**p = toupper(**p);
|
||||
switch (**p)
|
||||
{
|
||||
case '0': case '1': case '2': case '3': case '4':
|
||||
case '5': case '6': case '7': case '8': case '9':
|
||||
val = **p - '0';
|
||||
break;
|
||||
|
||||
case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
|
||||
val = 10 + (**p - 'A');
|
||||
break;
|
||||
|
||||
default:
|
||||
return(-1);
|
||||
}
|
||||
*p += 1;
|
||||
|
||||
return(val & 0x0f);
|
||||
}
|
||||
|
||||
int
|
||||
getbyte(char **p)
|
||||
{
|
||||
int n0, n1;
|
||||
|
||||
if ((n0 = getnibble(p)) == -1)
|
||||
return(-1);
|
||||
if ((n1 = getnibble(p)) == -1)
|
||||
return(-1);
|
||||
|
||||
return(((n0 << 4) + n1) & 0xff);
|
||||
}
|
||||
|
||||
long
|
||||
getNbytes(char **p,
|
||||
int n)
|
||||
{
|
||||
int t;
|
||||
u32 val = 0;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if ((t = getbyte(p)) == -1)
|
||||
return(-1L);
|
||||
val <<= 8;
|
||||
val += t;
|
||||
}
|
||||
|
||||
return(val);
|
||||
}
|
||||
|
||||
void
|
||||
badformat(char *s,
|
||||
char *fname,
|
||||
char *msg)
|
||||
{
|
||||
if (s[strlen(s)-1] == '\n') /* get rid of newline */
|
||||
s[strlen(s)-1] = '\0';
|
||||
error(0, "line '%s'::\n\tfrom file '%s'; %s", s, fname, msg);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
* error(errn, arglist)
|
||||
* report an error to stderr using printf(3) conventions.
|
||||
* Any output is preceded by '<progname>: '
|
||||
*
|
||||
* Uses ERR_EXIT bit to request exit(errn)
|
||||
* ERR_ABORT to request abort()
|
||||
* ERR_ERRNO to indicate use of errno instead of argument.
|
||||
*
|
||||
* If resulting 'errn' is non-zero, it is assumed to be an 'errno' and its
|
||||
* associated error message is appended to the output.
|
||||
*/
|
||||
|
||||
/*VARARGS*/
|
||||
|
||||
void
|
||||
error(int error_flag, ...)
|
||||
{
|
||||
va_list arglist;
|
||||
register char *format;
|
||||
int local_errno;
|
||||
|
||||
extern int errno;
|
||||
|
||||
(void) fflush(stdout); /* in case stdout/stderr same */
|
||||
|
||||
local_errno = error_flag & ~ERR_MASK;
|
||||
if (error_flag & ERR_ERRNO) /* use errno? */
|
||||
local_errno = errno;
|
||||
|
||||
va_start(arglist, error_flag);
|
||||
format = va_arg(arglist, char *);
|
||||
(void) fprintf(stderr, "%s: ", progname);
|
||||
(void) vfprintf(stderr, format, arglist);
|
||||
va_end(arglist);
|
||||
|
||||
if (local_errno)
|
||||
(void) fprintf(stderr, " (%s)\n", strerror(local_errno));
|
||||
else
|
||||
(void) fprintf(stderr, "\n");
|
||||
|
||||
(void) fflush(stderr);
|
||||
|
||||
if (error_flag & (ERR_FATAL | ERR_ABORT))
|
||||
{
|
||||
if (error_flag & ERR_FATAL)
|
||||
{
|
||||
error(0, "fatal error, exiting");
|
||||
exit(local_errno ? local_errno : 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
error(0, "fatal error, aborting");
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
#!@KSH@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Unlock a directory processed by lock_directory
|
||||
#
|
||||
|
||||
# is a particular command available on this machine?
|
||||
#
|
||||
cmd_avail()
|
||||
{
|
||||
set -- `type $1 2>&1`
|
||||
if [ "$2" = "not" -a "$3" = "found" ] || [ "$3" = "not" -a "$4" = "found" ]
|
||||
then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
unlock_directory() {
|
||||
ul_dir=$1/. # get any symlink out of the way using '.'
|
||||
if [ -d $ul_dir ]
|
||||
then
|
||||
find $ul_dir -type d ! -perm -0222 -print | $XARGS -t chmod +w
|
||||
fi
|
||||
}
|
||||
|
||||
# Use gnu xargs if available; faster, more reliable in general
|
||||
XARGS=xargs
|
||||
cmd_avail gxargs && XARGS=gxargs
|
||||
|
||||
for dir
|
||||
do
|
||||
unlock_directory $dir
|
||||
done
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/* config.h
|
||||
*
|
||||
* This include file defines the Configuration Table for this test.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
* Copyright assigned to U.S. Government, 1994.
|
||||
*
|
||||
* The license and distribution terms for this file may in
|
||||
* the file LICENSE in this distribution or at
|
||||
* http://www.OARcorp.com/rtems/license.html.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#define CONFIGURE_MPTEST
|
||||
|
||||
#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
|
||||
|
||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE
|
||||
|
||||
#define CONFIGURE_MAXIMUM_POSIX_THREADS 10
|
||||
#define CONFIGURE_MAXIMUM_POSIX_KEYS 10
|
||||
#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 20
|
||||
#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 10
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/* end of include file */
|
||||
@@ -1,57 +0,0 @@
|
||||
--
|
||||
-- MAIN / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the entry point for Test MP01 of the Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
with MPTEST;
|
||||
with TEST_SUPPORT;
|
||||
|
||||
procedure MP01 is
|
||||
INIT_ID : RTEMS.ID;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
RTEMS.BUILD_NAME( 'I', 'N', 'I', 'T' ),
|
||||
1,
|
||||
RTEMS.MINIMUM_STACK_SIZE,
|
||||
RTEMS.NO_PREEMPT,
|
||||
RTEMS.GLOBAL,
|
||||
INIT_ID,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF INIT" );
|
||||
|
||||
|
||||
RTEMS.TASK_START(
|
||||
INIT_ID,
|
||||
MPTEST.INIT'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF INIT" );
|
||||
|
||||
loop
|
||||
delay 120.0;
|
||||
end loop;
|
||||
|
||||
end MP01;
|
||||
|
||||
@@ -1,235 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 1 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
C : RTEMS.CHARACTER;
|
||||
TIME : RTEMS.TIME_OF_DAY;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 1 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE /= 1 then
|
||||
C := 'S';
|
||||
else
|
||||
C := 'M';
|
||||
end if;
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( C, 'A', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( C, 'A', '2', ' ' );
|
||||
MPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME( C, 'A', '3', ' ' );
|
||||
|
||||
TIME := ( 1988, 12, 31, 9, 0, 0, 0 );
|
||||
|
||||
RTEMS.CLOCK_SET( TIME, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating task 1 (Global)" );
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 1 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.DEFAULT_MODES,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating task 2 (Global)" );
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 2 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 2 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating task 3 (Local)" );
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 3 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.DEFAULT_MODES,
|
||||
RTEMS.DEFAULT_ATTRIBUTES,
|
||||
MPTEST.TASK_ID( 3 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA3" );
|
||||
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
|
||||
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 2 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
|
||||
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 3 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA3" );
|
||||
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
TIME : RTEMS.TIME_OF_DAY;
|
||||
TID : RTEMS.ID;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_IDENT( RTEMS.SELF, RTEMS.SEARCH_ALL_NODES, TID, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );
|
||||
|
||||
RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
|
||||
|
||||
TEST_SUPPORT.PUT_NAME(
|
||||
MPTEST.TASK_NAME( TEST_SUPPORT.TASK_NUMBER( TID ) ),
|
||||
FALSE
|
||||
);
|
||||
|
||||
TEST_SUPPORT.PRINT_TIME( "- clock_get - ", TIME, "" );
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
TEST_SUPPORT.TASK_NUMBER( TID ) * 5 *
|
||||
TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
|
||||
|
||||
TEST_SUPPORT.PUT_NAME(
|
||||
MPTEST.TASK_NAME( TEST_SUPPORT.TASK_NUMBER( TID ) ),
|
||||
FALSE
|
||||
);
|
||||
|
||||
TEST_SUPPORT.PRINT_TIME( "- clock_get - ", TIME, "" );
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
if TEST_SUPPORT.TASK_NUMBER( TID ) = 1 then -- TASK 1
|
||||
|
||||
TEST_SUPPORT.PUT_NAME(
|
||||
MPTEST.TASK_NAME( TEST_SUPPORT.TASK_NUMBER( TID ) ),
|
||||
FALSE
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE( " - deleting self" );
|
||||
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
else if TEST_SUPPORT.TASK_NUMBER( TID ) = 2 then -- TASK 2
|
||||
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( 2 ), FALSE );
|
||||
TEXT_IO.PUT( " - waiting to be deleted by " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( 3 ), TRUE );
|
||||
|
||||
loop
|
||||
TEST_SUPPORT.DO_NOTHING; -- can't be optimized away
|
||||
end loop;
|
||||
|
||||
else -- TASK 3
|
||||
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( 3 ), FALSE );
|
||||
TEXT_IO.PUT( " - getting TID of " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( 2 ), TRUE );
|
||||
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.TASK_NAME( 2 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
TID,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF TA2" );
|
||||
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( 3 ), FALSE );
|
||||
TEXT_IO.PUT( " - deleting " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( 2 ), TRUE );
|
||||
|
||||
RTEMS.TASK_DELETE( TID, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF TA2" );
|
||||
|
||||
end if;
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 1 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,164 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 1 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.GLOBAL, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
33, -- maximum # global objects
|
||||
33 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
0, -- maximum # timers
|
||||
0, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,15 +0,0 @@
|
||||
*** TEST 1 -- NODE 1 ***
|
||||
Creating task 1 (Global)
|
||||
Creating task 2 (Global)
|
||||
Creating task 3 (Local)
|
||||
MA1 - clock_get - 9: 0: 0 12/31/1988
|
||||
MA2 - clock_get - 9: 0: 0 12/31/1988
|
||||
MA3 - clock_get - 9: 0: 0 12/31/1988
|
||||
MA1 - clock_get - 9: 0: 5 12/31/1988
|
||||
MA1 - deleting self
|
||||
MA2 - clock_get - 9: 0:10 12/31/1988
|
||||
MA2 - waiting to be deleted by MA3
|
||||
MA3 - clock_get - 9: 0:15 12/31/1988
|
||||
MA3 - getting TID of MA2
|
||||
MA3 - deleting MA2
|
||||
*** END OF TEST 1 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,15 +0,0 @@
|
||||
*** TEST 1 -- NODE 2 ***
|
||||
Creating task 1 (Global)
|
||||
Creating task 2 (Global)
|
||||
Creating task 3 (Local)
|
||||
SA1 - clock_get - 9: 0: 0 12/31/1988
|
||||
SA2 - clock_get - 9: 0: 0 12/31/1988
|
||||
SA3 - clock_get - 9: 0: 0 12/31/1988
|
||||
SA1 - clock_get - 9: 0: 5 12/31/1988
|
||||
SA1 - deleting self
|
||||
SA2 - clock_get - 9: 0:10 12/31/1988
|
||||
SA2 - waiting to be deleted by SA3
|
||||
SA3 - clock_get - 9: 0:15 12/31/1988
|
||||
SA3 - getting TID of SA2
|
||||
SA3 - deleting SA2
|
||||
*** END OF TEST 1 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,213 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 2 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 2 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating test task (Global)" );
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.NO_PREEMPT,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
TID : RTEMS.ID;
|
||||
TEST_TID : RTEMS.ID;
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
NOTE : RTEMS.UNSIGNED32;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_IDENT( RTEMS.SELF, RTEMS.SEARCH_ALL_NODES, TID, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
REMOTE_NODE := 2;
|
||||
else
|
||||
REMOTE_NODE := 1;
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting TID of remote task (all nodes)" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.TASK_NAME( REMOTE_NODE ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
REMOTE_TID,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
--
|
||||
-- We just got this ID above so looping is not necessary.
|
||||
--
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting TID of remote task (1 node)" );
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.TASK_NAME( REMOTE_NODE ),
|
||||
REMOTE_NODE,
|
||||
TEST_TID,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT" );
|
||||
|
||||
if TEST_TID /= REMOTE_TID then
|
||||
TEXT_IO.PUT_LINE( "task_ident tid's do not match!!" );
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
end if;
|
||||
|
||||
RTEMS.TASK_DELETE( REMOTE_TID, STATUS );
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.ILLEGAL_ON_REMOTE_OBJECT,
|
||||
"task_delete of remote task"
|
||||
);
|
||||
TEXT_IO.PUT_LINE(
|
||||
"task_delete of remote task returned the correct error"
|
||||
);
|
||||
|
||||
RTEMS.TASK_START( REMOTE_TID, MPTEST.TEST_TASK'ACCESS, 0, STATUS );
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.ILLEGAL_ON_REMOTE_OBJECT,
|
||||
"task_start of remote task"
|
||||
);
|
||||
TEXT_IO.PUT_LINE(
|
||||
"task_start of remote task returned the correct error"
|
||||
);
|
||||
|
||||
RTEMS.TASK_RESTART( REMOTE_TID, 0, STATUS );
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.ILLEGAL_ON_REMOTE_OBJECT,
|
||||
"task_restart of remote task"
|
||||
);
|
||||
TEXT_IO.PUT_LINE(
|
||||
"task_restart of remote task returned the correct error"
|
||||
);
|
||||
|
||||
|
||||
TEXT_IO.PUT( "Setting notepad " );
|
||||
UNSIGNED32_IO.PUT( RTEMS.GET_NODE( TID ), WIDTH=>1 );
|
||||
TEXT_IO.PUT( " of the remote task to " );
|
||||
UNSIGNED32_IO.PUT( RTEMS.GET_NODE( TID ), WIDTH=>1 );
|
||||
TEXT_IO.NEW_LINE;
|
||||
RTEMS.TASK_SET_NOTE(
|
||||
REMOTE_TID,
|
||||
RTEMS.GET_NODE( TID ),
|
||||
RTEMS.GET_NODE( TID ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_NOTE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting a notepad of the remote task" );
|
||||
RTEMS.TASK_GET_NOTE(
|
||||
REMOTE_TID,
|
||||
RTEMS.GET_NODE( TID ),
|
||||
NOTE,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_GET_NOTE" );
|
||||
|
||||
if NOTE = RTEMS.GET_NODE( TID ) then
|
||||
TEXT_IO.PUT_LINE( "Remote notepad set and read correctly" );
|
||||
else
|
||||
TEXT_IO.PUT(
|
||||
"FAILURE!!! Remote notepad was not set and read correctly ("
|
||||
);
|
||||
UNSIGNED32_IO.PUT( NOTE );
|
||||
TEXT_IO.PUT( ", " );
|
||||
UNSIGNED32_IO.PUT( RTEMS.GET_NODE( TID ) );
|
||||
TEXT_IO.PUT_LINE( ")" );
|
||||
|
||||
end if;
|
||||
|
||||
RTEMS.TASK_DELETE( REMOTE_TID, STATUS );
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 2 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,164 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 2 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
0, -- maximum # timers
|
||||
0, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,11 +0,0 @@
|
||||
*** TEST 2 -- NODE 1 ***
|
||||
Creating test task (Global)
|
||||
Getting TID of remote task (all nodes)
|
||||
Getting TID of remote task (1 node)
|
||||
task_delete of remote task returned the correct error
|
||||
task_start of remote task returned the correct error
|
||||
task_restart of remote task returned the correct error
|
||||
Setting notepad 1 of the remote task to 1
|
||||
Getting a notepad of the remote task
|
||||
Remote notepad set and read correctly
|
||||
*** END OF TEST 2 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,11 +0,0 @@
|
||||
*** TEST 2 -- NODE 2 ***
|
||||
Creating test task (Global)
|
||||
Getting TID of remote task (all nodes)
|
||||
Getting TID of remote task (1 node)
|
||||
task_delete of remote task returned the correct error
|
||||
task_start of remote task returned the correct error
|
||||
task_restart of remote task returned the correct error
|
||||
Setting notepad 2 of the remote task to 2
|
||||
Getting a notepad of the remote task
|
||||
Remote notepad set and read correctly
|
||||
*** END OF TEST 2 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,277 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 3 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 3 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task (Global)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.NO_PREEMPT,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task (Global)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
MPTEST.TIMER_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'M', '1', ' ' );
|
||||
|
||||
RTEMS.TIMER_CREATE(
|
||||
MPTEST.TIMER_NAME( 1 ),
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting initialization task" );
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- DELAYED_SEND_EVENT
|
||||
--
|
||||
|
||||
procedure DELAYED_SEND_EVENT (
|
||||
IGNORED_ID : in RTEMS.ID;
|
||||
IGNORED_ADDRESS : in RTEMS.ADDRESS
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.EVENT_SEND( MPTEST.TASK_ID( 1 ), RTEMS.EVENT_16, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND" );
|
||||
|
||||
end DELAYED_SEND_EVENT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
TID : RTEMS.ID;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_IDENT( RTEMS.SELF, RTEMS.SEARCH_ALL_NODES, TID, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting TID of remote task" );
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
MPTEST.REMOTE_NODE := 2;
|
||||
else
|
||||
MPTEST.REMOTE_NODE := 1;
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT( "Remote task's name is : " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ), TRUE );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.REMOTE_TID,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
RTEMS.TIMER_FIRE_AFTER(
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
10 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
MPTEST.DELAYED_SEND_EVENT'ACCESS,
|
||||
RTEMS.NULL_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
|
||||
|
||||
MPTEST.TEST_TASK_SUPPORT( 1 );
|
||||
|
||||
RTEMS.TIMER_FIRE_AFTER(
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
11 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
MPTEST.DELAYED_SEND_EVENT'ACCESS,
|
||||
RTEMS.NULL_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 2 then
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
2 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
end if;
|
||||
|
||||
MPTEST.TEST_TASK_SUPPORT( 2 );
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 3 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK_SUPPORT
|
||||
--
|
||||
|
||||
|
||||
procedure TEST_TASK_SUPPORT (
|
||||
NODE : in RTEMS.UNSIGNED32
|
||||
) is
|
||||
EVENTS : RTEMS.EVENT_SET;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = NODE then
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.EVENT_RECEIVE(
|
||||
RTEMS.EVENT_16,
|
||||
RTEMS.NO_WAIT,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
EVENTS,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.ARE_STATUSES_EQUAL( RTEMS.SUCCESSFUL, STATUS );
|
||||
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.UNSATISFIED,
|
||||
"EVENT_RECEIVE"
|
||||
);
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
2 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( NODE ), FALSE );
|
||||
TEXT_IO.PUT_LINE( " - Suspending remote task" );
|
||||
RTEMS.TASK_SUSPEND( MPTEST.REMOTE_TID, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND" );
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
2 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( NODE ), FALSE );
|
||||
TEXT_IO.PUT_LINE( " - Resuming remote task" );
|
||||
|
||||
RTEMS.TASK_RESUME( MPTEST.REMOTE_TID, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESUME" );
|
||||
|
||||
end loop;
|
||||
|
||||
else
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.EVENT_RECEIVE(
|
||||
RTEMS.EVENT_16,
|
||||
RTEMS.NO_WAIT,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
EVENTS,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.ARE_STATUSES_EQUAL( RTEMS.SUCCESSFUL, STATUS );
|
||||
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.UNSATISFIED,
|
||||
"EVENT_RECEIVE"
|
||||
);
|
||||
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( REMOTE_NODE ), FALSE );
|
||||
TEXT_IO.PUT_LINE( " - have I been suspended???" );
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
TEST_SUPPORT.TICKS_PER_SECOND / 2,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
end loop;
|
||||
|
||||
end if;
|
||||
|
||||
end TEST_TASK_SUPPORT;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,214 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 3 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS timers created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TIMER_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
TIMER_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- DELAYED_SEND_EVENT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram is a timer service routine which sends an
|
||||
-- event set to a waiting task.
|
||||
--
|
||||
|
||||
procedure DELAYED_SEND_EVENT (
|
||||
IGNORED_ID : in RTEMS.ID;
|
||||
IGNORED_ADDRESS : in RTEMS.ADDRESS
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK_SUPPORT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram performs the bulk of the test. Based on the NODE
|
||||
-- specified, this subprogram loops suspending/resuming a remote task
|
||||
-- or waiting for itself to be suspended/resumed.
|
||||
--
|
||||
|
||||
procedure TEST_TASK_SUPPORT (
|
||||
NODE : in RTEMS.UNSIGNED32
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
1, -- maximum # timers
|
||||
0, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,28 +0,0 @@
|
||||
*** TEST 3 -- NODE 1 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Getting TID of remote task
|
||||
Remote task's name is : 222
|
||||
111 - Suspending remote task
|
||||
111 - Resuming remote task
|
||||
111 - Suspending remote task
|
||||
111 - Resuming remote task
|
||||
111 - Suspending remote task
|
||||
111 - Resuming remote task
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
222 - have I been suspended???
|
||||
*** END OF TEST 3 ***
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,28 +0,0 @@
|
||||
*** TEST 3 -- NODE 2 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Getting TID of remote task
|
||||
Remote task's name is : 111
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
111 - have I been suspended???
|
||||
222 - Suspending remote task
|
||||
222 - Resuming remote task
|
||||
222 - Suspending remote task
|
||||
222 - Resuming remote task
|
||||
222 - Suspending remote task
|
||||
222 - Resuming remote task
|
||||
*** END OF TEST 3 ***
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,169 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 4 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 4 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task (Global)" );
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
2048,
|
||||
RTEMS.DEFAULT_MODES,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task (Global)" );
|
||||
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting initialization task" );
|
||||
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
TID : RTEMS.ID;
|
||||
PREVIOUS_PRIORITY : RTEMS.TASK_PRIORITY;
|
||||
PREVIOUS_PRIORITY_1 : RTEMS.TASK_PRIORITY;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_IDENT( RTEMS.SELF, RTEMS.SEARCH_ALL_NODES, TID, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting TID of remote task" );
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
MPTEST.REMOTE_NODE := 2;
|
||||
else
|
||||
MPTEST.REMOTE_NODE := 1;
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT( "Remote task's name is : " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ), TRUE );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.REMOTE_TID,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
RTEMS.TASK_SET_PRIORITY(
|
||||
MPTEST.REMOTE_TID,
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
PREVIOUS_PRIORITY,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_PRIORITY" );
|
||||
|
||||
if PREVIOUS_PRIORITY /= MPTEST.REMOTE_NODE then
|
||||
|
||||
TEXT_IO.PUT( "Remote priority (0x" );
|
||||
UNSIGNED32_IO.PUT( PREVIOUS_PRIORITY, BASE => 16 );
|
||||
TEXT_IO.PUT( "does not match remote node (0x" );
|
||||
UNSIGNED32_IO.PUT( MPTEST.REMOTE_NODE, BASE => 16 );
|
||||
TEXT_IO.PUT_LINE( ")!!!" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 16#F00000# );
|
||||
|
||||
end if;
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.TASK_SET_PRIORITY(
|
||||
RTEMS.SELF,
|
||||
RTEMS.CURRENT_PRIORITY,
|
||||
PREVIOUS_PRIORITY_1,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_PRIORITY" );
|
||||
|
||||
exit when PREVIOUS_PRIORITY_1 = MPTEST.REMOTE_NODE;
|
||||
|
||||
end loop;
|
||||
|
||||
|
||||
TEXT_IO.PUT_LINE( "Local task priority has been set" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 4 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,178 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 4 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
1, -- maximum # timers
|
||||
0, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,8 +0,0 @@
|
||||
*** TEST 4 -- NODE 1 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Getting TID of remote task
|
||||
Remote task's name is : 222
|
||||
Local task priority has been set
|
||||
*** END OF TEST 4 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,8 +0,0 @@
|
||||
*** TEST 4 -- NODE 2 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Getting TID of remote task
|
||||
Remote task's name is : 111
|
||||
Local task priority has been set
|
||||
*** END OF TEST 4 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,252 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 5 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 5 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task (Global)" );
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task (Global)" );
|
||||
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
MPTEST.TIMER_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'M', '1', ' ' );
|
||||
MPTEST.TIMER_NAME( 2 ) := RTEMS.BUILD_NAME( 'T', 'M', '2', ' ' );
|
||||
|
||||
RTEMS.TIMER_CREATE(
|
||||
MPTEST.TIMER_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting initialization task" );
|
||||
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- PROCESS_ASR
|
||||
--
|
||||
|
||||
procedure PROCESS_ASR (
|
||||
SIGNAL : in RTEMS.SIGNAL_SET
|
||||
)
|
||||
is
|
||||
begin
|
||||
|
||||
if SIGNAL /= MPTEST.EXPECTED_SIGNAL then
|
||||
|
||||
TEXT_IO.PUT( "ERROR: I was expecting signal 0x" );
|
||||
UNSIGNED32_IO.PUT( EXPECTED_SIGNAL, BASE => 16 );
|
||||
TEXT_IO.PUT( " got 0x" );
|
||||
UNSIGNED32_IO.PUT( SIGNAL, BASE => 16 );
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
RTEMS.FATAL_ERROR_OCCURRED( 16#000F_0000# );
|
||||
|
||||
end if;
|
||||
|
||||
MPTEST.SIGNAL_CAUGHT := TRUE;
|
||||
|
||||
end PROCESS_ASR;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- STOP_TEST_TSR
|
||||
--
|
||||
|
||||
procedure STOP_TEST_TSR (
|
||||
IGNORED_ID : in RTEMS.ID;
|
||||
IGNORED_ADDRESS : in RTEMS.ADDRESS
|
||||
) is
|
||||
begin
|
||||
|
||||
MPTEST.STOP_TEST := TRUE;
|
||||
|
||||
end STOP_TEST_TSR;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
MPTEST.STOP_TEST := FALSE;
|
||||
|
||||
MPTEST.SIGNAL_CAUGHT := FALSE;
|
||||
MPTEST.SIGNAL_COUNT := 0;
|
||||
|
||||
TEXT_IO.PUT_LINE( "signal_catch: initializing signal catcher" );
|
||||
RTEMS.SIGNAL_CATCH(
|
||||
MPTEST.PROCESS_ASR'ACCESS,
|
||||
RTEMS.NO_ASR + RTEMS.NO_PREEMPT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_CATCH" );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
MPTEST.REMOTE_NODE := 2;
|
||||
MPTEST.REMOTE_SIGNAL := RTEMS.SIGNAL_18;
|
||||
MPTEST.EXPECTED_SIGNAL := RTEMS.SIGNAL_17;
|
||||
else
|
||||
MPTEST.REMOTE_NODE := 1;
|
||||
MPTEST.REMOTE_SIGNAL := RTEMS.SIGNAL_17;
|
||||
MPTEST.EXPECTED_SIGNAL := RTEMS.SIGNAL_18;
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT( "Remote task's name is : " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ), TRUE );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting TID of remote task" );
|
||||
loop
|
||||
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.REMOTE_TID,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
RTEMS.TIMER_FIRE_AFTER(
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
3 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
MPTEST.STOP_TEST_TSR'ACCESS,
|
||||
RTEMS.NULL_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Sending signal to remote task" );
|
||||
loop
|
||||
RTEMS.SIGNAL_SEND(
|
||||
MPTEST.REMOTE_TID,
|
||||
MPTEST.REMOTE_SIGNAL,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
exit when not RTEMS.ARE_STATUSES_EQUAL( STATUS, RTEMS.NOT_DEFINED );
|
||||
|
||||
end loop;
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_SEND" );
|
||||
|
||||
end if;
|
||||
|
||||
loop
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
if MPTEST.SIGNAL_CAUGHT = TRUE then
|
||||
|
||||
MPTEST.SIGNAL_CAUGHT := FALSE;
|
||||
MPTEST.SIGNAL_COUNT := MPTEST.SIGNAL_COUNT + 1;
|
||||
|
||||
if MPTEST.SIGNAL_COUNT >= MPTEST.SIGNALS_PER_DOT then
|
||||
|
||||
MPTEST.SIGNAL_COUNT := 0;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "." );
|
||||
|
||||
end if;
|
||||
|
||||
RTEMS.SIGNAL_SEND(
|
||||
MPTEST.REMOTE_TID,
|
||||
MPTEST.REMOTE_SIGNAL,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_SEND" );
|
||||
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
TEXT_IO.NEW_LINE;
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 5 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,243 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 5 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS timers created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TIMER_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
TIMER_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable is set when the test should stop executing.
|
||||
--
|
||||
STOP_TEST : RTEMS.BOOLEAN;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- This is the signal set which is sent to the task on the other node.
|
||||
--
|
||||
|
||||
REMOTE_SIGNAL : RTEMS.SIGNAL_SET;
|
||||
|
||||
--
|
||||
-- This is the signal set the task on this node expects to receive
|
||||
-- from the other node.
|
||||
--
|
||||
|
||||
EXPECTED_SIGNAL : RTEMS.SIGNAL_SET;
|
||||
|
||||
--
|
||||
-- These keep track of if a signal set has been caught and how many
|
||||
-- signal sets have been caught cumulative.
|
||||
--
|
||||
|
||||
SIGNAL_CAUGHT : RTEMS.BOOLEAN;
|
||||
SIGNAL_COUNT : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- The number of signals to process per dot printed out.
|
||||
--
|
||||
|
||||
SIGNALS_PER_DOT : constant RTEMS.UNSIGNED32 := 15;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- PROCESS_ASR
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram is an ASR for TEST_TASK.
|
||||
--
|
||||
|
||||
procedure PROCESS_ASR (
|
||||
SIGNAL : in RTEMS.SIGNAL_SET
|
||||
);
|
||||
|
||||
--
|
||||
-- STOP_TEST_TSR
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram is a TSR which sets the "stop test" flag.
|
||||
--
|
||||
|
||||
procedure STOP_TEST_TSR (
|
||||
IGNORED_ID : in RTEMS.ID;
|
||||
IGNORED_ADDRESS : in RTEMS.ADDRESS
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
1, -- maximum # timers
|
||||
2, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,11 +0,0 @@
|
||||
*** TEST 5 -- NODE 1 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
signal_catch: initializing signal catcher
|
||||
Remote task's name is : 222
|
||||
Getting TID of remote task
|
||||
Sending signal to remote task
|
||||
....................................................
|
||||
....................................................
|
||||
*** END OF TEST 5 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,10 +0,0 @@
|
||||
*** TEST 5 -- NODE 2 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
signal_catch: initializing signal catcher
|
||||
Remote task's name is : 111
|
||||
Getting TID of remote task
|
||||
....................................................
|
||||
....................................................
|
||||
*** END OF TEST 5 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,257 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 6 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 6 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task (Global)" );
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
2048,
|
||||
RTEMS.DEFAULT_MODES,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task (Global)" );
|
||||
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
MPTEST.TIMER_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'M', '1', ' ' );
|
||||
MPTEST.TIMER_NAME( 2 ) := RTEMS.BUILD_NAME( 'T', 'M', '2', ' ' );
|
||||
|
||||
RTEMS.TIMER_CREATE(
|
||||
MPTEST.TIMER_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting initialization task" );
|
||||
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- STOP_TEST_TSR
|
||||
--
|
||||
|
||||
procedure STOP_TEST_TSR (
|
||||
IGNORED1 : in RTEMS.ID;
|
||||
IGNORED2 : in RTEMS.ADDRESS
|
||||
) is
|
||||
begin
|
||||
|
||||
MPTEST.STOP_TEST := TRUE;
|
||||
|
||||
end STOP_TEST_TSR;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
EVENT_OUT : RTEMS.EVENT_SET;
|
||||
EVENT_FOR_THIS_ITERATION : RTEMS.EVENT_SET;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
MPTEST.STOP_TEST := FALSE;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
MPTEST.REMOTE_NODE := 2;
|
||||
else
|
||||
MPTEST.REMOTE_NODE := 1;
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT( "Remote task's name is : " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ), TRUE );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting TID of remote task" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.REMOTE_TID,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
TEXT_IO.PUT_LINE( "Sending events to remote task" );
|
||||
else
|
||||
TEXT_IO.PUT_LINE( "Receiving events from remote task" );
|
||||
end if;
|
||||
|
||||
RTEMS.TIMER_FIRE_AFTER(
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
5 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
MPTEST.STOP_TEST_TSR'ACCESS,
|
||||
RTEMS.NULL_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
|
||||
|
||||
COUNT := 0;
|
||||
|
||||
loop
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
EVENT_FOR_THIS_ITERATION :=
|
||||
MPTEST.EVENT_SET_TABLE(
|
||||
INTEGER( COUNT ) mod MPTEST.EVENT_SET_TABLE'LAST + 1
|
||||
);
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
RTEMS.EVENT_SEND(
|
||||
MPTEST.REMOTE_TID,
|
||||
EVENT_FOR_THIS_ITERATION,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND" );
|
||||
|
||||
else
|
||||
|
||||
RTEMS.EVENT_RECEIVE(
|
||||
EVENT_FOR_THIS_ITERATION,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
1 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
EVENT_OUT,
|
||||
STATUS
|
||||
);
|
||||
|
||||
if RTEMS.ARE_STATUSES_EQUAL( STATUS, RTEMS.TIMEOUT ) then
|
||||
TEXT_IO.NEW_LINE( 1 );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 2 then
|
||||
TEXT_IO.PUT_LINE(
|
||||
"Correct behavior if the other node exitted."
|
||||
);
|
||||
else
|
||||
TEXT_IO.PUT_LINE(
|
||||
"ERROR... node 1 died"
|
||||
);
|
||||
end if;
|
||||
|
||||
exit;
|
||||
|
||||
else
|
||||
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE" );
|
||||
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
if (COUNT mod MPTEST.MAXIMUM_DOTS) = 0 then
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "." );
|
||||
|
||||
end if;
|
||||
|
||||
COUNT := COUNT + 1;
|
||||
|
||||
end loop;
|
||||
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 2 then
|
||||
|
||||
RTEMS.EVENT_RECEIVE(
|
||||
RTEMS.EVENT_16,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
1 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
EVENT_OUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
RTEMS.TIMEOUT,
|
||||
STATUS,
|
||||
"EVENT_RECEIVE"
|
||||
);
|
||||
|
||||
TEXT_IO.NEW_LINE;
|
||||
TEXT_IO.PUT_LINE( "event_receive - correctly returned TIMEOUT" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 6 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,250 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 6 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS timers created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TIMER_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
TIMER_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable is set when the test should stop executing.
|
||||
--
|
||||
STOP_TEST : RTEMS.BOOLEAN;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- The number of signals to process per dot printed out.
|
||||
--
|
||||
|
||||
MAXIMUM_DOTS : constant RTEMS.UNSIGNED32 := 25;
|
||||
|
||||
--
|
||||
-- The following is a table of the event sets which consist of
|
||||
-- a single event. This test cycles through all of these
|
||||
-- events.
|
||||
--
|
||||
|
||||
EVENT_SET_TABLE : constant array ( 0 .. 30 ) of RTEMS.EVENT_SET := (
|
||||
RTEMS.EVENT_0,
|
||||
RTEMS.EVENT_1,
|
||||
RTEMS.EVENT_2,
|
||||
RTEMS.EVENT_3,
|
||||
RTEMS.EVENT_4,
|
||||
RTEMS.EVENT_5,
|
||||
RTEMS.EVENT_6,
|
||||
RTEMS.EVENT_7,
|
||||
RTEMS.EVENT_8,
|
||||
RTEMS.EVENT_9,
|
||||
RTEMS.EVENT_10,
|
||||
RTEMS.EVENT_11,
|
||||
RTEMS.EVENT_12,
|
||||
RTEMS.EVENT_13,
|
||||
RTEMS.EVENT_14,
|
||||
RTEMS.EVENT_15,
|
||||
RTEMS.EVENT_16,
|
||||
RTEMS.EVENT_17,
|
||||
RTEMS.EVENT_18,
|
||||
RTEMS.EVENT_19,
|
||||
RTEMS.EVENT_20,
|
||||
RTEMS.EVENT_21,
|
||||
RTEMS.EVENT_22,
|
||||
RTEMS.EVENT_23,
|
||||
RTEMS.EVENT_24,
|
||||
RTEMS.EVENT_25,
|
||||
RTEMS.EVENT_26,
|
||||
RTEMS.EVENT_27,
|
||||
RTEMS.EVENT_28,
|
||||
RTEMS.EVENT_29,
|
||||
RTEMS.EVENT_30
|
||||
);
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- STOP_TEST_TSR
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram is a TSR which sets the "stop test" flag.
|
||||
--
|
||||
|
||||
procedure STOP_TEST_TSR (
|
||||
IGNORED1 : in RTEMS.ID;
|
||||
IGNORED2 : in RTEMS.ADDRESS
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
1, -- maximum # timers
|
||||
2, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,10 +0,0 @@
|
||||
*** TEST 6 -- NODE 1 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Remote task's name is : 222
|
||||
Getting TID of remote task
|
||||
Sending events to remote task
|
||||
....................................................
|
||||
....................................................
|
||||
*** END OF TEST 6 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,11 +0,0 @@
|
||||
*** TEST 6 -- NODE 2 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Remote task's name is : 111
|
||||
Getting TID of remote task
|
||||
Receiving events from remote task
|
||||
....................................................
|
||||
....................................................
|
||||
event_receive - correctly returned TIMEOUT
|
||||
*** END OF TEST 6 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,210 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 7 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 7 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task (Global)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task (Global)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
MPTEST.TIMER_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'M', '1', ' ' );
|
||||
|
||||
RTEMS.TIMER_CREATE(
|
||||
MPTEST.TIMER_NAME( 1 ),
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting initialization task" );
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- STOP_TEST_TSR
|
||||
--
|
||||
|
||||
procedure STOP_TEST_TSR (
|
||||
IGNORED1 : in RTEMS.ID;
|
||||
IGNORED2 : in RTEMS.ADDRESS
|
||||
) is
|
||||
begin
|
||||
|
||||
MPTEST.STOP_TEST := TRUE;
|
||||
|
||||
end STOP_TEST_TSR;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
EVENT_OUT : RTEMS.EVENT_SET;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
MPTEST.STOP_TEST := FALSE;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
MPTEST.REMOTE_NODE := 2;
|
||||
else
|
||||
MPTEST.REMOTE_NODE := 1;
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT( "Remote task's name is : " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ), TRUE );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting TID of remote task" );
|
||||
loop
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.TASK_NAME( MPTEST.REMOTE_NODE ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.REMOTE_TID,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.ARE_STATUSES_EQUAL( STATUS, RTEMS.SUCCESSFUL );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Sending first event to remote task" );
|
||||
RTEMS.EVENT_SEND(
|
||||
MPTEST.REMOTE_TID,
|
||||
RTEMS.EVENT_16,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND" );
|
||||
|
||||
end if;
|
||||
|
||||
RTEMS.TIMER_FIRE_AFTER(
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
5 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
MPTEST.STOP_TEST_TSR'ACCESS,
|
||||
RTEMS.NULL_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
|
||||
|
||||
loop
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
for COUNT in 1 .. MPTEST.PER_DOT
|
||||
loop
|
||||
|
||||
RTEMS.EVENT_RECEIVE(
|
||||
RTEMS.EVENT_16,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
EVENT_OUT,
|
||||
STATUS
|
||||
);
|
||||
if RTEMS.ARE_STATUSES_EQUAL( STATUS, RTEMS.TIMEOUT ) then
|
||||
TEXT_IO.NEW_LINE;
|
||||
TEXT_IO.PUT_LINE(
|
||||
"TA1 - TIMEOUT .. probably OK if the other node exits"
|
||||
);
|
||||
exit;
|
||||
else
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE" );
|
||||
end if;
|
||||
|
||||
RTEMS.EVENT_SEND(
|
||||
MPTEST.REMOTE_TID,
|
||||
RTEMS.EVENT_16,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND" );
|
||||
|
||||
end loop;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "." );
|
||||
|
||||
end loop;
|
||||
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 7 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,210 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 7 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS timers created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TIMER_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
TIMER_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable is set when the test should stop executing.
|
||||
--
|
||||
STOP_TEST : RTEMS.BOOLEAN;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- The number of events to process per dot printed out.
|
||||
--
|
||||
|
||||
PER_DOT : constant RTEMS.UNSIGNED32 := 100;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- STOP_TEST_TSR
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram is a TSR which sets the "stop test" flag.
|
||||
--
|
||||
|
||||
procedure STOP_TEST_TSR (
|
||||
IGNORED1 : in RTEMS.ID;
|
||||
IGNORED2 : in RTEMS.ADDRESS
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
1, -- maximum # timers
|
||||
2, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,10 +0,0 @@
|
||||
*** TEST 7 -- NODE 1 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Remote task's name is : 222
|
||||
Getting TID of remote task
|
||||
Sending first event to remote task
|
||||
....................................................
|
||||
....................................................
|
||||
*** END OF TEST 7 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,9 +0,0 @@
|
||||
*** TEST 7 -- NODE 2 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Remote task's name is : 111
|
||||
Getting TID of remote task
|
||||
....................................................
|
||||
....................................................
|
||||
*** END OF TEST 7 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,207 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 8 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 8 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
MPTEST.SEMAPHORE_NAME( 1 ) := RTEMS.BUILD_NAME( 'S', 'E', 'M', ' ' );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Semaphore(Global)" );
|
||||
|
||||
RTEMS.SEMAPHORE_CREATE(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
1,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_CREATE" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task (Global)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task (Global)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting initialization task" );
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
DOTS : RTEMS.UNSIGNED32;
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting SMID of semaphore" );
|
||||
loop
|
||||
|
||||
RTEMS.SEMAPHORE_IDENT(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 2 then
|
||||
|
||||
RTEMS.SEMAPHORE_DELETE(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.ILLEGAL_ON_REMOTE_OBJECT,
|
||||
"SEMAPHORE_DELETE"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE(
|
||||
"semaphore_delete correctly returned ILLEGAL_ON_REMOTE_OBJECT"
|
||||
);
|
||||
|
||||
end if;
|
||||
|
||||
COUNT := 0;
|
||||
|
||||
loop
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "p" );
|
||||
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
|
||||
if not RTEMS.IS_STATUS_SUCCESSFUL( STATUS ) then
|
||||
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.OBJECT_WAS_DELETED,
|
||||
"SEMAPHORE_OBTAIN"
|
||||
);
|
||||
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Global semaphore deleted" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 8 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end if;
|
||||
|
||||
COUNT := COUNT + 1;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 and then
|
||||
COUNT >= 1000 then
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting global semaphore" );
|
||||
|
||||
RTEMS.SEMAPHORE_DELETE( MPTEST.SEMAPHORE_ID( 1 ), STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_DELETE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 8 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end if;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "v" );
|
||||
|
||||
RTEMS.SEMAPHORE_RELEASE( MPTEST.SEMAPHORE_ID( 1 ), STATUS );
|
||||
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_RELEASE" );
|
||||
|
||||
end loop;
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,192 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 8 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS semaphores created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
SEMAPHORE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
SEMAPHORE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- The number of events to process per dot printed out.
|
||||
--
|
||||
|
||||
PER_DOT : constant RTEMS.UNSIGNED32 := 100;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
1, -- maximum # timers
|
||||
1, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,9 +0,0 @@
|
||||
*** TEST 8 -- NODE 1 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Getting SMID of semaphore
|
||||
pvpvpvpvpvp.......
|
||||
(continued) pvp
|
||||
Deleting global semaphore
|
||||
*** END OF TEST 8 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,10 +0,0 @@
|
||||
*** TEST 8 -- NODE 2 ***
|
||||
Creating Test_task (Global)
|
||||
Starting Test_task (Global)
|
||||
Deleting initialization task
|
||||
Getting SMID of semaphore
|
||||
semaphore_delete correctly returned ILLEGAL_ON_REMOTE_OBJECT
|
||||
pvpvpvpvpvp.......
|
||||
(continued) pvp
|
||||
Global semaphore deleted
|
||||
*** END OF TEST 8 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,381 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 9 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 9 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.RECEIVE_BUFFER :=
|
||||
RTEMS.TO_BUFFER_POINTER( MPTEST.RECEIVE_BUFFER_AREA'ADDRESS );
|
||||
|
||||
MPTEST.BUFFER_1 :=
|
||||
RTEMS.TO_BUFFER_POINTER( MPTEST.BUFFER_AREA_1'ADDRESS );
|
||||
|
||||
MPTEST.BUFFER_2 :=
|
||||
RTEMS.TO_BUFFER_POINTER( MPTEST.BUFFER_AREA_2'ADDRESS );
|
||||
|
||||
MPTEST.BUFFER_3 :=
|
||||
RTEMS.TO_BUFFER_POINTER( MPTEST.BUFFER_AREA_3'ADDRESS );
|
||||
|
||||
MPTEST.BUFFER_4 :=
|
||||
RTEMS.TO_BUFFER_POINTER( MPTEST.BUFFER_AREA_4'ADDRESS );
|
||||
|
||||
MPTEST.FILL_BUFFER( "123456789012345 ", MPTEST.BUFFER_AREA_1 );
|
||||
MPTEST.FILL_BUFFER( "abcdefghijklmno ", MPTEST.BUFFER_AREA_2 );
|
||||
MPTEST.FILL_BUFFER( "ABCDEFGHIJKLMNO ", MPTEST.BUFFER_AREA_3 );
|
||||
MPTEST.FILL_BUFFER( "PQRSTUVWXYZ(){} ", MPTEST.BUFFER_AREA_4 );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
MPTEST.QUEUE_NAME( 1 ) := RTEMS.BUILD_NAME( 'M', 'S', 'G', ' ' );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Message Queue (Global)" );
|
||||
RTEMS.MESSAGE_QUEUE_CREATE(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
3,
|
||||
RTEMS.GLOBAL + RTEMS.LIMIT,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_CREATE" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task (local)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( MPTEST.MULTIPROCESSING_CONFIGURATION.NODE ),
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.DEFAULT_ATTRIBUTES,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task (local)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting initialization task" );
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- SEND_MESSAGES
|
||||
--
|
||||
|
||||
procedure SEND_MESSAGES is
|
||||
BROADCAST_COUNT : RTEMS.UNSIGNED32;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.PUT( "message_queue_send : " );
|
||||
MPTEST.PUT_BUFFER( MPTEST.BUFFER_AREA_1 );
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_SEND(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.BUFFER_1,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Delaying for a second" );
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
1 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT( "message_queue_urgent : " );
|
||||
MPTEST.PUT_BUFFER( MPTEST.BUFFER_AREA_2 );
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_URGENT(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.BUFFER_2,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_URGENT" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Delaying for a second" );
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
1 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT( "message_queue_broadcast : " );
|
||||
MPTEST.PUT_BUFFER( MPTEST.BUFFER_AREA_3 );
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_BROADCAST(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.BUFFER_3,
|
||||
BROADCAST_COUNT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_BROADCAST" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Delaying for a second" );
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
1 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
end SEND_MESSAGES;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- RECEIVE_MESSAGES
|
||||
--
|
||||
|
||||
procedure RECEIVE_MESSAGES is
|
||||
INDEX : RTEMS.UNSIGNED32;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
for INDEX in 1 .. 3
|
||||
loop
|
||||
|
||||
TEXT_IO.PUT_LINE( "Receiving message ..." );
|
||||
RTEMS.MESSAGE_QUEUE_RECEIVE(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.RECEIVE_BUFFER,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );
|
||||
|
||||
TEXT_IO.PUT( "Received : " );
|
||||
MPTEST.PUT_BUFFER( MPTEST.RECEIVE_BUFFER_AREA );
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
end loop;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Receiver delaying for a second" );
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( 1 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
end RECEIVE_MESSAGES;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- FILL_BUFFER
|
||||
--
|
||||
|
||||
--
|
||||
-- Depends on tricks to make the copy work.
|
||||
--
|
||||
|
||||
procedure FILL_BUFFER (
|
||||
SOURCE : in STRING;
|
||||
BUFFER : out RTEMS.BUFFER
|
||||
) is
|
||||
SOURCE_BUFFER : RTEMS.BUFFER_POINTER;
|
||||
begin
|
||||
|
||||
SOURCE_BUFFER := RTEMS.TO_BUFFER_POINTER(
|
||||
SOURCE( SOURCE'FIRST )'ADDRESS
|
||||
);
|
||||
|
||||
BUFFER.FIELD1 := SOURCE_BUFFER.FIELD1;
|
||||
BUFFER.FIELD2 := SOURCE_BUFFER.FIELD2;
|
||||
BUFFER.FIELD3 := SOURCE_BUFFER.FIELD3;
|
||||
BUFFER.FIELD4 := SOURCE_BUFFER.FIELD4;
|
||||
|
||||
end FILL_BUFFER;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- PUT_BUFFER
|
||||
--
|
||||
|
||||
--
|
||||
-- Depends on tricks to make the output work.
|
||||
--
|
||||
|
||||
procedure PUT_BUFFER (
|
||||
BUFFER : in RTEMS.BUFFER
|
||||
) is
|
||||
begin
|
||||
|
||||
TEST_SUPPORT.PUT_NAME( BUFFER.FIELD1, FALSE );
|
||||
TEST_SUPPORT.PUT_NAME( BUFFER.FIELD2, FALSE );
|
||||
TEST_SUPPORT.PUT_NAME( BUFFER.FIELD3, FALSE );
|
||||
TEST_SUPPORT.PUT_NAME( BUFFER.FIELD4, FALSE );
|
||||
|
||||
end PUT_BUFFER;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( 1 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting QID of message queue" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_IDENT(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 2 then
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_DELETE( MPTEST.QUEUE_ID( 1 ), STATUS );
|
||||
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.ILLEGAL_ON_REMOTE_OBJECT,
|
||||
"MESSAGE_QUEUE_DELETE"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE(
|
||||
"message_queue_delete correctly returned ILLEGAL_ON_REMOTE_OBJECT"
|
||||
);
|
||||
|
||||
MPTEST.SEND_MESSAGES;
|
||||
|
||||
MPTEST.RECEIVE_MESSAGES;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Flushing remote empty queue" );
|
||||
RTEMS.MESSAGE_QUEUE_FLUSH( MPTEST.QUEUE_ID( 1 ), COUNT, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_FLUSH" );
|
||||
UNSIGNED32_IO.PUT( COUNT, WIDTH => 1 );
|
||||
TEXT_IO.PUT_LINE(
|
||||
" messages were flushed from remote empty queue"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE(
|
||||
"Send messages to be flushed from remote queue"
|
||||
);
|
||||
RTEMS.MESSAGE_QUEUE_SEND(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.BUFFER_1,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Flushing remote queue" );
|
||||
RTEMS.MESSAGE_QUEUE_FLUSH( MPTEST.QUEUE_ID( 1 ), COUNT, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_FLUSH" );
|
||||
UNSIGNED32_IO.PUT( COUNT, WIDTH => 1 );
|
||||
TEXT_IO.PUT_LINE(
|
||||
" messages were flushed from the remote queue"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE( "Waiting for message queue to be deleted" );
|
||||
RTEMS.MESSAGE_QUEUE_RECEIVE(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.RECEIVE_BUFFER,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.OBJECT_WAS_DELETED,
|
||||
"MESSAGE_QUEUE_FLUSH"
|
||||
);
|
||||
|
||||
else
|
||||
|
||||
MPTEST.RECEIVE_MESSAGES;
|
||||
|
||||
MPTEST.SEND_MESSAGES;
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER(
|
||||
5 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_DELETE( MPTEST.QUEUE_ID( 1 ), STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_DELETE" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 9 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,254 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 9 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS message
|
||||
-- queues created by this test.
|
||||
--
|
||||
|
||||
QUEUE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
QUEUE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- The following are message buffers used to contain the test messages
|
||||
-- and pointers to those buffers.
|
||||
--
|
||||
|
||||
RECEIVE_BUFFER_AREA : RTEMS.BUFFER;
|
||||
BUFFER_AREA_1 : RTEMS.BUFFER;
|
||||
BUFFER_AREA_2 : RTEMS.BUFFER;
|
||||
BUFFER_AREA_3 : RTEMS.BUFFER;
|
||||
BUFFER_AREA_4 : RTEMS.BUFFER;
|
||||
|
||||
RECEIVE_BUFFER : RTEMS.BUFFER_POINTER;
|
||||
BUFFER_1 : RTEMS.BUFFER_POINTER;
|
||||
BUFFER_2 : RTEMS.BUFFER_POINTER;
|
||||
BUFFER_3 : RTEMS.BUFFER_POINTER;
|
||||
BUFFER_4 : RTEMS.BUFFER_POINTER;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- The number of events to process per dot printed out.
|
||||
--
|
||||
|
||||
PER_DOT : constant RTEMS.UNSIGNED32 := 100;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- SEND_MESSAGES
|
||||
--
|
||||
-- This subprogram prints and sends a sequence of three test messages.
|
||||
-- One of the messages is sent, one is urgent, and one is broadcast.
|
||||
-- A one second pause is between each the sending of each message.
|
||||
--
|
||||
|
||||
procedure SEND_MESSAGES;
|
||||
|
||||
--
|
||||
-- RECEIVE_MESSAGES
|
||||
--
|
||||
-- This subprogram receives and prints a sequence of three test messages.
|
||||
--
|
||||
|
||||
procedure RECEIVE_MESSAGES;
|
||||
|
||||
--
|
||||
-- FILL_BUFFER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram takes the SOURCE input string and places
|
||||
-- up to the first sixteen characters of that string into
|
||||
-- the message BUFFER.
|
||||
--
|
||||
|
||||
procedure FILL_BUFFER (
|
||||
SOURCE : in STRING;
|
||||
BUFFER : out RTEMS.BUFFER
|
||||
);
|
||||
|
||||
--
|
||||
-- PUT_BUFFER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram prints the specified message BUFFER.
|
||||
--
|
||||
|
||||
procedure PUT_BUFFER (
|
||||
BUFFER : in RTEMS.BUFFER
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
0, -- maximum # timers
|
||||
0, -- maximum # semaphores
|
||||
1, -- maximum # message queues
|
||||
1, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,20 +0,0 @@
|
||||
*** TEST 9 -- NODE 1 ***
|
||||
Creating Message Queue (Global)
|
||||
Creating Test_task (local)
|
||||
Starting Test_task (local)
|
||||
Deleting initialization task
|
||||
Getting QID of message queue
|
||||
Receiving message ...
|
||||
Received : 123456789012345
|
||||
Receiving message ...
|
||||
Received : abcdefghijklmno
|
||||
Receiving message ...
|
||||
Received : ABCDEFGHIJKLMNO
|
||||
Receiver delaying for a second
|
||||
message_queue_send : 123456789012345
|
||||
Delaying for a second
|
||||
message_queue_urgent : abcdefghijklmno
|
||||
Delaying for a second
|
||||
message_queue_broadcast : ABCDEFGHIJKLMNO
|
||||
Delaying for a second
|
||||
*** END OF TEST 9 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,26 +0,0 @@
|
||||
*** TEST 9 -- NODE 2 ***
|
||||
Creating Test_task (local)
|
||||
Starting Test_task (local)
|
||||
Deleting initialization task
|
||||
Getting QID of message queue
|
||||
message_queue_delete correctly returned ILLEGAL_ON_REMOTE_OBJECT
|
||||
message_queue_send : 123456789012345
|
||||
Delaying for a second
|
||||
message_queue_urgent : abcdefghijklmno
|
||||
Delaying for a second
|
||||
message_queue_broadcast : ABCDEFGHIJKLMNO
|
||||
Delaying for a second
|
||||
Receiving message ...
|
||||
Received : 123456789012345
|
||||
Receiving message ...
|
||||
Received : abcdefghijklmno
|
||||
Receiving message ...
|
||||
Received : ABCDEFGHIJKLMNO
|
||||
Receiver delaying for a second
|
||||
Flushing remote empty queue
|
||||
0 messages were flushed from remote empty queue
|
||||
Send messages to be flushed from remote queue
|
||||
Flushing remote queue
|
||||
1 messages were flushed from the remote queue
|
||||
Waiting for message queue to be deleted
|
||||
*** END OF TEST 9 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,301 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 10 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 10 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'A', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( 'T', 'A', '2', ' ' );
|
||||
MPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME( 'S', 'A', '3', ' ' );
|
||||
|
||||
MPTEST.QUEUE_NAME( 1 ) := RTEMS.BUILD_NAME( 'M', 'S', 'G', ' ' );
|
||||
|
||||
MPTEST.SEMAPHORE_NAME( 1 ) := RTEMS.BUILD_NAME( 'S', 'E', 'M', ' ' );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Message Queue (Global)" );
|
||||
RTEMS.MESSAGE_QUEUE_CREATE(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
3,
|
||||
RTEMS.GLOBAL + RTEMS.LIMIT,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Semaphore (Global)" );
|
||||
RTEMS.SEMAPHORE_CREATE(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
0,
|
||||
RTEMS.GLOBAL + RTEMS.PRIORITY,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_CREATE" );
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( 10 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
else
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task 1 (local)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 1 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.DEFAULT_ATTRIBUTES,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task 1 (local)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK_1'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task 2 (local)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 2 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.DEFAULT_ATTRIBUTES,
|
||||
MPTEST.TASK_ID( 2 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task 2 (local)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 2 ),
|
||||
MPTEST.TEST_TASK_2'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task 3 (local)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 3 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.DEFAULT_ATTRIBUTES,
|
||||
MPTEST.TASK_ID( 3 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task 3 (local)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 3 ),
|
||||
MPTEST.TEST_TASK_3'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Sleeping for 1 second ..." );
|
||||
RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting Test_task 2" );
|
||||
RTEMS.TASK_DELETE( MPTEST.TASK_ID( 2 ), STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF 2" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting Test_task 1" );
|
||||
RTEMS.TASK_DELETE( MPTEST.TASK_ID( 1 ), STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF 1" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Restarting Test_task 3" );
|
||||
RTEMS.TASK_RESTART( MPTEST.TASK_ID( 3 ), 1, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESTART OF 3" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 10 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK_1
|
||||
--
|
||||
|
||||
procedure TEST_TASK_1 (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
RECEIVE_BUFFER_AREA : RTEMS.BUFFER;
|
||||
RECEIVE_BUFFER : RTEMS.BUFFER_POINTER;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RECEIVE_BUFFER :=
|
||||
RTEMS.TO_BUFFER_POINTER( RECEIVE_BUFFER_AREA'ADDRESS );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting QID of message queue" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_IDENT(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Attempting to receive message ..." );
|
||||
RTEMS.MESSAGE_QUEUE_RECEIVE(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
RECEIVE_BUFFER,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );
|
||||
|
||||
end TEST_TASK_1;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK_2
|
||||
--
|
||||
|
||||
procedure TEST_TASK_2 (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting SMID of semaphore" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.SEMAPHORE_IDENT(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Attempting to acquire semaphore ..." );
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
|
||||
|
||||
end TEST_TASK_2;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK_3
|
||||
--
|
||||
|
||||
procedure TEST_TASK_3 (
|
||||
RESTART : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
if RESTART = 1 then
|
||||
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting SMID of semaphore" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.SEMAPHORE_IDENT(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Attempting to acquire semaphore ..." );
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
|
||||
|
||||
end TEST_TASK_3;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,224 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 10 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS message
|
||||
-- queues created by this test.
|
||||
--
|
||||
|
||||
QUEUE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
QUEUE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS semaphore
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
SEMAPHORE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
SEMAPHORE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- The number of events to process per dot printed out.
|
||||
--
|
||||
|
||||
PER_DOT : constant RTEMS.UNSIGNED32 := 100;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK_1
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of one of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK_1 (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK_2
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of one of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK_2 (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK_3
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of one of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK_3 (
|
||||
RESTART : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
0, -- maximum # timers
|
||||
1, -- maximum # semaphores
|
||||
1, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,4 +0,0 @@
|
||||
*** TEST 10 -- NODE 1 ***
|
||||
Creating Message Queue (Global)
|
||||
Creating Semaphore (Global)
|
||||
*** END OF TEST 10 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,18 +0,0 @@
|
||||
*** TEST 10 -- NODE 2 ***
|
||||
Creating Test_task 1 (local)
|
||||
Starting Test_task 1 (local)
|
||||
Creating Test_task 2 (local)
|
||||
Starting Test_task 2 (local)
|
||||
Creating Test_task 3 (local)
|
||||
Starting Test_task 3 (local)
|
||||
Sleeping for 1 second ...
|
||||
Getting QID of message queue
|
||||
Attempting to receive message ...
|
||||
Getting SMID of semaphore
|
||||
Attempting to acquire semaphore ...
|
||||
Getting SMID of semaphore
|
||||
Attempting to acquire semaphore ...
|
||||
Deleting Test_task 2
|
||||
Deleting Test_task 1
|
||||
Restarting Test_task 3
|
||||
*** END OF TEST 10 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,138 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 11 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 11 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
MPTEST.QUEUE_NAME( 1 ) := RTEMS.BUILD_NAME( 'M', 'S', 'G', ' ' );
|
||||
|
||||
MPTEST.SEMAPHORE_NAME( 1 ) := RTEMS.BUILD_NAME( 'S', 'E', 'M', ' ' );
|
||||
|
||||
MPTEST.PARTITION_NAME( 1 ) := RTEMS.BUILD_NAME( 'P', 'A', 'R', ' ' );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Attempting to create Test_task (Global)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 1 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.DEFAULT_MODES,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.TOO_MANY,
|
||||
"TASK_CREATE"
|
||||
);
|
||||
TEXT_IO.PUT_LINE( "task_create correctly returned TOO_MANY" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Attempting to create Message Queue (Global)" );
|
||||
RTEMS.MESSAGE_QUEUE_CREATE(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
3,
|
||||
RTEMS.GLOBAL + RTEMS.LIMIT,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.TOO_MANY,
|
||||
"MESSAGE_QUEUE_CREATE"
|
||||
);
|
||||
TEXT_IO.PUT_LINE(
|
||||
"message_queue_create correctly returned TOO_MANY"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Semaphore (Global)" );
|
||||
RTEMS.SEMAPHORE_CREATE(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
1,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.TOO_MANY,
|
||||
"SEMAPHORE_CREATE"
|
||||
);
|
||||
TEXT_IO.PUT_LINE( "semaphore_create correctly returned TOO_MANY" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Partition (Global)" );
|
||||
RTEMS.PARTITION_CREATE(
|
||||
MPTEST.PARTITION_NAME( 1 ),
|
||||
MPTEST.PARTITION_AREA( 0 )'ADDRESS,
|
||||
128,
|
||||
64,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.TOO_MANY,
|
||||
"PARTITION_CREATE"
|
||||
);
|
||||
TEXT_IO.PUT_LINE( "partition_create correctly returned TOO_MANY" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 11 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end INIT;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,184 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 11 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS message
|
||||
-- queues created by this test.
|
||||
--
|
||||
|
||||
QUEUE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
QUEUE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS semaphore
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
SEMAPHORE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
SEMAPHORE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS partition
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
PARTITION_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
PARTITION_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This is the area used for the partition.
|
||||
--
|
||||
|
||||
PARTITION_AREA :
|
||||
array ( RTEMS.UNSIGNED32 range 0 .. 1023 ) of RTEMS.UNSIGNED8;
|
||||
for PARTITION_AREA'ALIGNMENT use RTEMS.STRUCTURE_ALIGNMENT;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
0, -- maximum # global objects
|
||||
0 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
0, -- maximum # timers
|
||||
1, -- maximum # semaphores
|
||||
1, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
1, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,10 +0,0 @@
|
||||
*** TEST 11 -- NODE 1 ***
|
||||
Attempting to create Test_task (Global)
|
||||
task_create correctly returned TOO_MANY
|
||||
Attempting to create Message Queue (Global)
|
||||
message_queue_create correctly returned TOO_MANY
|
||||
Creating Semaphore (Global)
|
||||
semaphore_create correctly returned TOO_MANY
|
||||
Creating Partition (Global)
|
||||
partition_create correctly returned TOO_MANY
|
||||
*** END OF TEST 11 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,2 +0,0 @@
|
||||
*** TEST 11 -- NODE 2 ***
|
||||
*** END OF TEST 11 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,152 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 12 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
BUFFER_ADDRESS : RTEMS.ADDRESS;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 12 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
MPTEST.PARTITION_NAME( 1 ) := RTEMS.BUILD_NAME( 'P', 'A', 'R', ' ' );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Got to the initialization task" );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 2 then
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( 1 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting ID of remote Partition (Global)" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.PARTITION_IDENT(
|
||||
MPTEST.PARTITION_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
TEXT_IO.PUT_LINE(
|
||||
"Attempting to delete remote Partition (Global)"
|
||||
);
|
||||
|
||||
RTEMS.PARTITION_DELETE( MPTEST.PARTITION_ID( 1 ), STATUS );
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.ILLEGAL_ON_REMOTE_OBJECT,
|
||||
"PARTITION_DELETE"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE(
|
||||
"partition_delete correctly returned ILLEGAL_ON_REMOTE_OBJECT!!"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE( "Obtaining a buffer from the global partition" );
|
||||
|
||||
RTEMS.PARTITION_GET_BUFFER(
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
BUFFER_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );
|
||||
TEXT_IO.PUT( "Address returned was : " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
RTEMS.SUBTRACT( BUFFER_ADDRESS, RTEMS.NULL_ADDRESS ),
|
||||
WIDTH => 8,
|
||||
BASE => 16
|
||||
);
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
RTEMS.PARTITION_RETURN_BUFFER(
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
BUFFER_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( 2 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
else
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Partition (Global)" );
|
||||
RTEMS.PARTITION_CREATE(
|
||||
MPTEST.PARTITION_NAME( 1 ),
|
||||
MPTEST.PARTITION_AREA( 0 )'ADDRESS,
|
||||
128,
|
||||
64,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Sleeping for three seconds" );
|
||||
RTEMS.TASK_WAKE_AFTER( 3 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting Partition (Global)" );
|
||||
RTEMS.PARTITION_DELETE( MPTEST.PARTITION_ID( 1 ), STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_DELETE" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 12 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end INIT;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,182 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 12 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS semaphore
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
PARTITION_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
PARTITION_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the area used for the partition.
|
||||
--
|
||||
|
||||
PARTITION_AREA :
|
||||
array ( RTEMS.UNSIGNED32 range 0 .. 1023 ) of RTEMS.UNSIGNED8;
|
||||
for PARTITION_AREA'ALIGNMENT use RTEMS.STRUCTURE_ALIGNMENT;
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
0, -- maximum # timers
|
||||
0, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
1, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,6 +0,0 @@
|
||||
*** TEST 12 -- NODE 1 ***
|
||||
Got to the initialization task
|
||||
Creating Partition (Global)
|
||||
Sleeping for three seconds
|
||||
Deleting Partition (Global)
|
||||
*** END OF TEST 12 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,9 +0,0 @@
|
||||
*** TEST 12 -- NODE 2 ***
|
||||
Got to the initialization task
|
||||
Getting ID of remote Partition (Global)
|
||||
Attempting to delete remote Partition (Global)
|
||||
partition_delete correctly returned ILLEGAL_ON_REMOTE_OBJECT!!
|
||||
Obtaining a buffer from the global partition
|
||||
Address returned was : 0x200f0000
|
||||
NOTE: Address printed will probably differ!!!
|
||||
*** END OF TEST 12 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,328 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 13 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 13 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
MPTEST.QUEUE_NAME( 1 ) := RTEMS.BUILD_NAME( 'M', 'S', 'G', ' ' );
|
||||
|
||||
MPTEST.SEMAPHORE_NAME( 1 ) := RTEMS.BUILD_NAME( 'S', 'E', 'M', ' ' );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Message Queue (Global)" );
|
||||
RTEMS.MESSAGE_QUEUE_CREATE(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
3,
|
||||
RTEMS.GLOBAL + RTEMS.LIMIT,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Semaphore (Global)" );
|
||||
RTEMS.SEMAPHORE_CREATE(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
1,
|
||||
RTEMS.GLOBAL + RTEMS.PRIORITY,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_CREATE" );
|
||||
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task 1 (local)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 1 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.DEFAULT_ATTRIBUTES,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task 1 (local)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK_1'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Test_task 2 (local)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 2 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.DEFAULT_ATTRIBUTES,
|
||||
MPTEST.TASK_ID( 2 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Test_task 2 (local)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 2 ),
|
||||
MPTEST.TEST_TASK_2'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( 5 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 13 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting initialization task" );
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK_1
|
||||
--
|
||||
|
||||
procedure TEST_TASK_1 (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
RECEIVE_BUFFER_AREA : RTEMS.BUFFER;
|
||||
RECEIVE_BUFFER : RTEMS.BUFFER_POINTER;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RECEIVE_BUFFER :=
|
||||
RTEMS.TO_BUFFER_POINTER( RECEIVE_BUFFER_AREA'ADDRESS );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting QID of message queue" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_IDENT(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Receiving message ..." );
|
||||
RTEMS.MESSAGE_QUEUE_RECEIVE(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
RECEIVE_BUFFER,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEXT_IO.PUT_LINE( "How did I get back from here???" );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );
|
||||
|
||||
end if;
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Receiving message ..." );
|
||||
RTEMS.MESSAGE_QUEUE_RECEIVE(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
RECEIVE_BUFFER,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
2 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.TIMEOUT,
|
||||
"MESSAGE_QUEUE_RECEIVE"
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.TIMEOUT,
|
||||
"MESSAGE_QUEUE_OBTAIN"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE(
|
||||
"message_queue_receive correctly returned TIMEOUT"
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE( "Deleting self" );
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end TEST_TASK_1;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- TEST_TASK_2
|
||||
--
|
||||
|
||||
procedure TEST_TASK_2 (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting SMID of semaphore" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.SEMAPHORE_IDENT(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Releasing semaphore ..." );
|
||||
RTEMS.SEMAPHORE_RELEASE( MPTEST.SEMAPHORE_ID( 1 ), STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_RELEASE" );
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND / 2, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting semaphore ..." );
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting semaphore ..." );
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEXT_IO.PUT_LINE( "How did I get back from here???" );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
|
||||
|
||||
end if;
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND / 2, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting semaphore ..." );
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Releasing semaphore ..." );
|
||||
RTEMS.SEMAPHORE_RELEASE( MPTEST.SEMAPHORE_ID( 1 ), STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_RELEASE" );
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting semaphore ..." );
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
2 * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
|
||||
STATUS,
|
||||
RTEMS.TIMEOUT,
|
||||
"SEMAPHORE_OBTAIN"
|
||||
);
|
||||
TEXT_IO.PUT_LINE( "semaphore_obtain correctly returned TIMEOUT" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TEST 13 ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TEST_TASK_2;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,206 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 13 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS message
|
||||
-- queues created by this test.
|
||||
--
|
||||
|
||||
QUEUE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
QUEUE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS semaphore
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
SEMAPHORE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
|
||||
SEMAPHORE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable contains the ID of the remote task with which this
|
||||
-- test interacts.
|
||||
--
|
||||
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
|
||||
--
|
||||
-- This variable contains the node on which the remote task with which
|
||||
-- this test interacts resides.
|
||||
--
|
||||
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK_1
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of one of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK_1 (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK_2
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is the body of one of the RTEMS tasks which constitute this test.
|
||||
--
|
||||
|
||||
procedure TEST_TASK_2 (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
0, -- maximum # timers
|
||||
1, -- maximum # semaphores
|
||||
1, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,14 +0,0 @@
|
||||
*** TEST 13 -- NODE 1 ***
|
||||
Creating Message Queue (Global)
|
||||
Creating Semaphore (Global)
|
||||
Creating Test_task 1 (local)
|
||||
Starting Test_task 1 (local)
|
||||
Creating Test_task 2 (local)
|
||||
Starting Test_task 2 (local)
|
||||
Getting QID of message queue
|
||||
Receiving message ...
|
||||
Getting SMID of semaphore
|
||||
Releasing semaphore ...
|
||||
Getting semaphore ...
|
||||
Getting semaphore ...
|
||||
*** END OF TEST 13 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,16 +0,0 @@
|
||||
*** TEST 13 -- NODE 2 ***
|
||||
Creating Test_task 1 (local)
|
||||
Starting Test_task 1 (local)
|
||||
Creating Test_task 2 (local)
|
||||
Starting Test_task 2 (local)
|
||||
Deleting initialization task
|
||||
Getting QID of message queue
|
||||
Getting SMID of semaphore
|
||||
Getting semaphore ...
|
||||
Releasing semaphore ...
|
||||
Receiving message ...
|
||||
Getting semaphore ...
|
||||
message_queue_receive correctly returned TIMEOUT
|
||||
Deleting self
|
||||
semaphore_obtain correctly returned TIMEOUT
|
||||
*** END OF TEST 13 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,764 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 14 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with BSP;
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- STOP_TEST_TSR
|
||||
--
|
||||
|
||||
procedure STOP_TEST_TSR (
|
||||
IGNORED_ID : in RTEMS.ID;
|
||||
IGNORED_ADDRESS : in RTEMS.ADDRESS
|
||||
) is
|
||||
begin
|
||||
|
||||
MPTEST.STOP_TEST := TRUE;
|
||||
|
||||
end STOP_TEST_TSR;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- EXIT_TEST
|
||||
--
|
||||
|
||||
procedure EXIT_TEST is
|
||||
OLD_MODE : RTEMS.MODE;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_MODE( RTEMS.NO_PREEMPT, RTEMS.PREEMPT_MASK, OLD_MODE, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
|
||||
|
||||
BSP_MPCI.PRINT_STATISTICS;
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end EXIT_TEST;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
INDEX : RTEMS.UNSIGNED32;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
PREVIOUS_PRIORITY : RTEMS.TASK_PRIORITY;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** TEST 14 -- NODE " );
|
||||
UNSIGNED32_IO.PUT(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE,
|
||||
WIDTH => 1
|
||||
);
|
||||
TEXT_IO.PUT_LINE( " ***" );
|
||||
|
||||
MPTEST.STOP_TIMER_NAME := RTEMS.BUILD_NAME( 'S', 'T', 'O', 'P' );
|
||||
|
||||
MPTEST.STOP_TEST := FALSE;
|
||||
|
||||
RTEMS.TIMER_CREATE(
|
||||
MPTEST.STOP_TIMER_NAME,
|
||||
MPTEST.STOP_TIMER_ID,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
|
||||
|
||||
RTEMS.TIMER_FIRE_AFTER(
|
||||
MPTEST.STOP_TIMER_ID,
|
||||
BSP.MAXIMUM_LONG_TEST_DURATION * TEST_SUPPORT.TICKS_PER_SECOND,
|
||||
MPTEST.STOP_TEST_TSR'ACCESS,
|
||||
RTEMS.NULL_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
|
||||
|
||||
MPTEST.EVENT_TASK_NAME( 1 ) := RTEMS.BUILD_NAME( '1', '1', '1', ' ' );
|
||||
MPTEST.EVENT_TASK_NAME( 2 ) := RTEMS.BUILD_NAME( '2', '2', '2', ' ' );
|
||||
|
||||
MPTEST.QUEUE_TASK_NAME( 1 ) := RTEMS.BUILD_NAME( 'M', 'T', '1', ' ' );
|
||||
MPTEST.QUEUE_TASK_NAME( 2 ) := RTEMS.BUILD_NAME( 'M', 'T', '2', ' ' );
|
||||
|
||||
MPTEST.PARTITION_TASK_NAME( 1 ) :=
|
||||
RTEMS.BUILD_NAME( 'P', 'T', '1', ' ' );
|
||||
MPTEST.PARTITION_TASK_NAME( 2 ) :=
|
||||
RTEMS.BUILD_NAME( 'P', 'T', '2', ' ' );
|
||||
|
||||
MPTEST.SEMAPHORE_TASK_NAME( 1 ) :=
|
||||
RTEMS.BUILD_NAME( 'S', 'M', '1', ' ' );
|
||||
MPTEST.SEMAPHORE_TASK_NAME( 2 ) :=
|
||||
RTEMS.BUILD_NAME( 'S', 'M', '2', ' ' );
|
||||
|
||||
MPTEST.SEMAPHORE_NAME( 1 ) := RTEMS.BUILD_NAME( 'S', 'E', 'M', ' ' );
|
||||
|
||||
MPTEST.QUEUE_NAME( 1 ) := RTEMS.BUILD_NAME( 'M', 'S', 'G', ' ' );
|
||||
|
||||
MPTEST.PARTITION_NAME( 1 ) := RTEMS.BUILD_NAME( 'P', 'A', 'R', ' ' );
|
||||
|
||||
MPTEST.TIMER_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'M', 'R', ' ' );
|
||||
|
||||
for INDEX in MPTEST.BUFFERS'FIRST .. MPTEST.BUFFERS'LAST
|
||||
loop
|
||||
|
||||
MPTEST.BUFFERS( INDEX ) :=
|
||||
RTEMS.TO_BUFFER_POINTER( MPTEST.BUFFER_AREAS( INDEX )'ADDRESS );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Semaphore (Global)" );
|
||||
RTEMS.SEMAPHORE_CREATE(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
1,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Message Queue (Global)" );
|
||||
RTEMS.MESSAGE_QUEUE_CREATE(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
1,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Partition (Global)" );
|
||||
RTEMS.PARTITION_CREATE(
|
||||
MPTEST.PARTITION_NAME( 1 ),
|
||||
MPTEST.PARTITION_AREA( 0 )'ADDRESS,
|
||||
16#8000#,
|
||||
16#3000#,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE" );
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Event task (Global)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.EVENT_TASK_NAME(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE
|
||||
),
|
||||
2,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.EVENT_TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Event task (Global)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.EVENT_TASK_ID( 1 ),
|
||||
MPTEST.TEST_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Semaphore task (Global)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.SEMAPHORE_TASK_NAME(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE
|
||||
),
|
||||
2,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.SEMAPHORE_TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Semaphore task (Global)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.SEMAPHORE_TASK_ID( 1 ),
|
||||
MPTEST.SEMAPHORE_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Message Queue task (Global)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.QUEUE_TASK_NAME(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE
|
||||
),
|
||||
2,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.QUEUE_TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Message Queue task (Global)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.QUEUE_TASK_ID( 1 ),
|
||||
MPTEST.MESSAGE_QUEUE_TASK'ACCESS,
|
||||
1, -- index of buffer
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Creating Partition task (Global)" );
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.PARTITION_TASK_NAME(
|
||||
MPTEST.MULTIPROCESSING_CONFIGURATION.NODE
|
||||
),
|
||||
2,
|
||||
2048,
|
||||
RTEMS.TIMESLICE,
|
||||
RTEMS.GLOBAL,
|
||||
MPTEST.PARTITION_TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE" );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Starting Partition task (Global)" );
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.PARTITION_TASK_ID( 1 ),
|
||||
MPTEST.PARTITION_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START" );
|
||||
|
||||
RTEMS.TASK_SET_PRIORITY( RTEMS.SELF, 2, PREVIOUS_PRIORITY, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_PRIORITY" );
|
||||
|
||||
MPTEST.DELAYED_EVENTS_TASK( 1 );
|
||||
|
||||
end INIT;
|
||||
|
||||
--
|
||||
-- DELAYED_SEND_EVENT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram is a timer service routine which sends an
|
||||
-- event set to a waiting task.
|
||||
--
|
||||
|
||||
procedure DELAYED_SEND_EVENT (
|
||||
TIMER_ID : in RTEMS.ID;
|
||||
IGNORED_ADDRESS : in RTEMS.ADDRESS
|
||||
) is
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.EVENT_SEND(
|
||||
MPTEST.TASK_ID( RTEMS.GET_INDEX( TIMER_ID ) ),
|
||||
RTEMS.EVENT_16,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND" );
|
||||
|
||||
end DELAYED_SEND_EVENT;
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
REMOTE_NODE : RTEMS.UNSIGNED32;
|
||||
REMOTE_TID : RTEMS.ID;
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
EVENT_OUT : RTEMS.EVENT_SET;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
REMOTE_NODE := 2;
|
||||
else
|
||||
REMOTE_NODE := 1;
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "About to go to sleep!" );
|
||||
RTEMS.TASK_WAKE_AFTER( 1 * TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
|
||||
TEXT_IO.PUT_LINE( "Waking up!" );
|
||||
|
||||
TEXT_IO.PUT( "Remote task's name is : " );
|
||||
TEST_SUPPORT.PUT_NAME( MPTEST.EVENT_TASK_NAME( REMOTE_NODE ), TRUE );
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting TID of remote task" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.TASK_IDENT(
|
||||
MPTEST.EVENT_TASK_NAME( REMOTE_NODE ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
REMOTE_TID,
|
||||
STATUS
|
||||
);
|
||||
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
TEXT_IO.PUT_LINE( "task_ident" );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
TEXT_IO.PUT_LINE( "Sending events to remote task" );
|
||||
|
||||
loop
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
for COUNT in 1 .. MPTEST.EVENT_TASK_DOT_COUNT
|
||||
loop
|
||||
RTEMS.EVENT_SEND(
|
||||
REMOTE_TID,
|
||||
RTEMS.EVENT_16,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_SEND" );
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
end loop;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "e" );
|
||||
|
||||
end loop;
|
||||
|
||||
end if;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Receiving events from remote task" );
|
||||
|
||||
loop
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
for COUNT in 1 .. MPTEST.EVENT_TASK_DOT_COUNT
|
||||
loop
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
RTEMS.EVENT_RECEIVE(
|
||||
RTEMS.EVENT_16,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
EVENT_OUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE" );
|
||||
|
||||
end loop;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "e" );
|
||||
|
||||
end loop;
|
||||
|
||||
MPTEST.EXIT_TEST;
|
||||
|
||||
end TEST_TASK;
|
||||
|
||||
--
|
||||
-- DELAYED_EVENTS_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure DELAYED_EVENTS_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
PREVIOUS_MODE : RTEMS.MODE;
|
||||
EVENTS_OUT : RTEMS.EVENT_SET;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_MODE(
|
||||
RTEMS.PREEMPT + RTEMS.TIMESLICE,
|
||||
RTEMS.PREEMPT_MASK + RTEMS.TIMESLICE_MASK,
|
||||
PREVIOUS_MODE,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
|
||||
|
||||
RTEMS.TIMER_CREATE(
|
||||
MPTEST.TIMER_NAME( 1 ),
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE" );
|
||||
|
||||
RTEMS.TASK_IDENT(
|
||||
RTEMS.SELF,
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.TASK_ID( RTEMS.GET_INDEX( MPTEST.TIMER_ID( 1 ) ) ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENTS" );
|
||||
|
||||
loop
|
||||
|
||||
for COUNT in 1 .. MPTEST.DELAYED_EVENT_DOT_COUNT
|
||||
loop
|
||||
RTEMS.TIMER_FIRE_AFTER(
|
||||
MPTEST.TIMER_ID( 1 ),
|
||||
1,
|
||||
MPTEST.DELAYED_SEND_EVENT'ACCESS,
|
||||
RTEMS.NULL_ADDRESS,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
|
||||
|
||||
RTEMS.EVENT_RECEIVE(
|
||||
RTEMS.EVENT_16,
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
EVENTS_OUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "EVENT_RECEIVE" );
|
||||
|
||||
end loop;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "." );
|
||||
|
||||
end loop;
|
||||
|
||||
MPTEST.EXIT_TEST;
|
||||
|
||||
end DELAYED_EVENTS_TASK;
|
||||
|
||||
--
|
||||
-- MESSAGE_QUEUE_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure MESSAGE_QUEUE_TASK (
|
||||
INDEX : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
YIELD_COUNT : RTEMS.UNSIGNED32;
|
||||
OVERFLOW_COUNT : RTEMS.UNSIGNED32_POINTER;
|
||||
BUFFER_COUNT : RTEMS.UNSIGNED32_POINTER;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
MPTEST.BUFFERS( INDEX ).FIELD1 := 0;
|
||||
MPTEST.BUFFERS( INDEX ).FIELD2 := 0;
|
||||
MPTEST.BUFFERS( INDEX ).FIELD3 := 0;
|
||||
MPTEST.BUFFERS( INDEX ).FIELD4 := 0;
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting ID of message queue" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_IDENT(
|
||||
MPTEST.QUEUE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
TEXT_IO.PUT_LINE( "message_queue_ident FAILED!!" );
|
||||
|
||||
end loop;
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_SEND(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.BUFFERS( INDEX ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
|
||||
|
||||
OVERFLOW_COUNT := RTEMS.TO_UNSIGNED32_POINTER(
|
||||
MPTEST.BUFFERS( INDEX ).FIELD1'ADDRESS
|
||||
);
|
||||
|
||||
BUFFER_COUNT := RTEMS.TO_UNSIGNED32_POINTER(
|
||||
MPTEST.BUFFERS( INDEX ).FIELD2'ADDRESS
|
||||
);
|
||||
|
||||
else
|
||||
|
||||
OVERFLOW_COUNT := RTEMS.TO_UNSIGNED32_POINTER(
|
||||
MPTEST.BUFFERS( INDEX ).FIELD3'ADDRESS
|
||||
);
|
||||
|
||||
BUFFER_COUNT := RTEMS.TO_UNSIGNED32_POINTER(
|
||||
MPTEST.BUFFERS( INDEX ).FIELD4'ADDRESS
|
||||
);
|
||||
|
||||
end if;
|
||||
|
||||
loop
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
YIELD_COUNT := 100;
|
||||
|
||||
for COUNT in 1 .. MPTEST.MESSAGE_DOT_COUNT
|
||||
loop
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_RECEIVE(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.BUFFERS( INDEX ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED(
|
||||
STATUS,
|
||||
"MESSAGE_QUEUE_RECEIVE"
|
||||
);
|
||||
|
||||
if BUFFER_COUNT.ALL = RTEMS.UNSIGNED32'LAST then
|
||||
BUFFER_COUNT.ALL := 0;
|
||||
OVERFLOW_COUNT.ALL := OVERFLOW_COUNT.ALL + 1;
|
||||
else
|
||||
BUFFER_COUNT.ALL := BUFFER_COUNT.ALL + 1;
|
||||
end if;
|
||||
|
||||
RTEMS.MESSAGE_QUEUE_SEND(
|
||||
MPTEST.QUEUE_ID( 1 ),
|
||||
MPTEST.BUFFERS( INDEX ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
|
||||
|
||||
if MPTEST.STOP_TEST = FALSE then
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
YIELD_COUNT := YIELD_COUNT - 1;
|
||||
|
||||
if YIELD_COUNT = 0 then
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "YIELD" );
|
||||
|
||||
YIELD_COUNT := 100;
|
||||
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "m" );
|
||||
|
||||
end loop;
|
||||
|
||||
MPTEST.EXIT_TEST;
|
||||
|
||||
end MESSAGE_QUEUE_TASK;
|
||||
|
||||
--
|
||||
-- PARTITION_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure PARTITION_TASK (
|
||||
IGNORED : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
BUFFER : RTEMS.ADDRESS;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting ID of partition" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.PARTITION_IDENT(
|
||||
MPTEST.PARTITION_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
TEXT_IO.PUT_LINE( "partition_ident FAILED!!" );
|
||||
|
||||
end loop;
|
||||
|
||||
loop
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
for COUNT in 1 .. MPTEST.PARTITION_DOT_COUNT
|
||||
loop
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
RTEMS.PARTITION_GET_BUFFER(
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
BUFFER,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );
|
||||
|
||||
RTEMS.PARTITION_RETURN_BUFFER(
|
||||
MPTEST.PARTITION_ID( 1 ),
|
||||
BUFFER,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED(
|
||||
STATUS,
|
||||
"PARTITION_RETURN_BUFFER"
|
||||
);
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "YIELD" );
|
||||
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "p" );
|
||||
|
||||
end loop;
|
||||
|
||||
MPTEST.EXIT_TEST;
|
||||
|
||||
end PARTITION_TASK;
|
||||
|
||||
--
|
||||
-- SEMAPHORE_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure SEMAPHORE_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
COUNT : RTEMS.UNSIGNED32;
|
||||
YIELD_COUNT : RTEMS.UNSIGNED32;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.PUT_LINE( "Getting ID of semaphore" );
|
||||
|
||||
loop
|
||||
|
||||
RTEMS.SEMAPHORE_IDENT(
|
||||
MPTEST.SEMAPHORE_NAME( 1 ),
|
||||
RTEMS.SEARCH_ALL_NODES,
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
exit when RTEMS.IS_STATUS_SUCCESSFUL( STATUS );
|
||||
|
||||
TEXT_IO.PUT_LINE( "semaphore_ident FAILED!!" );
|
||||
|
||||
end loop;
|
||||
|
||||
loop
|
||||
|
||||
YIELD_COUNT := 100;
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
for COUNT in 1 .. MPTEST.SEMAPHORE_DOT_COUNT
|
||||
loop
|
||||
|
||||
exit when MPTEST.STOP_TEST = TRUE;
|
||||
|
||||
RTEMS.SEMAPHORE_OBTAIN(
|
||||
MPTEST.SEMAPHORE_ID( 1 ),
|
||||
RTEMS.DEFAULT_OPTIONS,
|
||||
RTEMS.NO_TIMEOUT,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
|
||||
|
||||
RTEMS.SEMAPHORE_RELEASE( MPTEST.SEMAPHORE_ID( 1 ), STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_RELEASE" );
|
||||
|
||||
if MPTEST.MULTIPROCESSING_CONFIGURATION.NODE = 1 then
|
||||
|
||||
YIELD_COUNT := YIELD_COUNT - 1;
|
||||
|
||||
if YIELD_COUNT = 0 then
|
||||
|
||||
RTEMS.TASK_WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "YIELD" );
|
||||
|
||||
YIELD_COUNT := 100;
|
||||
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
TEST_SUPPORT.PUT_DOT( "s" );
|
||||
|
||||
end loop;
|
||||
|
||||
MPTEST.EXIT_TEST;
|
||||
|
||||
end SEMAPHORE_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,347 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 14 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test for passing event sets.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test for passing event sets.
|
||||
--
|
||||
|
||||
EVENT_TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
EVENT_TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test for manipulating semaphores.
|
||||
--
|
||||
|
||||
SEMAPHORE_TASK_ID :
|
||||
array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
SEMAPHORE_TASK_NAME :
|
||||
array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test for passing messages.
|
||||
--
|
||||
|
||||
QUEUE_TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
QUEUE_TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test for manipulating the global partitions.
|
||||
--
|
||||
|
||||
PARTITION_TASK_ID :
|
||||
array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
PARTITION_TASK_NAME :
|
||||
array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS partitions
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
PARTITION_ID : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
PARTITION_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS semaphores
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
SEMAPHORE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
SEMAPHORE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS message_queues
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
QUEUE_ID : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
QUEUE_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS timers
|
||||
-- created by this test.
|
||||
--
|
||||
|
||||
TIMER_ID : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.ID;
|
||||
TIMER_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- The following are message buffers used to contain the test messages
|
||||
-- and pointers to those buffers.
|
||||
--
|
||||
|
||||
BUFFER_AREAS : array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.BUFFER;
|
||||
BUFFERS :
|
||||
array ( RTEMS.UNSIGNED32 range 1 .. 4 ) of RTEMS.BUFFER_POINTER;
|
||||
|
||||
--
|
||||
-- This is the area used for the partition.
|
||||
--
|
||||
|
||||
PARTITION_AREA :
|
||||
array ( RTEMS.UNSIGNED32 range 0 .. 16#7FFF# ) of RTEMS.UNSIGNED8;
|
||||
for PARTITION_AREA'ALIGNMENT use RTEMS.STRUCTURE_ALIGNMENT;
|
||||
|
||||
--
|
||||
-- The following constants control the flow of "dot" indicators
|
||||
-- from the various test componenents.
|
||||
--
|
||||
|
||||
EVENT_TASK_DOT_COUNT : constant RTEMS.UNSIGNED32 := 100;
|
||||
EVENT_SEND_DOT_COUNT : constant RTEMS.UNSIGNED32 := 100;
|
||||
DELAYED_EVENT_DOT_COUNT : constant RTEMS.UNSIGNED32 := 1000;
|
||||
MESSAGE_DOT_COUNT : constant RTEMS.UNSIGNED32 := 200;
|
||||
PARTITION_DOT_COUNT : constant RTEMS.UNSIGNED32 := 200;
|
||||
SEMAPHORE_DOT_COUNT : constant RTEMS.UNSIGNED32 := 200;
|
||||
|
||||
--
|
||||
-- These contain the IDs and NAMEs of the RTEMS timers used
|
||||
-- by this test to stop.
|
||||
--
|
||||
|
||||
STOP_TIMER_ID : RTEMS.ID;
|
||||
STOP_TIMER_NAME : RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- This variable is set when the test should stop executing.
|
||||
--
|
||||
|
||||
STOP_TEST : RTEMS.BOOLEAN;
|
||||
|
||||
--
|
||||
-- EXIT_TEST
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram is invoked to stop this test.
|
||||
--
|
||||
|
||||
procedure EXIT_TEST;
|
||||
|
||||
--
|
||||
-- DELAYED_SEND_EVENT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This subprogram is a timer service routine which sends an
|
||||
-- event set to a waiting task.
|
||||
--
|
||||
|
||||
procedure DELAYED_SEND_EVENT (
|
||||
TIMER_ID : in RTEMS.ID;
|
||||
IGNORED_ADDRESS : in RTEMS.ADDRESS
|
||||
);
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- TEST_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure TEST_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- DELAYED_EVENTS_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure DELAYED_EVENTS_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- MESSAGE_QUEUE_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure MESSAGE_QUEUE_TASK (
|
||||
INDEX : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- PARTITION_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure PARTITION_TASK (
|
||||
IGNORED : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- SEMAPHORE_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This is one of the test tasks.
|
||||
--
|
||||
|
||||
procedure SEMAPHORE_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.DEFAULT_ATTRIBUTES, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.TIMESLICE, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
32, -- maximum # global objects
|
||||
32 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
12, -- maximum # timers
|
||||
1, -- maximum # semaphores
|
||||
1, -- maximum # message queues
|
||||
1, -- maximum # messages
|
||||
1, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
1 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,33 +0,0 @@
|
||||
*** TEST 14 -- NODE 1 ***
|
||||
Creating Semaphore (Global)
|
||||
Creating Message Queue (Global)
|
||||
Creating Partition (Global)
|
||||
Creating Event task (Global)
|
||||
Starting Event task (Global)
|
||||
Creating Semaphore task (Global)
|
||||
About to go to sleep!
|
||||
Starting Semaphore task (Global)
|
||||
Creating Message Queue task (Global)
|
||||
Getting SMID of semaphore
|
||||
Starting Message Queue task (Global)
|
||||
Creating Partition task (Global)
|
||||
Getting ID of msg queue
|
||||
Starting Partition task (Global)
|
||||
Getting ID of partition
|
||||
Waking up!
|
||||
Remote task's name is : 222
|
||||
Getting TID of remote task
|
||||
Sending events to remote task
|
||||
<stream of following characters>
|
||||
. - indicates 100 iterations of
|
||||
tm_evafter of 1 tick and event_receive.
|
||||
e - indicates that 100
|
||||
events have been sent to the remote task.
|
||||
m - indicates 100 iterations of
|
||||
message_queue_send and message_queue_receive.
|
||||
p - indicates 100 iterations of
|
||||
partition_get_buffer and partition_return_buffer.
|
||||
s - indicates 100 iterations of
|
||||
semaphore_obtain and semaphore_release.
|
||||
NOTE: The characters in the stream could begin to appear whenever any
|
||||
task is started.
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,28 +0,0 @@
|
||||
*** TEST 14 -- NODE 2 ***
|
||||
Creating Event task (Global)
|
||||
Starting Event task (Global)
|
||||
Creating Semaphore task (Global)
|
||||
About to go to sleep!
|
||||
Starting Semaphore task (Global)
|
||||
Creating Message Queue task (Global)
|
||||
Getting SMID of semaphore
|
||||
Starting Message Queue task (Global)
|
||||
Creating Partition task (Global)
|
||||
Getting ID of msg queue
|
||||
Starting Partition task (Global)
|
||||
Getting ID of partition
|
||||
Waking up!
|
||||
Remote task's name is : 111
|
||||
Getting TID of remote task
|
||||
Receiving events from remote task
|
||||
<stream of following characters>
|
||||
. - indicates 100 iterations of
|
||||
tm_evafter of 1 tick and event_receive.
|
||||
e - indicates that 100
|
||||
events have been sent to the remote task.
|
||||
m - indicates 100 iterations of
|
||||
message_queue_send and message_queue_receive.
|
||||
p - indicates 100 iterations of
|
||||
partition_get_buffer and partition_return_buffer.
|
||||
s - indicates 100 iterations of
|
||||
semaphore_obtain and semaphore_release.
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 2;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
@@ -1,108 +0,0 @@
|
||||
--
|
||||
-- MPTEST / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the implementation for Test 1 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with INTERFACES; use INTERFACES;
|
||||
with RTEMS;
|
||||
with TEST_SUPPORT;
|
||||
with TEXT_IO;
|
||||
with UNSIGNED32_IO;
|
||||
|
||||
package body MPTEST is
|
||||
|
||||
package body PER_NODE_CONFIGURATION is separate;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
C : RTEMS.CHARACTER;
|
||||
TIME : RTEMS.TIME_OF_DAY;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
TEXT_IO.NEW_LINE( 2 );
|
||||
TEXT_IO.PUT( "*** SAMPLE MULTIPROCESSOR APPLICATION ***" );
|
||||
TEXT_IO.PUT( "Creating and starting an application task" );
|
||||
|
||||
|
||||
MPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'A', '1', ' ' );
|
||||
|
||||
RTEMS.TASK_CREATE(
|
||||
MPTEST.TASK_NAME( 1 ),
|
||||
1,
|
||||
2048,
|
||||
RTEMS.INTERRUPT_LEVEL( 0 ),
|
||||
RTEMS.DEFAULT_ATTRIBUTES,
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
|
||||
|
||||
RTEMS.TASK_START(
|
||||
MPTEST.TASK_ID( 1 ),
|
||||
MPTEST.APPLICATION_TASK'ACCESS,
|
||||
0,
|
||||
STATUS
|
||||
);
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
|
||||
|
||||
RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
|
||||
|
||||
end INIT;
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- APPLICATION_TASK
|
||||
--
|
||||
|
||||
procedure APPLICATION_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
) is
|
||||
TIME : RTEMS.TIME_OF_DAY;
|
||||
TID : RTEMS.ID;
|
||||
STATUS : RTEMS.STATUS_CODES;
|
||||
begin
|
||||
|
||||
RTEMS.TASK_IDENT( RTEMS.SELF, RTEMS.SEARCH_ALL_NODES, TID, STATUS );
|
||||
TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );
|
||||
|
||||
TEXT_IO.PUT( "This task was invoked with node argument (" );
|
||||
UNSIGNED32_IO.PUT( ARGUMENT );
|
||||
TEXT_IO.PUT_LINE( ")" );
|
||||
|
||||
TEXT_IO.PUT( "This task has the id of 0x" );
|
||||
UNSIGNED32_IO.PUT( TID, BASE => 16 );
|
||||
TEXT_IO.NEW_LINE;
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF SAMPLE MULTIPROCESSOR APPLICATION ***" );
|
||||
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end APPLICATION_TASK;
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,166 +0,0 @@
|
||||
--
|
||||
-- MPTEST / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for Test 1 of the RTEMS
|
||||
-- Multiprocessor Test Suite.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with BSP_MPCI;
|
||||
with RTEMS;
|
||||
|
||||
package MPTEST is
|
||||
|
||||
--
|
||||
-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
|
||||
-- by this test.
|
||||
--
|
||||
|
||||
TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.ID;
|
||||
TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 3 ) of RTEMS.NAME;
|
||||
|
||||
--
|
||||
-- INIT
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This RTEMS task initializes the application.
|
||||
--
|
||||
|
||||
procedure INIT (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- APPLICATION_TASK
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This routine is as an example of an application task which
|
||||
-- prints a message including its RTEMS task id. This task
|
||||
-- then invokes exit to return to the monitor.
|
||||
--
|
||||
|
||||
procedure APPLICATION_TASK (
|
||||
ARGUMENT : in RTEMS.TASK_ARGUMENT
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Driver Address Table for this test.
|
||||
--
|
||||
|
||||
DEVICE_DRIVERS : aliased RTEMS.DRIVER_ADDRESS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
CLOCK_DRIVER.INITIALIZE'ACCESS, -- Initialization
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Open
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Close
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Read
|
||||
RTEMS.NO_DRIVER_ENTRY, -- Write
|
||||
RTEMS.NO_DRIVER_ENTRY -- Control
|
||||
)
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Initialization Tasks Table for this test.
|
||||
--
|
||||
|
||||
INITIALIZATION_TASKS : aliased RTEMS.INITIALIZATION_TASKS_TABLE( 1 .. 1 ) :=
|
||||
(1=>
|
||||
(
|
||||
RTEMS.BUILD_NAME( 'U', 'I', '1', ' ' ), -- task name
|
||||
2048, -- stack size
|
||||
1, -- priority
|
||||
RTEMS.GLOBAL, -- attributes
|
||||
MPTEST.INIT'ACCESS, -- entry point
|
||||
RTEMS.NO_PREEMPT, -- initial mode
|
||||
0 -- argument list
|
||||
)
|
||||
);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- BEGIN SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / SPECIFICATION
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
|
||||
package PER_NODE_CONFIGURATION is
|
||||
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This function returns the node number for this node.
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32;
|
||||
|
||||
pragma INLINE ( LOCAL_NODE_NUMBER );
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
-- END SUBPACKAGE --
|
||||
----------------------------------------------------------------------------
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
--
|
||||
-- This is the Multiprocessor Configuration Table for this test.
|
||||
--
|
||||
|
||||
MULTIPROCESSING_CONFIGURATION : aliased RTEMS.MULTIPROCESSING_TABLE := (
|
||||
MPTEST.PER_NODE_CONFIGURATION.LOCAL_NODE_NUMBER,
|
||||
2, -- maximum # nodes in system
|
||||
33, -- maximum # global objects
|
||||
33 -- maximum # proxies
|
||||
);
|
||||
|
||||
--
|
||||
-- This is the Configuration Table for this test.
|
||||
--
|
||||
|
||||
CONFIGURATION : aliased RTEMS.CONFIGURATION_TABLE := (
|
||||
RTEMS.NULL_ADDRESS, -- will be replaced by BSP
|
||||
64 * 1024, -- executive RAM size
|
||||
10, -- maximum # tasks
|
||||
0, -- maximum # timers
|
||||
0, -- maximum # semaphores
|
||||
0, -- maximum # message queues
|
||||
0, -- maximum # messages
|
||||
0, -- maximum # partitions
|
||||
0, -- maximum # regions
|
||||
0, -- maximum # dp memory areas
|
||||
0, -- maximum # periods
|
||||
0, -- maximum # user extensions
|
||||
RTEMS.MILLISECONDS_TO_MICROSECONDS(10), -- # us in a tick
|
||||
50 -- # ticks in a timeslice
|
||||
);
|
||||
|
||||
end MPTEST;
|
||||
@@ -1,5 +0,0 @@
|
||||
*** 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 ***
|
||||
@@ -1,43 +0,0 @@
|
||||
--
|
||||
-- MPTEST.PER_NODE_CONFIGURATION / BODY
|
||||
--
|
||||
-- DESCRIPTION:
|
||||
--
|
||||
-- This package is the specification for the subpackage
|
||||
-- which will define the per node configuration parameters.
|
||||
--
|
||||
-- DEPENDENCIES:
|
||||
--
|
||||
--
|
||||
--
|
||||
-- COPYRIGHT (c) 1989-1997.
|
||||
-- On-Line Applications Research Corporation (OAR).
|
||||
-- Copyright assigned to U.S. Government, 1994.
|
||||
--
|
||||
-- The license and distribution terms for this file may in
|
||||
-- the file LICENSE in this distribution or at
|
||||
-- http://www.OARcorp.com/rtems/license.html.
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
|
||||
with RTEMS;
|
||||
|
||||
separate ( MPTEST )
|
||||
|
||||
package body PER_NODE_CONFIGURATION is
|
||||
|
||||
--PAGE
|
||||
--
|
||||
-- LOCAL_NODE_NUMBER
|
||||
--
|
||||
|
||||
function LOCAL_NODE_NUMBER
|
||||
return RTEMS.UNSIGNED32 is
|
||||
begin
|
||||
|
||||
return 1;
|
||||
|
||||
end LOCAL_NODE_NUMBER;
|
||||
|
||||
end PER_NODE_CONFIGURATION;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user