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:
Ralf Corsepius
2003-11-11 00:57:23 +00:00
parent 04e934a89e
commit 532f51ce42
85 changed files with 0 additions and 7156 deletions

View File

@@ -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

View File

@@ -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.

View 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

View File

@@ -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.

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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 );
}

View File

@@ -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 );
}

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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.
#

View File

@@ -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 ***

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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.
#

View File

@@ -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 ***

View File

@@ -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 */

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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 );
}

View File

@@ -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.
#

View File

@@ -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 ***

View File

@@ -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 );
}

View File

@@ -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 */

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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);
}

View File

@@ -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 */

View 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

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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.

View File

@@ -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();
}

View File

@@ -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 */

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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.
#

View File

@@ -1,3 +0,0 @@
*** HELLO WORLD TEST ***
Hello World
*** END OF HELLO WORLD TEST ***

View File

@@ -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 );
}

View File

@@ -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 */

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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.

View File

@@ -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);
}

View File

@@ -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.

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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 */

View File

@@ -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.
#

View File

@@ -1 +0,0 @@
*** TEST SHOULD NOT BE RUN ***

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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

View File

@@ -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.
#

View File

@@ -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 */

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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)

View File

@@ -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

View File

@@ -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.

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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

View File

@@ -1,9 +0,0 @@
/dev/tty00
57600
crtscts
passive
local
noauth
debug
persist
192.168.2.222:192.168.2.111

View File

@@ -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 );
}

View File

@@ -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

View File

@@ -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

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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 );
}

View File

@@ -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 */

View 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() );
}
}

View File

@@ -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.
#

View File

@@ -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 ***

View File

@@ -1,2 +0,0 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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 */

View 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" );
}

View File

@@ -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" );
}

View File

@@ -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" );
}

View File

@@ -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.

View File

@@ -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.