mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-26 14:18:20 +00:00
2003-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* base_mp/node1/.cvsignore: Remove. * base_mp/node1/Makefile.am: Remove. * base_mp/node1/base_mp.doc: Remove. * base_mp/node1/base_mp.scn: Remove. * base_mp/.cvsignore: Remove. * base_mp/Makefile.am: Remove. * base_mp/apptask.c: Remove. * base_mp/init.c: Remove. * base_mp/system.h: Remove. * base_mp/node2/.cvsignore: Remove. * base_mp/node2/Makefile.am: Remove. * base_mp/node2/base_mp.doc: Remove. * base_mp/node2/base_mp.scn: Remove. * .cvsignore: Remove. * ChangeLog: Remove. * Makefile.am: Remove. * README: Remove. * configure.ac: Remove. * sample.am: Remove. * base_sp/.cvsignore: Remove. * base_sp/Makefile.am: Remove. * base_sp/apptask.c: Remove. * base_sp/base_sp.doc: Remove. * base_sp/base_sp.scn: Remove. * base_sp/init.c: Remove. * base_sp/system.h: Remove. * cdtest/.cvsignore: Remove. * cdtest/Makefile.am: Remove. * cdtest/cdtest.scn: Remove. * cdtest/init.c: Remove. * cdtest/main.cc: Remove. * cdtest/system.h: Remove. * fileio/.cvsignore: Remove. * fileio/Makefile.am: Remove. * fileio/fileio.doc: Remove. * fileio/init.c: Remove. * fileio/system.h: Remove. * hello/.cvsignore: Remove. * hello/Makefile.am: Remove. * hello/hello.doc: Remove. * hello/hello.scn: Remove. * hello/init.c: Remove. * hello/system.h: Remove. * loopback/.cvsignore: Remove. * loopback/Makefile.am: Remove. * loopback/README: Remove. * loopback/init.c: Remove. * loopback/loopback.scn: Remove. * minimum/.cvsignore: Remove. * minimum/Makefile.am: Remove. * minimum/init.c: Remove. * minimum/minimum.doc: Remove. * minimum/minimum.scn: Remove. * paranoia/.cvsignore: Remove. * paranoia/Makefile.am: Remove. * paranoia/init.c: Remove. * paranoia/paranoia.c: Remove. * paranoia/paranoia.doc: Remove. * paranoia/system.h: Remove. * pppd/.cvsignore: Remove. * pppd/Makefile-user: Remove. * pppd/Makefile.am: Remove. * pppd/README: Remove. * pppd/init.c: Remove. * pppd/netconfig.h: Remove. * pppd/ppp.conf: Remove. * pppd/pppd.options: Remove. * pppd/pppdapp.c: Remove. * pppd/system.h: Remove. * ticker/.cvsignore: Remove. * ticker/Makefile.am: Remove. * ticker/init.c: Remove. * ticker/system.h: Remove. * ticker/tasks.c: Remove. * ticker/ticker.doc: Remove. * ticker/ticker.scn: Remove. * unlimited/.cvsignore: Remove. * unlimited/Makefile.am: Remove. * unlimited/init.c: Remove. * unlimited/system.h: Remove. * unlimited/test1.c: Remove. * unlimited/test2.c: Remove. * unlimited/test3.c: Remove. * unlimited/unlimited.doc: Remove. * unlimited/unlimited.scn: Remove.
This commit is contained in:
@@ -1,14 +0,0 @@
|
||||
aclocal.m4
|
||||
autom4te*.cache
|
||||
config.cache
|
||||
config.guess
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
Makefile
|
||||
Makefile.in
|
||||
missing
|
||||
mkinstalldirs
|
||||
@@ -1,388 +0,0 @@
|
||||
2003-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* base_mp/node1/.cvsignore: Remove.
|
||||
* base_mp/node1/Makefile.am: Remove.
|
||||
* base_mp/node1/base_mp.doc: Remove.
|
||||
* base_mp/node1/base_mp.scn: Remove.
|
||||
* base_mp/.cvsignore: Remove.
|
||||
* base_mp/Makefile.am: Remove.
|
||||
* base_mp/apptask.c: Remove.
|
||||
* base_mp/init.c: Remove.
|
||||
* base_mp/system.h: Remove.
|
||||
* base_mp/node2/.cvsignore: Remove.
|
||||
* base_mp/node2/Makefile.am: Remove.
|
||||
* base_mp/node2/base_mp.doc: Remove.
|
||||
* base_mp/node2/base_mp.scn: Remove.
|
||||
* .cvsignore: Remove.
|
||||
* ChangeLog: Remove.
|
||||
* Makefile.am: Remove.
|
||||
* README: Remove.
|
||||
* configure.ac: Remove.
|
||||
* sample.am: Remove.
|
||||
* base_sp/.cvsignore: Remove.
|
||||
* base_sp/Makefile.am: Remove.
|
||||
* base_sp/apptask.c: Remove.
|
||||
* base_sp/base_sp.doc: Remove.
|
||||
* base_sp/base_sp.scn: Remove.
|
||||
* base_sp/init.c: Remove.
|
||||
* base_sp/system.h: Remove.
|
||||
* cdtest/.cvsignore: Remove.
|
||||
* cdtest/Makefile.am: Remove.
|
||||
* cdtest/cdtest.scn: Remove.
|
||||
* cdtest/init.c: Remove.
|
||||
* cdtest/main.cc: Remove.
|
||||
* cdtest/system.h: Remove.
|
||||
* fileio/.cvsignore: Remove.
|
||||
* fileio/Makefile.am: Remove.
|
||||
* fileio/fileio.doc: Remove.
|
||||
* fileio/init.c: Remove.
|
||||
* fileio/system.h: Remove.
|
||||
* hello/.cvsignore: Remove.
|
||||
* hello/Makefile.am: Remove.
|
||||
* hello/hello.doc: Remove.
|
||||
* hello/hello.scn: Remove.
|
||||
* hello/init.c: Remove.
|
||||
* hello/system.h: Remove.
|
||||
* loopback/.cvsignore: Remove.
|
||||
* loopback/Makefile.am: Remove.
|
||||
* loopback/README: Remove.
|
||||
* loopback/init.c: Remove.
|
||||
* loopback/loopback.scn: Remove.
|
||||
* minimum/.cvsignore: Remove.
|
||||
* minimum/Makefile.am: Remove.
|
||||
* minimum/init.c: Remove.
|
||||
* minimum/minimum.doc: Remove.
|
||||
* minimum/minimum.scn: Remove.
|
||||
* paranoia/.cvsignore: Remove.
|
||||
* paranoia/Makefile.am: Remove.
|
||||
* paranoia/init.c: Remove.
|
||||
* paranoia/paranoia.c: Remove.
|
||||
* paranoia/paranoia.doc: Remove.
|
||||
* paranoia/system.h: Remove.
|
||||
* pppd/.cvsignore: Remove.
|
||||
* pppd/Makefile-user: Remove.
|
||||
* pppd/Makefile.am: Remove.
|
||||
* pppd/README: Remove.
|
||||
* pppd/init.c: Remove.
|
||||
* pppd/netconfig.h: Remove.
|
||||
* pppd/ppp.conf: Remove.
|
||||
* pppd/pppd.options: Remove.
|
||||
* pppd/pppdapp.c: Remove.
|
||||
* pppd/system.h: Remove.
|
||||
* ticker/.cvsignore: Remove.
|
||||
* ticker/Makefile.am: Remove.
|
||||
* ticker/init.c: Remove.
|
||||
* ticker/system.h: Remove.
|
||||
* ticker/tasks.c: Remove.
|
||||
* ticker/ticker.doc: Remove.
|
||||
* ticker/ticker.scn: Remove.
|
||||
* unlimited/.cvsignore: Remove.
|
||||
* unlimited/Makefile.am: Remove.
|
||||
* unlimited/init.c: Remove.
|
||||
* unlimited/system.h: Remove.
|
||||
* unlimited/test1.c: Remove.
|
||||
* unlimited/test2.c: Remove.
|
||||
* unlimited/test3.c: Remove.
|
||||
* unlimited/unlimited.doc: Remove.
|
||||
* unlimited/unlimited.scn: Remove.
|
||||
|
||||
2003-10-23 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Add AM_CONDITIONAL(LIBCHIP).
|
||||
* fileio/Makefile.am: Only build if LIBCHIP is available.
|
||||
|
||||
2003-10-22 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Remove RTEMS_CANONICAL_HOST.
|
||||
|
||||
2003-10-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac:Remove RTEMS_CHECK_CPU.
|
||||
|
||||
2003-09-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* fileio/init.c: Unconditionally define MIN (We *do want* to see
|
||||
error messages if it conflicts).
|
||||
|
||||
2003-09-04 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* README, base_mp/apptask.c, base_mp/init.c, base_mp/system.h,
|
||||
base_mp/node1/base_mp.doc, base_mp/node2/base_mp.doc,
|
||||
base_sp/apptask.c, base_sp/base_sp.doc, base_sp/init.c,
|
||||
base_sp/system.h, cdtest/init.c, cdtest/main.cc, cdtest/system.h,
|
||||
fileio/fileio.doc, fileio/init.c, fileio/system.h, hello/hello.doc,
|
||||
hello/init.c, hello/system.h, minimum/init.c, minimum/minimum.doc,
|
||||
paranoia/init.c, paranoia/paranoia.doc, paranoia/system.h,
|
||||
ticker/init.c, ticker/system.h, ticker/tasks.c, ticker/ticker.doc,
|
||||
unlimited/init.c, unlimited/system.h, unlimited/test1.c,
|
||||
unlimited/test2.c, unlimited/test3.c, unlimited/unlimited.doc: URL
|
||||
for license changed.
|
||||
|
||||
2003-08-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Reflect having moved aclocal/.
|
||||
|
||||
2003-08-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Reflect having moved automake/.
|
||||
* base_mp/Makefile.am: Reflect having moved automake/.
|
||||
* base_mp/node1/Makefile.am: Reflect having moved automake/.
|
||||
* base_mp/node2/Makefile.am: Reflect having moved automake/.
|
||||
* base_sp/Makefile.am: Reflect having moved automake/.
|
||||
* cdtest/Makefile.am: Reflect having moved automake/.
|
||||
* fileio/Makefile.am: Reflect having moved automake/.
|
||||
* hello/Makefile.am: Reflect having moved automake/.
|
||||
* loopback/Makefile.am: Reflect having moved automake/.
|
||||
* minimum/Makefile.am: Reflect having moved automake/.
|
||||
* paranoia/Makefile.am: Reflect having moved automake/.
|
||||
* pppd/Makefile.am: Reflect having moved automake/.
|
||||
* ticker/Makefile.am: Reflect having moved automake/.
|
||||
* unlimited/Makefile.am: Reflect having moved automake/.
|
||||
|
||||
2003-08-13 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* fileio/.cvsignore: New file.
|
||||
|
||||
2003-08-13 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 451/bsps
|
||||
* pppd/system.h: Depend on TTY driver being in BSPs not simply i386.
|
||||
|
||||
2003-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Use rtems-bugs@rtems.com as bug report email address.
|
||||
|
||||
2003-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* fileio/Makefile.am: Remove references to *.scn (Doesn't exist).
|
||||
* pppd/Makefile.am: Remove references to DOC* (Don't exist).
|
||||
|
||||
2003-08-06 Thomas Doerfler<Thomas.Doerfler@imd-systems.de>
|
||||
|
||||
PR 369/filesystem
|
||||
* Makefile.am, configure.ac: sample application to show the use of the
|
||||
DOSFS functions
|
||||
* fileio/Makefile.am, fileio/fileio.doc, fileio/init.c,
|
||||
fileio/system.h: New files.
|
||||
|
||||
2003-06-04 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* pppd/system.h: Hack from Ralf to compile on all targets.
|
||||
|
||||
2003-04-29 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Add pppd.
|
||||
* Makefile.am: Add pppd.
|
||||
|
||||
2003-04-29 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
Adding pppd:
|
||||
* pppd/Makefile-user: New, copied over from libnetworking/pppd/example.
|
||||
* pppd/README: New, copied over from libnetworking/pppd/example.
|
||||
* pppd/init.c: New, copied over from libnetworking/pppd/example.
|
||||
* pppd/netconfig.h: New, copied over from libnetworking/pppd/example.
|
||||
* pppd/ppp.conf: New, copied over from libnetworking/pppd/example.
|
||||
* pppd/pppdapp.c: New, copied over from libnetworking/pppd/example.
|
||||
* pppd/system.h: New, copied over from libnetworking/pppd/example.
|
||||
* pppd/pppd.options: New, copied over from libnetworking/pppd/example.
|
||||
* pppd/Makefile.am: New, converted to automake from Makefile-user.
|
||||
* pppd/.cvsignore: New.
|
||||
|
||||
2003-03-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Remove AC_CONFIG_AUX_DIR.
|
||||
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
||||
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AC_PREREQ(2.57).
|
||||
|
||||
2003-01-27 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* Makefile.am, configure.ac: Added new test loopback which shows how to
|
||||
use the loopback interface. Thank you Eric Norum for a portable
|
||||
target independent test which exercises the TCP/IP. This should
|
||||
prevent massive failures in the TCP/IP stack from reaching the
|
||||
street.
|
||||
* loopback/.cvsignore, loopback/Makefile.am, loopback/README,
|
||||
loopback/init.c, loopback/loopback.scn: New files.
|
||||
|
||||
2003-01-03 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* unlimited/system.h, unlimited/test1.c: Backed off previous
|
||||
modification as it does not compile.
|
||||
|
||||
2002-10-31 Chris Johns <ccj@acm.org>
|
||||
|
||||
* unlimited/test1.c: PR296. Only fails if more tasks than allowed
|
||||
can be created.
|
||||
* unlimited/system.h: PR296. Reference the number of tasks in the
|
||||
configuration table rather than a hardcoded number.
|
||||
|
||||
2002-11-05 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Unconditionally check for CXX (Hack to bug in
|
||||
autoconf > 2.54).
|
||||
|
||||
2002-10-31 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* base_mp/apptask.c: Removed warning.
|
||||
|
||||
2002-10-28 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* base_mp/apptask.c: Add include of <unistd.h> to eliminate warning.
|
||||
|
||||
2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* .cvsignore: Reformat.
|
||||
Add autom4te*cache.
|
||||
Remove autom4te.cache.
|
||||
|
||||
2002-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* base_mp/node1/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* base_mp/node2/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* base_sp/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* cdtest/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* hello/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* minimum/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* paranoia/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* ticker/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* unlimited/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
|
||||
2002-08-01 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* Per PR47 add support for buffered test output. This involved
|
||||
adding defines to redirect output to a buffer and dump it when
|
||||
full, at "test pause", and at exit. To avoid problems when redefining
|
||||
exit(), all tests were modified to call rtems_test_exit().
|
||||
Some tests, notable psxtests, had to be modified to include
|
||||
the standard test macro .h file (pmacros.h or tmacros.h) to
|
||||
enable this support.
|
||||
* cdtest/init.c: Modified.
|
||||
|
||||
2002-07-01 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* unlimited/test1.c: Corrected use of _Objects_Information_table
|
||||
now that it is a two dimensional array based upon API and class.
|
||||
|
||||
2002-04-17 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* base_sp/apptask.c: Include <stdlib.h>.
|
||||
* hello/init.c: Ditto.
|
||||
* paranoia/init.c: Ditto.
|
||||
* ticker/tasks.c: Ditto.
|
||||
* unlimited/init.c: Ditto.
|
||||
* unlimited/test1.c: Ditto.
|
||||
* unlimited/test2.c: Ditto.
|
||||
* unlimited/test3.c: Ditto.
|
||||
|
||||
2002-04-14 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Remove ENABLE_GCC28.
|
||||
|
||||
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac:
|
||||
AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS).
|
||||
AM_INIT_AUTOMAKE([no-define foreign 1.6]).
|
||||
* base_mp/node1/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* base_mp/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* base_mp/node2/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* base_sp/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* cdtest/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* hello/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* minimum/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* paranoia/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* ticker/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* unlimited/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
|
||||
2001-11-26 Ralf Corsepius
|
||||
|
||||
* cdtest/main.cc: Remove RTEMS_TEST_IO_STREAM.
|
||||
|
||||
2001-10-25 Eric Norum <eric.norum@usask.ca>
|
||||
|
||||
* cdtest/system.h: Configure 1 semaphore. This probably covers
|
||||
up not defining one for the GCC C++ Run-Time Libraries.
|
||||
|
||||
2001-10-17 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* paranoia/Makefile.am: Use LD_LIBS = -lm to make automake-1.5 happy.
|
||||
|
||||
2001-10-12 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* unlimited/init.c, unlimited/system.h, unlimited/test1.c,
|
||||
unlimited/test2.c, unlimited/test3.c, unlimited/unlimited.doc:
|
||||
Fixed typo.
|
||||
|
||||
2001-10-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* .cvsignore: Add autom4te.cache for autoconf > 2.52.
|
||||
* configure.in: Remove.
|
||||
* configure.ac: New file, generated from configure.in by autoupdate.
|
||||
|
||||
2001-09-22 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* minimum/Makefile.am: Fix comments to make automake-1.5 happy.
|
||||
* sample.am: Use TMPINSTALL_FILES = to make automake-1.5 happy.
|
||||
* cdtest/Makefile.am: Remove LD_LIBS.
|
||||
|
||||
2001-09-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* unlimited/Makefile.am: include leaf.am instead of leaf.cfg.
|
||||
* base_mp/node2/Makefile.am: include leaf.am instead of leaf.cfg.
|
||||
* base_mp/node1/Makefile.am: include leaf.am instead of leaf.cfg.
|
||||
* hello/Makefile.am: include leaf.am instead of leaf.cfg.
|
||||
* base_sp/Makefile.am: include leaf.am instead of leaf.cfg.
|
||||
* paranoia/Makefile.am: include leaf.am instead of leaf.cfg.
|
||||
* cdtest/Makefile.am: include leaf.am instead of leaf.cfg, use
|
||||
make-cxx-exe.
|
||||
* ticker/Makefile.am: include leaf.am instead of leaf.cfg.
|
||||
* minimum/Makefile.am: include leaf.am instead of leaf.cfg.
|
||||
|
||||
2001-06-14 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* cdtest/system.h: Removed configure of POSIX mutexes since
|
||||
there do not appear to be any used in this test.
|
||||
|
||||
2001-05-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.in: Use RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm]).
|
||||
|
||||
2000-11-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Use ... instead of RTEMS_TOPdir in ACLOCAL_AMFLAGS.
|
||||
|
||||
2000-11-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Switch to ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal.
|
||||
|
||||
2000-10-30 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* POSIX include files merged into newlib. This resulted in
|
||||
some definitions moving to other files and thus some secondary
|
||||
effects in RTEMS source code.
|
||||
* paranoia/paranoia.c: Commented out incorrect and conflicting
|
||||
prototype of read().
|
||||
|
||||
2000-10-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros.
|
||||
Switch to GNU canonicalization.
|
||||
* sample.am: Remove DEFS.
|
||||
|
||||
2000-09-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* base_mp/node1/Makefile.am, base_mp/node2/Makefile.am,
|
||||
base_sp/Makefile.am, cdtest/Makefile.am, hello/Makefile.am,
|
||||
minimum/Makefile.am, paranoia/Makefile.am, ticker/Makefile.am,
|
||||
unlimited/Makefile.am: Include compile.am
|
||||
|
||||
2000-08-10 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* ChangeLog: New file.
|
||||
@@ -1,26 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../aclocal
|
||||
|
||||
CPLUSPLUS_TESTS = cdtest
|
||||
|
||||
## base_mp is a sample multiprocessing test
|
||||
MP_TESTS = base_mp
|
||||
|
||||
FP_TESTS = paranoia
|
||||
|
||||
## loopback tests a network loopback interface
|
||||
NET_TESTS = loopback
|
||||
NET_TESTS += pppd
|
||||
|
||||
SUBDIRS = hello ticker base_sp unlimited minimum fileio $(MP_TESTS) \
|
||||
$(CPLUSPLUS_TESTS) $(FP_TESTS) $(NET_TESTS)
|
||||
|
||||
AUTOMAKE_FILES = sample.am
|
||||
|
||||
EXTRA_DIST = $(AUTOMAKE_FILES)
|
||||
|
||||
include $(top_srcdir)/../automake/subdirs.am
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,72 +0,0 @@
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
This directory contains the RTEMS Sample Application Suite.
|
||||
The tests in this directory perform two functions:
|
||||
|
||||
+ provide simple examples of applications which can be
|
||||
used as a starting point for your application.
|
||||
|
||||
+ help test a new board support package
|
||||
|
||||
The hello and ticker applications are useful when first bringing up
|
||||
a new board support package. The base_mp test is useful when
|
||||
performing initial checkout on a new MPCI layer.
|
||||
|
||||
The following describes each of the sample applications:
|
||||
|
||||
base_mp
|
||||
|
||||
This is a very simple two node multiprocessor application. It consists
|
||||
of a single initialization task on each node which print out
|
||||
their respective node numbers and task IDs. This test can be
|
||||
used as a simple test of a new MPCI layer because it minimizes
|
||||
the number of packets sent by RTEMS.
|
||||
|
||||
This is intended as a starting point for custom developed multiprocessor
|
||||
applications.
|
||||
|
||||
base_sp
|
||||
|
||||
This is a simple single processor application which consists of
|
||||
an initialization task which creates another task.
|
||||
|
||||
This is intended as a starting point for custom developed single
|
||||
processor applications.
|
||||
|
||||
cdtest
|
||||
|
||||
A very simple C++ application which demonstrates that it is
|
||||
possible to use C++ contructors and destructors in an RTEMS
|
||||
application. Also does a perfunctory iostream test.
|
||||
|
||||
hello
|
||||
|
||||
This is the RTEMS version of the classic hello world program.
|
||||
It consists of single initialization task which prints out
|
||||
a few messages.
|
||||
|
||||
This test does not include a Clock Tick device driver and can
|
||||
be used to test the startup code of the board support package
|
||||
as well as console output.
|
||||
|
||||
paranoia
|
||||
|
||||
A public domain test of the floating point and math library
|
||||
capabilities of a toolset. It reports discrepancies between
|
||||
actual and expected results. It is a large test.
|
||||
|
||||
ticker
|
||||
|
||||
This is a simple test of the user's Clock Tick device driver.
|
||||
This test has an initialization task create three application
|
||||
tasks which sleep and periodically wake up and print the time.
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,11 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SUBDIRS = node1 node2
|
||||
|
||||
EXTRA_DIST = apptask.c init.c system.h
|
||||
|
||||
include $(top_srcdir)/../automake/subdirs.am
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,38 +0,0 @@
|
||||
/* Application_task
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* Input parameters:
|
||||
* node - processor's node number
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
rtems_task Application_task(
|
||||
rtems_task_argument node
|
||||
)
|
||||
{
|
||||
rtems_id tid;
|
||||
rtems_status_code status;
|
||||
|
||||
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid );
|
||||
printf( "This task was invoked with the node argument (%d)\n", node );
|
||||
printf( "This task has the id of 0x%x\n", tid );
|
||||
printf( "*** END OF SAMPLE MULTIPROCESSOR APPLICATION ***\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the application, the current time might be
|
||||
* set by this task.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
{
|
||||
rtems_name task_name;
|
||||
rtems_id tid;
|
||||
rtems_status_code status;
|
||||
|
||||
printf( "\n\n*** SAMPLE MULTIPROCESSOR APPLICATION ***\n" );
|
||||
printf( "Creating and starting an application task\n" );
|
||||
task_name = rtems_build_name( 'T', 'A', '1', ' ' );
|
||||
status = rtems_task_create( task_name, 1, RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_INTERRUPT_LEVEL(0), RTEMS_DEFAULT_ATTRIBUTES, &tid );
|
||||
status = rtems_task_start(
|
||||
tid,
|
||||
Application_task,
|
||||
Multiprocessing_configuration.node
|
||||
);
|
||||
status = rtems_task_delete( RTEMS_SELF );
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,50 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
VPATH = @srcdir@:@srcdir@/..
|
||||
|
||||
NODE = 1
|
||||
SAMPLE = base_mp-node$(NODE)
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io mp
|
||||
|
||||
C_FILES = init.c apptask.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
|
||||
DOCTYPES = doc scn
|
||||
DOCS = $(DOCTYPES:%=base_mp.%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
AM_CPPFLAGS += -DNODE_NUMBER=$(NODE) -I.
|
||||
|
||||
if HAS_MP
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
|
||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
||||
else
|
||||
all-local:
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
|
||||
@@ -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,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,50 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
VPATH = @srcdir@:@srcdir@/..
|
||||
|
||||
NODE = 2
|
||||
SAMPLE = base_mp-node$(NODE)
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io mp
|
||||
|
||||
C_FILES = init.c apptask.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
|
||||
DOCTYPES = doc scn
|
||||
DOCS = $(DOCTYPES:%=base_mp.%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
AM_CPPFLAGS += -DNODE_NUMBER=$(NODE) -I.
|
||||
|
||||
if HAS_MP
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
|
||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
||||
else
|
||||
all-local:
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
*** SAMPLE MULTIPROCESSOR APPLICATION ***
|
||||
Creating and starting an application task
|
||||
This task was invoked with the node argument (2)
|
||||
This task has the id of 0x20002
|
||||
*** END OF SAMPLE MULTIPROCESSOR APPLICATION ***
|
||||
@@ -1,47 +0,0 @@
|
||||
/* system.h
|
||||
*
|
||||
* This include file contains information that is included in every
|
||||
* function in the test set.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* functions */
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
rtems_task Application_task(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
|
||||
#define CONFIGURE_MP_APPLICATION
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 2
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
/*
|
||||
* Put the overrides of default configuration parameters here.
|
||||
*/
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/* end of include file */
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,41 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = base_sp
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io
|
||||
|
||||
C_FILES = init.c apptask.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
DOCTYPES = doc scn
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,39 +0,0 @@
|
||||
/* Application_task
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
rtems_task Application_task(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
{
|
||||
rtems_id tid;
|
||||
rtems_status_code status;
|
||||
|
||||
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid );
|
||||
|
||||
printf( "Application task was invoked with argument (%d) "
|
||||
"and has id of 0x%x\n", argument, tid );
|
||||
|
||||
printf( "*** END OF SAMPLE SINGLE PROCESSOR APPLICATION ***\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
*** SAMPLE SINGLE PROCESSOR APPLICATION ***
|
||||
Creating and starting an application task
|
||||
Application task was invoked with argument (0) and has id of 0x10002
|
||||
*** END OF SAMPLE SINGLE PROCESSOR APPLICATION ***
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the application, the current time might be
|
||||
* set by this task.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#define ARGUMENT 0
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
{
|
||||
rtems_name task_name;
|
||||
rtems_id tid;
|
||||
rtems_status_code status;
|
||||
|
||||
printf( "\n\n*** SAMPLE SINGLE PROCESSOR APPLICATION ***\n" );
|
||||
printf( "Creating and starting an application task\n" );
|
||||
|
||||
task_name = rtems_build_name( 'T', 'A', '1', ' ' );
|
||||
|
||||
status = rtems_task_create( task_name, 1, RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_INTERRUPT_LEVEL(0), RTEMS_DEFAULT_ATTRIBUTES, &tid );
|
||||
|
||||
status = rtems_task_start( tid, Application_task, ARGUMENT );
|
||||
|
||||
status = rtems_task_delete( RTEMS_SELF );
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
/* system.h
|
||||
*
|
||||
* This include file contains information that is included in every
|
||||
* function in the test set.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* functions */
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
rtems_task Application_task(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 2
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/* end of include file */
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,48 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = cdtest
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = all
|
||||
|
||||
C_FILES = init.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
CC_FILES = main.cc
|
||||
CC_O_FILES = $(CC_FILES:%.cc=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
DOCTYPES = scn
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(CC_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES) $(CC_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
if HAS_CXX
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-cxx-exe)
|
||||
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
else
|
||||
all-local:
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(CC_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,31 +0,0 @@
|
||||
Hey I'm in base class constructor number 1 for 0x400010cc.
|
||||
Hey I'm in base class constructor number 2 for 0x400010d4.
|
||||
Hey I'm in derived class constructor number 3 for 0x400010d4.
|
||||
|
||||
|
||||
*** CONSTRUCTOR/DESTRUCTOR TEST ***
|
||||
Hey I'm in base class constructor number 4 for 0x4009ee08.
|
||||
Hey I'm in base class constructor number 5 for 0x4009ee10.
|
||||
Hey I'm in base class constructor number 6 for 0x4009ee18.
|
||||
Hey I'm in base class constructor number 7 for 0x4009ee20.
|
||||
Hey I'm in derived class constructor number 8 for 0x4009ee20.
|
||||
Testing a C++ I/O stream
|
||||
Hey I'm in derived class destructor number 8 for 0x4009ee20.
|
||||
Derived class - Instantiation order 8
|
||||
Hey I'm in base class destructor number 7 for 0x4009ee20.
|
||||
Instantiation order 8
|
||||
Hey I'm in base class destructor number 6 for 0x4009ee18.
|
||||
Instantiation order 6
|
||||
Hey I'm in base class destructor number 5 for 0x4009ee10.
|
||||
Instantiation order 5
|
||||
Hey I'm in base class destructor number 4 for 0x4009ee08.
|
||||
Instantiation order 5
|
||||
*** END OF CONSTRUCTOR/DESTRUCTOR TEST ***
|
||||
|
||||
|
||||
Hey I'm in derived class destructor number 3 for 0x400010d4.
|
||||
Derived class - Instantiation order 3
|
||||
Hey I'm in base class destructor number 2 for 0x400010d4.
|
||||
Instantiation order 3
|
||||
Hey I'm in base class destructor number 1 for 0x400010cc.
|
||||
Instantiation order 1
|
||||
@@ -1,26 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <tmacros.h>
|
||||
@@ -1,214 +0,0 @@
|
||||
/*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1994 by Division Incorporated
|
||||
* Based in part on OAR works.
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
*
|
||||
* by Rosimildo da Silva:
|
||||
* Modified the test a bit to indicate when an instance is
|
||||
* global or not, and added code to test C++ exception.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef RTEMS_TEST_IO_STREAM
|
||||
#include <iostream.h>
|
||||
#endif
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include <tmacros.h>
|
||||
extern rtems_task main_task(rtems_task_argument);
|
||||
}
|
||||
|
||||
static int num_inst = 0;
|
||||
|
||||
class AClass {
|
||||
public:
|
||||
AClass(const char *p = "LOCAL" ) : ptr( p )
|
||||
{
|
||||
num_inst++;
|
||||
printf(
|
||||
"%s: Hey I'm in base class constructor number %d for %p.\n",
|
||||
p, num_inst, this
|
||||
);
|
||||
|
||||
/*
|
||||
* Make sure we use some space
|
||||
*/
|
||||
|
||||
string = new char[50];
|
||||
sprintf(string, "Instantiation order %d", num_inst);
|
||||
};
|
||||
|
||||
virtual ~AClass()
|
||||
{
|
||||
printf(
|
||||
"%s: Hey I'm in base class destructor number %d for %p.\n",
|
||||
ptr, num_inst, this
|
||||
);
|
||||
print();
|
||||
num_inst--;
|
||||
};
|
||||
|
||||
virtual void print() { printf("%s\n", string); };
|
||||
|
||||
protected:
|
||||
char *string;
|
||||
const char *ptr;
|
||||
};
|
||||
|
||||
class BClass : public AClass {
|
||||
public:
|
||||
BClass(const char *p = "LOCAL" ) : AClass( p )
|
||||
{
|
||||
num_inst++;
|
||||
printf(
|
||||
"%s: Hey I'm in derived class constructor number %d for %p.\n",
|
||||
p, num_inst, this
|
||||
);
|
||||
|
||||
/*
|
||||
* Make sure we use some space
|
||||
*/
|
||||
|
||||
string = new char[50];
|
||||
sprintf(string, "Instantiation order %d", num_inst);
|
||||
};
|
||||
|
||||
~BClass()
|
||||
{
|
||||
printf(
|
||||
"%s: Hey I'm in derived class destructor number %d for %p.\n",
|
||||
ptr, num_inst,
|
||||
this
|
||||
);
|
||||
print();
|
||||
num_inst--;
|
||||
};
|
||||
|
||||
void print() { printf("Derived class - %s\n", string); }
|
||||
};
|
||||
|
||||
|
||||
class RtemsException
|
||||
{
|
||||
public:
|
||||
|
||||
RtemsException( char *module, int ln, int err = 0 )
|
||||
: error( err ), line( ln ), file( module )
|
||||
{
|
||||
printf( "RtemsException raised=File:%s, Line:%d, Error=%X\n",
|
||||
file, line, error );
|
||||
}
|
||||
|
||||
void show()
|
||||
{
|
||||
printf( "RtemsException ---> File:%s, Line:%d, Error=%X\n",
|
||||
file, line, error );
|
||||
}
|
||||
|
||||
private:
|
||||
int error;
|
||||
int line;
|
||||
char *file;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
AClass foo( "GLOBAL" );
|
||||
BClass foobar( "GLOBAL" );
|
||||
|
||||
void
|
||||
cdtest(void)
|
||||
{
|
||||
AClass bar, blech, blah;
|
||||
BClass bleak;
|
||||
|
||||
#ifdef RTEMS_TEST_IO_STREAM
|
||||
cout << "Testing a C++ I/O stream" << endl;
|
||||
#else
|
||||
printf("IO Stream not tested\n");
|
||||
#endif
|
||||
bar = blech;
|
||||
rtems_task_wake_after( 5 * get_ticks_per_second() );
|
||||
}
|
||||
|
||||
//
|
||||
// main equivalent
|
||||
// It can not be called 'main' since the bsp owns that name
|
||||
// in many implementations in order to get global constructors
|
||||
// run.
|
||||
//
|
||||
|
||||
static void foo_function()
|
||||
{
|
||||
try
|
||||
{
|
||||
throw "foo_function() throw this exception";
|
||||
}
|
||||
catch( const char *e )
|
||||
{
|
||||
printf( "foo_function() catch block called:\n < %s >\n", e );
|
||||
throw "foo_function() re-throwing execption...";
|
||||
}
|
||||
}
|
||||
|
||||
rtems_task main_task(
|
||||
rtems_task_argument
|
||||
)
|
||||
{
|
||||
printf( "\n\n*** CONSTRUCTOR/DESTRUCTOR TEST ***\n" );
|
||||
|
||||
cdtest();
|
||||
|
||||
printf( "*** END OF CONSTRUCTOR/DESTRUCTOR TEST ***\n\n\n" );
|
||||
|
||||
|
||||
printf( "*** TESTING C++ EXCEPTIONS ***\n\n" );
|
||||
|
||||
try
|
||||
{
|
||||
foo_function();
|
||||
}
|
||||
catch( const char *e )
|
||||
{
|
||||
printf( "Success catching a char * exception\n%s\n", e );
|
||||
}
|
||||
try
|
||||
{
|
||||
printf( "throw an instance based exception\n" );
|
||||
throw RtemsException( __FILE__, __LINE__, 0x55 );
|
||||
}
|
||||
catch( RtemsException & ex )
|
||||
{
|
||||
printf( "Success catching RtemsException...\n" );
|
||||
ex.show();
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
printf( "Caught another exception.\n" );
|
||||
}
|
||||
printf( "Exceptions are working properly.\n" );
|
||||
rtems_task_wake_after( 5 * get_ticks_per_second() );
|
||||
printf( "Global Dtors should be called after this line....\n" );
|
||||
exit(0);
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
/* system.h
|
||||
*
|
||||
* This include file contains information that is included in every
|
||||
* function in the test set.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* functions */
|
||||
|
||||
rtems_task main_task(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
||||
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
#define CONFIGURE_INIT_TASK_ENTRY_POINT main_task
|
||||
#define CONFIGURE_INIT_TASK_NAME rtems_build_name( 'C', 'T', 'O', 'R' )
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/* end of include file */
|
||||
@@ -1,56 +0,0 @@
|
||||
## Process this file with autoconf to produce a configure script.
|
||||
##
|
||||
## $Id$
|
||||
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT([rtems-c-src-tests-samples],[_RTEMS_VERSION],[rtems-bugs@rtems.com])
|
||||
AC_CONFIG_SRCDIR([hello])
|
||||
RTEMS_TOP(../../../..)
|
||||
|
||||
RTEMS_CANONICAL_TARGET_CPU
|
||||
|
||||
AM_INIT_AUTOMAKE([no-define foreign 1.7.2])
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
RTEMS_ENABLE_NETWORKING
|
||||
RTEMS_ENABLE_CXX
|
||||
RTEMS_ENABLE_BARE
|
||||
|
||||
RTEMS_ENV_RTEMSBSP
|
||||
|
||||
RTEMS_PROJECT_ROOT
|
||||
|
||||
RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm])
|
||||
|
||||
RTEMS_PROG_CXX_FOR_TARGET
|
||||
|
||||
RTEMS_CANONICALIZE_TOOLS
|
||||
|
||||
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
|
||||
RTEMS_CHECK_MULTIPROCESSING(RTEMS_BSP)
|
||||
RTEMS_CHECK_CXX(RTEMS_BSP)
|
||||
RTEMS_CHECK_NETWORKING
|
||||
|
||||
AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
|
||||
AM_CONDITIONAL(HAS_CXX,test "$HAS_CPLUSPLUS" = "yes")
|
||||
AM_CONDITIONAL(HAS_MP,test "$HAS_MP" = "yes")
|
||||
#FIXME: We should use a feature based check
|
||||
AM_CONDITIONAL(LIBCHIP,[test "$RTEMS_BSP_FAMILY" != "posix"])
|
||||
|
||||
# Explicitly list all Makefiles here
|
||||
AC_CONFIG_FILES([Makefile
|
||||
base_sp/Makefile
|
||||
hello/Makefile
|
||||
loopback/Makefile
|
||||
minimum/Makefile
|
||||
fileio/Makefile
|
||||
paranoia/Makefile
|
||||
ticker/Makefile
|
||||
unlimited/Makefile
|
||||
base_mp/Makefile
|
||||
base_mp/node1/Makefile
|
||||
base_mp/node2/Makefile
|
||||
cdtest/Makefile
|
||||
pppd/Makefile
|
||||
])
|
||||
AC_OUTPUT
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,44 +0,0 @@
|
||||
##
|
||||
## Makefile.am,v 1.9 2002/08/11 05:18:59 ralf Exp
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = fileio
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io message semaphore
|
||||
|
||||
C_FILES = init.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
DOCTYPES = doc
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
if LIBCHIP
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
#
|
||||
# fileio.doc,v
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
This sample implements some basic tests for the file systems
|
||||
available. It provides the following functionality:
|
||||
|
||||
- perform basic file read/write tests on arbitrary file paths with
|
||||
selectable I/O buffer size
|
||||
- perform functions to evaluate FAT disk partition tables
|
||||
- perform functions to mount FAT disks to the file system tree
|
||||
|
||||
A sample session might look like this:
|
||||
|
||||
- start this system
|
||||
|
||||
- select "p" (part_table_initialize) to read in the partition table of
|
||||
first harddisk, enter the device name "/dev/hda", when prompted
|
||||
|
||||
- select "f" (fsmount) to try to mount the partitions
|
||||
/dev/hda1../dev/hdc4 to corresponding mount points. Non-existant
|
||||
partitions will report an error, but will not abort the tests
|
||||
|
||||
- select "w" (write file) to create a new file on the mounted disk (or
|
||||
in the IMFS). Enter the file name (e.g. "/mnt/hda1/test_1M.txt"),
|
||||
the file size (e.g. 64K or 2M) and the buffer size to use for the
|
||||
write calls (e.g. 32 or 4K). Then the sample will try to write the
|
||||
corresponding file and print the time consumed and data rate achived.
|
||||
|
||||
- select "r" (read file) to read a file (without displaying the
|
||||
contents). It has similar parameters as "write file", but does not
|
||||
query the file size.
|
||||
|
||||
- select "s" to call the rtems shell with its various capabilities.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,596 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* init.c,v 1.11 2000/06/12 15:00:12 joel Exp
|
||||
*/
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <rtems.h>
|
||||
#include <fcntl.h>
|
||||
#include <rtems/error.h>
|
||||
#include <dosfs.h>
|
||||
#include <ctype.h>
|
||||
#include <rtems/ide_part_table.h>
|
||||
#include <rtems/libcsupport.h>
|
||||
#include <rtems/fsmount.h>
|
||||
|
||||
/*
|
||||
* Table of FAT file systems that will be mounted
|
||||
* with the "fsmount" function.
|
||||
* See cpukit/libmisc/fsmount for definition of fields
|
||||
*/
|
||||
fstab_t fs_table[] = {
|
||||
{
|
||||
"/dev/hda1","/mnt/hda1",
|
||||
&msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
|
||||
FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
|
||||
0
|
||||
},
|
||||
{
|
||||
"/dev/hda2","/mnt/hda2",
|
||||
&msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
|
||||
FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
|
||||
0
|
||||
},
|
||||
{
|
||||
"/dev/hda3","/mnt/hda3",
|
||||
&msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
|
||||
FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
|
||||
0
|
||||
},
|
||||
{
|
||||
"/dev/hda4","/mnt/hda4",
|
||||
&msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
|
||||
FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
|
||||
0
|
||||
},
|
||||
{
|
||||
"/dev/hdc1","/mnt/hdc1",
|
||||
&msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
|
||||
FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
|
||||
0
|
||||
},
|
||||
{
|
||||
"/dev/hdc2","/mnt/hdc2",
|
||||
&msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
|
||||
FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
|
||||
0
|
||||
},
|
||||
{
|
||||
"/dev/hdc3","/mnt/hdc3",
|
||||
&msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
|
||||
FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
|
||||
0
|
||||
},
|
||||
{
|
||||
"/dev/hdc4","/mnt/hdc4",
|
||||
&msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
|
||||
FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
#define MIN(a,b) (((a) > (b)) ? (b) : (a))
|
||||
|
||||
#define USE_SHELL
|
||||
|
||||
#ifdef USE_SHELL
|
||||
#include <rtems/shell.h>
|
||||
|
||||
void fileio_start_shell(void)
|
||||
{
|
||||
printf(" =========================\n");
|
||||
printf(" starting shell\n");
|
||||
printf(" =========================\n");
|
||||
shell_init("SHLL",0,100,"/dev/console",
|
||||
B9600 | CS8,
|
||||
0);
|
||||
rtems_task_suspend(RTEMS_SELF);
|
||||
}
|
||||
|
||||
#endif /* USE_SHELL */
|
||||
|
||||
void fileio_print_free_heap(void)
|
||||
{
|
||||
printf("--- unused dynamic memory: %lu bytes ---\n",
|
||||
(unsigned long) malloc_free_space());
|
||||
}
|
||||
|
||||
|
||||
void fileio_part_table_initialize(void)
|
||||
{
|
||||
char devname[64];
|
||||
rtems_status_code rc;
|
||||
|
||||
printf(" =========================\n");
|
||||
printf(" Initialize partition table\n");
|
||||
printf(" =========================\n");
|
||||
fileio_print_free_heap();
|
||||
printf(" Enter device to initialize ==>");
|
||||
fgets(devname,sizeof(devname)-1,stdin);
|
||||
while (devname[strlen(devname)-1] == '\n') {
|
||||
devname[strlen(devname)-1] = '\0';
|
||||
}
|
||||
/*
|
||||
* call function
|
||||
*/
|
||||
rc = rtems_ide_part_table_initialize(devname);
|
||||
printf("result = %d\n",rc);
|
||||
fileio_print_free_heap();
|
||||
}
|
||||
|
||||
void fileio_fsmount(void)
|
||||
{
|
||||
rtems_status_code rc;
|
||||
|
||||
printf(" =========================\n");
|
||||
printf(" Process fsmount table\n");
|
||||
printf(" =========================\n");
|
||||
fileio_print_free_heap();
|
||||
/*
|
||||
* call function
|
||||
*/
|
||||
rc = rtems_fsmount( fs_table,
|
||||
sizeof(fs_table)/sizeof(fs_table[0]),
|
||||
NULL);
|
||||
printf("result = %d\n",rc);
|
||||
fileio_print_free_heap();
|
||||
}
|
||||
|
||||
void fileio_list_file(void)
|
||||
{
|
||||
char fname[1024];
|
||||
char *buf_ptr = NULL;
|
||||
unsigned32 flen = 0;
|
||||
int fd = -1;
|
||||
ssize_t n;
|
||||
size_t buf_size = 100;
|
||||
|
||||
rtems_interval start_tick,curr_tick,ticks_per_sec;
|
||||
|
||||
printf(" =========================\n");
|
||||
printf(" LIST FILE ... \n");
|
||||
printf(" =========================\n");
|
||||
fileio_print_free_heap();
|
||||
printf(" Enter filename to list ==>");
|
||||
fgets(fname,sizeof(fname)-1,stdin);
|
||||
while (fname[strlen(fname)-1] == '\n') {
|
||||
fname[strlen(fname)-1] = '\0';
|
||||
}
|
||||
/*
|
||||
* allocate buffer of given size
|
||||
*/
|
||||
if (buf_size > 0) {
|
||||
buf_ptr = malloc(buf_size);
|
||||
}
|
||||
|
||||
if (buf_ptr != NULL) {
|
||||
printf("\n Trying to open file \"%s\" for read\n",fname);
|
||||
fd = open(fname,O_RDONLY);
|
||||
if (fd < 0) {
|
||||
printf("*** file open failed, errno = %d(%s)\n",errno,strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
if (fd >= 0) {
|
||||
rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &start_tick);
|
||||
do {
|
||||
n = read(fd,buf_ptr,buf_size);
|
||||
if (n > 0) {
|
||||
write(1,buf_ptr,n);
|
||||
flen += n;
|
||||
}
|
||||
} while (n > 0);
|
||||
|
||||
rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &curr_tick);
|
||||
|
||||
printf("\n ******** End of file reached, flen = %d\n",flen);
|
||||
close(fd);
|
||||
|
||||
rtems_clock_get(RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticks_per_sec);
|
||||
printf("time elapsed for read: %g seconds\n",
|
||||
((double)curr_tick-start_tick)/ticks_per_sec);
|
||||
}
|
||||
/*
|
||||
* free buffer
|
||||
*/
|
||||
if (buf_ptr != NULL) {
|
||||
free(buf_ptr);
|
||||
}
|
||||
fileio_print_free_heap();
|
||||
}
|
||||
|
||||
/*
|
||||
* convert a size string (like 34K or 12M) to actual byte count
|
||||
*/
|
||||
boolean fileio_str2size(const char *str,unsigned32 *res_ptr)
|
||||
{
|
||||
boolean failed = FALSE;
|
||||
unsigned long size;
|
||||
char suffix = ' ';
|
||||
|
||||
if (1 > sscanf(str,"%lu%c",&size,&suffix)) {
|
||||
failed = TRUE;
|
||||
}
|
||||
else if (toupper(suffix) == 'K') {
|
||||
size *= 1024;
|
||||
}
|
||||
else if (toupper(suffix) == 'M') {
|
||||
size *= 1024UL*1024UL;
|
||||
}
|
||||
else if (isalpha(suffix)) {
|
||||
failed = TRUE;
|
||||
}
|
||||
|
||||
if (!failed) {
|
||||
*res_ptr = size;
|
||||
}
|
||||
return failed;
|
||||
}
|
||||
|
||||
void fileio_write_file(void)
|
||||
{
|
||||
char fname[1024];
|
||||
char tmp_str[32];
|
||||
unsigned32 file_size = 0;
|
||||
unsigned32 buf_size = 0;
|
||||
size_t curr_pos,bytes_to_copy;
|
||||
int fd = -1;
|
||||
ssize_t n;
|
||||
rtems_interval start_tick,curr_tick,ticks_per_sec;
|
||||
char *bufptr = NULL;
|
||||
boolean failed = FALSE;
|
||||
static const char write_test_string[] =
|
||||
"The quick brown fox jumps over the lazy dog\n";
|
||||
static const char write_block_string[] =
|
||||
"\n----- end of write buffer ------\n";
|
||||
|
||||
printf(" =========================\n");
|
||||
printf(" WRITE FILE ... \n");
|
||||
printf(" =========================\n");
|
||||
fileio_print_free_heap();
|
||||
/*
|
||||
* get number of ticks per second
|
||||
*/
|
||||
rtems_clock_get(RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticks_per_sec);
|
||||
|
||||
/*
|
||||
* get path to file to write
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("Enter path/filename ==>");
|
||||
fgets(fname,sizeof(fname)-1,stdin);
|
||||
while (fname[strlen(fname)-1] == '\n') {
|
||||
fname[strlen(fname)-1] = '\0';
|
||||
}
|
||||
if (0 == strlen(fname)) {
|
||||
printf("*** no filename entered, aborted\n");
|
||||
failed = TRUE;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* get total file size to write
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("use suffix K for Kbytes, M for Mbytes or no suffix for bytes:\n"
|
||||
"Enter filesize to write ==>");
|
||||
fgets(tmp_str,sizeof(tmp_str)-1,stdin);
|
||||
failed = fileio_str2size(tmp_str,&file_size);
|
||||
if (failed) {
|
||||
printf("*** illegal file size, aborted\n");
|
||||
}
|
||||
}
|
||||
/*
|
||||
* get block size to write
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("use suffix K for Kbytes, M for Mbytes or no suffix for bytes:\n"
|
||||
"Enter block size to use for write calls ==>");
|
||||
fgets(tmp_str,sizeof(tmp_str)-1,stdin);
|
||||
failed = fileio_str2size(tmp_str,&buf_size);
|
||||
if (failed) {
|
||||
printf("*** illegal block size, aborted\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* allocate buffer
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("... allocating %lu bytes of buffer for write data\n",
|
||||
(unsigned long)buf_size);
|
||||
bufptr = malloc(buf_size+1); /* extra space for terminating NUL char */
|
||||
if (bufptr == NULL) {
|
||||
printf("*** malloc failed, aborted\n");
|
||||
failed = TRUE;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* fill buffer with test pattern
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("... filling buffer with write data\n");
|
||||
curr_pos = 0;
|
||||
/*
|
||||
* fill buffer with test string
|
||||
*/
|
||||
while (curr_pos < buf_size) {
|
||||
bytes_to_copy = MIN(buf_size-curr_pos,
|
||||
sizeof(write_test_string)-1);
|
||||
memcpy(bufptr+curr_pos,write_test_string,bytes_to_copy);
|
||||
curr_pos += bytes_to_copy;
|
||||
}
|
||||
/*
|
||||
* put "end" mark at end of buffer
|
||||
*/
|
||||
bytes_to_copy = sizeof(write_block_string)-1;
|
||||
if (buf_size >= bytes_to_copy) {
|
||||
memcpy(bufptr+buf_size-bytes_to_copy,
|
||||
write_block_string,
|
||||
bytes_to_copy);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* create file
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("... creating file \"%s\"\n",fname);
|
||||
fd = open(fname,O_WRONLY | O_CREAT | O_TRUNC,S_IREAD|S_IWRITE);
|
||||
if (fd < 0) {
|
||||
printf("*** file create failed, errno = %d(%s)\n",errno,strerror(errno));
|
||||
failed = TRUE;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* write file
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("... writing to file\n");
|
||||
rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &start_tick);
|
||||
curr_pos = 0;
|
||||
do {
|
||||
bytes_to_copy = buf_size;
|
||||
do {
|
||||
n = write(fd,
|
||||
bufptr + (buf_size-bytes_to_copy),
|
||||
MIN(bytes_to_copy,file_size-curr_pos));
|
||||
if (n > 0) {
|
||||
bytes_to_copy -= n;
|
||||
curr_pos += n;
|
||||
}
|
||||
} while ((bytes_to_copy > 0) && (n > 0));
|
||||
} while ((file_size > curr_pos) && (n > 0));
|
||||
rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &curr_tick);
|
||||
if (n < 0) {
|
||||
failed = TRUE;
|
||||
printf("*** file write failed, "
|
||||
"%lu bytes written, "
|
||||
"errno = %d(%s)\n",
|
||||
(unsigned long)curr_pos,errno,strerror(errno));
|
||||
}
|
||||
else {
|
||||
printf("time elapsed for write: %g seconds\n",
|
||||
((double)curr_tick-start_tick)/ticks_per_sec);
|
||||
printf("write data rate: %g KBytes/second\n",
|
||||
(((double)file_size) / 1024.0 /
|
||||
(((double)curr_tick-start_tick)/ticks_per_sec)));
|
||||
}
|
||||
}
|
||||
if (fd >= 0) {
|
||||
printf("... closing file\n");
|
||||
close(fd);
|
||||
}
|
||||
if (bufptr != NULL) {
|
||||
printf("... deallocating buffer\n");
|
||||
free(bufptr);
|
||||
bufptr = NULL;
|
||||
}
|
||||
printf("\n ******** End of file write\n");
|
||||
fileio_print_free_heap();
|
||||
}
|
||||
|
||||
void fileio_read_file(void)
|
||||
{
|
||||
char fname[1024];
|
||||
char tmp_str[32];
|
||||
unsigned32 buf_size = 0;
|
||||
size_t curr_pos;
|
||||
int fd = -1;
|
||||
ssize_t n;
|
||||
rtems_interval start_tick,curr_tick,ticks_per_sec;
|
||||
char *bufptr = NULL;
|
||||
boolean failed = FALSE;
|
||||
|
||||
printf(" =========================\n");
|
||||
printf(" READ FILE ... \n");
|
||||
printf(" =========================\n");
|
||||
fileio_print_free_heap();
|
||||
/*
|
||||
* get number of ticks per second
|
||||
*/
|
||||
rtems_clock_get(RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticks_per_sec);
|
||||
|
||||
/*
|
||||
* get path to file to read
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("Enter path/filename ==>");
|
||||
fgets(fname,sizeof(fname)-1,stdin);
|
||||
while (fname[strlen(fname)-1] == '\n') {
|
||||
fname[strlen(fname)-1] = '\0';
|
||||
}
|
||||
if (0 == strlen(fname)) {
|
||||
printf("*** no filename entered, aborted\n");
|
||||
failed = TRUE;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* get block size to read
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("use suffix K for Kbytes, M for Mbytes or no suffix for bytes:\n"
|
||||
"Enter block size to use for read calls ==>");
|
||||
fgets(tmp_str,sizeof(tmp_str)-1,stdin);
|
||||
failed = fileio_str2size(tmp_str,&buf_size);
|
||||
if (failed) {
|
||||
printf("*** illegal block size, aborted\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* allocate buffer
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("... allocating %lu bytes of buffer for write data\n",
|
||||
(unsigned long)buf_size);
|
||||
bufptr = malloc(buf_size+1); /* extra space for terminating NUL char */
|
||||
if (bufptr == NULL) {
|
||||
printf("*** malloc failed, aborted\n");
|
||||
failed = TRUE;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* open file
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("... opening file \"%s\"\n",fname);
|
||||
fd = open(fname,O_RDONLY);
|
||||
if (fd < 0) {
|
||||
printf("*** file open failed, errno = %d(%s)\n",errno,strerror(errno));
|
||||
failed = TRUE;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* read file
|
||||
*/
|
||||
if (!failed) {
|
||||
printf("... reading from file\n");
|
||||
rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &start_tick);
|
||||
curr_pos = 0;
|
||||
do {
|
||||
n = read(fd,
|
||||
bufptr,
|
||||
buf_size);
|
||||
if (n > 0) {
|
||||
curr_pos += n;
|
||||
}
|
||||
} while (n > 0);
|
||||
rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &curr_tick);
|
||||
if (n < 0) {
|
||||
failed = TRUE;
|
||||
printf("*** file read failed, "
|
||||
"%lu bytes read, "
|
||||
"errno = %d(%s)\n",
|
||||
(unsigned long)curr_pos,errno,strerror(errno));
|
||||
}
|
||||
else {
|
||||
printf("%lu bytes read\n",
|
||||
(unsigned long)curr_pos);
|
||||
printf("time elapsed for read: %g seconds\n",
|
||||
((double)curr_tick-start_tick)/ticks_per_sec);
|
||||
printf("read data rate: %g KBytes/second\n",
|
||||
(((double)curr_pos) / 1024.0 /
|
||||
(((double)curr_tick-start_tick)/ticks_per_sec)));
|
||||
}
|
||||
}
|
||||
if (fd >= 0) {
|
||||
printf("... closing file\n");
|
||||
close(fd);
|
||||
}
|
||||
if (bufptr != NULL) {
|
||||
printf("... deallocating buffer\n");
|
||||
free(bufptr);
|
||||
bufptr = NULL;
|
||||
}
|
||||
printf("\n ******** End of file read\n");
|
||||
fileio_print_free_heap();
|
||||
|
||||
}
|
||||
|
||||
void fileio_menu (void)
|
||||
{
|
||||
char inbuf[10];
|
||||
|
||||
/*
|
||||
* Wait for characters from console terminal
|
||||
*/
|
||||
for (;;) {
|
||||
printf(" =========================\n");
|
||||
printf(" RTEMS FILE I/O Test Menu \n");
|
||||
printf(" =========================\n");
|
||||
printf(" p -> part_table_initialize\n");
|
||||
printf(" f -> mount all disks in fs_table\n");
|
||||
printf(" l -> list file\n");
|
||||
printf(" r -> read file\n");
|
||||
printf(" w -> write file\n");
|
||||
#ifdef USE_SHELL
|
||||
printf(" s -> start shell\n");
|
||||
#endif
|
||||
printf(" Enter your selection ==>");
|
||||
|
||||
inbuf[0] = '\0';
|
||||
fgets(inbuf,sizeof(inbuf),stdin);
|
||||
switch (inbuf[0]) {
|
||||
case 'l':
|
||||
fileio_list_file ();
|
||||
break;
|
||||
case 'r':
|
||||
fileio_read_file ();
|
||||
break;
|
||||
case 'w':
|
||||
fileio_write_file ();
|
||||
break;
|
||||
case 'p':
|
||||
fileio_part_table_initialize ();
|
||||
break;
|
||||
case 'f':
|
||||
fileio_fsmount ();
|
||||
break;
|
||||
#ifdef USE_SHELL
|
||||
case 's':
|
||||
fileio_start_shell ();
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
printf("Selection `%c` not implemented\n",inbuf[0]);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
exit (0);
|
||||
}
|
||||
|
||||
int menu_tid;
|
||||
|
||||
/*
|
||||
* RTEMS Startup Task
|
||||
*/
|
||||
rtems_task
|
||||
Init (rtems_task_argument ignored)
|
||||
{
|
||||
puts( "\n\n*** FILE I/O SAMPLE AND TEST ***" );
|
||||
|
||||
fileio_menu();
|
||||
}
|
||||
@@ -1,136 +0,0 @@
|
||||
/* system.h
|
||||
*
|
||||
* This include file contains information that is included in every
|
||||
* function in the test set.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* system.h,v 1.13 2000/06/12 15:00:12 joel Exp
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* functions */
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
/* global variables */
|
||||
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
#include <libchip/ata.h> /* for ata driver prototype */
|
||||
#include <libchip/ide_ctrl.h> /* for general ide driver prototype */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
|
||||
|
||||
#define CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
|
||||
|
||||
#ifdef CONFIGURE_INIT
|
||||
rtems_driver_address_table Device_drivers[] =
|
||||
{
|
||||
CONSOLE_DRIVER_TABLE_ENTRY
|
||||
,CLOCK_DRIVER_TABLE_ENTRY
|
||||
#ifdef RTEMS_BSP_HAS_IDE_DRIVER
|
||||
,IDE_CONTROLLER_DRIVER_TABLE_ENTRY
|
||||
/* important: ATA driver must be after ide drivers */
|
||||
,ATA_DRIVER_TABLE_ENTRY
|
||||
#endif
|
||||
};
|
||||
|
||||
#include <rtems/bdbuf.h>
|
||||
rtems_bdbuf_config rtems_bdbuf_configuration[] = {
|
||||
{512,128,NULL}
|
||||
};
|
||||
int rtems_bdbuf_configuration_size =( sizeof(rtems_bdbuf_configuration)
|
||||
/sizeof(rtems_bdbuf_configuration[0]));
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* XXX: these values are higher than needed...
|
||||
*/
|
||||
#define CONFIGURE_MAXIMUM_TASKS 20
|
||||
#define CONFIGURE_MAXIMUM_SEMAPHORES 20
|
||||
#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 20
|
||||
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 20
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE)
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/*
|
||||
* Handy macros and static inline functions
|
||||
*/
|
||||
|
||||
/*
|
||||
* Macro to hide the ugliness of printing the time.
|
||||
*/
|
||||
|
||||
#define print_time(_s1, _tb, _s2) \
|
||||
do { \
|
||||
printf( "%s%02d:%02d:%02d %02d/%02d/%04d%s", \
|
||||
_s1, (_tb)->hour, (_tb)->minute, (_tb)->second, \
|
||||
(_tb)->month, (_tb)->day, (_tb)->year, _s2 ); \
|
||||
fflush(stdout); \
|
||||
} while ( 0 )
|
||||
|
||||
/*
|
||||
* Macro to print an task name that is composed of ASCII characters.
|
||||
*
|
||||
*/
|
||||
|
||||
#define put_name( _name, _crlf ) \
|
||||
do { \
|
||||
rtems_unsigned32 c0, c1, c2, c3; \
|
||||
\
|
||||
c0 = ((_name) >> 24) & 0xff; \
|
||||
c1 = ((_name) >> 16) & 0xff; \
|
||||
c2 = ((_name) >> 8) & 0xff; \
|
||||
c3 = (_name) & 0xff; \
|
||||
putchar( (char)c0 ); \
|
||||
if ( c1 ) putchar( (char)c1 ); \
|
||||
if ( c2 ) putchar( (char)c2 ); \
|
||||
if ( c3 ) putchar( (char)c3 ); \
|
||||
if ( (_crlf) ) \
|
||||
putchar( '\n' ); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* static inline routine to make obtaining ticks per second easier.
|
||||
*/
|
||||
|
||||
static inline rtems_unsigned32 get_ticks_per_second( void )
|
||||
{
|
||||
rtems_interval ticks_per_second;
|
||||
(void) rtems_clock_get( RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticks_per_second ); return ticks_per_second;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This allows us to view the "Test_task" instantiations as a set
|
||||
* of numbered tasks by eliminating the number of application
|
||||
* tasks created.
|
||||
*
|
||||
* In reality, this is too complex for the purposes of this
|
||||
* example. It would have been easier to pass a task argument. :)
|
||||
* But it shows how rtems_id's can sometimes be used.
|
||||
*/
|
||||
|
||||
#define task_number( tid ) \
|
||||
( rtems_get_index( tid ) - \
|
||||
rtems_configuration_get_rtems_api_configuration()->number_of_initialization_tasks )
|
||||
|
||||
/* end of include file */
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,41 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = hello
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io
|
||||
|
||||
C_FILES = init.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
DOCTYPES = doc scn
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
*** HELLO WORLD TEST ***
|
||||
Hello World
|
||||
*** END OF HELLO WORLD TEST ***
|
||||
@@ -1,36 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument ignored
|
||||
)
|
||||
{
|
||||
printf( "\n\n*** HELLO WORLD TEST ***\n" );
|
||||
printf( "Hello World\n" );
|
||||
printf( "*** END OF HELLO WORLD TEST ***\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/* system.h
|
||||
*
|
||||
* This include file contains information that is included in every
|
||||
* function in the test set.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* functions */
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/* end of include file */
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,41 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = loopback
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io event
|
||||
|
||||
C_FILES = init.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
DOCTYPES = scn
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
|
||||
if HAS_NETWORKING
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,65 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
Simple test of kernel network code.
|
||||
Requires no network hardware since only the loopback network address is used.
|
||||
|
||||
Output should look like:
|
||||
========================================================================
|
||||
"Network" initializing!
|
||||
"Network" initialized!
|
||||
Try running client with no server present.
|
||||
Should fail with `connection refused'.
|
||||
Connect to server.
|
||||
Can't connect to server: Connection refused
|
||||
Client closing connection.
|
||||
|
||||
Start server.
|
||||
|
||||
Try running client with server present.
|
||||
Create socket.
|
||||
Connect to server.
|
||||
Bind socket.
|
||||
Can't connect to server: Connection refused
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
|
||||
Try running two clients.
|
||||
Connect to server.
|
||||
Connect to server.
|
||||
ACCEPTED:7F000001
|
||||
ACCEPTED:7F000001
|
||||
Write 22-byte message to server.
|
||||
Write 22-byte message to server.
|
||||
Read 43 from server: Server received 22 (Hi there, server (2).)
|
||||
Read 43 from server: Server received 22 (Hi there, server (3).)
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
|
||||
Try running three clients.
|
||||
Connect to server.
|
||||
Connect to server.
|
||||
Connect to server.
|
||||
ACCEPTED:7F000001
|
||||
ACCEPTED:7F000001
|
||||
ACCEPTED:7F000001
|
||||
Write 22-byte message to server.
|
||||
Write 22-byte message to server.
|
||||
Write 22-byte message to server.
|
||||
Read 43 from server: Server received 22 (Hi there, server (4).)
|
||||
Read 43 from server: Server received 22 (Hi there, server (5).)
|
||||
Read 43 from server: Server received 22 (Hi there, server (6).)
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
@@ -1,267 +0,0 @@
|
||||
#include <bsp.h>
|
||||
|
||||
#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_EXECUTIVE_RAM_SIZE (512*1024)
|
||||
#define CONFIGURE_MAXIMUM_SEMAPHORES 20
|
||||
#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 20
|
||||
#define CONFIGURE_MAXIMUM_TASKS 20
|
||||
|
||||
#define CONFIGURE_MICROSECONDS_PER_TICK 10000
|
||||
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 50
|
||||
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
|
||||
|
||||
#define CONFIGURE_INIT_TASK_STACK_SIZE (10*1024)
|
||||
#define CONFIGURE_INIT_TASK_PRIORITY 50
|
||||
#define CONFIGURE_INIT_TASK_INITIAL_MODES (RTEMS_PREEMPT | \
|
||||
RTEMS_NO_TIMESLICE | \
|
||||
RTEMS_NO_ASR | \
|
||||
RTEMS_INTERRUPT_LEVEL(0))
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
rtems_task Init(rtems_task_argument argument);
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
#include <rtems/rtems_bsdnet.h>
|
||||
#include <rtems/error.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
/*
|
||||
* Network configuration
|
||||
*/
|
||||
extern void rtems_bsdnet_loopattach();
|
||||
static struct rtems_bsdnet_ifconfig loopback_config = {
|
||||
"lo0", /* name */
|
||||
(int (*)(struct rtems_bsdnet_ifconfig *, int))rtems_bsdnet_loopattach, /* attach function */
|
||||
NULL, /* link to next interface */
|
||||
"127.0.0.1", /* IP address */
|
||||
"255.0.0.0", /* IP net mask */
|
||||
};
|
||||
|
||||
struct rtems_bsdnet_config rtems_bsdnet_config = {
|
||||
&loopback_config, /* Network interface */
|
||||
NULL, /* Use fixed network configuration */
|
||||
0, /* Default network task priority */
|
||||
0, /* Default mbuf capacity */
|
||||
0, /* Default mbuf cluster capacity */
|
||||
"testSystem", /* Host name */
|
||||
"nowhere.com", /* Domain name */
|
||||
"127.0.0.1", /* Gateway */
|
||||
"127.0.0.1", /* Log host */
|
||||
{"127.0.0.1" }, /* Name server(s) */
|
||||
{"127.0.0.1" }, /* NTP server(s) */
|
||||
};
|
||||
|
||||
/*
|
||||
* Thread-safe output routines
|
||||
*/
|
||||
static rtems_id printMutex;
|
||||
static void printSafe(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
rtems_semaphore_obtain(printMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
|
||||
vprintf(fmt, args);
|
||||
rtems_semaphore_release(printMutex);
|
||||
va_end(args);
|
||||
}
|
||||
#define printf printSafe
|
||||
|
||||
/*
|
||||
* Spawn a task
|
||||
*/
|
||||
static void spawnTask(rtems_task_entry entryPoint, rtems_task_priority priority, rtems_task_argument arg)
|
||||
{
|
||||
rtems_status_code sc;
|
||||
rtems_id tid;
|
||||
|
||||
sc = rtems_task_create(rtems_build_name('t','a','s','k'),
|
||||
priority,
|
||||
RTEMS_MINIMUM_STACK_SIZE+(8*1024),
|
||||
RTEMS_PREEMPT|RTEMS_TIMESLICE|RTEMS_NO_ASR|RTEMS_INTERRUPT_LEVEL(0),
|
||||
RTEMS_FLOATING_POINT|RTEMS_LOCAL,
|
||||
&tid);
|
||||
if (sc != RTEMS_SUCCESSFUL)
|
||||
rtems_panic("Can't create task: %s", rtems_status_text(sc));
|
||||
sc = rtems_task_start(tid, entryPoint, arg);
|
||||
if (sc != RTEMS_SUCCESSFUL)
|
||||
rtems_panic("Can't start task: %s", rtems_status_text(sc));
|
||||
}
|
||||
|
||||
/*
|
||||
* Server subtask
|
||||
*/
|
||||
static rtems_task workerTask(rtems_task_argument arg)
|
||||
{
|
||||
int s = arg;
|
||||
char msg[80];
|
||||
char reply[100];
|
||||
int i;
|
||||
|
||||
for (;;) {
|
||||
if ((i = read(s, msg, sizeof msg)) < 0) {
|
||||
printf("Server couldn't read message from client: %s\n", strerror(errno));
|
||||
break;
|
||||
}
|
||||
if (i == 0)
|
||||
break;
|
||||
rtems_task_wake_after(20); /* Simulate some processing delay */
|
||||
i = sprintf(reply, "Server received %d (%s)", i, msg);
|
||||
if ((i = write(s, reply, i+1)) < 0) {
|
||||
printf("Server couldn't write message to client: %s\n", strerror(errno));
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (close(s) < 0)
|
||||
printf("Can't close worker task socket: %s\n", strerror(errno));
|
||||
printf("Worker task terminating.\n");
|
||||
rtems_task_delete(RTEMS_SELF);
|
||||
}
|
||||
|
||||
/*
|
||||
* Server Task
|
||||
*/
|
||||
static rtems_task serverTask(rtems_task_argument arg)
|
||||
{
|
||||
int s, s1;
|
||||
int addrlen;
|
||||
struct sockaddr_in myAddr, farAddr;
|
||||
rtems_task_priority myPriority;
|
||||
|
||||
printf("Create socket.\n");
|
||||
s = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (s < 0)
|
||||
rtems_panic("Can't create socket: %s\n", strerror(errno));
|
||||
memset(&myAddr, 0, sizeof myAddr);
|
||||
myAddr.sin_family = AF_INET;
|
||||
myAddr.sin_port = htons(1234);
|
||||
myAddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
printf("Bind socket.\n");
|
||||
if (bind(s, (struct sockaddr *)&myAddr, sizeof myAddr) < 0)
|
||||
rtems_panic("Can't bind socket: %s\n", strerror(errno));
|
||||
if (listen(s, 5) < 0)
|
||||
printf("Can't listen on socket: %s\n", strerror(errno));
|
||||
rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &myPriority);
|
||||
for(;;) {
|
||||
addrlen = sizeof farAddr;
|
||||
s1 = accept(s, (struct sockaddr *)&farAddr, &addrlen);
|
||||
if (s1 < 0)
|
||||
rtems_panic("Can't accept connection: %s", strerror(errno));
|
||||
else
|
||||
printf("ACCEPTED:%lX\n", ntohl(farAddr.sin_addr.s_addr));
|
||||
spawnTask(workerTask, myPriority, s1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The real part of the client
|
||||
*/
|
||||
static rtems_task clientWorker(int arg)
|
||||
{
|
||||
int s;
|
||||
struct sockaddr_in myAddr, farAddr;
|
||||
char cbuf[50];
|
||||
int i;
|
||||
|
||||
s = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (s < 0) {
|
||||
printf("Can't create client socket: %s\n", strerror(errno));
|
||||
return;
|
||||
}
|
||||
memset(&myAddr, 0, sizeof myAddr);
|
||||
myAddr.sin_family = AF_INET;
|
||||
myAddr.sin_port = htons(0);
|
||||
myAddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
if (bind(s, (struct sockaddr *)&myAddr, sizeof myAddr) < 0) {
|
||||
printf("Can't bind socket: %s\n", strerror(errno));
|
||||
goto close;
|
||||
}
|
||||
memset(&farAddr, 0, sizeof farAddr);
|
||||
farAddr.sin_family = AF_INET;
|
||||
farAddr.sin_port = htons(1234);
|
||||
farAddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
printf("Connect to server.\n");
|
||||
if (connect(s, (struct sockaddr *)&farAddr, sizeof farAddr) < 0) {
|
||||
printf("Can't connect to server: %s\n", strerror(errno));
|
||||
goto close;
|
||||
}
|
||||
rtems_task_wake_after(20); /* Simulate client delay */
|
||||
i = sprintf(cbuf, "Hi there, server (%d).", arg);
|
||||
i++; /* Send the '\0', too */
|
||||
printf("Write %d-byte message to server.\n", i);
|
||||
if (write(s, cbuf, i) < 0) {
|
||||
printf("Can't write to server: %s\n", strerror(errno));
|
||||
goto close;
|
||||
}
|
||||
if ((i = read(s, cbuf, sizeof cbuf)) < 0) {
|
||||
printf("Can't read from server: %s\n", strerror(errno));
|
||||
goto close;
|
||||
}
|
||||
printf("Read %d from server: %.*s\n", i, i, cbuf);
|
||||
rtems_task_wake_after(20); /* Simulate client delay */
|
||||
close:
|
||||
printf("Client closing connection.\n");
|
||||
if (close(s) < 0)
|
||||
printf("Can't close client task socket: %s\n", strerror(errno));
|
||||
}
|
||||
|
||||
/*
|
||||
* Client Task
|
||||
*/
|
||||
static rtems_task clientTask(rtems_task_argument arg)
|
||||
{
|
||||
clientWorker(arg);
|
||||
printf("Client task terminating.\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* RTEMS Startup Task
|
||||
*/
|
||||
rtems_task
|
||||
Init (rtems_task_argument ignored)
|
||||
{
|
||||
rtems_status_code sc;
|
||||
|
||||
sc = rtems_semaphore_create(rtems_build_name('P','m','t','x'),
|
||||
1,
|
||||
RTEMS_PRIORITY|RTEMS_BINARY_SEMAPHORE|RTEMS_INHERIT_PRIORITY|
|
||||
RTEMS_NO_PRIORITY_CEILING|RTEMS_LOCAL,
|
||||
0,
|
||||
&printMutex);
|
||||
if (sc != RTEMS_SUCCESSFUL)
|
||||
rtems_panic("Can't create printf mutex:", rtems_status_text(sc));
|
||||
printf("\"Network\" initializing!\n");
|
||||
rtems_bsdnet_initialize_network();
|
||||
printf("\"Network\" initialized!\n");
|
||||
|
||||
printf("Try running client with no server present.\n");
|
||||
printf("Should fail with `connection refused'.\n");
|
||||
clientWorker(0);
|
||||
|
||||
printf("\nStart server.\n");
|
||||
spawnTask(serverTask, 150, 0);
|
||||
|
||||
printf("\nTry running client with server present.\n");
|
||||
spawnTask(clientTask, 120, 1);
|
||||
rtems_task_wake_after(500);
|
||||
|
||||
printf("\nTry running two clients.\n");
|
||||
spawnTask(clientTask, 120, 2);
|
||||
spawnTask(clientTask, 120, 3);
|
||||
rtems_task_wake_after(500);
|
||||
|
||||
printf("\nTry running three clients.\n");
|
||||
spawnTask(clientTask, 120, 4);
|
||||
spawnTask(clientTask, 120, 5);
|
||||
spawnTask(clientTask, 120, 6);
|
||||
|
||||
rtems_task_suspend(RTEMS_SELF);
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
"Network" initializing!
|
||||
"Network" initialized!
|
||||
Try running client with no server present.
|
||||
Should fail with `connection refused'.
|
||||
Connect to server.
|
||||
Can't connect to server: Connection refused
|
||||
Client closing connection.
|
||||
|
||||
Start server.
|
||||
|
||||
Try running client with server present.
|
||||
Create socket.
|
||||
Connect to server.
|
||||
Bind socket.
|
||||
Can't connect to server: Connection refused
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
|
||||
Try running two clients.
|
||||
Connect to server.
|
||||
Connect to server.
|
||||
ACCEPTED:7F000001
|
||||
ACCEPTED:7F000001
|
||||
Write 22-byte message to server.
|
||||
Write 22-byte message to server.
|
||||
Read 43 from server: Server received 22 (Hi there, server (2).)
|
||||
Read 43 from server: Server received 22 (Hi there, server (3).)
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
|
||||
Try running three clients.
|
||||
Connect to server.
|
||||
Connect to server.
|
||||
Connect to server.
|
||||
ACCEPTED:7F000001
|
||||
ACCEPTED:7F000001
|
||||
ACCEPTED:7F000001
|
||||
Write 22-byte message to server.
|
||||
Write 22-byte message to server.
|
||||
Write 22-byte message to server.
|
||||
Read 43 from server: Server received 22 (Hi there, server (4).)
|
||||
Read 43 from server: Server received 22 (Hi there, server (5).)
|
||||
Read 43 from server: Server received 22 (Hi there, server (6).)
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
Client closing connection.
|
||||
Client task terminating.
|
||||
Worker task terminating.
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,39 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = minimum
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = all
|
||||
|
||||
C_FILES = init.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
DOCTYPES = doc scn
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
# This test should not be executed
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,41 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument ignored
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/* global variables */
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
*** TEST SHOULD NOT BE RUN ***
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,47 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = paranoia
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = all
|
||||
|
||||
C_FILES = init.c paranoia.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
DOCTYPES = doc
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
# -DCYGNUS turns on more verbose msgs
|
||||
#
|
||||
|
||||
AM_CPPFLAGS += -DNOSIGNAL -DCYGNUS -DNOMAIN
|
||||
|
||||
LD_LIBS = -lm
|
||||
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,49 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h> /* exit */
|
||||
|
||||
extern int paranoia(int, char **);
|
||||
|
||||
char *args[2] = { "paranoia", 0 };
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument ignored
|
||||
)
|
||||
{
|
||||
/*
|
||||
* Install whatever optional floating point assistance package
|
||||
* is required by this CPU.
|
||||
*/
|
||||
|
||||
#if (defined (m68040))
|
||||
M68KFPSPInstallExceptionHandlers ();
|
||||
#endif
|
||||
|
||||
printf( "\n\n*** PARANOIA TEST ***\n" );
|
||||
paranoia(1, args);
|
||||
printf( "*** END OF PARANOIA TEST ***\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
/* system.h
|
||||
*
|
||||
* This include file contains information that is included in every
|
||||
* function in the test set.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* functions */
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
#define CONFIGURE_INIT_TASK_ATTRIBUTES RTEMS_FLOATING_POINT
|
||||
#define CONFIGURE_INIT_TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE * 2)
|
||||
|
||||
#define CONFIGURE_EXTRA_TASK_STACKS (1 * RTEMS_MINIMUM_STACK_SIZE)
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/* end of include file */
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,45 +0,0 @@
|
||||
#
|
||||
# Makefile
|
||||
#
|
||||
|
||||
#
|
||||
# RTEMS_MAKEFILE_PATH is typically set in an environment variable
|
||||
#
|
||||
|
||||
EXEC=ppptest.exe
|
||||
PGM=${ARCH}/$(EXEC)
|
||||
|
||||
# optional managers required
|
||||
MANAGERS=io event semaphore
|
||||
|
||||
# C source names
|
||||
CSRCS = init.c pppdapp.c
|
||||
|
||||
COBJS_ = $(CSRCS:.c=.o)
|
||||
COBJS = $(COBJS_:%=${ARCH}/%)
|
||||
|
||||
# C++ source names
|
||||
CXXSRCS =
|
||||
CXXOBJS_ = $(CXXSRCS:.cc=.o)
|
||||
CXXOBJS = $(CXXOBJS_:%=${ARCH}/%)
|
||||
|
||||
# AS source names
|
||||
ASSRCS =
|
||||
ASOBJS_ = $(ASSRCS:.s=.o)
|
||||
ASOBJS = $(ASOBJS_:%=${ARCH}/%)
|
||||
|
||||
# Libraries
|
||||
LIBS = -lrtemsall -lc
|
||||
|
||||
include $(RTEMS_MAKEFILE_PATH)/Makefile.inc
|
||||
|
||||
include $(RTEMS_CUSTOM)
|
||||
include $(PROJECT_ROOT)/make/leaf.cfg
|
||||
|
||||
OBJS= $(COBJS) $(CXXOBJS) $(ASOBJS)
|
||||
|
||||
all: ${ARCH} $(PGM)
|
||||
|
||||
$(PGM): $(OBJS)
|
||||
$(make-exe)
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = pppd
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io event semaphore
|
||||
|
||||
C_FILES = init.c pppdapp.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = netconfig.h system.h
|
||||
|
||||
SRCS = $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
|
||||
if HAS_NETWORKING
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(H_FILES)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,15 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
This is an example user application using pppd. It is built using
|
||||
the RTEMS application Makefiles. The file Makefile-user should
|
||||
be renamed to Makefile or the -f option given to make. The file
|
||||
is renamed to avoid bootstrap -c removing it.
|
||||
|
||||
The files ppp.conf and pppd.options are sample configuration files
|
||||
that have successfully used to make ppp connections over a null
|
||||
modem serial cable to a UNIX box. Please review the man pages
|
||||
for either the ppp or pppd applications to ensure they are configured
|
||||
correctly.
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <rtems/rtems_bsdnet.h>
|
||||
#include <rtemspppd.h>
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include "system.h"
|
||||
#include "netconfig.h"
|
||||
|
||||
|
||||
extern int pppdapp_initialize(void);
|
||||
|
||||
|
||||
rtems_task Init(rtems_task_argument argument)
|
||||
{
|
||||
/* initialize network */
|
||||
rtems_bsdnet_initialize_network();
|
||||
rtems_pppd_initialize();
|
||||
pppdapp_initialize();
|
||||
|
||||
rtems_task_delete(RTEMS_SELF);
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
|
||||
#ifndef NETCONFIG_H_
|
||||
#define NETCONFIG_H_
|
||||
|
||||
#include <bsp.h>
|
||||
|
||||
/* external function prototypes */
|
||||
extern int rtems_ppp_driver_attach(struct rtems_bsdnet_ifconfig *config, int attaching);
|
||||
|
||||
/* Default network interface */
|
||||
static struct rtems_bsdnet_ifconfig netdriver_config = {
|
||||
"ppp0", /* name */
|
||||
rtems_ppp_driver_attach, /* attach function */
|
||||
NULL, /* No more interfaces */
|
||||
NULL, /* IP address */
|
||||
NULL, /* IP net mask */
|
||||
NULL, /* Driver supplies hardware address */
|
||||
0 /* Use default driver parameters */
|
||||
};
|
||||
|
||||
/* Network configuration */
|
||||
struct rtems_bsdnet_config rtems_bsdnet_config = {
|
||||
&netdriver_config,
|
||||
NULL,
|
||||
30, /* Default network task priority */
|
||||
(256*1024), /* Default mbuf capacity */
|
||||
(512*1024), /* Default mbuf cluster capacity */
|
||||
0, /* Host name */
|
||||
0, /* Domain name */
|
||||
0, /* Gateway */
|
||||
0, /* Log host */
|
||||
{ 0 }, /* Name server(s) */
|
||||
{ 0 }, /* NTP server(s) */
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,27 +0,0 @@
|
||||
|
||||
#
|
||||
# Example configuration file for setting up a ppp server
|
||||
# using a null-modem serial cable:
|
||||
#
|
||||
# Tested using ppp on OpenBSD 2.9
|
||||
# - just follow instructions in man page for accepting
|
||||
# ppp connections over the serial port
|
||||
# - if pap and/or chap is enabled, you must have a ppp.secret
|
||||
# file which will be used for user authentication
|
||||
# - found useful to turn on syslog for ppp
|
||||
#
|
||||
|
||||
default:
|
||||
set log Phase Chat LQM LCP IPCP CCP command
|
||||
set device /dev/cua00
|
||||
set speed 57600
|
||||
set ctsrts on
|
||||
set dial ""
|
||||
|
||||
openbsd-server:
|
||||
set timeout 0
|
||||
set ifaddr 192.168.2.100 192.168.2.123
|
||||
enable dns
|
||||
allow users
|
||||
enable chap
|
||||
enable pap
|
||||
@@ -1,9 +0,0 @@
|
||||
/dev/tty00
|
||||
57600
|
||||
crtscts
|
||||
passive
|
||||
local
|
||||
noauth
|
||||
debug
|
||||
persist
|
||||
192.168.2.222:192.168.2.111
|
||||
@@ -1,146 +0,0 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <rtemspppd.h>
|
||||
#include "system.h"
|
||||
|
||||
|
||||
/* define global variables */
|
||||
static unsigned int pppdapp_linkcount = 0;
|
||||
static rtems_id pppdapp_taskid;
|
||||
|
||||
|
||||
static void pppdapp_linkup_hook(void)
|
||||
{
|
||||
pppdapp_linkcount++;
|
||||
printf("PPP LINK UP [%d]\n", pppdapp_linkcount);
|
||||
}
|
||||
|
||||
static void pppdapp_linkdown_hook(void)
|
||||
{
|
||||
printf("PPP LINK DOWN [%d]\n", pppdapp_linkcount);
|
||||
}
|
||||
|
||||
static void pppdapp_ipup_hook(void)
|
||||
{
|
||||
/* send ipup signal to pppdapp task */
|
||||
rtems_event_send(pppdapp_taskid, RTEMS_EVENT_10);
|
||||
}
|
||||
|
||||
static void pppdapp_ipdown_hook(void)
|
||||
{
|
||||
/* send ip down signal to pppdapp task */
|
||||
rtems_event_send(pppdapp_taskid, RTEMS_EVENT_11);
|
||||
}
|
||||
|
||||
static void pppdapp_setup(void)
|
||||
{
|
||||
const char *pUser = "oscar";
|
||||
const char *pPassword = "goldman";
|
||||
|
||||
#undef USE_MODEM
|
||||
#ifdef USE_MODEM
|
||||
const char *pTelephone = "5551234";
|
||||
const char *pInitScript = "TIMEOUT@5@@AT@@OK@";
|
||||
const char *pConnectScript = "TIMEOUT@90@@ATDT%s@CONNECT@@name:@%s@word:@%s@";
|
||||
const char *pDisconnectScript = "TIMEOUT@5@@ATH0@@OK@";
|
||||
char pConnect[128];
|
||||
|
||||
/* set the connect string */
|
||||
sprintf(pConnect, pConnectScript, pTelephone, pUser, pPassword);
|
||||
|
||||
/* set pppd options for modem */
|
||||
rtems_pppd_set_option("/dev/ttyS2", NULL);
|
||||
rtems_pppd_set_option("57600", NULL);
|
||||
rtems_pppd_set_option("crtscts", NULL);
|
||||
rtems_pppd_set_option("modem", NULL);
|
||||
rtems_pppd_set_option("noauth", NULL);
|
||||
rtems_pppd_set_option("debug", NULL);
|
||||
rtems_pppd_set_option("init", pInitScript);
|
||||
rtems_pppd_set_option("connect", pConnect);
|
||||
rtems_pppd_set_option("disconnect", pDisconnectScript);
|
||||
#else
|
||||
/* set pppd options for null modem direct link serial cable */
|
||||
rtems_pppd_set_option("/dev/ttyS1", NULL);
|
||||
rtems_pppd_set_option("57600", NULL);
|
||||
rtems_pppd_set_option("crtscts", NULL);
|
||||
rtems_pppd_set_option("local", NULL);
|
||||
rtems_pppd_set_option("noauth", NULL);
|
||||
rtems_pppd_set_option("debug", NULL);
|
||||
rtems_pppd_set_option("user", pUser);
|
||||
rtems_pppd_set_option("password", pPassword);
|
||||
#endif
|
||||
|
||||
/* set up pppd hooks */
|
||||
rtems_pppd_set_hook(RTEMS_PPPD_LINKUP_HOOK, pppdapp_linkup_hook);
|
||||
rtems_pppd_set_hook(RTEMS_PPPD_LINKDOWN_HOOK, pppdapp_linkdown_hook);
|
||||
rtems_pppd_set_hook(RTEMS_PPPD_IPUP_HOOK, pppdapp_ipup_hook);
|
||||
rtems_pppd_set_hook(RTEMS_PPPD_IPDOWN_HOOK, pppdapp_ipdown_hook);
|
||||
}
|
||||
|
||||
static rtems_task pppdapp(rtems_task_argument arg)
|
||||
{
|
||||
rtems_status_code sc = RTEMS_SUCCESSFUL;
|
||||
rtems_interval tickspersecond = 0;
|
||||
rtems_option options;
|
||||
rtems_event_set in;
|
||||
rtems_event_set out;
|
||||
|
||||
/* initialize ticks per second */
|
||||
rtems_clock_get(RTEMS_CLOCK_GET_TICKS_PER_SECOND, &tickspersecond);
|
||||
if ( tickspersecond == 0 ) {
|
||||
/* ensure value is greater than zero */
|
||||
tickspersecond = 100;
|
||||
}
|
||||
|
||||
/* initiate connection */
|
||||
pppdapp_setup();
|
||||
rtems_pppd_connect();
|
||||
|
||||
/* enter processing loop */
|
||||
in = (RTEMS_EVENT_10 | RTEMS_EVENT_11);
|
||||
options = (RTEMS_EVENT_ANY | RTEMS_WAIT);
|
||||
while ( sc == RTEMS_SUCCESSFUL ) {
|
||||
/* wait for the next event */
|
||||
sc = rtems_event_receive(in, options, RTEMS_NO_TIMEOUT, &out);
|
||||
if ( sc == RTEMS_SUCCESSFUL ) {
|
||||
/* determine which event was sent */
|
||||
if ( out & RTEMS_EVENT_10 ) {
|
||||
/* ip up recived */
|
||||
/* call disconnect function */
|
||||
rtems_pppd_disconnect();
|
||||
}
|
||||
if ( out & RTEMS_EVENT_11 ) {
|
||||
/* ip down recived */
|
||||
/* sleep 10 seconds and call connect function */
|
||||
rtems_task_wake_after(10*tickspersecond);
|
||||
rtems_pppd_connect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* terminate myself */
|
||||
rtems_task_delete(RTEMS_SELF);
|
||||
}
|
||||
|
||||
int pppdapp_initialize(void)
|
||||
{
|
||||
int iReturn = (int)-1;
|
||||
rtems_status_code status;
|
||||
rtems_name taskName;
|
||||
|
||||
taskName = rtems_build_name( 'p', 'a', 'p', 'p' );
|
||||
status = rtems_task_create(taskName,
|
||||
CONFIGURE_INIT_TASK_PRIORITY,
|
||||
CONFIGURE_INIT_TASK_STACK_SIZE,
|
||||
CONFIGURE_INIT_TASK_INITIAL_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&pppdapp_taskid);
|
||||
if ( status == RTEMS_SUCCESSFUL ) {
|
||||
status = rtems_task_start(pppdapp_taskid, pppdapp, 0);
|
||||
if ( status == RTEMS_SUCCESSFUL ) {
|
||||
iReturn = (int)0;
|
||||
}
|
||||
}
|
||||
|
||||
return ( iReturn );
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
|
||||
#ifndef SYSTEM_H
|
||||
#define SYSTEM_H
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* HACK */
|
||||
#if defined(__i386__)
|
||||
#include <tty_drv.h>
|
||||
#endif
|
||||
|
||||
/* functions */
|
||||
extern rtems_task Init(rtems_task_argument argument);
|
||||
|
||||
#include <bsp.h>
|
||||
|
||||
#define CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
|
||||
#ifdef CONFIGURE_INIT
|
||||
rtems_driver_address_table Device_drivers[5] = {
|
||||
CONSOLE_DRIVER_TABLE_ENTRY,
|
||||
CLOCK_DRIVER_TABLE_ENTRY,
|
||||
#if defined(TTY1_DRIVER_TABLE_ENTRY)
|
||||
TTY1_DRIVER_TABLE_ENTRY,
|
||||
#endif
|
||||
#if defined(TTY2_DRIVER_TABLE_ENTRY)
|
||||
TTY2_DRIVER_TABLE_ENTRY,
|
||||
#endif
|
||||
{NULL, NULL, NULL, NULL, NULL, NULL}
|
||||
};
|
||||
#endif
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 8
|
||||
|
||||
#define CONFIGURE_EXECUTIVE_RAM_SIZE (512*1024)
|
||||
#define CONFIGURE_MAXIMUM_SEMAPHORES 20
|
||||
#define CONFIGURE_MAXIMUM_TASKS 20
|
||||
|
||||
#define CONFIGURE_MICROSECONDS_PER_TICK 10000
|
||||
|
||||
#define CONFIGURE_INIT_TASK_STACK_SIZE (10*1024)
|
||||
#define CONFIGURE_INIT_TASK_PRIORITY 120
|
||||
#define CONFIGURE_INIT_TASK_INITIAL_MODES (RTEMS_PREEMPT | \
|
||||
RTEMS_NO_TIMESLICE | \
|
||||
RTEMS_NO_ASR | \
|
||||
RTEMS_INTERRUPT_LEVEL(0))
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
#endif
|
||||
@@ -1,20 +0,0 @@
|
||||
## $Id$
|
||||
|
||||
project_bspdir=$(PROJECT_ROOT)/@RTEMS_BSP@
|
||||
|
||||
$(project_bspdir)/samples:
|
||||
@$(mkinstalldirs) $@
|
||||
$(project_bspdir)/tests:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(project_bspdir)/samples/$(SAMPLE)$(LIB_VARIANT).exe: $(PGM)
|
||||
$(INSTALL_PROGRAM) $< $@
|
||||
|
||||
$(project_bspdir)/tests/$(SAMPLE)$(LIB_VARIANT).exe: $(PGM)
|
||||
$(INSTALL_PROGRAM) $< $@
|
||||
|
||||
TMPINSTALL_FILES = \
|
||||
$(project_bspdir)/tests \
|
||||
$(project_bspdir)/tests/$(SAMPLE)$(LIB_VARIANT).exe \
|
||||
$(project_bspdir)/samples \
|
||||
$(project_bspdir)/samples/$(SAMPLE)$(LIB_VARIANT).exe
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,41 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = ticker
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io
|
||||
|
||||
C_FILES = init.c tasks.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
DOCTYPES = doc scn
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,75 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
* Keep the names and IDs in global variables so another task can use them.
|
||||
*/
|
||||
|
||||
rtems_id Task_id[ 4 ]; /* array of task ids */
|
||||
rtems_name Task_name[ 4 ]; /* array of task names */
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
{
|
||||
rtems_status_code status;
|
||||
rtems_time_of_day time;
|
||||
|
||||
puts( "\n\n*** CLOCK TICK TEST ***" );
|
||||
|
||||
time.year = 1988;
|
||||
time.month = 12;
|
||||
time.day = 31;
|
||||
time.hour = 9;
|
||||
time.minute = 0;
|
||||
time.second = 0;
|
||||
time.ticks = 0;
|
||||
|
||||
status = rtems_clock_set( &time );
|
||||
|
||||
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );
|
||||
Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' );
|
||||
Task_name[ 3 ] = rtems_build_name( 'T', 'A', '3', ' ' );
|
||||
|
||||
status = rtems_task_create(
|
||||
Task_name[ 1 ], 1, RTEMS_MINIMUM_STACK_SIZE * 2, RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[ 1 ]
|
||||
);
|
||||
status = rtems_task_create(
|
||||
Task_name[ 2 ], 1, RTEMS_MINIMUM_STACK_SIZE * 2, RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[ 2 ]
|
||||
);
|
||||
status = rtems_task_create(
|
||||
Task_name[ 3 ], 1, RTEMS_MINIMUM_STACK_SIZE * 2, RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[ 3 ]
|
||||
);
|
||||
|
||||
status = rtems_task_start( Task_id[ 1 ], Test_task, 1 );
|
||||
status = rtems_task_start( Task_id[ 2 ], Test_task, 2 );
|
||||
status = rtems_task_start( Task_id[ 3 ], Test_task, 3 );
|
||||
|
||||
status = rtems_task_delete( RTEMS_SELF );
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
/* system.h
|
||||
*
|
||||
* This include file contains information that is included in every
|
||||
* function in the test set.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* functions */
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
rtems_task Test_task(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
/* global variables */
|
||||
|
||||
/*
|
||||
* Keep the names and IDs in global variables so another task can use them.
|
||||
*/
|
||||
|
||||
extern rtems_id Task_id[ 4 ]; /* array of task ids */
|
||||
extern rtems_name Task_name[ 4 ]; /* array of task names */
|
||||
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 4
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE)
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/*
|
||||
* Handy macros and static inline functions
|
||||
*/
|
||||
|
||||
/*
|
||||
* Macro to hide the ugliness of printing the time.
|
||||
*/
|
||||
|
||||
#define print_time(_s1, _tb, _s2) \
|
||||
do { \
|
||||
printf( "%s%02d:%02d:%02d %02d/%02d/%04d%s", \
|
||||
_s1, (_tb)->hour, (_tb)->minute, (_tb)->second, \
|
||||
(_tb)->month, (_tb)->day, (_tb)->year, _s2 ); \
|
||||
fflush(stdout); \
|
||||
} while ( 0 )
|
||||
|
||||
/*
|
||||
* Macro to print an task name that is composed of ASCII characters.
|
||||
*
|
||||
*/
|
||||
|
||||
#define put_name( _name, _crlf ) \
|
||||
do { \
|
||||
rtems_unsigned32 c0, c1, c2, c3; \
|
||||
\
|
||||
c0 = ((_name) >> 24) & 0xff; \
|
||||
c1 = ((_name) >> 16) & 0xff; \
|
||||
c2 = ((_name) >> 8) & 0xff; \
|
||||
c3 = (_name) & 0xff; \
|
||||
putchar( (char)c0 ); \
|
||||
if ( c1 ) putchar( (char)c1 ); \
|
||||
if ( c2 ) putchar( (char)c2 ); \
|
||||
if ( c3 ) putchar( (char)c3 ); \
|
||||
if ( (_crlf) ) \
|
||||
putchar( '\n' ); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* static inline routine to make obtaining ticks per second easier.
|
||||
*/
|
||||
|
||||
static inline rtems_unsigned32 get_ticks_per_second( void )
|
||||
{
|
||||
rtems_interval ticks_per_second;
|
||||
(void) rtems_clock_get( RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticks_per_second ); return ticks_per_second;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This allows us to view the "Test_task" instantiations as a set
|
||||
* of numbered tasks by eliminating the number of application
|
||||
* tasks created.
|
||||
*
|
||||
* In reality, this is too complex for the purposes of this
|
||||
* example. It would have been easier to pass a task argument. :)
|
||||
* But it shows how rtems_id's can sometimes be used.
|
||||
*/
|
||||
|
||||
#define task_number( tid ) \
|
||||
( rtems_get_index( tid ) - \
|
||||
rtems_configuration_get_rtems_api_configuration()->number_of_initialization_tasks )
|
||||
|
||||
/* end of include file */
|
||||
@@ -1,45 +0,0 @@
|
||||
/* Test_task
|
||||
*
|
||||
* This routine serves as a test task. It verifies the basic task
|
||||
* switching capabilities of the executive.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
rtems_task Test_task(
|
||||
rtems_task_argument unused
|
||||
)
|
||||
{
|
||||
rtems_id tid;
|
||||
rtems_time_of_day time;
|
||||
rtems_unsigned32 task_index;
|
||||
rtems_status_code status;
|
||||
|
||||
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid );
|
||||
task_index = task_number( tid );
|
||||
for ( ; ; ) {
|
||||
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
|
||||
if ( time.second >= 35 ) {
|
||||
puts( "*** END OF CLOCK TICK TEST ***" );
|
||||
exit( 0 );
|
||||
}
|
||||
put_name( Task_name[ task_index ], FALSE );
|
||||
print_time( " - rtems_clock_get - ", &time, "\n" );
|
||||
status = rtems_task_wake_after( task_index * 5 * get_ticks_per_second() );
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1999.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may be
|
||||
# found in the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
*** CLOCK TICK TEST ***
|
||||
TA1 - tm_get - 09:00:00 12/31/1988
|
||||
TA2 - tm_get - 09:00:00 12/31/1988
|
||||
TA3 - tm_get - 09:00:00 12/31/1988
|
||||
TA1 - tm_get - 09:00:05 12/31/1988
|
||||
TA1 - tm_get - 09:00:10 12/31/1988
|
||||
TA2 - tm_get - 09:00:10 12/31/1988
|
||||
TA1 - tm_get - 09:00:15 12/31/1988
|
||||
TA3 - tm_get - 09:00:15 12/31/1988
|
||||
TA1 - tm_get - 09:00:20 12/31/1988
|
||||
TA2 - tm_get - 09:00:20 12/31/1988
|
||||
TA1 - tm_get - 09:00:25 12/31/1988
|
||||
TA1 - tm_get - 09:00:30 12/31/1988
|
||||
TA2 - tm_get - 09:00:30 12/31/1988
|
||||
TA3 - tm_get - 09:00:30 12/31/1988
|
||||
*** END OF CLOCK TICK TEST ***
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,41 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
SAMPLE = unlimited
|
||||
PGM = ${ARCH}/$(SAMPLE).exe
|
||||
|
||||
MANAGERS = io event
|
||||
|
||||
C_FILES = init.c test1.c test2.c test3.c
|
||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
||||
|
||||
H_FILES = system.h
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
DOCTYPES = doc scn
|
||||
DOCS = $(DOCTYPES:%=$(SAMPLE).%)
|
||||
|
||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
PRINT_SRCS = $(DOCS)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
include $(top_srcdir)/sample.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
${PGM}: $(OBJS) $(LINK_FILES)
|
||||
$(make-exe)
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
@@ -1,127 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may in
|
||||
* the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
rtems_id task_id[MAX_TASKS];
|
||||
|
||||
void test1();
|
||||
void test2();
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument ignored
|
||||
)
|
||||
{
|
||||
rtems_task_priority old_priority;
|
||||
rtems_mode old_mode;
|
||||
rtems_unsigned32 task;
|
||||
|
||||
/* lower the task priority to allow created tasks to execute */
|
||||
|
||||
rtems_task_set_priority(RTEMS_SELF, 20, &old_priority);
|
||||
rtems_task_mode(RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode);
|
||||
|
||||
printf( "\n*** UNLIMITED TASK TEST ***\n" );
|
||||
|
||||
/*
|
||||
* Invalid state if the task id is 0
|
||||
*/
|
||||
|
||||
for (task = 0; task < MAX_TASKS; task++)
|
||||
task_id[task] = 0;
|
||||
|
||||
test1();
|
||||
test2();
|
||||
test3();
|
||||
|
||||
printf( "\n*** END OF UNLIMITED TASK TEST ***\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
|
||||
rtems_task test_task(
|
||||
rtems_task_argument my_number
|
||||
)
|
||||
{
|
||||
rtems_event_set out;
|
||||
|
||||
printf( "task %i has started.\n", my_number);
|
||||
|
||||
rtems_event_receive(1, RTEMS_WAIT | RTEMS_EVENT_ANY, 0, &out);
|
||||
|
||||
printf( "task %i ending.\n", my_number);
|
||||
|
||||
rtems_task_delete(RTEMS_SELF);
|
||||
}
|
||||
|
||||
void destory_all_tasks(
|
||||
const char *who
|
||||
)
|
||||
{
|
||||
rtems_unsigned32 task;
|
||||
|
||||
/*
|
||||
* If the id is not zero, signal the task to delete.
|
||||
*/
|
||||
|
||||
for (task = 0; task < MAX_TASKS; task++)
|
||||
if (task_id[task])
|
||||
{
|
||||
printf(" %s : signal task %08x to delete, ", who, task_id[task]);
|
||||
fflush(stdout);
|
||||
rtems_event_send(task_id[task], 1);
|
||||
task_id[task] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
boolean status_code_bad(
|
||||
rtems_status_code status_code
|
||||
)
|
||||
{
|
||||
if (status_code != RTEMS_SUCCESSFUL)
|
||||
{
|
||||
printf("failure, ");
|
||||
|
||||
if (status_code == RTEMS_TOO_MANY)
|
||||
{
|
||||
printf("too many.\n");
|
||||
return TRUE;
|
||||
}
|
||||
if (status_code == RTEMS_UNSATISFIED)
|
||||
{
|
||||
printf("unsatisfied.\n");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
printf("error code = %i\n", status_code);
|
||||
exit( 1 );
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
/* system.h
|
||||
*
|
||||
* This include file contains information that is included in every
|
||||
* function in the test set.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may in
|
||||
* the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
/* functions */
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
|
||||
rtems_task test_task(
|
||||
rtems_task_argument my_number
|
||||
);
|
||||
|
||||
void
|
||||
destory_all_tasks(
|
||||
const char *who
|
||||
);
|
||||
|
||||
boolean status_code_bad(
|
||||
rtems_status_code status_code
|
||||
);
|
||||
|
||||
void test1();
|
||||
void test2();
|
||||
void test3();
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define TASK_ALLOCATION_SIZE (5)
|
||||
#define CONFIGURE_MAXIMUM_TASKS rtems_resource_unlimited(TASK_ALLOCATION_SIZE)
|
||||
#define CONFIGURE_EXTRA_TASK_STACKS (62 * RTEMS_MINIMUM_STACK_SIZE)
|
||||
|
||||
|
||||
#include <confdefs.h>
|
||||
|
||||
/*
|
||||
* Keep track of the task id's created, use a large array.
|
||||
*/
|
||||
|
||||
#define MAX_TASKS (1000)
|
||||
#define TASK_INDEX_OFFSET (1)
|
||||
|
||||
extern rtems_id task_id[MAX_TASKS];
|
||||
|
||||
/*
|
||||
* Increment the task name.
|
||||
*/
|
||||
|
||||
#define NEXT_TASK_NAME(c1, c2, c3, c4) \
|
||||
if (c4 == '9') { \
|
||||
if (c3 == '9') { \
|
||||
if (c2 == 'z') { \
|
||||
if (c1 == 'z') { \
|
||||
printf("not enough task letters for names !!!\n"); \
|
||||
exit( 1 ); \
|
||||
} else \
|
||||
c1++; \
|
||||
c2 = 'a'; \
|
||||
} else \
|
||||
c2++; \
|
||||
c3 = '0'; \
|
||||
} else \
|
||||
c3++; \
|
||||
c4 = '0'; \
|
||||
} \
|
||||
else \
|
||||
c4++ \
|
||||
|
||||
|
||||
/* end of include file */
|
||||
@@ -1,106 +0,0 @@
|
||||
/* Test1
|
||||
*
|
||||
* This test uses a hack to disable suto-extend then checks to see only the
|
||||
* requested number of objects are allocated.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may in
|
||||
* the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include <rtems/score/object.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void test1()
|
||||
{
|
||||
boolean auto_extend;
|
||||
rtems_status_code result;
|
||||
rtems_unsigned32 task_count = 0;
|
||||
Objects_Information *the_information;
|
||||
|
||||
char c1 = 'a';
|
||||
char c2 = 'a';
|
||||
char c3 = '0';
|
||||
char c4 = '0';
|
||||
|
||||
printf( "\n TEST1 : auto-extend disabled.\n" );
|
||||
|
||||
/*
|
||||
* This is a major hack and only recommended for a test. Doing this
|
||||
* saves having another test.
|
||||
*/
|
||||
|
||||
the_information =
|
||||
_Objects_Information_table[OBJECTS_CLASSIC_API][OBJECTS_RTEMS_TASKS];
|
||||
auto_extend = the_information->auto_extend;
|
||||
the_information->auto_extend = FALSE;
|
||||
|
||||
while (task_count < MAX_TASKS)
|
||||
{
|
||||
rtems_name name;
|
||||
|
||||
printf(" TEST1 : creating task '%c%c%c%c', ", c1, c2, c3, c4);
|
||||
|
||||
name = rtems_build_name(c1, c2, c3, c4);
|
||||
|
||||
result = rtems_task_create(name,
|
||||
10,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
RTEMS_LOCAL,
|
||||
&task_id[task_count]);
|
||||
|
||||
if (status_code_bad(result))
|
||||
break;
|
||||
|
||||
printf("number = %3i, id = %08x, starting, ", task_count, task_id[task_count]);
|
||||
|
||||
fflush(stdout);
|
||||
result = rtems_task_start(task_id[task_count],
|
||||
test_task,
|
||||
(rtems_task_argument) task_count);
|
||||
|
||||
if (status_code_bad(result))
|
||||
break;
|
||||
|
||||
/*
|
||||
* Update the name.
|
||||
*/
|
||||
|
||||
NEXT_TASK_NAME(c1, c2, c3, c4);
|
||||
|
||||
task_count++;
|
||||
}
|
||||
|
||||
if (task_count >= MAX_TASKS)
|
||||
printf( "\nMAX_TASKS too small for work-space size, please make larger !!\n\n" );
|
||||
|
||||
if (task_count != (TASK_ALLOCATION_SIZE - 1)) {
|
||||
printf( " FAIL1 : the number of tasks does not equal the expected size -\n"
|
||||
" task created = %i, required number = %i\n",
|
||||
task_count, TASK_ALLOCATION_SIZE);
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
destory_all_tasks("TEST1");
|
||||
|
||||
the_information->auto_extend = auto_extend;
|
||||
|
||||
printf( " TEST1 : completed\n" );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,229 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may in
|
||||
* the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void test2()
|
||||
{
|
||||
rtems_status_code result;
|
||||
rtems_unsigned32 remove_task;
|
||||
rtems_unsigned32 task;
|
||||
rtems_unsigned32 block;
|
||||
rtems_unsigned32 task_count = 0;
|
||||
rtems_id removed_ids[TASK_ALLOCATION_SIZE * 2];
|
||||
|
||||
char c1 = 'a';
|
||||
char c2 = 'a';
|
||||
char c3 = '0';
|
||||
char c4 = '0';
|
||||
|
||||
printf( "\n TEST2 : re-allocate of index numbers, and a block free'ed and one inactive\n" );
|
||||
|
||||
/*
|
||||
* Allocate enought tasks so the Inactive list is empty. Remember
|
||||
* to count the Init task, ie ... - 1.
|
||||
*/
|
||||
|
||||
while (task_count < ((TASK_ALLOCATION_SIZE * 5) - TASK_INDEX_OFFSET))
|
||||
{
|
||||
rtems_name name;
|
||||
|
||||
printf(" TEST2 : creating task '%c%c%c%c', ", c1, c2, c3, c4);
|
||||
|
||||
name = rtems_build_name(c1, c2, c3, c4);
|
||||
|
||||
result = rtems_task_create(name,
|
||||
10,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
RTEMS_LOCAL,
|
||||
&task_id[task_count]);
|
||||
|
||||
if (status_code_bad(result))
|
||||
break;
|
||||
|
||||
printf("number = %3i, id = %08x, starting, ", task_count, task_id[task_count]);
|
||||
fflush(stdout);
|
||||
|
||||
result = rtems_task_start(task_id[task_count],
|
||||
test_task,
|
||||
(rtems_task_argument) task_count);
|
||||
|
||||
if (status_code_bad(result))
|
||||
break;
|
||||
|
||||
/*
|
||||
* Update the name.
|
||||
*/
|
||||
|
||||
NEXT_TASK_NAME(c1, c2, c3, c4);
|
||||
|
||||
task_count++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Take out the second and fourth allocation size block of tasks
|
||||
*/
|
||||
|
||||
if (task_count != ((TASK_ALLOCATION_SIZE * 5) - TASK_INDEX_OFFSET)) {
|
||||
printf( " FAIL2 : not enough tasks created -\n"
|
||||
" task created = %i, required number = %i\n",
|
||||
task_count, (TASK_ALLOCATION_SIZE * 5) - TASK_INDEX_OFFSET);
|
||||
destory_all_tasks("TEST2");
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
task = 0;
|
||||
|
||||
for (block = 1; block < 4; block += 2)
|
||||
{
|
||||
for (remove_task = (block * TASK_ALLOCATION_SIZE) - TASK_INDEX_OFFSET;
|
||||
remove_task < (((block + 1) * TASK_ALLOCATION_SIZE) - TASK_INDEX_OFFSET);
|
||||
remove_task++)
|
||||
{
|
||||
if (!task_id[remove_task])
|
||||
{
|
||||
printf( " FAIL2 : remove task has a 0 id -\n"
|
||||
" task number = %i\n",
|
||||
remove_task);
|
||||
destory_all_tasks("TEST2");
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
/*
|
||||
* Save the id's to match them against the reallocated ids
|
||||
*/
|
||||
|
||||
removed_ids[task++] = task_id[remove_task];
|
||||
|
||||
printf(" TEST2 : block %i remove, signal task %08x, ", block, task_id[remove_task]);
|
||||
rtems_event_send(task_id[remove_task], 1);
|
||||
task_id[remove_task] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (task = 0; task < (TASK_ALLOCATION_SIZE * 2); task++)
|
||||
{
|
||||
rtems_name name;
|
||||
rtems_unsigned32 id_slot;
|
||||
|
||||
/*
|
||||
* Find a free slot in the task id table.
|
||||
*/
|
||||
|
||||
for (id_slot = 0; id_slot < MAX_TASKS; id_slot++)
|
||||
if (!task_id[id_slot])
|
||||
break;
|
||||
|
||||
if (id_slot == MAX_TASKS)
|
||||
{
|
||||
printf( " FAIL2 : no free task id slot.\n");
|
||||
destory_all_tasks("TEST2");
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
printf(" TEST2 : creating task '%c%c%c%c', ", c1, c2, c3, c4);
|
||||
|
||||
name = rtems_build_name(c1, c2, c3, c4);
|
||||
|
||||
result = rtems_task_create(name,
|
||||
10,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
RTEMS_LOCAL,
|
||||
&task_id[id_slot]);
|
||||
|
||||
if (status_code_bad(result))
|
||||
{
|
||||
printf( " FAIL2 : re-creating a task -\n"
|
||||
" task number = %i\n",
|
||||
id_slot);
|
||||
destory_all_tasks("TEST2");
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
printf("number = %3i, id = %08x, starting, ", task_count, task_id[id_slot]);
|
||||
|
||||
result = rtems_task_start(task_id[id_slot],
|
||||
test_task,
|
||||
(rtems_task_argument) task_count);
|
||||
|
||||
if (status_code_bad(result))
|
||||
{
|
||||
printf( " FAIL : re-starting a task -\n"
|
||||
" task number = %i\n",
|
||||
id_slot);
|
||||
destory_all_tasks("TEST2");
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
/*
|
||||
* Update the name.
|
||||
*/
|
||||
|
||||
NEXT_TASK_NAME(c1, c2, c3, c4);
|
||||
|
||||
/*
|
||||
* Search the removed ids to see if it existed, clear the removed id when found
|
||||
*/
|
||||
|
||||
for (remove_task = 0; remove_task < (TASK_ALLOCATION_SIZE * 2); remove_task++)
|
||||
if (removed_ids[remove_task] == task_id[id_slot])
|
||||
{
|
||||
removed_ids[remove_task] = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* If not located in the removed id table, check and make sure it is not
|
||||
* already allocated
|
||||
*/
|
||||
|
||||
if (remove_task == (TASK_ALLOCATION_SIZE * 2))
|
||||
{
|
||||
rtems_unsigned32 allocated_id;
|
||||
|
||||
for (allocated_id = 0; allocated_id < MAX_TASKS; allocated_id++)
|
||||
if ((task_id[id_slot] == task_id[allocated_id]) && (id_slot != allocated_id))
|
||||
{
|
||||
printf( " FAIL2 : the new id is the same as an id already allocated -\n"
|
||||
" task id = %08x\n",
|
||||
task_id[id_slot]);
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
printf( " FAIL2 : could not find the task id in the removed table -\n"
|
||||
" task id = %08x\n",
|
||||
task_id[id_slot]);
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
task_count++;
|
||||
}
|
||||
|
||||
destory_all_tasks("TEST2");
|
||||
|
||||
printf( " TEST2 : completed\n" );
|
||||
}
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may in
|
||||
* the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void test3()
|
||||
{
|
||||
rtems_status_code result;
|
||||
rtems_unsigned32 remove_task;
|
||||
rtems_unsigned32 block;
|
||||
rtems_unsigned32 task_count = 0;
|
||||
|
||||
char c1 = 'a';
|
||||
char c2 = 'a';
|
||||
char c3 = '0';
|
||||
char c4 = '0';
|
||||
|
||||
printf( "\n TEST3 : free more than 3 x allocation size, but not the same block,\n"
|
||||
" then free a block\n");
|
||||
|
||||
/*
|
||||
* Check the value of the allocation unit
|
||||
*/
|
||||
|
||||
if (TASK_ALLOCATION_SIZE < 4)
|
||||
{
|
||||
printf( " FAIL3 : task allocation size must be greater than 4.\n");
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate as many tasks as possible.
|
||||
*/
|
||||
|
||||
while (task_count < MAX_TASKS)
|
||||
{
|
||||
rtems_name name;
|
||||
|
||||
printf(" TEST3 : creating task '%c%c%c%c', ", c1, c2, c3, c4);
|
||||
|
||||
name = rtems_build_name(c1, c2, c3, c4);
|
||||
|
||||
result = rtems_task_create(name,
|
||||
10,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
RTEMS_LOCAL,
|
||||
&task_id[task_count]);
|
||||
|
||||
if (status_code_bad(result))
|
||||
break;
|
||||
|
||||
printf("number = %3i, id = %08x, starting, ", task_count, task_id[task_count]);
|
||||
fflush(stdout);
|
||||
|
||||
result = rtems_task_start(task_id[task_count],
|
||||
test_task,
|
||||
(rtems_task_argument) task_count);
|
||||
|
||||
if (status_code_bad(result))
|
||||
break;
|
||||
|
||||
/*
|
||||
* Update the name.
|
||||
*/
|
||||
|
||||
NEXT_TASK_NAME(c1, c2, c3, c4);
|
||||
|
||||
task_count++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Take out 3 tasks from each block of allocated tasks. Do this for
|
||||
* allocation size number of blocks.
|
||||
*/
|
||||
|
||||
if (task_count < (TASK_ALLOCATION_SIZE * 11))
|
||||
{
|
||||
printf( " FAIL3 : not enough tasks created -\n"
|
||||
" task created = %i, required number = %i\n",
|
||||
task_count, (TASK_ALLOCATION_SIZE * 11));
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
for (block = 0; block < TASK_ALLOCATION_SIZE; block++)
|
||||
{
|
||||
for (remove_task = ((block * TASK_ALLOCATION_SIZE) - TASK_INDEX_OFFSET);
|
||||
remove_task < (((block * TASK_ALLOCATION_SIZE) + 3) - TASK_INDEX_OFFSET);
|
||||
remove_task++)
|
||||
{
|
||||
if (!task_id[remove_task])
|
||||
{
|
||||
printf( " FAIL3 : remove task has a 0 id -\n"
|
||||
" task number = %i\n",
|
||||
remove_task);
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
printf(" TEST3 : remove, signal task %08x, ", task_id[remove_task]);
|
||||
rtems_event_send(task_id[remove_task], 1);
|
||||
task_id[remove_task] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove a complete block, not the first, forces a scan of the blocks in the
|
||||
* allocator's free routine
|
||||
*/
|
||||
|
||||
for (remove_task = (TASK_ALLOCATION_SIZE - TASK_INDEX_OFFSET);
|
||||
remove_task < ((TASK_ALLOCATION_SIZE * 2) - - TASK_INDEX_OFFSET);
|
||||
remove_task++)
|
||||
{
|
||||
if (task_id[remove_task])
|
||||
{
|
||||
printf(" TEST3 : remove, signal task %08x, ", task_id[remove_task]);
|
||||
rtems_event_send(task_id[remove_task], 1);
|
||||
task_id[remove_task] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
destory_all_tasks("TEST3");
|
||||
|
||||
printf( " TEST3 : completed\n" );
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-1997.
|
||||
# On-Line Applications Research Corporation (OAR).
|
||||
#
|
||||
# The license and distribution terms for this file may in
|
||||
# the file LICENSE in this distribution or at
|
||||
# http://www.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
This file describes the directives and concepts tested by this test set.
|
||||
|
||||
test set name: test1
|
||||
|
||||
directives:
|
||||
_Object_Allocate, _Object_Free, _Object_Extend_information,
|
||||
_Object_Shrink_information
|
||||
|
||||
concepts:
|
||||
|
||||
a. Verifies when the auto-extend is false the number of objects does
|
||||
not grow, and the number of objects is the maximum number specified
|
||||
in the Configuration table.
|
||||
|
||||
b. Verify the re-allocation of index numbers, and a block of objects is
|
||||
freed while another remains yet all it objects are not in
|
||||
use. Four blocks of the allocation size of objects are created,
|
||||
then the first and third blocks are freed. Only the first
|
||||
block's memory will be released, while the second remains. This
|
||||
is due the allocation hystersis.
|
||||
|
||||
c. Allocate as many objects are the work-space can hold. Free objects
|
||||
from a number of blocks with-out freeing the blocks. Free the remaining
|
||||
blocks.
|
||||
|
||||
@@ -1,337 +0,0 @@
|
||||
|
||||
*** UNLIMITED TASK TEST ***
|
||||
|
||||
TEST1 : auto-extend disabled.
|
||||
TEST1 : creating task 'aa00', number = 0, id = 08010002, starting, task 0 has started.
|
||||
TEST1 : creating task 'aa01', number = 1, id = 08010003, starting, task 1 has started.
|
||||
TEST1 : creating task 'aa02', number = 2, id = 08010004, starting, task 2 has started.
|
||||
TEST1 : creating task 'aa03', number = 3, id = 08010005, starting, task 3 has started.
|
||||
TEST1 : creating task 'aa04', failure, too many.
|
||||
TEST1 : signal task 08010002 to delete, task 0 ending.
|
||||
TEST1 : signal task 08010003 to delete, task 1 ending.
|
||||
TEST1 : signal task 08010004 to delete, task 2 ending.
|
||||
TEST1 : signal task 08010005 to delete, task 3 ending.
|
||||
TEST1 : completed
|
||||
|
||||
TEST2 : re-allocate of index numbers, and a block free'ed and one inactive
|
||||
TEST2 : creating task 'aa00', number = 0, id = 08010002, starting, task 0 has started.
|
||||
TEST2 : creating task 'aa01', number = 1, id = 08010003, starting, task 1 has started.
|
||||
TEST2 : creating task 'aa02', number = 2, id = 08010004, starting, task 2 has started.
|
||||
TEST2 : creating task 'aa03', number = 3, id = 08010005, starting, task 3 has started.
|
||||
TEST2 : creating task 'aa04', number = 4, id = 08010006, starting, task 4 has started.
|
||||
TEST2 : creating task 'aa05', number = 5, id = 08010007, starting, task 5 has started.
|
||||
TEST2 : creating task 'aa06', number = 6, id = 08010008, starting, task 6 has started.
|
||||
TEST2 : creating task 'aa07', number = 7, id = 08010009, starting, task 7 has started.
|
||||
TEST2 : creating task 'aa08', number = 8, id = 0801000a, starting, task 8 has started.
|
||||
TEST2 : creating task 'aa09', number = 9, id = 0801000b, starting, task 9 has started.
|
||||
TEST2 : creating task 'aa10', number = 10, id = 0801000c, starting, task 10 has started.
|
||||
TEST2 : creating task 'aa11', number = 11, id = 0801000d, starting, task 11 has started.
|
||||
TEST2 : creating task 'aa12', number = 12, id = 0801000e, starting, task 12 has started.
|
||||
TEST2 : creating task 'aa13', number = 13, id = 0801000f, starting, task 13 has started.
|
||||
TEST2 : creating task 'aa14', number = 14, id = 08010010, starting, task 14 has started.
|
||||
TEST2 : creating task 'aa15', number = 15, id = 08010011, starting, task 15 has started.
|
||||
TEST2 : creating task 'aa16', number = 16, id = 08010012, starting, task 16 has started.
|
||||
TEST2 : creating task 'aa17', number = 17, id = 08010013, starting, task 17 has started.
|
||||
TEST2 : creating task 'aa18', number = 18, id = 08010014, starting, task 18 has started.
|
||||
TEST2 : creating task 'aa19', number = 19, id = 08010015, starting, task 19 has started.
|
||||
TEST2 : creating task 'aa20', number = 20, id = 08010016, starting, task 20 has started.
|
||||
TEST2 : creating task 'aa21', number = 21, id = 08010017, starting, task 21 has started.
|
||||
TEST2 : creating task 'aa22', number = 22, id = 08010018, starting, task 22 has started.
|
||||
TEST2 : creating task 'aa23', number = 23, id = 08010019, starting, task 23 has started.
|
||||
TEST2 : block 1 remove, signal task 08010006, task 4 ending.
|
||||
TEST2 : block 1 remove, signal task 08010007, task 5 ending.
|
||||
TEST2 : block 1 remove, signal task 08010008, task 6 ending.
|
||||
TEST2 : block 1 remove, signal task 08010009, task 7 ending.
|
||||
TEST2 : block 1 remove, signal task 0801000a, task 8 ending.
|
||||
TEST2 : block 3 remove, signal task 08010010, task 14 ending.
|
||||
TEST2 : block 3 remove, signal task 08010011, task 15 ending.
|
||||
TEST2 : block 3 remove, signal task 08010012, task 16 ending.
|
||||
TEST2 : block 3 remove, signal task 08010013, task 17 ending.
|
||||
TEST2 : block 3 remove, signal task 08010014, task 18 ending.
|
||||
TEST2 : creating task 'aa24', number = 24, id = 08010010, starting, task 24 has started.
|
||||
TEST2 : creating task 'aa25', number = 25, id = 08010011, starting, task 25 has started.
|
||||
TEST2 : creating task 'aa26', number = 26, id = 08010012, starting, task 26 has started.
|
||||
TEST2 : creating task 'aa27', number = 27, id = 08010013, starting, task 27 has started.
|
||||
TEST2 : creating task 'aa28', number = 28, id = 08010014, starting, task 28 has started.
|
||||
TEST2 : creating task 'aa29', number = 29, id = 08010006, starting, task 29 has started.
|
||||
TEST2 : creating task 'aa30', number = 30, id = 08010007, starting, task 30 has started.
|
||||
TEST2 : creating task 'aa31', number = 31, id = 08010008, starting, task 31 has started.
|
||||
TEST2 : creating task 'aa32', number = 32, id = 08010009, starting, task 32 has started.
|
||||
TEST2 : creating task 'aa33', number = 33, id = 0801000a, starting, task 33 has started.
|
||||
TEST2 : signal task 08010002 to delete, task 0 ending.
|
||||
TEST2 : signal task 08010003 to delete, task 1 ending.
|
||||
TEST2 : signal task 08010004 to delete, task 2 ending.
|
||||
TEST2 : signal task 08010005 to delete, task 3 ending.
|
||||
TEST2 : signal task 08010010 to delete, task 24 ending.
|
||||
TEST2 : signal task 08010011 to delete, task 25 ending.
|
||||
TEST2 : signal task 08010012 to delete, task 26 ending.
|
||||
TEST2 : signal task 08010013 to delete, task 27 ending.
|
||||
TEST2 : signal task 08010014 to delete, task 28 ending.
|
||||
TEST2 : signal task 0801000b to delete, task 9 ending.
|
||||
TEST2 : signal task 0801000c to delete, task 10 ending.
|
||||
TEST2 : signal task 0801000d to delete, task 11 ending.
|
||||
TEST2 : signal task 0801000e to delete, task 12 ending.
|
||||
TEST2 : signal task 0801000f to delete, task 13 ending.
|
||||
TEST2 : signal task 08010006 to delete, task 29 ending.
|
||||
TEST2 : signal task 08010007 to delete, task 30 ending.
|
||||
TEST2 : signal task 08010008 to delete, task 31 ending.
|
||||
TEST2 : signal task 08010009 to delete, task 32 ending.
|
||||
TEST2 : signal task 0801000a to delete, task 33 ending.
|
||||
TEST2 : signal task 08010015 to delete, task 19 ending.
|
||||
TEST2 : signal task 08010016 to delete, task 20 ending.
|
||||
TEST2 : signal task 08010017 to delete, task 21 ending.
|
||||
TEST2 : signal task 08010018 to delete, task 22 ending.
|
||||
TEST2 : signal task 08010019 to delete, task 23 ending.
|
||||
TEST2 : completed
|
||||
TEST3 : free more than 3 x allocation size, but not the same block,
|
||||
then free a block
|
||||
TEST3 : creating task 'aa00', number = 0, id = 08010002, starting, task 0 has started.
|
||||
TEST3 : creating task 'aa01', number = 1, id = 08010003, starting, task 1 has started.
|
||||
TEST3 : creating task 'aa02', number = 2, id = 08010004, starting, task 2 has started.
|
||||
TEST3 : creating task 'aa03', number = 3, id = 08010005, starting, task 3 has started.
|
||||
TEST3 : creating task 'aa04', number = 4, id = 08010015, starting, task 4 has started.
|
||||
TEST3 : creating task 'aa05', number = 5, id = 08010016, starting, task 5 has started.
|
||||
TEST3 : creating task 'aa06', number = 6, id = 08010017, starting, task 6 has started.
|
||||
TEST3 : creating task 'aa07', number = 7, id = 08010018, starting, task 7 has started.
|
||||
TEST3 : creating task 'aa08', number = 8, id = 08010019, starting, task 8 has started.
|
||||
TEST3 : creating task 'aa09', number = 9, id = 08010006, starting, task 9 has started.
|
||||
TEST3 : creating task 'aa10', number = 10, id = 08010007, starting, task 10 has started.
|
||||
TEST3 : creating task 'aa11', number = 11, id = 08010008, starting, task 11 has started.
|
||||
TEST3 : creating task 'aa12', number = 12, id = 08010009, starting, task 12 has started.
|
||||
TEST3 : creating task 'aa13', number = 13, id = 0801000a, starting, task 13 has started.
|
||||
TEST3 : creating task 'aa14', number = 14, id = 0801000b, starting, task 14 has started.
|
||||
TEST3 : creating task 'aa15', number = 15, id = 0801000c, starting, task 15 has started.
|
||||
TEST3 : creating task 'aa16', number = 16, id = 0801000d, starting, task 16 has started.
|
||||
TEST3 : creating task 'aa17', number = 17, id = 0801000e, starting, task 17 has started.
|
||||
TEST3 : creating task 'aa18', number = 18, id = 0801000f, starting, task 18 has started.
|
||||
TEST3 : creating task 'aa19', number = 19, id = 08010010, starting, task 19 has started.
|
||||
TEST3 : creating task 'aa20', number = 20, id = 08010011, starting, task 20 has started.
|
||||
TEST3 : creating task 'aa21', number = 21, id = 08010012, starting, task 21 has started.
|
||||
TEST3 : creating task 'aa22', number = 22, id = 08010013, starting, task 22 has started.
|
||||
TEST3 : creating task 'aa23', number = 23, id = 08010014, starting, task 23 has started.
|
||||
TEST3 : creating task 'aa24', number = 24, id = 0801001a, starting, task 24 has started.
|
||||
TEST3 : creating task 'aa25', number = 25, id = 0801001b, starting, task 25 has started.
|
||||
TEST3 : creating task 'aa26', number = 26, id = 0801001c, starting, task 26 has started.
|
||||
TEST3 : creating task 'aa27', number = 27, id = 0801001d, starting, task 27 has started.
|
||||
TEST3 : creating task 'aa28', number = 28, id = 0801001e, starting, task 28 has started.
|
||||
TEST3 : creating task 'aa29', number = 29, id = 0801001f, starting, task 29 has started.
|
||||
TEST3 : creating task 'aa30', number = 30, id = 08010020, starting, task 30 has started.
|
||||
TEST3 : creating task 'aa31', number = 31, id = 08010021, starting, task 31 has started.
|
||||
TEST3 : creating task 'aa32', number = 32, id = 08010022, starting, task 32 has started.
|
||||
TEST3 : creating task 'aa33', number = 33, id = 08010023, starting, task 33 has started.
|
||||
TEST3 : creating task 'aa34', number = 34, id = 08010024, starting, task 34 has started.
|
||||
TEST3 : creating task 'aa35', number = 35, id = 08010025, starting, task 35 has started.
|
||||
TEST3 : creating task 'aa36', number = 36, id = 08010026, starting, task 36 has started.
|
||||
TEST3 : creating task 'aa37', number = 37, id = 08010027, starting, task 37 has started.
|
||||
TEST3 : creating task 'aa38', number = 38, id = 08010028, starting, task 38 has started.
|
||||
TEST3 : creating task 'aa39', number = 39, id = 08010029, starting, task 39 has started.
|
||||
TEST3 : creating task 'aa40', number = 40, id = 0801002a, starting, task 40 has started.
|
||||
TEST3 : creating task 'aa41', number = 41, id = 0801002b, starting, task 41 has started.
|
||||
TEST3 : creating task 'aa42', number = 42, id = 0801002c, starting, task 42 has started.
|
||||
TEST3 : creating task 'aa43', number = 43, id = 0801002d, starting, task 43 has started.
|
||||
TEST3 : creating task 'aa44', number = 44, id = 0801002e, starting, task 44 has started.
|
||||
TEST3 : creating task 'aa45', number = 45, id = 0801002f, starting, task 45 has started.
|
||||
TEST3 : creating task 'aa46', number = 46, id = 08010030, starting, task 46 has started.
|
||||
TEST3 : creating task 'aa47', number = 47, id = 08010031, starting, task 47 has started.
|
||||
TEST3 : creating task 'aa48', number = 48, id = 08010032, starting, task 48 has started.
|
||||
TEST3 : creating task 'aa49', number = 49, id = 08010033, starting, task 49 has started.
|
||||
TEST3 : creating task 'aa50', number = 50, id = 08010034, starting, task 50 has started.
|
||||
TEST3 : creating task 'aa51', number = 51, id = 08010035, starting, task 51 has started.
|
||||
TEST3 : creating task 'aa52', number = 52, id = 08010036, starting, task 52 has started.
|
||||
TEST3 : creating task 'aa53', number = 53, id = 08010037, starting, task 53 has started.
|
||||
TEST3 : creating task 'aa54', number = 54, id = 08010038, starting, task 54 has started.
|
||||
TEST3 : creating task 'aa55', number = 55, id = 08010039, starting, task 55 has started.
|
||||
TEST3 : creating task 'aa56', number = 56, id = 0801003a, starting, task 56 has started.
|
||||
TEST3 : creating task 'aa57', number = 57, id = 0801003b, starting, task 57 has started.
|
||||
TEST3 : creating task 'aa58', number = 58, id = 0801003c, starting, task 58 has started.
|
||||
TEST3 : creating task 'aa59', number = 59, id = 0801003d, starting, task 59 has started.
|
||||
TEST3 : creating task 'aa60', number = 60, id = 0801003e, starting, task 60 has started.
|
||||
TEST3 : creating task 'aa61', number = 61, id = 0801003f, starting, task 61 has started.
|
||||
TEST3 : creating task 'aa62', number = 62, id = 08010040, starting, task 62 has started.
|
||||
TEST3 : creating task 'aa63', number = 63, id = 08010041, starting, task 63 has started.
|
||||
TEST3 : creating task 'aa64', number = 64, id = 08010042, starting, task 64 has started.
|
||||
TEST3 : creating task 'aa65', number = 65, id = 08010043, starting, task 65 has started.
|
||||
TEST3 : creating task 'aa66', number = 66, id = 08010044, starting, task 66 has started.
|
||||
TEST3 : creating task 'aa67', number = 67, id = 08010045, starting, task 67 has started.
|
||||
TEST3 : creating task 'aa68', number = 68, id = 08010046, starting, task 68 has started.
|
||||
TEST3 : creating task 'aa69', number = 69, id = 08010047, starting, task 69 has started.
|
||||
TEST3 : creating task 'aa70', number = 70, id = 08010048, starting, task 70 has started.
|
||||
TEST3 : creating task 'aa71', number = 71, id = 08010049, starting, task 71 has started.
|
||||
TEST3 : creating task 'aa72', number = 72, id = 0801004a, starting, task 72 has started.
|
||||
TEST3 : creating task 'aa73', number = 73, id = 0801004b, starting, task 73 has started.
|
||||
TEST3 : creating task 'aa74', number = 74, id = 0801004c, starting, task 74 has started.
|
||||
TEST3 : creating task 'aa75', number = 75, id = 0801004d, starting, task 75 has started.
|
||||
TEST3 : creating task 'aa76', number = 76, id = 0801004e, starting, task 76 has started.
|
||||
TEST3 : creating task 'aa77', number = 77, id = 0801004f, starting, task 77 has started.
|
||||
TEST3 : creating task 'aa78', number = 78, id = 08010050, starting, task 78 has started.
|
||||
TEST3 : creating task 'aa79', number = 79, id = 08010051, starting, task 79 has started.
|
||||
TEST3 : creating task 'aa80', number = 80, id = 08010052, starting, task 80 has started.
|
||||
TEST3 : creating task 'aa81', number = 81, id = 08010053, starting, task 81 has started.
|
||||
TEST3 : creating task 'aa82', number = 82, id = 08010054, starting, task 82 has started.
|
||||
TEST3 : creating task 'aa83', number = 83, id = 08010055, starting, task 83 has started.
|
||||
TEST3 : creating task 'aa84', number = 84, id = 08010056, starting, task 84 has started.
|
||||
TEST3 : creating task 'aa85', number = 85, id = 08010057, starting, task 85 has started.
|
||||
TEST3 : creating task 'aa86', number = 86, id = 08010058, starting, task 86 has started.
|
||||
TEST3 : creating task 'aa87', number = 87, id = 08010059, starting, task 87 has started.
|
||||
TEST3 : creating task 'aa88', number = 88, id = 0801005a, starting, task 88 has started.
|
||||
TEST3 : creating task 'aa89', number = 89, id = 0801005b, starting, task 89 has started.
|
||||
TEST3 : creating task 'aa90', number = 90, id = 0801005c, starting, task 90 has started.
|
||||
TEST3 : creating task 'aa91', number = 91, id = 0801005d, starting, task 91 has started.
|
||||
TEST3 : creating task 'aa92', number = 92, id = 0801005e, starting, task 92 has started.
|
||||
TEST3 : creating task 'aa93', number = 93, id = 0801005f, starting, task 93 has started.
|
||||
TEST3 : creating task 'aa94', number = 94, id = 08010060, starting, task 94 has started.
|
||||
TEST3 : creating task 'aa95', number = 95, id = 08010061, starting, task 95 has started.
|
||||
TEST3 : creating task 'aa96', number = 96, id = 08010062, starting, task 96 has started.
|
||||
TEST3 : creating task 'aa97', number = 97, id = 08010063, starting, task 97 has started.
|
||||
TEST3 : creating task 'aa98', number = 98, id = 08010064, starting, task 98 has started.
|
||||
TEST3 : creating task 'aa99', number = 99, id = 08010065, starting, task 99 has started.
|
||||
TEST3 : creating task 'ab00', number = 100, id = 08010066, starting, task 100 has started.
|
||||
TEST3 : creating task 'ab01', number = 101, id = 08010067, starting, task 101 has started.
|
||||
TEST3 : creating task 'ab02', number = 102, id = 08010068, starting, task 102 has started.
|
||||
TEST3 : creating task 'ab03', number = 103, id = 08010069, starting, task 103 has started.
|
||||
TEST3 : creating task 'ab04', number = 104, id = 0801006a, starting, task 104 has started.
|
||||
TEST3 : creating task 'ab05', number = 105, id = 0801006b, starting, task 105 has started.
|
||||
TEST3 : creating task 'ab06', number = 106, id = 0801006c, starting, task 106 has started.
|
||||
TEST3 : creating task 'ab07', number = 107, id = 0801006d, starting, task 107 has started.
|
||||
TEST3 : creating task 'ab08', number = 108, id = 0801006e, starting, task 108 has started.
|
||||
TEST3 : creating task 'ab09', number = 109, id = 0801006f, starting, task 109 has started.
|
||||
TEST3 : creating task 'ab10', number = 110, id = 08010070, starting, task 110 has started.
|
||||
TEST3 : creating task 'ab11', number = 111, id = 08010071, starting, task 111 has started.
|
||||
TEST3 : creating task 'ab12', number = 112, id = 08010072, starting, task 112 has started.
|
||||
TEST3 : creating task 'ab13', number = 113, id = 08010073, starting, task 113 has started.
|
||||
TEST3 : creating task 'ab14', number = 114, id = 08010074, starting, task 114 has started.
|
||||
TEST3 : creating task 'ab15', number = 115, id = 08010075, starting, task 115 has started.
|
||||
TEST3 : creating task 'ab16', number = 116, id = 08010076, starting, task 116 has started.
|
||||
TEST3 : creating task 'ab17', number = 117, id = 08010077, starting, task 117 has started.
|
||||
TEST3 : creating task 'ab18', number = 118, id = 08010078, starting, task 118 has started.
|
||||
TEST3 : creating task 'ab19', number = 119, id = 08010079, starting, task 119 has started.
|
||||
TEST3 : creating task 'ab20', number = 120, id = 0801007a, starting, task 120 has started.
|
||||
TEST3 : creating task 'ab21', failure, unsatisfied.
|
||||
TEST3 : remove, signal task 08010015, task 4 ending.
|
||||
TEST3 : remove, signal task 08010016, task 5 ending.
|
||||
TEST3 : remove, signal task 08010017, task 6 ending.
|
||||
TEST3 : remove, signal task 08010006, task 9 ending.
|
||||
TEST3 : remove, signal task 08010007, task 10 ending.
|
||||
TEST3 : remove, signal task 08010008, task 11 ending.
|
||||
TEST3 : remove, signal task 0801000b, task 14 ending.
|
||||
TEST3 : remove, signal task 0801000c, task 15 ending.
|
||||
TEST3 : remove, signal task 0801000d, task 16 ending.
|
||||
TEST3 : remove, signal task 08010010, task 19 ending.
|
||||
TEST3 : remove, signal task 08010011, task 20 ending.
|
||||
TEST3 : remove, signal task 08010012, task 21 ending.
|
||||
TEST3 : remove, signal task 08010018, task 7 ending.
|
||||
TEST3 : remove, signal task 08010019, task 8 ending.
|
||||
TEST3 : signal task 08010002 to delete, task 0 ending.
|
||||
TEST3 : signal task 08010003 to delete, task 1 ending.
|
||||
TEST3 : signal task 08010004 to delete, task 2 ending.
|
||||
TEST3 : signal task 08010005 to delete, task 3 ending.
|
||||
TEST3 : signal task 08010009 to delete, task 12 ending.
|
||||
TEST3 : signal task 0801000a to delete, task 13 ending.
|
||||
TEST3 : signal task 0801000e to delete, task 17 ending.
|
||||
TEST3 : signal task 0801000f to delete, task 18 ending.
|
||||
TEST3 : signal task 08010013 to delete, task 22 ending.
|
||||
TEST3 : signal task 08010014 to delete, task 23 ending.
|
||||
TEST3 : signal task 0801001a to delete, task 24 ending.
|
||||
TEST3 : signal task 0801001b to delete, task 25 ending.
|
||||
TEST3 : signal task 0801001c to delete, task 26 ending.
|
||||
TEST3 : signal task 0801001d to delete, task 27 ending.
|
||||
TEST3 : signal task 0801001e to delete, task 28 ending.
|
||||
TEST3 : signal task 0801001f to delete, task 29 ending.
|
||||
TEST3 : signal task 08010020 to delete, task 30 ending.
|
||||
TEST3 : signal task 08010021 to delete, task 31 ending.
|
||||
TEST3 : signal task 08010022 to delete, task 32 ending.
|
||||
TEST3 : signal task 08010023 to delete, task 33 ending.
|
||||
TEST3 : signal task 08010024 to delete, task 34 ending.
|
||||
TEST3 : signal task 08010025 to delete, task 35 ending.
|
||||
TEST3 : signal task 08010026 to delete, task 36 ending.
|
||||
TEST3 : signal task 08010027 to delete, task 37 ending.
|
||||
TEST3 : signal task 08010028 to delete, task 38 ending.
|
||||
TEST3 : signal task 08010029 to delete, task 39 ending.
|
||||
TEST3 : signal task 0801002a to delete, task 40 ending.
|
||||
TEST3 : signal task 0801002b to delete, task 41 ending.
|
||||
TEST3 : signal task 0801002c to delete, task 42 ending.
|
||||
TEST3 : signal task 0801002d to delete, task 43 ending.
|
||||
TEST3 : signal task 0801002e to delete, task 44 ending.
|
||||
TEST3 : signal task 0801002f to delete, task 45 ending.
|
||||
TEST3 : signal task 08010030 to delete, task 46 ending.
|
||||
TEST3 : signal task 08010031 to delete, task 47 ending.
|
||||
TEST3 : signal task 08010032 to delete, task 48 ending.
|
||||
TEST3 : signal task 08010033 to delete, task 49 ending.
|
||||
TEST3 : signal task 08010034 to delete, task 50 ending.
|
||||
TEST3 : signal task 08010035 to delete, task 51 ending.
|
||||
TEST3 : signal task 08010036 to delete, task 52 ending.
|
||||
TEST3 : signal task 08010037 to delete, task 53 ending.
|
||||
TEST3 : signal task 08010038 to delete, task 54 ending.
|
||||
TEST3 : signal task 08010039 to delete, task 55 ending.
|
||||
TEST3 : signal task 0801003a to delete, task 56 ending.
|
||||
TEST3 : signal task 0801003b to delete, task 57 ending.
|
||||
TEST3 : signal task 0801003c to delete, task 58 ending.
|
||||
TEST3 : signal task 0801003d to delete, task 59 ending.
|
||||
TEST3 : signal task 0801003e to delete, task 60 ending.
|
||||
TEST3 : signal task 0801003f to delete, task 61 ending.
|
||||
TEST3 : signal task 08010040 to delete, task 62 ending.
|
||||
TEST3 : signal task 08010041 to delete, task 63 ending.
|
||||
TEST3 : signal task 08010042 to delete, task 64 ending.
|
||||
TEST3 : signal task 08010043 to delete, task 65 ending.
|
||||
TEST3 : signal task 08010044 to delete, task 66 ending.
|
||||
TEST3 : signal task 08010045 to delete, task 67 ending.
|
||||
TEST3 : signal task 08010046 to delete, task 68 ending.
|
||||
TEST3 : signal task 08010047 to delete, task 69 ending.
|
||||
TEST3 : signal task 08010048 to delete, task 70 ending.
|
||||
TEST3 : signal task 08010049 to delete, task 71 ending.
|
||||
TEST3 : signal task 0801004a to delete, task 72 ending.
|
||||
TEST3 : signal task 0801004b to delete, task 73 ending.
|
||||
TEST3 : signal task 0801004c to delete, task 74 ending.
|
||||
TEST3 : signal task 0801004d to delete, task 75 ending.
|
||||
TEST3 : signal task 0801004e to delete, task 76 ending.
|
||||
TEST3 : signal task 0801004f to delete, task 77 ending.
|
||||
TEST3 : signal task 08010050 to delete, task 78 ending.
|
||||
TEST3 : signal task 08010051 to delete, task 79 ending.
|
||||
TEST3 : signal task 08010052 to delete, task 80 ending.
|
||||
TEST3 : signal task 08010053 to delete, task 81 ending.
|
||||
TEST3 : signal task 08010054 to delete, task 82 ending.
|
||||
TEST3 : signal task 08010055 to delete, task 83 ending.
|
||||
TEST3 : signal task 08010056 to delete, task 84 ending.
|
||||
TEST3 : signal task 08010057 to delete, task 85 ending.
|
||||
TEST3 : signal task 08010058 to delete, task 86 ending.
|
||||
TEST3 : signal task 08010059 to delete, task 87 ending.
|
||||
TEST3 : signal task 0801005a to delete, task 88 ending.
|
||||
TEST3 : signal task 0801005b to delete, task 89 ending.
|
||||
TEST3 : signal task 0801005c to delete, task 90 ending.
|
||||
TEST3 : signal task 0801005d to delete, task 91 ending.
|
||||
TEST3 : signal task 0801005e to delete, task 92 ending.
|
||||
TEST3 : signal task 0801005f to delete, task 93 ending.
|
||||
TEST3 : signal task 08010060 to delete, task 94 ending.
|
||||
TEST3 : signal task 08010061 to delete, task 95 ending.
|
||||
TEST3 : signal task 08010062 to delete, task 96 ending.
|
||||
TEST3 : signal task 08010063 to delete, task 97 ending.
|
||||
TEST3 : signal task 08010064 to delete, task 98 ending.
|
||||
TEST3 : signal task 08010065 to delete, task 99 ending.
|
||||
TEST3 : signal task 08010066 to delete, task 100 ending.
|
||||
TEST3 : signal task 08010067 to delete, task 101 ending.
|
||||
TEST3 : signal task 08010068 to delete, task 102 ending.
|
||||
TEST3 : signal task 08010069 to delete, task 103 ending.
|
||||
TEST3 : signal task 0801006a to delete, task 104 ending.
|
||||
TEST3 : signal task 0801006b to delete, task 105 ending.
|
||||
TEST3 : signal task 0801006c to delete, task 106 ending.
|
||||
TEST3 : signal task 0801006d to delete, task 107 ending.
|
||||
TEST3 : signal task 0801006e to delete, task 108 ending.
|
||||
TEST3 : signal task 0801006f to delete, task 109 ending.
|
||||
TEST3 : signal task 08010070 to delete, task 110 ending.
|
||||
TEST3 : signal task 08010071 to delete, task 111 ending.
|
||||
TEST3 : signal task 08010072 to delete, task 112 ending.
|
||||
TEST3 : signal task 08010073 to delete, task 113 ending.
|
||||
TEST3 : signal task 08010074 to delete, task 114 ending.
|
||||
TEST3 : signal task 08010075 to delete, task 115 ending.
|
||||
TEST3 : signal task 08010076 to delete, task 116 ending.
|
||||
TEST3 : signal task 08010077 to delete, task 117 ending.
|
||||
TEST3 : signal task 08010078 to delete, task 118 ending.
|
||||
TEST3 : signal task 08010079 to delete, task 119 ending.
|
||||
TEST3 : signal task 0801007a to delete, task 120 ending.
|
||||
TEST3 : completed
|
||||
|
||||
*** END OF UNLIMITED TASK TEST ***
|
||||
|
||||
NOTE: The failures are expected. This is the limiting factor, memory in the
|
||||
work-space.
|
||||
NOTE: The number of tasks may vary due to the size of the work-space.
|
||||
Reference in New Issue
Block a user