forked from Imagelibrary/rtems
2003-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* cpuuse/.cvsignore: Remove. * cpuuse/Makefile.am: Remove. * cpuuse/cpuuse.scn: Remove. * cpuuse/init.c: Remove. * cpuuse/system.h: Remove. * cpuuse/task1.c: Remove. * cpuuse/task2.c: Remove. * cpuuse/task3.c: Remove. * cpuuse/tswitch.c: Remove. * .cvsignore: Remove. * ChangeLog: Remove. * Makefile.am: Remove. * README: Remove. * configure.ac: Remove. * libtests.am: Remove. * malloctest/.cvsignore: Remove. * malloctest/Makefile.am: Remove. * malloctest/init.c: Remove. * malloctest/malloctest.scn: Remove. * malloctest/system.h: Remove. * malloctest/task1.c: Remove. * monitor/.cvsignore: Remove. * monitor/Makefile.am: Remove. * monitor/init.c: Remove. * monitor/system.h: Remove. * putenvtest/.cvsignore: Remove. * putenvtest/Makefile.am: Remove. * putenvtest/init.c: Remove. * rtems++/.cvsignore: Remove. * rtems++/Init.cc: Remove. * rtems++/Makefile.am: Remove. * rtems++/System.h: Remove. * rtems++/Task1.cc: Remove. * rtems++/Task2.cc: Remove. * rtems++/Task3.cc: Remove. * rtems++/rtems++.doc: Remove. * rtems++/rtems++.scn: Remove. * rtmonuse/.cvsignore: Remove. * rtmonuse/Makefile.am: Remove. * rtmonuse/getall.c: Remove. * rtmonuse/init.c: Remove. * rtmonuse/rtmonuse.scn: Remove. * rtmonuse/system.h: Remove. * rtmonuse/task1.c: Remove. * stackchk/.cvsignore: Remove. * stackchk/Makefile.am: Remove. * stackchk/blow.c: Remove. * stackchk/init.c: Remove. * stackchk/stackchk.scn: Remove. * stackchk/system.h: Remove. * stackchk/task1.c: Remove. * termios/.cvsignore: Remove. * termios/Makefile.am: Remove. * termios/README: Remove. * termios/init.c: Remove.
This commit is contained in:
@@ -1,14 +0,0 @@
|
|||||||
aclocal.m4
|
|
||||||
autom4te*.cache
|
|
||||||
config.cache
|
|
||||||
config.guess
|
|
||||||
config.log
|
|
||||||
config.status
|
|
||||||
config.sub
|
|
||||||
configure
|
|
||||||
depcomp
|
|
||||||
install-sh
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
missing
|
|
||||||
mkinstalldirs
|
|
||||||
@@ -1,226 +0,0 @@
|
|||||||
2003-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* cpuuse/.cvsignore: Remove.
|
|
||||||
* cpuuse/Makefile.am: Remove.
|
|
||||||
* cpuuse/cpuuse.scn: Remove.
|
|
||||||
* cpuuse/init.c: Remove.
|
|
||||||
* cpuuse/system.h: Remove.
|
|
||||||
* cpuuse/task1.c: Remove.
|
|
||||||
* cpuuse/task2.c: Remove.
|
|
||||||
* cpuuse/task3.c: Remove.
|
|
||||||
* cpuuse/tswitch.c: Remove.
|
|
||||||
* .cvsignore: Remove.
|
|
||||||
* ChangeLog: Remove.
|
|
||||||
* Makefile.am: Remove.
|
|
||||||
* README: Remove.
|
|
||||||
* configure.ac: Remove.
|
|
||||||
* libtests.am: Remove.
|
|
||||||
* malloctest/.cvsignore: Remove.
|
|
||||||
* malloctest/Makefile.am: Remove.
|
|
||||||
* malloctest/init.c: Remove.
|
|
||||||
* malloctest/malloctest.scn: Remove.
|
|
||||||
* malloctest/system.h: Remove.
|
|
||||||
* malloctest/task1.c: Remove.
|
|
||||||
* monitor/.cvsignore: Remove.
|
|
||||||
* monitor/Makefile.am: Remove.
|
|
||||||
* monitor/init.c: Remove.
|
|
||||||
* monitor/system.h: Remove.
|
|
||||||
* putenvtest/.cvsignore: Remove.
|
|
||||||
* putenvtest/Makefile.am: Remove.
|
|
||||||
* putenvtest/init.c: Remove.
|
|
||||||
* rtems++/.cvsignore: Remove.
|
|
||||||
* rtems++/Init.cc: Remove.
|
|
||||||
* rtems++/Makefile.am: Remove.
|
|
||||||
* rtems++/System.h: Remove.
|
|
||||||
* rtems++/Task1.cc: Remove.
|
|
||||||
* rtems++/Task2.cc: Remove.
|
|
||||||
* rtems++/Task3.cc: Remove.
|
|
||||||
* rtems++/rtems++.doc: Remove.
|
|
||||||
* rtems++/rtems++.scn: Remove.
|
|
||||||
* rtmonuse/.cvsignore: Remove.
|
|
||||||
* rtmonuse/Makefile.am: Remove.
|
|
||||||
* rtmonuse/getall.c: Remove.
|
|
||||||
* rtmonuse/init.c: Remove.
|
|
||||||
* rtmonuse/rtmonuse.scn: Remove.
|
|
||||||
* rtmonuse/system.h: Remove.
|
|
||||||
* rtmonuse/task1.c: Remove.
|
|
||||||
* stackchk/.cvsignore: Remove.
|
|
||||||
* stackchk/Makefile.am: Remove.
|
|
||||||
* stackchk/blow.c: Remove.
|
|
||||||
* stackchk/init.c: Remove.
|
|
||||||
* stackchk/stackchk.scn: Remove.
|
|
||||||
* stackchk/system.h: Remove.
|
|
||||||
* stackchk/task1.c: Remove.
|
|
||||||
* termios/.cvsignore: Remove.
|
|
||||||
* termios/Makefile.am: Remove.
|
|
||||||
* termios/README: Remove.
|
|
||||||
* termios/init.c: Remove.
|
|
||||||
|
|
||||||
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-04 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* cpuuse/init.c, cpuuse/system.h, cpuuse/task1.c, cpuuse/task2.c,
|
|
||||||
cpuuse/task3.c, cpuuse/tswitch.c, malloctest/init.c,
|
|
||||||
malloctest/system.h, malloctest/task1.c, monitor/init.c,
|
|
||||||
monitor/system.h, putenvtest/init.c, rtems++/Init.cc,
|
|
||||||
rtems++/System.h, rtems++/Task1.cc, rtems++/Task2.cc,
|
|
||||||
rtems++/Task3.cc, rtems++/rtems++.doc, rtmonuse/getall.c,
|
|
||||||
rtmonuse/init.c, rtmonuse/system.h, rtmonuse/task1.c,
|
|
||||||
stackchk/blow.c, stackchk/init.c, stackchk/system.h,
|
|
||||||
stackchk/task1.c: 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/.
|
|
||||||
* cpuuse/Makefile.am: Reflect having moved automake/.
|
|
||||||
* malloctest/Makefile.am: Reflect having moved automake/.
|
|
||||||
* monitor/Makefile.am: Reflect having moved automake/.
|
|
||||||
* putenvtest/Makefile.am: Reflect having moved automake/.
|
|
||||||
* rtems++/Makefile.am: Reflect having moved automake/.
|
|
||||||
* rtmonuse/Makefile.am: Reflect having moved automake/.
|
|
||||||
* stackchk/Makefile.am: Reflect having moved automake/.
|
|
||||||
* termios/Makefile.am: Reflect having moved automake/.
|
|
||||||
|
|
||||||
2003-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* configure.ac: Use rtems-bugs@rtems.com as bug report email address.
|
|
||||||
|
|
||||||
2003-03-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* configure.ac: Remove AC_CONFIG_AUX_DIR.
|
|
||||||
|
|
||||||
2003-02-03 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* configure.ac: Unconditionally check for CXX.
|
|
||||||
Require autoconf-2.57, automake-1.7.2.
|
|
||||||
* rtems++: Eliminate CC_O_FILES.
|
|
||||||
|
|
||||||
2002-12-02 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* malloctest/init.c: Tasks should be floating point.
|
|
||||||
|
|
||||||
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>
|
|
||||||
|
|
||||||
* cpuuse/Makefile.am: Use $(OBJEXT) instead of .o.
|
|
||||||
* malloctest/Makefile.am: Use $(OBJEXT) instead of .o.
|
|
||||||
* monitor/Makefile.am: Use $(OBJEXT) instead of .o.
|
|
||||||
* putenvtest/Makefile.am: Use $(OBJEXT) instead of .o.
|
|
||||||
* rtems++/Makefile.am: Use $(OBJEXT) instead of .o.
|
|
||||||
* rtmonuse/Makefile.am: Use $(OBJEXT) instead of .o.
|
|
||||||
* stackchk/Makefile.am: Use $(OBJEXT) instead of .o.
|
|
||||||
* termios/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.
|
|
||||||
* cpuuse/task2.c, malloctest/task1.c, putenvtest/init.c,
|
|
||||||
rtmonuse/task1.c, termios/init.c: Modified.
|
|
||||||
|
|
||||||
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]).
|
|
||||||
* cpuuse/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* malloctest/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* monitor/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* putenvtest/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* rtems++/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* rtmonuse/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* stackchk/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* termios/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
|
|
||||||
2001-11-01 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* rtems++/Makefile.am: Make sure debug variant of librtems++
|
|
||||||
is linked against. Reported by Jerry Needell <jerry.needell@unh.edu>
|
|
||||||
and processed as PR78.
|
|
||||||
|
|
||||||
2001-10-25 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* rtems++/Makefile.am: Pick up -lrtems++ even when debug.
|
|
||||||
|
|
||||||
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>
|
|
||||||
|
|
||||||
* libtests.am: Use TMPINSTALL_FILES = to make automake-1.5 happy.
|
|
||||||
* rtems++/Makefile.am: LD_FLAGS = -lrtems++.
|
|
||||||
|
|
||||||
2001-09-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* malloctest/Makefile.am: include leaf.am instead of leaf.cfg.
|
|
||||||
* monitor/Makefile.am: include leaf.am instead of leaf.cfg.
|
|
||||||
* termios/Makefile.am: include leaf.am instead of leaf.cfg.
|
|
||||||
* putenvtest/Makefile.am: include leaf.am instead of leaf.cfg.
|
|
||||||
* rtems++/Makefile.am: include leaf.am instead of leaf.cfg, use
|
|
||||||
make-cxx-exe.
|
|
||||||
* stackchk/Makefile.am: include leaf.am instead of leaf.cfg.
|
|
||||||
* rtmonuse/Makefile.am: include leaf.am instead of leaf.cfg.
|
|
||||||
* cpuuse/Makefile.am: include leaf.am instead of leaf.cfg.
|
|
||||||
|
|
||||||
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-11-01 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* malloctest/task1.c: assoc.h, error.h, libio_.h, libio.h, and
|
|
||||||
libcsupport.h moved from libc to lib/include/rtems and now must
|
|
||||||
be referenced as <rtems/XXX.h>.
|
|
||||||
|
|
||||||
2000-10-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros.
|
|
||||||
Switch to GNU canonicalization.
|
|
||||||
* libtests.am: Remove DEFS.
|
|
||||||
|
|
||||||
2000-09-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* cpuuse/Makefile.am, malloctest/Makefile.am, monitor/Makefile.am,
|
|
||||||
putenvtest/Makefile.am, rtems++/Makefile.am, rtmonuse/Makefile.am,
|
|
||||||
stackchk/Makefile.am, termios/Makefile.am: Include compile.am
|
|
||||||
|
|
||||||
2000-08-10 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* ChangeLog: New file.
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I ../aclocal
|
|
||||||
|
|
||||||
SUBDIRS = cpuuse malloctest putenvtest monitor rtmonuse stackchk termios \
|
|
||||||
rtems++
|
|
||||||
|
|
||||||
EXTRA_DIST = libtests.am
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/subdirs.am
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#
|
|
||||||
# $Id$
|
|
||||||
#
|
|
||||||
|
|
||||||
This directory contains tests for some of the items in
|
|
||||||
the lib directories. The intent is to be able to
|
|
||||||
verify the basic functionality of a library. For example,
|
|
||||||
it is important to know that the stack checker successfully
|
|
||||||
detects tasks which both stay within and exceed their
|
|
||||||
stack limits.
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
## Process this file with autoconf to produce a configure script.
|
|
||||||
##
|
|
||||||
## $Id$
|
|
||||||
|
|
||||||
AC_PREREQ(2.57)
|
|
||||||
AC_INIT([rtems-c-src-tests-libtests],[_RTEMS_VERSION],[rtems-bugs@rtems.com])
|
|
||||||
AC_CONFIG_SRCDIR([cpuuse])
|
|
||||||
RTEMS_TOP(../../../..)
|
|
||||||
|
|
||||||
RTEMS_CANONICAL_TARGET_CPU
|
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([no-define foreign 1.7.2])
|
|
||||||
AM_MAINTAINER_MODE
|
|
||||||
|
|
||||||
RTEMS_ENABLE_CXX
|
|
||||||
RTEMS_ENABLE_BARE
|
|
||||||
|
|
||||||
RTEMS_ENV_RTEMSBSP
|
|
||||||
RTEMS_CHECK_RTEMS_TEST_NO_PAUSE
|
|
||||||
|
|
||||||
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_CXX(RTEMS_BSP)
|
|
||||||
|
|
||||||
AC_SUBST(BARE_CPU_CFLAGS)
|
|
||||||
AC_SUBST(BARE_CPU_MODEL)
|
|
||||||
|
|
||||||
AM_CONDITIONAL(HAS_CXX,test "$HAS_CPLUSPLUS" = "yes")
|
|
||||||
|
|
||||||
# Explicitly list all Makefiles here
|
|
||||||
AC_CONFIG_FILES([Makefile
|
|
||||||
cpuuse/Makefile
|
|
||||||
malloctest/Makefile
|
|
||||||
monitor/Makefile
|
|
||||||
putenvtest/Makefile
|
|
||||||
rtems++/Makefile
|
|
||||||
rtmonuse/Makefile
|
|
||||||
stackchk/Makefile
|
|
||||||
termios/Makefile
|
|
||||||
])
|
|
||||||
AC_OUTPUT
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
TEST = cpuuse
|
|
||||||
|
|
||||||
MANAGERS = io rate_monotonic
|
|
||||||
|
|
||||||
C_FILES = init.c task1.c task2.c task3.c tswitch.c
|
|
||||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
|
||||||
|
|
||||||
H_FILES = system.h
|
|
||||||
noinst_HEADERS = $(H_FILES)
|
|
||||||
|
|
||||||
DOCTYPES = scn
|
|
||||||
DOCS = $(DOCTYPES:%=$(TEST).%)
|
|
||||||
|
|
||||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
|
||||||
OBJS = $(C_O_FILES)
|
|
||||||
|
|
||||||
PRINT_SRCS = $(DOCS)
|
|
||||||
|
|
||||||
PGM = ${ARCH}/$(TEST).exe
|
|
||||||
|
|
||||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
|
||||||
include $(top_srcdir)/../automake/compile.am
|
|
||||||
include $(top_srcdir)/../automake/leaf.am
|
|
||||||
include $(top_srcdir)/libtests.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
${PGM}: $(OBJS) $(LINK_FILES)
|
|
||||||
$(make-exe)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
*** CPU USAGE LIBRARY TEST ***
|
|
||||||
TA1 - rtems_task_suspend - on Task 2
|
|
||||||
TA1 - rtems_task_suspend - on Task 3
|
|
||||||
TA1 - killing time
|
|
||||||
TA1 - rtems_task_resume - on Task 2
|
|
||||||
TA1 - rtems_task_resume - on Task 3
|
|
||||||
TA1 - rtems_task_mode - change mode to NO RTEMS_PREEMPT
|
|
||||||
TA1 - 09:15:10 12/31/1988
|
|
||||||
TA1 - 09:15:11 12/31/1988
|
|
||||||
TA1 - 09:15:12 12/31/1988
|
|
||||||
TA1 - 09:15:13 12/31/1988
|
|
||||||
TA1 - 09:15:14 12/31/1988
|
|
||||||
TA1 - 09:15:15 12/31/1988
|
|
||||||
TA1 - rtems_task_mode - change mode to RTEMS_PREEMPT
|
|
||||||
TA1 - 09:15:00 12/31/1988
|
|
||||||
TA2 - 09:15:04 12/31/1988
|
|
||||||
TA3 - 09:15:05 12/31/1988
|
|
||||||
TA1 - 09:15:06 12/31/1988
|
|
||||||
TA2 - 09:15:07 12/31/1988
|
|
||||||
TA3 - 09:15:08 12/31/1988
|
|
||||||
TA1 - 09:15:09 12/31/1988
|
|
||||||
TA2 - 09:15:16 12/31/1988
|
|
||||||
CPU Usage by thread
|
|
||||||
ID NAME TICKS PERCENT
|
|
||||||
0x04010001 IDLE 0 0.000
|
|
||||||
0x08010002 TA1 1203 0.748
|
|
||||||
0x08010003 TA2 204 0.127
|
|
||||||
0x08010004 TA3 202 0.126
|
|
||||||
|
|
||||||
Ticks since last reset = 1601
|
|
||||||
|
|
||||||
Total Units = 1609
|
|
||||||
*** END OF CPU USAGE LIBRARY TEST ***
|
|
||||||
NOTE: Actual time per task will vary but there should be no IDLE time.
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
/*
|
|
||||||
* This is a clone of sp04 which has been modified to use the cpu monitoring
|
|
||||||
* library.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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 TEST_INIT
|
|
||||||
#include "system.h"
|
|
||||||
|
|
||||||
rtems_extensions_table Extensions = {
|
|
||||||
NULL, /* task create user extension */
|
|
||||||
NULL, /* task start user extension */
|
|
||||||
NULL, /* task restart user extension */
|
|
||||||
NULL, /* task delete user extension */
|
|
||||||
Task_switch, /* task switch user extension */
|
|
||||||
NULL, /* task begin user extension */
|
|
||||||
NULL, /* task exitted user extension */
|
|
||||||
NULL /* fatal error user extension */
|
|
||||||
};
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_status_code status;
|
|
||||||
rtems_time_of_day time;
|
|
||||||
|
|
||||||
puts( "\n\n*** CPU USAGE LIBRARY TEST ***" );
|
|
||||||
build_time( &time, 12, 31, 1988, 9, 15, 0, 0 );
|
|
||||||
|
|
||||||
status = rtems_clock_set( &time );
|
|
||||||
directive_failed( status, "rtems_clock_set" );
|
|
||||||
|
|
||||||
Extension_name[ 1 ] = rtems_build_name( 'E', 'X', 'T', ' ' );
|
|
||||||
|
|
||||||
status = rtems_extension_create(
|
|
||||||
Extension_name[ 1 ],
|
|
||||||
&Extensions,
|
|
||||||
&Extension_id[ 1 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_extension_create" );
|
|
||||||
|
|
||||||
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', ' ' );
|
|
||||||
|
|
||||||
Run_count[ 1 ] = 0;
|
|
||||||
Run_count[ 2 ] = 0;
|
|
||||||
Run_count[ 3 ] = 0;
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 1 ],
|
|
||||||
1,
|
|
||||||
RTEMS_MINIMUM_STACK_SIZE * 2,
|
|
||||||
RTEMS_TIMESLICE,
|
|
||||||
RTEMS_FLOATING_POINT,
|
|
||||||
&Task_id[ 1 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA1" );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 2 ],
|
|
||||||
1,
|
|
||||||
RTEMS_MINIMUM_STACK_SIZE * 2,
|
|
||||||
RTEMS_TIMESLICE,
|
|
||||||
RTEMS_FLOATING_POINT,
|
|
||||||
&Task_id[ 2 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA2" );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 3 ],
|
|
||||||
1,
|
|
||||||
RTEMS_MINIMUM_STACK_SIZE * 2,
|
|
||||||
RTEMS_TIMESLICE,
|
|
||||||
RTEMS_FLOATING_POINT,
|
|
||||||
&Task_id[ 3 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA3" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 1 ], Task_1, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA1" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 2 ], Task_2, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA2" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 3 ], Task_3, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA3" );
|
|
||||||
|
|
||||||
status = rtems_task_delete( RTEMS_SELF );
|
|
||||||
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
|
|
||||||
}
|
|
||||||
@@ -1,81 +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 <tmacros.h>
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
rtems_task Task_1(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
rtems_task Task_2(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
rtems_task Task_3(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
void Task_switch(
|
|
||||||
rtems_tcb *unused,
|
|
||||||
rtems_tcb *heir
|
|
||||||
);
|
|
||||||
|
|
||||||
/* configuration information */
|
|
||||||
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
|
||||||
|
|
||||||
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 4
|
|
||||||
#define CONFIGURE_TICKS_PER_TIMESLICE 100
|
|
||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
|
||||||
|
|
||||||
#define CONFIGURE_EXTRA_TASK_STACKS (6 * RTEMS_MINIMUM_STACK_SIZE)
|
|
||||||
|
|
||||||
#include <confdefs.h>
|
|
||||||
|
|
||||||
/* global variables */
|
|
||||||
|
|
||||||
TEST_EXTERN rtems_id Task_id[ 4 ]; /* array of task ids */
|
|
||||||
TEST_EXTERN rtems_name Task_name[ 4 ]; /* array of task names */
|
|
||||||
|
|
||||||
TEST_EXTERN rtems_id Extension_id[ 4 ];
|
|
||||||
TEST_EXTERN rtems_name Extension_name[ 4 ]; /* array of task names */
|
|
||||||
|
|
||||||
/* array of task run counts */
|
|
||||||
TEST_EXTERN volatile rtems_unsigned32 Run_count[ 4 ];
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Keep track of task switches
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct taskSwitchLog {
|
|
||||||
int taskIndex;
|
|
||||||
rtems_time_of_day when;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern struct taskSwitchLog taskSwitchLog[];
|
|
||||||
extern int taskSwitchLogIndex;
|
|
||||||
volatile extern int testsFinished;
|
|
||||||
|
|
||||||
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
/* Task_1
|
|
||||||
*
|
|
||||||
* This test serves as a test task. It verifies timeslicing activities
|
|
||||||
* and tswitch extension processing.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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"
|
|
||||||
|
|
||||||
rtems_task Task_1(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_unsigned32 seconds;
|
|
||||||
rtems_unsigned32 old_seconds;
|
|
||||||
rtems_mode previous_mode;
|
|
||||||
rtems_time_of_day time;
|
|
||||||
rtems_status_code status;
|
|
||||||
rtems_unsigned32 start_time;
|
|
||||||
rtems_unsigned32 end_time;
|
|
||||||
|
|
||||||
puts( "TA1 - rtems_task_suspend - on Task 2" );
|
|
||||||
status = rtems_task_suspend( Task_id[ 2 ] );
|
|
||||||
directive_failed( status, "rtems_task_suspend of TA2" );
|
|
||||||
|
|
||||||
puts( "TA1 - rtems_task_suspend - on Task 3" );
|
|
||||||
status = rtems_task_suspend( Task_id[ 3 ] );
|
|
||||||
directive_failed( status, "rtems_task_suspend of TA3" );
|
|
||||||
|
|
||||||
status = rtems_clock_get( RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH, &start_time );
|
|
||||||
directive_failed( status, "rtems_clock_get" );
|
|
||||||
|
|
||||||
puts( "TA1 - killing time" );
|
|
||||||
|
|
||||||
for ( ; ; ) {
|
|
||||||
status = rtems_clock_get( RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH, &end_time );
|
|
||||||
directive_failed( status, "rtems_clock_get" );
|
|
||||||
|
|
||||||
if ( end_time > (start_time + 2) )
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
puts( "TA1 - rtems_task_resume - on Task 2" );
|
|
||||||
status = rtems_task_resume( Task_id[ 2 ] );
|
|
||||||
directive_failed( status, "rtems_task_resume of TA2" );
|
|
||||||
|
|
||||||
puts( "TA1 - rtems_task_resume - on Task 3" );
|
|
||||||
status = rtems_task_resume( Task_id[ 3 ] );
|
|
||||||
directive_failed( status, "rtems_task_resume of TA3" );
|
|
||||||
|
|
||||||
while ( FOREVER ) {
|
|
||||||
if ( Run_count[ 1 ] == 3 ) {
|
|
||||||
puts( "TA1 - rtems_task_mode - change mode to NO RTEMS_PREEMPT" );
|
|
||||||
|
|
||||||
status = rtems_task_mode(
|
|
||||||
RTEMS_NO_PREEMPT,
|
|
||||||
RTEMS_PREEMPT_MASK,
|
|
||||||
&previous_mode
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_mode" );
|
|
||||||
|
|
||||||
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
|
|
||||||
directive_failed( status, "rtems_clock_get" );
|
|
||||||
|
|
||||||
old_seconds = time.second;
|
|
||||||
|
|
||||||
for ( seconds = 0 ; seconds < 6 ; ) {
|
|
||||||
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
|
|
||||||
directive_failed( status, "rtems_clock_get" );
|
|
||||||
|
|
||||||
if ( time.second != old_seconds ) {
|
|
||||||
old_seconds = time.second;
|
|
||||||
seconds++;
|
|
||||||
print_time( "TA1 - ", &time, "\n" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
puts( "TA1 - rtems_task_mode - change mode to RTEMS_PREEMPT" );
|
|
||||||
status = rtems_task_mode(
|
|
||||||
RTEMS_PREEMPT,
|
|
||||||
RTEMS_PREEMPT_MASK,
|
|
||||||
&previous_mode
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_mode" );
|
|
||||||
|
|
||||||
while ( FOREVER );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
/* Task_2
|
|
||||||
*
|
|
||||||
* This routine serves as a test task. It is just a CPU bound task
|
|
||||||
* requiring timesliced operation.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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 <rtems/cpuuse.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
showTaskSwitches (void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int switches = taskSwitchLogIndex;
|
|
||||||
|
|
||||||
for (i = 0 ; i < switches ; i++) {
|
|
||||||
put_name( Task_name[taskSwitchLog[i].taskIndex], FALSE );
|
|
||||||
print_time( "- ", &taskSwitchLog[i].when, "\n" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
rtems_task Task_2(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
while ( !testsFinished );
|
|
||||||
|
|
||||||
showTaskSwitches ();
|
|
||||||
CPU_usage_Dump();
|
|
||||||
puts( "*** END OF CPU USAGE LIBRARY TEST ***" );
|
|
||||||
rtems_test_exit( 0 );
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
/* Task_3
|
|
||||||
*
|
|
||||||
* This routine serves as a test task. It is just a CPU bound task
|
|
||||||
* requiring timesliced operation.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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"
|
|
||||||
|
|
||||||
rtems_task Task_3(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
while( FOREVER );
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
/* Task_switch
|
|
||||||
*
|
|
||||||
* This routine is the tswitch user extension. It determines which
|
|
||||||
* task is being switched to and displays a message indicating the
|
|
||||||
* time and date that it gained control.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* unused - pointer to currently running TCB
|
|
||||||
* heir - pointer to heir TCB
|
|
||||||
*
|
|
||||||
* 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"
|
|
||||||
|
|
||||||
struct taskSwitchLog taskSwitchLog[1000];
|
|
||||||
int taskSwitchLogIndex;
|
|
||||||
volatile int testsFinished;;
|
|
||||||
|
|
||||||
rtems_extension Task_switch(
|
|
||||||
rtems_tcb *unused,
|
|
||||||
rtems_tcb *heir
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_unsigned32 index;
|
|
||||||
rtems_time_of_day time;
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
index = task_number( heir->Object.id );
|
|
||||||
|
|
||||||
switch( index ) {
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
Run_count[ index ] += 1;
|
|
||||||
|
|
||||||
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
|
|
||||||
fatal_directive_status_with_level( status, RTEMS_SUCCESSFUL,
|
|
||||||
"rtems_clock_get", 1 );
|
|
||||||
|
|
||||||
if (taskSwitchLogIndex <
|
|
||||||
(sizeof taskSwitchLog / sizeof taskSwitchLog[0])) {
|
|
||||||
taskSwitchLog[taskSwitchLogIndex].taskIndex = index;
|
|
||||||
taskSwitchLog[taskSwitchLogIndex].when = time;
|
|
||||||
taskSwitchLogIndex++;
|
|
||||||
}
|
|
||||||
if ( time.second >= 16 )
|
|
||||||
testsFinished = 1;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
## $Id$
|
|
||||||
|
|
||||||
project_bspdir=$(PROJECT_ROOT)/@RTEMS_BSP@
|
|
||||||
|
|
||||||
$(project_bspdir)/tests:
|
|
||||||
@$(mkinstalldirs) $@
|
|
||||||
|
|
||||||
$(project_bspdir)/tests/$(TEST)$(LIB_VARIANT).exe: $(PGM)
|
|
||||||
$(INSTALL_PROGRAM) $< $@
|
|
||||||
|
|
||||||
TMPINSTALL_FILES = \
|
|
||||||
$(project_bspdir)/tests \
|
|
||||||
$(project_bspdir)/tests/$(TEST)$(LIB_VARIANT).exe
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
TEST = malloctest
|
|
||||||
|
|
||||||
MANAGERS = io
|
|
||||||
|
|
||||||
C_FILES = init.c task1.c
|
|
||||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
|
||||||
|
|
||||||
H_FILES = system.h
|
|
||||||
noinst_HEADERS = $(H_FILES)
|
|
||||||
|
|
||||||
DOCTYPES = scn
|
|
||||||
DOCS = $(DOCTYPES:%=$(TEST).%)
|
|
||||||
|
|
||||||
SRCS = $(DOCS) $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES)
|
|
||||||
OBJS = $(C_O_FILES) $(CC_O_FILES) $(S_O_FILES)
|
|
||||||
|
|
||||||
PRINT_SRCS = $(DOCS)
|
|
||||||
|
|
||||||
PGM = ${ARCH}/$(TEST).exe
|
|
||||||
|
|
||||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
|
||||||
include $(top_srcdir)/../automake/compile.am
|
|
||||||
include $(top_srcdir)/../automake/leaf.am
|
|
||||||
include $(top_srcdir)/libtests.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
${PGM}: $(OBJS) $(LINK_FILES)
|
|
||||||
$(make-exe)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
/* Init
|
|
||||||
*
|
|
||||||
* This routine is the initialization task for this test program.
|
|
||||||
* It is a user initialization task 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:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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 TEST_INIT
|
|
||||||
#include "system.h"
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_time_of_day time;
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
puts( "\n\n*** MALLOC TEST ***" );
|
|
||||||
|
|
||||||
build_time( &time, 12, 31, 1988, 9, 0, 0, 0 );
|
|
||||||
status = rtems_clock_set( &time );
|
|
||||||
directive_failed( status, "rtems_clock_set" );
|
|
||||||
|
|
||||||
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', ' ' );
|
|
||||||
Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' );
|
|
||||||
Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 1 ],
|
|
||||||
1,
|
|
||||||
TASK_STACK_SIZE,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
RTEMS_FLOATING_POINT,
|
|
||||||
&Task_id[ 1 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA1" );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 2 ],
|
|
||||||
1,
|
|
||||||
TASK_STACK_SIZE,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
RTEMS_FLOATING_POINT,
|
|
||||||
&Task_id[ 2 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA2" );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 3 ],
|
|
||||||
1,
|
|
||||||
TASK_STACK_SIZE,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
RTEMS_FLOATING_POINT,
|
|
||||||
&Task_id[ 3 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA3" );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 4 ],
|
|
||||||
1,
|
|
||||||
TASK_STACK_SIZE,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
RTEMS_FLOATING_POINT,
|
|
||||||
&Task_id[ 4 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA4" );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 5 ],
|
|
||||||
1,
|
|
||||||
TASK_STACK_SIZE,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
RTEMS_FLOATING_POINT,
|
|
||||||
&Task_id[ 5 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA5" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 1 ], Task_1_through_5, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA1" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 2 ], Task_1_through_5, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA2" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 3 ], Task_1_through_5, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA3" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 4 ], Task_1_through_5, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA4" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 5 ], Task_1_through_5, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA5" );
|
|
||||||
|
|
||||||
status = rtems_task_delete( RTEMS_SELF );
|
|
||||||
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
|
|
||||||
}
|
|
||||||
@@ -1,468 +0,0 @@
|
|||||||
*** MALLOC TEST ***
|
|
||||||
TA1 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 513 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 513 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 513 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 513 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 513 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 175 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 175 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 308 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 175 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
mallocing 534 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 308 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 175 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 947 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 175 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 171 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 534 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 308 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 702 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:01 12/31/1988
|
|
||||||
mallocing 226 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 947 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 308 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 494 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 534 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 124 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 171 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 308 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 83 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:02 12/31/1988
|
|
||||||
mallocing 389 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 702 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 534 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 947 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 277 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 368 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 226 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 983 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 534 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 171 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:03 12/31/1988
|
|
||||||
mallocing 535 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:04 12/31/1988
|
|
||||||
mallocing 494 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:04 12/31/1988
|
|
||||||
mallocing 947 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:04 12/31/1988
|
|
||||||
mallocing 765 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:04 12/31/1988
|
|
||||||
mallocing 646 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:04 12/31/1988
|
|
||||||
mallocing 124 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:04 12/31/1988
|
|
||||||
mallocing 702 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:04 12/31/1988
|
|
||||||
mallocing 767 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:04 12/31/1988
|
|
||||||
mallocing 780 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 83 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 171 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 947 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 822 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 226 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 151 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 389 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 625 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
mallocing 314 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 277 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 702 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 494 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 346 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 171 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 917 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 368 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 519 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 124 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:06 12/31/1988
|
|
||||||
mallocing 401 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 983 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 226 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 606 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 785 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 535 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 702 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 83 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 931 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:07 12/31/1988
|
|
||||||
mallocing 869 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 765 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 494 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 866 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 389 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 674 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 646 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 758 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 226 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:08 12/31/1988
|
|
||||||
mallocing 581 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 767 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 124 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 277 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 389 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 355 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 780 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 200 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 368 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:09 12/31/1988
|
|
||||||
mallocing 826 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 822 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 83 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 494 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 415 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 463 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 151 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 983 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 979 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
mallocing 126 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 625 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 389 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 212 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 124 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 535 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 958 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 314 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 737 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:11 12/31/1988
|
|
||||||
mallocing 409 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 346 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 277 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 765 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 780 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 757 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 917 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 83 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 956 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 646 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:12 12/31/1988
|
|
||||||
mallocing 28 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 519 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 368 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 318 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 756 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 401 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 767 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 242 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 389 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:13 12/31/1988
|
|
||||||
mallocing 589 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:14 12/31/1988
|
|
||||||
mallocing 606 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:14 12/31/1988
|
|
||||||
mallocing 983 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:14 12/31/1988
|
|
||||||
mallocing 43 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:14 12/31/1988
|
|
||||||
mallocing 780 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:14 12/31/1988
|
|
||||||
mallocing 956 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:14 12/31/1988
|
|
||||||
mallocing 785 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:14 12/31/1988
|
|
||||||
mallocing 319 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:14 12/31/1988
|
|
||||||
mallocing 59 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 931 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 535 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 277 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 822 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 441 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 915 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 869 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 572 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 151 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
mallocing 118 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 866 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 765 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 569 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 368 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 252 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 674 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 625 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 495 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:16 12/31/1988
|
|
||||||
mallocing 236 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 758 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 646 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 476 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 314 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 406 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 581 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 983 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 872 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:17 12/31/1988
|
|
||||||
mallocing 426 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 389 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 767 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 346 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 358 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 381 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 355 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 43 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 535 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 917 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:18 12/31/1988
|
|
||||||
mallocing 160 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:19 12/31/1988
|
|
||||||
mallocing 200 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:19 12/31/1988
|
|
||||||
mallocing 780 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:19 12/31/1988
|
|
||||||
mallocing 522 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:19 12/31/1988
|
|
||||||
mallocing 696 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:19 12/31/1988
|
|
||||||
mallocing 826 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:19 12/31/1988
|
|
||||||
mallocing 519 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:19 12/31/1988
|
|
||||||
mallocing 97 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:19 12/31/1988
|
|
||||||
mallocing 400 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 415 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 822 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 765 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 773 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 401 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 244 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 463 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 342 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:20 12/31/1988
|
|
||||||
mallocing 229 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 979 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 151 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 606 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 297 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 646 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 304 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 126 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 887 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 785 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:21 12/31/1988
|
|
||||||
mallocing 36 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 212 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 625 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 651 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 398 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 958 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 767 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 931 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 676 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:22 12/31/1988
|
|
||||||
mallocing 732 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 737 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 314 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 937 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 869 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 233 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 409 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 838 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 780 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:23 12/31/1988
|
|
||||||
mallocing 967 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 780 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 346 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 866 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 778 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 431 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 757 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 674 bytes
|
|
||||||
TA3 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 674 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:24 12/31/1988
|
|
||||||
mallocing 809 bytes
|
|
||||||
TA2 - rtems_clock_get - 09:00:25 12/31/1988
|
|
||||||
mallocing 956 bytes
|
|
||||||
TA4 - rtems_clock_get - 09:00:25 12/31/1988
|
|
||||||
mallocing 917 bytes
|
|
||||||
TA5 - rtems_clock_get - 09:00:25 12/31/1988
|
|
||||||
mallocing 822 bytes
|
|
||||||
TA1 - rtems_clock_get - 09:00:25 12/31/1988
|
|
||||||
mallocing 158 bytes
|
|
||||||
*** END OF MALLOC TEST ***
|
|
||||||
@@ -1,51 +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 <tmacros.h>
|
|
||||||
|
|
||||||
/* macros */
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
rtems_task Task_1_through_5(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
void blow_stack( void );
|
|
||||||
|
|
||||||
/* configuration information */
|
|
||||||
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
|
||||||
|
|
||||||
#define TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE*3)
|
|
||||||
|
|
||||||
#define CONFIGURE_EXTRA_TASK_STACKS ((RTEMS_MINIMUM_STACK_SIZE*2)*5)
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 6
|
|
||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
|
||||||
|
|
||||||
#include <confdefs.h>
|
|
||||||
|
|
||||||
/* global variables */
|
|
||||||
|
|
||||||
TEST_EXTERN rtems_id Task_id[ 6 ]; /* array of task ids */
|
|
||||||
TEST_EXTERN rtems_name Task_name[ 6 ]; /* array of task names */
|
|
||||||
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
/* task1.c
|
|
||||||
*
|
|
||||||
* This set of three tasks do some simple task switching for about
|
|
||||||
* 15 seconds and then call a routine to "blow the stack".
|
|
||||||
*
|
|
||||||
* 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 <rtems/libcsupport.h> /* for malloc_dump, malloc_walk */
|
|
||||||
#include <string.h> /* for memset */
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#define NUM_PASSES 100
|
|
||||||
|
|
||||||
rtems_task Task_1_through_5(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
unsigned int passes = 0;
|
|
||||||
rtems_id tid;
|
|
||||||
rtems_time_of_day time;
|
|
||||||
rtems_status_code status;
|
|
||||||
unsigned char *mem_ptr;
|
|
||||||
int mem_amt;
|
|
||||||
|
|
||||||
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid );
|
|
||||||
directive_failed( status, "rtems_task_ident" );
|
|
||||||
|
|
||||||
while (TRUE)
|
|
||||||
{
|
|
||||||
if ( passes++ > NUM_PASSES ) {
|
|
||||||
puts("*** END OF MALLOC TEST ***");
|
|
||||||
rtems_test_exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
|
|
||||||
directive_failed( status, "rtems_clock_get" );
|
|
||||||
|
|
||||||
put_name( Task_name[ task_number( tid ) ], FALSE );
|
|
||||||
print_time( " - rtems_clock_get - ", &time, "\n" );
|
|
||||||
|
|
||||||
mem_amt = ((int)((float)rand()*1000.0/(float)RAND_MAX));
|
|
||||||
while (!(mem_ptr = malloc ( mem_amt))) {
|
|
||||||
printf("out of memory... trying again.\n");
|
|
||||||
mem_amt = ((int)((float)rand()*1000.0/(float)RAND_MAX));
|
|
||||||
}
|
|
||||||
printf("mallocing %d bytes\n",mem_amt);
|
|
||||||
memset( mem_ptr, mem_amt, mem_amt );
|
|
||||||
malloc_dump();
|
|
||||||
malloc_walk(1,FALSE);
|
|
||||||
status = rtems_task_wake_after( task_number( tid ) * 1 * TICKS_PER_SECOND/4 );
|
|
||||||
for (i=0; i < mem_amt; i++)
|
|
||||||
{
|
|
||||||
if ( mem_ptr[i] != (mem_amt & 0xff))
|
|
||||||
{
|
|
||||||
printf("failed %d, %d, 0x%x, 0x%x\n",i,mem_amt,mem_ptr[i],mem_amt&0xff);
|
|
||||||
rtems_test_exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
directive_failed( status, "rtems_task_wake_after" );
|
|
||||||
free( mem_ptr );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
TEST = monitor
|
|
||||||
|
|
||||||
MANAGERS = dpmem event io msg mp part region sem signal timer rate_monotonic \
|
|
||||||
ext
|
|
||||||
|
|
||||||
C_FILES = init.c
|
|
||||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
|
||||||
|
|
||||||
H_FILES = system.h
|
|
||||||
noinst_HEADERS = $(H_FILES)
|
|
||||||
|
|
||||||
DOCTYPES = scn
|
|
||||||
DOCS = #$(DOCTYPES:%=$(TEST).%)
|
|
||||||
|
|
||||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
|
||||||
OBJS = $(C_O_FILES)
|
|
||||||
|
|
||||||
PRINT_SRCS = $(DOCS)
|
|
||||||
|
|
||||||
PGM = ${ARCH}/$(TEST).exe
|
|
||||||
|
|
||||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
|
||||||
include $(top_srcdir)/../automake/compile.am
|
|
||||||
include $(top_srcdir)/../automake/leaf.am
|
|
||||||
include $(top_srcdir)/libtests.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
${PGM}: $(OBJS) $(LINK_FILES)
|
|
||||||
$(make-exe)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
/*
|
|
||||||
* This is a simple test whose only purpose is to start the Monitor
|
|
||||||
* task. The Monitor task can be used to obtain information about
|
|
||||||
* a variety of RTEMS objects.
|
|
||||||
*
|
|
||||||
* 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 TEST_INIT
|
|
||||||
#include "system.h"
|
|
||||||
|
|
||||||
#include <rtems/monitor.h>
|
|
||||||
|
|
||||||
rtems_task_priority Priorities[6] = { 0, 1, 1, 3, 4, 5 };
|
|
||||||
|
|
||||||
rtems_task Task_1_through_5(
|
|
||||||
rtems_unsigned32 argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
for ( ; ; ) {
|
|
||||||
status = rtems_task_wake_after( 100 );
|
|
||||||
directive_failed( status, "rtems_task_wake_after" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_unsigned32 index;
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
puts( "\n\n*** MONITOR TASK TEST ***" );
|
|
||||||
|
|
||||||
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', ' ' );
|
|
||||||
Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' );
|
|
||||||
Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' );
|
|
||||||
|
|
||||||
for ( index = 1 ; index <= 5 ; index++ ) {
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ index ],
|
|
||||||
Priorities[ index ],
|
|
||||||
RTEMS_MINIMUM_STACK_SIZE * 4,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
(index == 5) ? RTEMS_FLOATING_POINT : RTEMS_DEFAULT_ATTRIBUTES,
|
|
||||||
&Task_id[ index ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create loop" );
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( index = 1 ; index <= 5 ; index++ ) {
|
|
||||||
status = rtems_task_start( Task_id[ index ], Task_1_through_5, index );
|
|
||||||
directive_failed( status, "rtems_task_start loop" );
|
|
||||||
}
|
|
||||||
|
|
||||||
rtems_monitor_init( 0 );
|
|
||||||
|
|
||||||
status = rtems_task_delete( RTEMS_SELF );
|
|
||||||
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
|
|
||||||
}
|
|
||||||
@@ -1,59 +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 <tmacros.h>
|
|
||||||
|
|
||||||
/* types */
|
|
||||||
|
|
||||||
struct counters {
|
|
||||||
rtems_unsigned32 count[6];
|
|
||||||
};
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
rtems_task Task_1_through_5(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
void Get_all_counters( void );
|
|
||||||
|
|
||||||
/* configuration information */
|
|
||||||
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
|
||||||
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 7
|
|
||||||
#define CONFIGURE_MAXIMUM_PERIODS 10
|
|
||||||
|
|
||||||
#define CONFIGURE_INIT_TASK_PRIORITY 10
|
|
||||||
#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
|
||||||
|
|
||||||
#define CONFIGURE_EXTRA_TASK_STACKS \
|
|
||||||
(6 * (3 * RTEMS_MINIMUM_STACK_SIZE)) /* our tasks */ + \
|
|
||||||
(1 * RTEMS_MINIMUM_STACK_SIZE) /* monitor tasks */
|
|
||||||
|
|
||||||
#include <confdefs.h>
|
|
||||||
|
|
||||||
/* global variables */
|
|
||||||
|
|
||||||
TEST_EXTERN rtems_id Task_id[ 6 ]; /* array of task ids */
|
|
||||||
TEST_EXTERN rtems_name Task_name[ 6 ]; /* array of task names */
|
|
||||||
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
TEST = putenvtest
|
|
||||||
|
|
||||||
MANAGERS = io
|
|
||||||
|
|
||||||
C_FILES = init.c
|
|
||||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
|
||||||
|
|
||||||
H_FILES =
|
|
||||||
noinst_HEADERS = $(H_FILES)
|
|
||||||
|
|
||||||
DOCTYPES =
|
|
||||||
DOCS = $(DOCTYPES:%=$(TEST).%)
|
|
||||||
|
|
||||||
SRCS = $(DOCS) $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES)
|
|
||||||
OBJS = $(C_O_FILES) $(CC_O_FILES) $(S_O_FILES)
|
|
||||||
|
|
||||||
PRINT_SRCS = $(DOCS)
|
|
||||||
|
|
||||||
PGM = ${ARCH}/$(TEST).exe
|
|
||||||
|
|
||||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
|
||||||
include $(top_srcdir)/../automake/compile.am
|
|
||||||
include $(top_srcdir)/../automake/leaf.am
|
|
||||||
include $(top_srcdir)/libtests.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
${PGM}: $(OBJS) $(LINK_FILES)
|
|
||||||
$(make-exe)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
/* Init
|
|
||||||
*
|
|
||||||
* This routine is the initialization task for this test program.
|
|
||||||
* It is a user initialization task 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:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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 TEST_INIT
|
|
||||||
#include <tmacros.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
/* putenv is beyond ANSI so prototype it here */
|
|
||||||
int putenv(const char *string);
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
/* configuration information */
|
|
||||||
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
|
||||||
|
|
||||||
#define TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE*3)
|
|
||||||
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
|
||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
|
||||||
|
|
||||||
#include <confdefs.h>
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
puts( "\n\n*** PUTENV/GETENV TEST ***" );
|
|
||||||
|
|
||||||
puts( "putenv(\"FOO=BAR\") - expected to work" );
|
|
||||||
putenv ("FOO=BAR");
|
|
||||||
printf ("getenv(\"FOO\") ==> \"%s\"\n", getenv ("FOO"));
|
|
||||||
|
|
||||||
puts( "*** END OF PUTENV/GETENV TEST ***" );
|
|
||||||
rtems_test_exit(0);
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
/* Init
|
|
||||||
*
|
|
||||||
* This routine is the initialization task for this test program.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* Output parameters: NONE
|
|
||||||
*
|
|
||||||
* COPYRIGHT (c) 1997
|
|
||||||
* Objective Design Systems Ltd Pty (ODS)
|
|
||||||
* All rights reserved (R) Objective Design Systems Ltd Pty
|
|
||||||
*
|
|
||||||
* 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 TEST_INIT
|
|
||||||
#include "System.h"
|
|
||||||
|
|
||||||
// make global so it lasts past the Init task's stack's life time
|
|
||||||
Task1 task_1;
|
|
||||||
|
|
||||||
rtems_task Init(rtems_task_argument )
|
|
||||||
{
|
|
||||||
puts( "\n\n*** RTEMS++ TEST ***" );
|
|
||||||
|
|
||||||
printf( "INIT - Task.create() - " );
|
|
||||||
task_1.create("TA1 ", 0, RTEMS_MINIMUM_STACK_SIZE);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf( "INIT - Task.create() - " );
|
|
||||||
task_1.create("TA1 ", 10, RTEMS_MINIMUM_STACK_SIZE * 6);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf( "INIT - Task.create() - " );
|
|
||||||
task_1.create("TA1 ", 10, RTEMS_MINIMUM_STACK_SIZE * 6);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf( "INIT - Task.restart() - " );
|
|
||||||
task_1.restart(0);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf( "INIT - Task.start(0xDEADDEAD) - " );
|
|
||||||
task_1.start(0xDEADDEAD);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf("INIT - Destroy it's self\n");
|
|
||||||
|
|
||||||
// needs to be in C, no C++ object owns the Init task
|
|
||||||
rtems_status_code status = rtems_task_delete( RTEMS_SELF );
|
|
||||||
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
TEST = rtems++
|
|
||||||
|
|
||||||
MANAGERS = event io msg sem signal timer rate_monotonic
|
|
||||||
|
|
||||||
CC_FILES = Init.cc Task1.cc Task2.cc Task3.cc
|
|
||||||
OBJS = $(CC_FILES:%.cc=${ARCH}/%.$(OBJEXT))
|
|
||||||
|
|
||||||
H_FILES = System.h
|
|
||||||
noinst_HEADERS = $(H_FILES)
|
|
||||||
|
|
||||||
DOCTYPES = scn doc
|
|
||||||
DOCS = $(DOCTYPES:%=$(TEST).%)
|
|
||||||
|
|
||||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
|
||||||
|
|
||||||
PRINT_SRCS = $(DOCS)
|
|
||||||
|
|
||||||
PGM = ${ARCH}/$(TEST).exe
|
|
||||||
|
|
||||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
|
||||||
include $(top_srcdir)/../automake/compile.am
|
|
||||||
include $(top_srcdir)/../automake/leaf.am
|
|
||||||
include $(top_srcdir)/libtests.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
LD_LIBS = -lrtems++$(LIB_VARIANT)
|
|
||||||
|
|
||||||
if HAS_CXX
|
|
||||||
|
|
||||||
${PGM}: $(OBJS) $(LINK_FILES)
|
|
||||||
$(make-cxx-exe)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
|
||||||
else
|
|
||||||
all-local:
|
|
||||||
endif
|
|
||||||
|
|
||||||
EXTRA_DIST = $(CC_FILES) $(DOCS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,135 +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 <tmacros.h>
|
|
||||||
#include <rtems++/rtemsEvent.h>
|
|
||||||
#include <rtems++/rtemsMessageQueue.h>
|
|
||||||
#include <rtems++/rtemsTask.h>
|
|
||||||
#include <rtems++/rtemsTaskMode.h>
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
rtems_timer_service_routine Delayed_routine(
|
|
||||||
rtems_id ignored_id,
|
|
||||||
void *ignored_address
|
|
||||||
);
|
|
||||||
|
|
||||||
class Task1
|
|
||||||
: public rtemsTask
|
|
||||||
{
|
|
||||||
void print_mode(rtems_mode mode, rtems_mode mask);
|
|
||||||
|
|
||||||
void screen1(void);
|
|
||||||
void screen2(void);
|
|
||||||
void screen3(void);
|
|
||||||
void screen4(void);
|
|
||||||
void screen5(void);
|
|
||||||
void screen6(void);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void body(rtems_task_argument argument);
|
|
||||||
|
|
||||||
public:
|
|
||||||
};
|
|
||||||
|
|
||||||
class Task2
|
|
||||||
: public rtemsTask
|
|
||||||
{
|
|
||||||
void screen4(void);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void body(rtems_task_argument argument);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Task2(const char* name,
|
|
||||||
const rtems_task_priority initial_priority,
|
|
||||||
const rtems_unsigned32 stack_size);
|
|
||||||
};
|
|
||||||
|
|
||||||
class Task3
|
|
||||||
: public rtemsTask
|
|
||||||
{
|
|
||||||
void screen6(void);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void body(rtems_task_argument argument);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Task3(const char* name,
|
|
||||||
const rtems_task_priority initial_priority,
|
|
||||||
const rtems_unsigned32 stack_size);
|
|
||||||
};
|
|
||||||
|
|
||||||
class EndTask
|
|
||||||
: public rtemsTask
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
virtual void body(rtems_task_argument argument);
|
|
||||||
|
|
||||||
public:
|
|
||||||
EndTask(const char* name,
|
|
||||||
const rtems_task_priority initial_priority,
|
|
||||||
const rtems_unsigned32 stack_size);
|
|
||||||
};
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
//
|
|
||||||
// Not sure this can be tested in a generic manner, any ideas anyone !!
|
|
||||||
//
|
|
||||||
|
|
||||||
class Service_routine
|
|
||||||
: public rtemsInterrupt
|
|
||||||
{
|
|
||||||
};
|
|
||||||
|
|
||||||
class Io_during_interrupt
|
|
||||||
: pubic rtemsTimer
|
|
||||||
{
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* configuration information */
|
|
||||||
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
|
||||||
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 8
|
|
||||||
#define CONFIGURE_MAXIMUM_TIMERS 1
|
|
||||||
#define CONFIGURE_MAXIMUM_SEMAPHORES 2
|
|
||||||
#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 1
|
|
||||||
#define CONFIGURE_MAXIMUM_PARTITIONS 1
|
|
||||||
#define CONFIGURE_MAXIMUM_REGIONS 1
|
|
||||||
#define CONFIGURE_MAXIMUM_PERIODS 1
|
|
||||||
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 0
|
|
||||||
#define CONFIGURE_TICKS_PER_TIMESLICE 100
|
|
||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
|
||||||
#define CONFIGURE_INIT_TASK_STACK_SIZE (4 * RTEMS_MINIMUM_STACK_SIZE)
|
|
||||||
|
|
||||||
#define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE)
|
|
||||||
|
|
||||||
#include <confdefs.h>
|
|
||||||
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,681 +0,0 @@
|
|||||||
/* Task1
|
|
||||||
*
|
|
||||||
* This task is the main line for the test. It creates other
|
|
||||||
* tasks which can create
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* Output parameters: NONE
|
|
||||||
*
|
|
||||||
* COPYRIGHT (c) 1997
|
|
||||||
* Objective Design Systems Ltd Pty (ODS)
|
|
||||||
* All rights reserved (R) Objective Design Systems Ltd Pty
|
|
||||||
*
|
|
||||||
* 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 <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "System.h"
|
|
||||||
|
|
||||||
void Task1::body(rtems_task_argument argument)
|
|
||||||
{
|
|
||||||
rtems_test_pause_and_screen_number(1);
|
|
||||||
|
|
||||||
printf(" * START Task Class test *\n");
|
|
||||||
|
|
||||||
printf("%s - test argument - ", name_string());
|
|
||||||
if (argument != 0xDEADDEAD)
|
|
||||||
printf("argument is not 0xDEADDEAD\n");
|
|
||||||
else
|
|
||||||
printf("argument matched\n");
|
|
||||||
|
|
||||||
screen1();
|
|
||||||
rtems_test_pause_and_screen_number(2);
|
|
||||||
|
|
||||||
screen2();
|
|
||||||
rtems_test_pause_and_screen_number(3);
|
|
||||||
|
|
||||||
screen3();
|
|
||||||
rtems_test_pause_and_screen_number(4);
|
|
||||||
|
|
||||||
screen4();
|
|
||||||
rtems_test_pause_and_screen_number(5);
|
|
||||||
|
|
||||||
screen5();
|
|
||||||
rtems_test_pause_and_screen_number(6);
|
|
||||||
|
|
||||||
screen6();
|
|
||||||
|
|
||||||
// do not call exit(0) from this thread as this object is static
|
|
||||||
// the static destructor call delete the task which is calling exit
|
|
||||||
// so exit never completes
|
|
||||||
|
|
||||||
EndTask end_task("ENDT", (rtems_task_priority) 1, RTEMS_MINIMUM_STACK_SIZE * 6);
|
|
||||||
end_task.start(0);
|
|
||||||
|
|
||||||
rtemsEvent block_me;
|
|
||||||
rtems_event_set out;
|
|
||||||
|
|
||||||
block_me.receive(RTEMS_SIGNAL_0, out);
|
|
||||||
|
|
||||||
printf("**** TASK 1 did not block ????\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task1::screen1(void)
|
|
||||||
{
|
|
||||||
// create two local task objects to connect to this task
|
|
||||||
rtemsTask local_task_1 = *this;
|
|
||||||
rtemsTask local_task_2;
|
|
||||||
|
|
||||||
local_task_2 = *this;
|
|
||||||
|
|
||||||
// check the copy constructor works
|
|
||||||
printf("%s - copy constructor - ", name_string());
|
|
||||||
if (local_task_1.id_is() == id_is())
|
|
||||||
printf("local and this id's match\n");
|
|
||||||
else
|
|
||||||
printf("local and this id's do not match\n");
|
|
||||||
|
|
||||||
printf("%s - copy constructor - ", name_string());
|
|
||||||
if (local_task_1.name_is() == name_is())
|
|
||||||
printf("local and this name's match\n");
|
|
||||||
else
|
|
||||||
printf("local and this name's do not match\n");
|
|
||||||
|
|
||||||
// check the copy operator works
|
|
||||||
printf("%s - copy operator - ", name_string());
|
|
||||||
if (local_task_2.id_is() == id_is())
|
|
||||||
printf("local and this id's match\n");
|
|
||||||
else
|
|
||||||
printf("local and this id's do not match\n");
|
|
||||||
printf("%s - copy operator - ", name_string());
|
|
||||||
if (local_task_2.name_is() == name_is())
|
|
||||||
printf("local and this name's match\n");
|
|
||||||
else
|
|
||||||
printf("local and this name's do not match\n");
|
|
||||||
|
|
||||||
// check that the owner of the id cannot delete this task
|
|
||||||
printf("%s - not owner destroy's task - ", local_task_1.name_string());
|
|
||||||
local_task_1.destroy();
|
|
||||||
printf("%s\n", local_task_1.last_status_string());
|
|
||||||
|
|
||||||
// connect to a valid task
|
|
||||||
printf("%s - connect to a local valid task name - ", local_task_2.name_string());
|
|
||||||
local_task_2.connect("TA1 ", RTEMS_SEARCH_ALL_NODES);
|
|
||||||
printf("%s\n", local_task_2.last_status_string());
|
|
||||||
|
|
||||||
// connect to an invalid task
|
|
||||||
printf("%s - connect to an invalid task name - ", local_task_2.name_string());
|
|
||||||
local_task_2.connect("BADT", RTEMS_SEARCH_ALL_NODES);
|
|
||||||
printf("%s\n", local_task_2.last_status_string());
|
|
||||||
|
|
||||||
// connect to a task an invalid node
|
|
||||||
printf("%s - connect to a task on an invalid node - ", local_task_2.name_string());
|
|
||||||
local_task_2.connect("BADT", 10);
|
|
||||||
printf("%s\n", local_task_2.last_status_string());
|
|
||||||
|
|
||||||
// restart this task
|
|
||||||
printf("%s - restart from a non-owner - ", name_string());
|
|
||||||
local_task_1.restart(0);
|
|
||||||
printf("%s\n", local_task_1.last_status_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task1::screen2(void)
|
|
||||||
{
|
|
||||||
// wake after using this object
|
|
||||||
|
|
||||||
printf("%s - wake after 0 secs - ", name_string());
|
|
||||||
wake_after(0);
|
|
||||||
printf("%s\n", last_status_string());
|
|
||||||
|
|
||||||
printf("%s - wake after 500 msecs - ", name_string());
|
|
||||||
wake_after(500000);
|
|
||||||
printf("%s\n", last_status_string());
|
|
||||||
|
|
||||||
printf("%s - wake after 5 secs - ", name_string());
|
|
||||||
wake_after(5000000);
|
|
||||||
printf("%s\n", last_status_string());
|
|
||||||
|
|
||||||
printf("%s - wake when - to do\n", name_string());
|
|
||||||
|
|
||||||
rtemsTask task_1 = *this;
|
|
||||||
|
|
||||||
// wake after using a connected object
|
|
||||||
|
|
||||||
printf("%s - connected object wake after 0 secs - ", task_1.name_string());
|
|
||||||
task_1.wake_after(0);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - connected object wake after 500 msecs - ", task_1.name_string());
|
|
||||||
task_1.wake_after(500000);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - connected object wake after 5 secs - ", task_1.name_string());
|
|
||||||
task_1.wake_after(5000000);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - connected object wake when - to do\n", task_1.name_string());
|
|
||||||
|
|
||||||
rtemsTask task_2;
|
|
||||||
|
|
||||||
// wake after using a self object
|
|
||||||
|
|
||||||
printf("%s - self object wake after 0 secs - ", task_2.name_string());
|
|
||||||
task_2.wake_after(0);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - self object wake after 500 msecs - ", task_2.name_string());
|
|
||||||
task_2.wake_after(500000);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - self object wake after 5 secs - ", task_2.name_string());
|
|
||||||
task_2.wake_after(5000000);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - self object wake when - to do\n", task_2.name_string());
|
|
||||||
|
|
||||||
rtems_task_priority current_priority;
|
|
||||||
rtems_task_priority priority;
|
|
||||||
|
|
||||||
// priorities with this object
|
|
||||||
|
|
||||||
printf("%s - get priority - ", name_string());
|
|
||||||
get_priority(current_priority);
|
|
||||||
printf("%s, priority is %i\n", last_status_string(), current_priority);
|
|
||||||
|
|
||||||
printf("%s - set priority to 512 - ", name_string());
|
|
||||||
set_priority(512);
|
|
||||||
printf("%s\n", last_status_string());
|
|
||||||
|
|
||||||
printf("%s - set priority to 25 - ", name_string());
|
|
||||||
set_priority(25);
|
|
||||||
printf("%s\n", last_status_string());
|
|
||||||
|
|
||||||
printf("%s - set priority to original - ", name_string());
|
|
||||||
set_priority(current_priority, priority);
|
|
||||||
printf("%s, priority was %i\n", last_status_string(), priority);
|
|
||||||
|
|
||||||
// priorities with connected object
|
|
||||||
|
|
||||||
printf("%s - connected object get priority - ", task_1.name_string());
|
|
||||||
task_1.get_priority(current_priority);
|
|
||||||
printf("%s, priority is %i\n", task_1.last_status_string(), current_priority);
|
|
||||||
|
|
||||||
printf("%s - connected object set priority to 512 - ", task_1.name_string());
|
|
||||||
task_1.set_priority(512);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - connected object set priority to 25 - ", task_1.name_string());
|
|
||||||
task_1.set_priority(25);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - connected object set priority to original - ", task_1.name_string());
|
|
||||||
task_1.set_priority(current_priority, priority);
|
|
||||||
printf("%s, priority was %i\n", task_1.last_status_string(), priority);
|
|
||||||
|
|
||||||
// priorities with self object
|
|
||||||
|
|
||||||
printf("%s - self object get priority - ", task_2.name_string());
|
|
||||||
task_2.get_priority(current_priority);
|
|
||||||
printf("%s, priority is %i\n", task_2.last_status_string(), current_priority);
|
|
||||||
|
|
||||||
printf("%s - self object set priority to 512 - ", task_2.name_string());
|
|
||||||
task_2.set_priority(512);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - self object set priority to 25 - ", task_2.name_string());
|
|
||||||
task_2.set_priority(25);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - self object set priority to original - ", task_2.name_string());
|
|
||||||
task_2.set_priority(current_priority, priority);
|
|
||||||
printf("%s, priority was %i\n", task_2.last_status_string(), priority);
|
|
||||||
|
|
||||||
rtems_unsigned32 current_note;
|
|
||||||
rtems_unsigned32 note;
|
|
||||||
|
|
||||||
// notepad registers for this object
|
|
||||||
|
|
||||||
printf("%s - get note - ", name_string());
|
|
||||||
get_note(0, current_note);
|
|
||||||
printf("%s, note is %i\n", last_status_string(), current_note);
|
|
||||||
|
|
||||||
printf("%s - get with bad notepad number - ", name_string());
|
|
||||||
get_note(100, current_note);
|
|
||||||
printf("%s, note is %i\n", last_status_string(), current_note);
|
|
||||||
|
|
||||||
printf("%s - set note to 0xDEADBEEF - ", name_string());
|
|
||||||
set_note(0, 0xDEADBEEF);
|
|
||||||
printf("%s\n", last_status_string());
|
|
||||||
|
|
||||||
printf("%s - get note - ", name_string());
|
|
||||||
get_note(0, note);
|
|
||||||
printf("%s, note is 0x%08X\n", last_status_string(), note);
|
|
||||||
|
|
||||||
printf("%s - set note to original value - ", name_string());
|
|
||||||
set_note(0, current_note);
|
|
||||||
printf("%s\n", last_status_string());
|
|
||||||
|
|
||||||
// notepad registers for connected object
|
|
||||||
|
|
||||||
printf("%s - connected object get note - ", task_1.name_string());
|
|
||||||
task_1.get_note(0, current_note);
|
|
||||||
printf("%s, notepad is %i\n", task_1.last_status_string(), current_note);
|
|
||||||
|
|
||||||
printf("%s - connected object get with bad notepad number - ", task_1.name_string());
|
|
||||||
task_1.get_note(100, current_note);
|
|
||||||
printf("%s, note is %i\n", task_1.last_status_string(), current_note);
|
|
||||||
|
|
||||||
printf("%s - connected object set note to 0xDEADBEEF - ", task_1.name_string());
|
|
||||||
task_1.set_note(0, 0xDEADBEEF);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - connected object get note - ", task_1.name_string());
|
|
||||||
task_1.get_note(0, note);
|
|
||||||
printf("%s, note is 0x%08X\n", task_1.last_status_string(), note);
|
|
||||||
|
|
||||||
printf("%s - connected object set note to original value - ", task_1.name_string());
|
|
||||||
task_1.set_note(0, current_note);
|
|
||||||
printf("%s\n", task_1.last_status_string());
|
|
||||||
|
|
||||||
// notepad registers for self object
|
|
||||||
|
|
||||||
printf("%s - self object get note - ", task_2.name_string());
|
|
||||||
task_2.get_note(0, current_note);
|
|
||||||
printf("%s, note is %i\n", task_2.last_status_string(), current_note);
|
|
||||||
|
|
||||||
printf("%s - self object get with bad notepad number - ", task_2.name_string());
|
|
||||||
task_2.get_note(100, current_note);
|
|
||||||
printf("%s, note is %i\n", task_2.last_status_string(), current_note);
|
|
||||||
|
|
||||||
printf("%s - self object set note to 0xDEADBEEF - ", task_2.name_string());
|
|
||||||
task_2.set_note(0, 0xDEADBEEF);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - self object get note - ", task_2.name_string());
|
|
||||||
task_2.get_note(0, note);
|
|
||||||
printf("%s, notepad is 0x%08X\n", task_2.last_status_string(), note);
|
|
||||||
|
|
||||||
printf("%s - self object set note to original value - ", task_2.name_string());
|
|
||||||
task_2.set_note(0, current_note);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf(" * END Task Class test *\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
#define RTEMS_ALL_MODES (RTEMS_PREEMPT_MASK | \
|
|
||||||
RTEMS_TIMESLICE_MASK | \
|
|
||||||
RTEMS_ASR_MASK | \
|
|
||||||
RTEMS_INTERRUPT_MASK)
|
|
||||||
|
|
||||||
void Task1::screen3(void)
|
|
||||||
{
|
|
||||||
printf(" * START TaskMode Class test *\n");
|
|
||||||
|
|
||||||
rtemsTask self;
|
|
||||||
rtemsTaskMode task_mode;
|
|
||||||
rtems_mode current_mode;
|
|
||||||
rtems_mode mode;
|
|
||||||
|
|
||||||
printf("%s - get mode - ", self.name_string());
|
|
||||||
task_mode.get_mode(current_mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), current_mode);
|
|
||||||
print_mode(current_mode, RTEMS_ALL_MODES);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
// PREEMPTION mode control
|
|
||||||
|
|
||||||
printf("%s - get preemption state - ", self.name_string());
|
|
||||||
task_mode.get_preemption_state(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_PREEMPT_MASK);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
printf("%s - set preemption state to RTEMS_PREEMPT - ", self.name_string());
|
|
||||||
task_mode.set_preemption_state(RTEMS_PREEMPT);
|
|
||||||
task_mode.get_mode(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_ALL_MODES);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
printf("%s - set preemption state to RTEMS_NO_PREEMPT - ", self.name_string());
|
|
||||||
task_mode.set_preemption_state(RTEMS_NO_PREEMPT);
|
|
||||||
task_mode.get_mode(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_ALL_MODES);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
// TIMESLICE mode control
|
|
||||||
|
|
||||||
printf("%s - get timeslice state - ", self.name_string());
|
|
||||||
task_mode.get_timeslice_state(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_TIMESLICE_MASK);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
printf("%s - set timeslice state to RTEMS_TIMESLICE - ", self.name_string());
|
|
||||||
task_mode.set_timeslice_state(RTEMS_TIMESLICE);
|
|
||||||
task_mode.get_mode(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_ALL_MODES);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
printf("%s - set timeslice state to RTEMS_NO_TIMESLICE - ", self.name_string());
|
|
||||||
task_mode.set_timeslice_state(RTEMS_NO_TIMESLICE);
|
|
||||||
task_mode.get_mode(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_ALL_MODES);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
// ASR mode control
|
|
||||||
|
|
||||||
printf("%s - get asr state - ", self.name_string());
|
|
||||||
task_mode.get_asr_state(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_ASR_MASK);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
printf("%s - set asr state to RTEMS_ASR - ", self.name_string());
|
|
||||||
task_mode.set_asr_state(RTEMS_ASR);
|
|
||||||
task_mode.get_mode(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_ALL_MODES);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
printf("%s - set asr state to RTEMS_NO_ASR - ", self.name_string());
|
|
||||||
task_mode.set_asr_state(RTEMS_NO_ASR);
|
|
||||||
task_mode.get_mode(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_ALL_MODES);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
// interrupt level control
|
|
||||||
|
|
||||||
rtems_interrupt_level current_level;
|
|
||||||
rtems_interrupt_level level;
|
|
||||||
|
|
||||||
printf("%s - get current interrupt level - ", self.name_string());
|
|
||||||
task_mode.get_interrupt_level(current_level);
|
|
||||||
printf("%s, level is %i\n", task_mode.last_status_string(), current_level);
|
|
||||||
|
|
||||||
printf("%s - set interrupt level to 102 - ", self.name_string());
|
|
||||||
task_mode.set_interrupt_level(102);
|
|
||||||
printf("%s\n", task_mode.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - set interrupt level to original level - ", self.name_string());
|
|
||||||
task_mode.set_interrupt_level(current_level, level);
|
|
||||||
printf("%s, level was %i\n", task_mode.last_status_string(), level);
|
|
||||||
|
|
||||||
printf("%s - set mode to original mode - ", self.name_string());
|
|
||||||
task_mode.set_mode(current_mode,
|
|
||||||
RTEMS_PREEMPT_MASK | RTEMS_TIMESLICE_MASK |
|
|
||||||
RTEMS_ASR_MASK | RTEMS_INTERRUPT_MASK);
|
|
||||||
task_mode.get_mode(mode);
|
|
||||||
printf("%s,\n\t mode is 0x%08X, ", task_mode.last_status_string(), mode);
|
|
||||||
print_mode(mode, RTEMS_ALL_MODES);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
printf(" * END TaskMode Class test *\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task1::screen4(void)
|
|
||||||
{
|
|
||||||
printf(" * START Event Class test *\n");
|
|
||||||
|
|
||||||
printf("%s - create task 2 - ", name_string());
|
|
||||||
Task2 task_2("TA2", (rtems_task_priority) 9, RTEMS_MINIMUM_STACK_SIZE * 6);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - start task 2 - ", name_string());
|
|
||||||
task_2.start(0);
|
|
||||||
printf("%s\n", task_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - construct event connecting to task 2 - ", name_string());
|
|
||||||
rtemsEvent event_2("TA2 ");
|
|
||||||
printf("%s\n", event_2.last_status_string());
|
|
||||||
|
|
||||||
// wait for task 2 to complete its timeout tests
|
|
||||||
wake_after(7000000);
|
|
||||||
|
|
||||||
printf("%s - send event signal 0 using the task id - ", name_string());
|
|
||||||
event_2.send(task_2.id_is(), RTEMS_SIGNAL_0);
|
|
||||||
printf("%s\n", event_2.last_status_string());
|
|
||||||
|
|
||||||
wake_after(1000000);
|
|
||||||
|
|
||||||
printf("%s - send event signal 0 using the task object reference - ", name_string());
|
|
||||||
event_2.send(task_2, RTEMS_SIGNAL_0);
|
|
||||||
printf("%s\n", event_2.last_status_string());
|
|
||||||
|
|
||||||
wake_after(1000000);
|
|
||||||
|
|
||||||
printf("%s - send event signal 31 using connected id - ", name_string());
|
|
||||||
event_2.send(RTEMS_SIGNAL_31);
|
|
||||||
printf("%s\n", event_2.last_status_string());
|
|
||||||
|
|
||||||
wake_after(1000000);
|
|
||||||
|
|
||||||
rtemsEvent event_2_2;
|
|
||||||
|
|
||||||
event_2_2.connect("TA2");
|
|
||||||
|
|
||||||
printf("%s - send event signal 0 and 31 - ", name_string());
|
|
||||||
event_2_2.send(task_2, RTEMS_SIGNAL_0 | RTEMS_SIGNAL_31);
|
|
||||||
printf("%s\n", event_2_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - waiting 5 secs for TA2 to finish\n", name_string());
|
|
||||||
wake_after(500000);
|
|
||||||
|
|
||||||
printf(" * END Event Class test *\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task1::screen5(void)
|
|
||||||
{
|
|
||||||
printf(" * START Interrupt Class test *\n");
|
|
||||||
|
|
||||||
printf(" do not know a portable BSP type interrupt test\n");
|
|
||||||
|
|
||||||
printf(" * END Interrupt Class test *\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task1::screen6(void)
|
|
||||||
{
|
|
||||||
printf(" * START MessageQueue Class test *\n");
|
|
||||||
|
|
||||||
printf("%s - construct message queue 1 with no memory error - ", name_string());
|
|
||||||
rtemsMessageQueue mq_1("MQ1", 1000000, 1000);
|
|
||||||
printf("%s\n", mq_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - construct/create message queue 2 - ", name_string());
|
|
||||||
rtemsMessageQueue mq_2("MQ2", 4, 50);
|
|
||||||
printf("%s\n", mq_2.last_status_string());
|
|
||||||
|
|
||||||
char *u1 = "normal send";
|
|
||||||
char *u2 = "urgent send";
|
|
||||||
char in[100];
|
|
||||||
rtems_unsigned32 size;
|
|
||||||
|
|
||||||
printf("%s - send u1 to mq_2 - ", name_string());
|
|
||||||
mq_2.send(u1, strlen(u1) + 1);
|
|
||||||
printf("%s\n", mq_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - urgent send u2 to mq_2 - ", name_string());
|
|
||||||
mq_2.urgent(u2, strlen(u2) + 1);
|
|
||||||
printf("%s\n", mq_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - create task 3_1 - ", name_string());
|
|
||||||
Task3 task_3_1("TA31", 9, RTEMS_MINIMUM_STACK_SIZE * 6);
|
|
||||||
printf("%s\n", task_3_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - start task 3_1 - ", name_string());
|
|
||||||
task_3_1.start(0);
|
|
||||||
printf("%s\n", task_3_1.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - create task 3_2 - ", name_string());
|
|
||||||
Task3 task_3_2("TA32", 9, RTEMS_MINIMUM_STACK_SIZE * 6);
|
|
||||||
printf("%s\n", task_3_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - start task 3_2 - ", name_string());
|
|
||||||
task_3_2.start(0);
|
|
||||||
printf("%s\n", task_3_1.last_status_string());
|
|
||||||
|
|
||||||
wake_after(1000000);
|
|
||||||
|
|
||||||
printf("%s - receive u2 on mq_2 ...\n", name_string()); fflush(stdout);
|
|
||||||
mq_2.receive(in, size, 5000000);
|
|
||||||
printf("%s - %s\n", name_string(), mq_2.last_status_string());
|
|
||||||
|
|
||||||
if (size == (strlen(u2) + 5))
|
|
||||||
{
|
|
||||||
if ((strncmp(in, task_3_1.name_string(), 4) == 0) &&
|
|
||||||
(strcmp(in + 4, u2) == 0))
|
|
||||||
{
|
|
||||||
printf("%s - message u2 received correctly\n", name_string());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("%s - message u2 received incorrectly, message='%s', size=%i\n",
|
|
||||||
name_string(), in, size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
printf("%s - message u2 size incorrect, size=%i\n", name_string(), size);
|
|
||||||
|
|
||||||
printf("%s - receive u1 on mq_2 ...\n", name_string()); fflush(stdout);
|
|
||||||
mq_2.receive(in, size, 5000000);
|
|
||||||
printf("%s - %s\n", name_string(), mq_2.last_status_string());
|
|
||||||
|
|
||||||
if (size == (strlen(u1) + 5))
|
|
||||||
{
|
|
||||||
if ((strncmp(in, task_3_2.name_string(), 4) == 0) &&
|
|
||||||
(strcmp(in + 4, u1) == 0))
|
|
||||||
{
|
|
||||||
printf("%s - message u1 received correctly\n", name_string());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("%s - message u1 received incorrectly, message='%s', size=%i\n",
|
|
||||||
name_string(), in, size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
printf("%s - message u1 size incorrect, size=%i\n", name_string(), size);
|
|
||||||
|
|
||||||
wake_after(3000000);
|
|
||||||
|
|
||||||
char *b1 = "broadcast message";
|
|
||||||
rtems_unsigned32 count;
|
|
||||||
|
|
||||||
printf("%s - broadcast send b1 ...\n", name_string());
|
|
||||||
mq_2.broadcast(b1, strlen(b1) + 1, count);
|
|
||||||
printf("%s - mq_2 broadcast send - %s, count=%i\n",
|
|
||||||
name_string(), mq_2.last_status_string(), count);
|
|
||||||
|
|
||||||
wake_after(1000000);
|
|
||||||
|
|
||||||
printf("%s - receive message b1 on mq_2 from %s...\n",
|
|
||||||
name_string(), task_3_1.name_string()); fflush(stdout);
|
|
||||||
mq_2.receive(in, size, 5000000);
|
|
||||||
printf("%s - %s\n", name_string(), mq_2.last_status_string());
|
|
||||||
|
|
||||||
if (size == (strlen(b1) + 5))
|
|
||||||
{
|
|
||||||
if ((strncmp(in, task_3_1.name_string(), 4) == 0) &&
|
|
||||||
(strcmp(in + 4, b1) == 0))
|
|
||||||
{
|
|
||||||
printf("%s - message b1 received correctly\n", name_string());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("%s - message b1 received incorrectly, message='%s'\n",
|
|
||||||
name_string(), in);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
printf("%s - message b1 size incorrect, size=%i\n", name_string(), size);
|
|
||||||
|
|
||||||
printf("%s - receive message b1 on mq_2 from %s...\n",
|
|
||||||
name_string(), task_3_1.name_string()); fflush(stdout);
|
|
||||||
mq_2.receive(in, size, 5000000);
|
|
||||||
printf("%s - %s\n", name_string(), mq_2.last_status_string());
|
|
||||||
|
|
||||||
if (size == (strlen(b1) + 5))
|
|
||||||
{
|
|
||||||
if ((strncmp(in, task_3_2.name_string(), 4) == 0) &&
|
|
||||||
(strcmp(in + 4, b1) == 0))
|
|
||||||
{
|
|
||||||
printf("%s - message b1 received correctly\n", name_string());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("%s - message b1 received incorrectly, message='%s', size=%i\n",
|
|
||||||
name_string(), in, size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
printf("%s - message b1 size incorrect, size=%i\n", name_string(), size);
|
|
||||||
|
|
||||||
// wait for task 3_1, and 3_2 to complete their timeout tests, will
|
|
||||||
// start these after getting the broadcast message
|
|
||||||
wake_after(7000000);
|
|
||||||
|
|
||||||
char *f1 = "flush message";
|
|
||||||
|
|
||||||
printf("%s - send f1 to mq_2 - ", name_string());
|
|
||||||
mq_2.send(f1, strlen(f1) + 1);
|
|
||||||
printf("%s\n", mq_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - send f1 to mq_2 - ", name_string());
|
|
||||||
mq_2.send(f1, strlen(f1) + 1);
|
|
||||||
printf("%s\n", mq_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - send f1 to mq_2 - ", name_string());
|
|
||||||
mq_2.send(f1, strlen(f1) + 1);
|
|
||||||
printf("%s\n", mq_2.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - flush mq_2 - ", name_string());
|
|
||||||
mq_2.flush(size);
|
|
||||||
printf("%s, flushed=%i\n", mq_2.last_status_string(), size);
|
|
||||||
|
|
||||||
printf(" * END MessageQueue Class test *\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task1::print_mode(rtems_mode mode, rtems_mode mask)
|
|
||||||
{
|
|
||||||
rtemsTaskMode task_mode;
|
|
||||||
if (mask & RTEMS_PREEMPT_MASK)
|
|
||||||
printf("RTEMS_%sPREEMPT ",
|
|
||||||
task_mode.preemption_set(mode) ? "" : "NO_");
|
|
||||||
if (mask & RTEMS_TIMESLICE_MASK)
|
|
||||||
printf("RTEMS_%sTIMESLICE ",
|
|
||||||
task_mode.preemption_set(mode) ? "" : "NO_");
|
|
||||||
if (mask & RTEMS_ASR_MASK)
|
|
||||||
printf("RTEMS_%sASR ",
|
|
||||||
task_mode.asr_set(mode) ? "" : "NO_");
|
|
||||||
if (mask & RTEMS_INTERRUPT_MASK)
|
|
||||||
printf("INTMASK=%i",
|
|
||||||
mode & RTEMS_INTERRUPT_MASK);
|
|
||||||
}
|
|
||||||
|
|
||||||
EndTask::EndTask(const char* name,
|
|
||||||
const rtems_task_priority initial_priority,
|
|
||||||
const rtems_unsigned32 stack_size)
|
|
||||||
: rtemsTask(name, initial_priority, stack_size, RTEMS_NO_PREEMPT)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void EndTask::body(rtems_task_argument)
|
|
||||||
{
|
|
||||||
printf("*** END OF RTEMS++ TEST ***\n");
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
/* Task_2
|
|
||||||
*
|
|
||||||
* This routine serves as a test task. Its only purpose is to generate the
|
|
||||||
* error where a semaphore is deleted while a task is waiting for it.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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"
|
|
||||||
|
|
||||||
Task2::Task2(const char* name,
|
|
||||||
const rtems_task_priority initial_priority,
|
|
||||||
const rtems_unsigned32 stack_size)
|
|
||||||
: rtemsTask(name, initial_priority, stack_size, RTEMS_NO_PREEMPT)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task2::body(rtems_task_argument )
|
|
||||||
{
|
|
||||||
screen4();
|
|
||||||
|
|
||||||
printf("%s - destroy itself\n", name_string());
|
|
||||||
destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task2::screen4()
|
|
||||||
{
|
|
||||||
rtemsEvent event;
|
|
||||||
|
|
||||||
// block waiting for any event
|
|
||||||
rtems_event_set out;
|
|
||||||
|
|
||||||
printf("%s - event no wait - ", name_string());
|
|
||||||
event.receive(RTEMS_SIGNAL_0, out, 0, rtemsEvent::no_wait);
|
|
||||||
printf("%s\n", event.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - event 5 secs timeout - ", name_string()); fflush(stdout);
|
|
||||||
event.receive(RTEMS_SIGNAL_0, out, 5000000);
|
|
||||||
printf("%s\n", event.last_status_string());
|
|
||||||
|
|
||||||
// send using task id
|
|
||||||
printf("%s - event wait forever for signal 0 from TA1 ....\n", name_string());
|
|
||||||
event.receive(RTEMS_SIGNAL_0, out);
|
|
||||||
printf("%s - %s, signals out are 0x%08X\n", name_string(), event.last_status_string(), out);
|
|
||||||
|
|
||||||
// send using task object reference
|
|
||||||
printf("%s - event wait forever for signal 0 from TA1 ....\n", name_string());
|
|
||||||
event.receive(RTEMS_SIGNAL_0, out);
|
|
||||||
printf("%s - %s, signals out are 0x%08X\n", name_string(), event.last_status_string(), out);
|
|
||||||
|
|
||||||
printf("%s - event wait forever for signal 31 from TA1 ....\n", name_string());
|
|
||||||
event.receive(RTEMS_SIGNAL_31, out);
|
|
||||||
printf("%s - %s, signals out are 0x%08X\n", name_string(), event.last_status_string(), out);
|
|
||||||
|
|
||||||
printf("%s - event wait forever for signal 0 and 31 from TA1 ....\n", name_string());
|
|
||||||
event.receive(RTEMS_SIGNAL_0 | RTEMS_SIGNAL_31, out, 0, rtemsEvent::wait, rtemsEvent::all);
|
|
||||||
printf("%s - %s, signals out are 0x%08X\n", name_string(), event.last_status_string(), out);
|
|
||||||
|
|
||||||
printf("%s - send event signal 1 - ", name_string());
|
|
||||||
event.send(RTEMS_SIGNAL_1);
|
|
||||||
printf("%s\n", event.last_status_string());
|
|
||||||
|
|
||||||
printf("%s - event wait forever for signal 1 from TA2 - ", name_string());
|
|
||||||
event.receive(RTEMS_SIGNAL_1, out, 0, rtemsEvent::wait, rtemsEvent::all);
|
|
||||||
printf("%s, signals out are 0x%08X\n", event.last_status_string(), out);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
/* Task_3
|
|
||||||
*
|
|
||||||
* This routine serves as a test task. Loopback the messages and test
|
|
||||||
* timeouts
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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"
|
|
||||||
|
|
||||||
Task3::Task3(const char* name,
|
|
||||||
const rtems_task_priority initial_priority,
|
|
||||||
const rtems_unsigned32 stack_size)
|
|
||||||
: rtemsTask(name, initial_priority, stack_size, RTEMS_NO_PREEMPT)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task3::body(rtems_task_argument )
|
|
||||||
{
|
|
||||||
screen6();
|
|
||||||
|
|
||||||
printf("%s - destroy itself\n", name_string());
|
|
||||||
destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Task3::screen6()
|
|
||||||
{
|
|
||||||
rtemsMessageQueue mq_2("MQ2");
|
|
||||||
printf("%s - construction connect mq_2 - %s\n", name_string(), mq_2.last_status_string());
|
|
||||||
|
|
||||||
if (mq_2.successful())
|
|
||||||
{
|
|
||||||
char in[100];
|
|
||||||
char out[100];
|
|
||||||
rtems_unsigned32 size;
|
|
||||||
bool loopback = true;
|
|
||||||
|
|
||||||
while (loopback)
|
|
||||||
{
|
|
||||||
printf("%s - loopback from mq_2 to mq_2 ...\n", name_string()); fflush(stdout);
|
|
||||||
|
|
||||||
mq_2.receive(in, size);
|
|
||||||
printf("%s - mq_2 receive - %s, size=%i, message string size=%i\n",
|
|
||||||
name_string(), mq_2.last_status_string(), size, (int) strlen(in));
|
|
||||||
if (mq_2.successful())
|
|
||||||
{
|
|
||||||
if (size > (100 - 5))
|
|
||||||
printf("%s - size to large\n", name_string());
|
|
||||||
else
|
|
||||||
{
|
|
||||||
strcpy(out, name_string());
|
|
||||||
strcpy(out + 4, in);
|
|
||||||
|
|
||||||
printf("%s - loopback to mq_2 - ", name_string());
|
|
||||||
mq_2.send(out, strlen(out) + 1);
|
|
||||||
printf("%s\n", mq_2.last_status_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp(in, "broadcast message") == 0)
|
|
||||||
loopback = false;
|
|
||||||
else
|
|
||||||
wake_after(1500000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
#
|
|
||||||
# $Id$
|
|
||||||
#
|
|
||||||
# COPYRIGHT (c) 1997
|
|
||||||
# Objective Design Systems Ltd Pty (ODS)
|
|
||||||
# All rights reserved (R) Objective Design Systems Ltd Pty
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
|
|
||||||
The file describes the directives and concepts tested by this test set.
|
|
||||||
|
|
||||||
test set name: rtems++
|
|
||||||
|
|
||||||
classes:
|
|
||||||
rtemsTask, rtemsTaskMode, rtemsEvent, rtemsMessageQueue
|
|
||||||
|
|
||||||
concepts:
|
|
||||||
|
|
||||||
a. Verify each class tested can be constructed using each of the constructors.
|
|
||||||
|
|
||||||
b. Verify each class can be an owner of an object id if capable.
|
|
||||||
|
|
||||||
c. Verify each class can connect to an existing object id if capable.
|
|
||||||
|
|
||||||
d. Verify the operation of each method of each class.
|
|
||||||
|
|
||||||
@@ -1,161 +0,0 @@
|
|||||||
*** RTEMS++ TEST ***
|
|
||||||
INIT - Task.create() - RTEMS[19] invalid thread priority
|
|
||||||
INIT - Task.create() - RTEMS[00] successful completion
|
|
||||||
INIT - Task.create() - RTEMS[16] illegal on calling thread
|
|
||||||
INIT - Task.restart() - RTEMS[14] thread is in wrong state
|
|
||||||
INIT - Task.start(0xDEADDEAD) - RTEMS[00] successful completion
|
|
||||||
<pause - screen 1>
|
|
||||||
* START Task Class test *
|
|
||||||
TA1 - test argument - argument matched
|
|
||||||
TA1 - copy constructor - local and this id's match
|
|
||||||
TA1 - copy constructor - local and this name's match
|
|
||||||
TA1 - copy operator - local and this id's match
|
|
||||||
TA1 - copy operator - local and this name's match
|
|
||||||
TA1 - not owner destroy's task - RTEMS[23] not owner of resource
|
|
||||||
TA1 - connect to a local valid task name - RTEMS[00] successful completion
|
|
||||||
TA1 - connect to an invalid task name - RTEMS[03] invalid object name
|
|
||||||
SELF - connect to a task on an invalid node - RTEMS[21] invalid node id
|
|
||||||
TA1 - restart from a non-owner - RTEMS[23] not owner of resource
|
|
||||||
<pause - screen 2>
|
|
||||||
TA1 - wake after 0 secs - RTEMS[00] successful completion
|
|
||||||
TA1 - wake after 500 msecs - RTEMS[00] successful completion
|
|
||||||
TA1 - wake after 5 secs - RTEMS[00] successful completion
|
|
||||||
TA1 - wake when - to do
|
|
||||||
TA1 - connected object wake after 0 secs - RTEMS[00] successful completion
|
|
||||||
TA1 - connected object wake after 500 msecs - RTEMS[00] successful completion
|
|
||||||
TA1 - connected object wake after 5 secs - RTEMS[00] successful completion
|
|
||||||
TA1 - connected object wake when - to do
|
|
||||||
SELF - self object wake after 0 secs - RTEMS[00] successful completion
|
|
||||||
SELF - self object wake after 500 msecs - RTEMS[00] successful completion
|
|
||||||
SELF - self object wake after 5 secs - RTEMS[00] successful completion
|
|
||||||
SELF - self object wake when - to do
|
|
||||||
TA1 - get priority - RTEMS[00] successful completion, priority is 10
|
|
||||||
TA1 - set priority to 512 - RTEMS[19] invalid thread priority
|
|
||||||
TA1 - set priority to 25 - RTEMS[00] successful completion
|
|
||||||
TA1 - set priority to original - RTEMS[00] successful completion, priority was 25
|
|
||||||
TA1 - connected object get priority - RTEMS[00] successful completion, priority is 10
|
|
||||||
TA1 - connected object set priority to 512 - RTEMS[19] invalid thread priority
|
|
||||||
TA1 - connected object set priority to 25 - RTEMS[00] successful completion
|
|
||||||
TA1 - connected object set priority to original - RTEMS[00] successful completion, priority was 25
|
|
||||||
SELF - self object get priority - RTEMS[00] successful completion, priority is 10
|
|
||||||
SELF - self object set priority to 512 - RTEMS[19] invalid thread priority
|
|
||||||
SELF - self object set priority to 25 - RTEMS[00] successful completion
|
|
||||||
SELF - self object set priority to original - RTEMS[00] successful completion, priority was 25
|
|
||||||
TA1 - get note - RTEMS[00] successful completion, note is 0
|
|
||||||
TA1 - get with bad notepad number - RTEMS[10] number was invalid, note is 0
|
|
||||||
TA1 - set note to 0xDEADBEEF - RTEMS[00] successful completion
|
|
||||||
TA1 - get note - RTEMS[00] successful completion, note is 0xDEADBEEF
|
|
||||||
TA1 - set note to original value - RTEMS[00] successful completion
|
|
||||||
TA1 - connected object get note - RTEMS[00] successful completion, notepad is 0
|
|
||||||
TA1 - connected object get with bad notepad number - RTEMS[10] number was invalid, note is 0
|
|
||||||
TA1 - connected object set note to 0xDEADBEEF - RTEMS[00] successful completion
|
|
||||||
TA1 - connected object get note - RTEMS[00] successful completion, note is 0xDEADBEEF
|
|
||||||
TA1 - connected object set note to original value - RTEMS[00] successful completion
|
|
||||||
SELF - self object get note - RTEMS[00] successful completion, note is 0
|
|
||||||
SELF - self object get with bad notepad number - RTEMS[10] number was invalid, note is 0
|
|
||||||
SELF - self object set note to 0xDEADBEEF - RTEMS[00] successful completion
|
|
||||||
SELF - self object get note - RTEMS[00] successful completion, notepad is 0xDEADBEEF
|
|
||||||
SELF - self object set note to original value - RTEMS[00] successful completion
|
|
||||||
* END Task Class test *
|
|
||||||
<pause - screen 3>
|
|
||||||
* START TaskMode Class test *
|
|
||||||
SELF - get mode - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0
|
|
||||||
SELF - get preemption state - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000100, RTEMS_NO_PREEMPT
|
|
||||||
SELF - set preemption state to RTEMS_PREEMPT - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000000, RTEMS_PREEMPT RTEMS_TIMESLICE RTEMS_NO_ASR INTMASK=0
|
|
||||||
SELF - set preemption state to RTEMS_NO_PREEMPT - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0
|
|
||||||
SELF - get timeslice state - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000000, RTEMS_TIMESLICE
|
|
||||||
SELF - set timeslice state to RTEMS_TIMESLICE - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000300, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0
|
|
||||||
SELF - set timeslice state to RTEMS_NO_TIMESLICE - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0
|
|
||||||
SELF - get asr state - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000000, RTEMS_NO_ASR
|
|
||||||
SELF - set asr state to RTEMS_ASR - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0
|
|
||||||
SELF - set asr state to RTEMS_NO_ASR - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000500, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_ASR INTMASK=0
|
|
||||||
SELF - get current interrupt level - RTEMS[00] successful completion, level is 0
|
|
||||||
SELF - set interrupt level to 102 - RTEMS[00] successful completion
|
|
||||||
SELF - set interrupt level to original level - RTEMS[00] successful completion, level was 0
|
|
||||||
SELF - set mode to original mode - RTEMS[00] successful completion,
|
|
||||||
mode is 0x00000100, RTEMS_NO_PREEMPT RTEMS_NO_TIMESLICE RTEMS_NO_ASR INTMASK=0
|
|
||||||
* END TaskMode Class test *
|
|
||||||
<pause - screen 4>
|
|
||||||
* START Event Class test *
|
|
||||||
TA1 - create task 2 - RTEMS[00] successful completion
|
|
||||||
TA1 - start task 2 - RTEMS[00] successful completion
|
|
||||||
TA1 - construct event connecting to task 2 - RTEMS[00] successful completion
|
|
||||||
TA2 - event no wait - RTEMS[13] request not satisfied
|
|
||||||
TA2 - event 5 secs timeout - RTEMS[06] timed out waiting
|
|
||||||
TA2 - event wait forever for signal 0 from TA1 ....
|
|
||||||
TA1 - send event signal 0 using the task id - RTEMS[00] successful completion
|
|
||||||
TA2 - RTEMS[00] successful completion, signals out are 0x00000001
|
|
||||||
TA2 - event wait forever for signal 0 from TA1 ....
|
|
||||||
TA1 - send event signal 0 using the task object reference - RTEMS[00] successful completion
|
|
||||||
TA2 - RTEMS[00] successful completion, signals out are 0x00000001
|
|
||||||
TA2 - event wait forever for signal 31 from TA1 ....
|
|
||||||
TA1 - send event signal 31 using connected id - RTEMS[00] successful completion
|
|
||||||
TA2 - RTEMS[00] successful completion, signals out are 0x80000000
|
|
||||||
TA2 - event wait forever for signal 0 and 31 from TA1 ....
|
|
||||||
TA1 - send event signal 0 and 31 - RTEMS[00] successful completion
|
|
||||||
TA1 - waiting 5 secs for TA2 to finish
|
|
||||||
TA2 - RTEMS[00] successful completion, signals out are 0x80000001
|
|
||||||
TA2 - send event signal 1 - RTEMS[00] successful completion
|
|
||||||
TA2 - event wait forever for signal 1 from TA2 - RTEMS[00] successful completion, signals out are 0x00000002
|
|
||||||
TA2 - destory itself
|
|
||||||
* END Event Class test *
|
|
||||||
<pause - screen 5>
|
|
||||||
* START Interrupt Class test *
|
|
||||||
do not know a portable BSP type interrupt test
|
|
||||||
* END Interrupt Class test *
|
|
||||||
<pause - screen 6>
|
|
||||||
* START MessageQueue Class test *
|
|
||||||
TA1 - construct message queue 1 with no memory error - RTEMS[05] too many
|
|
||||||
TA1 - construct/create message queue 2 - RTEMS[00] successful completion
|
|
||||||
TA1 - send u1 to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA1 - urgent send u2 to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA1 - create task 3_1 - RTEMS[00] successful completion
|
|
||||||
TA1 - start task 3_1 - RTEMS[00] successful completion
|
|
||||||
TA1 - create task 3_2 - RTEMS[00] successful completion
|
|
||||||
TA1 - start task 3_2 - RTEMS[00] successful completion
|
|
||||||
TA31 - construction connect mq_2 - RTEMS[00] successful completion
|
|
||||||
TA31 - loopback from mq_2 to mq_2 ...
|
|
||||||
TA31 - mq_2 receive - RTEMS[00] successful completion, size=12, message string size=11
|
|
||||||
TA31 - loopback to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA32 - construction connect mq_2 - RTEMS[00] successful completion
|
|
||||||
TA32 - loopback from mq_2 to mq_2 ...
|
|
||||||
TA32 - mq_2 receive - RTEMS[00] successful completion, size=12, message string size=11
|
|
||||||
TA32 - loopback to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA1 - receive u2 on mq_2 ...
|
|
||||||
TA1 - RTEMS[00] successful completion
|
|
||||||
TA1 - message u2 received correctly
|
|
||||||
TA1 - receive u1 on mq_2 ...
|
|
||||||
TA1 - RTEMS[00] successful completion
|
|
||||||
TA1 - message u1 received correctly
|
|
||||||
TA31 - loopback from mq_2 to mq_2 ...
|
|
||||||
TA32 - loopback from mq_2 to mq_2 ...
|
|
||||||
TA1 - broadcast send b1 ...
|
|
||||||
TA1 - mq_2 broadcast send - RTEMS[00] successful completion, count=2
|
|
||||||
TA31 - mq_2 receive - RTEMS[00] successful completion, size=18, message string size=17
|
|
||||||
TA31 - loopback to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA31 - destory itself
|
|
||||||
TA32 - mq_2 receive - RTEMS[00] successful completion, size=18, message string size=17
|
|
||||||
TA32 - loopback to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA32 - destory itself
|
|
||||||
TA1 - receive message b1 on mq_2 from TA31...
|
|
||||||
TA1 - RTEMS[00] successful completion
|
|
||||||
TA1 - message b1 received correctly
|
|
||||||
TA1 - receive message b1 on mq_2 from TA31...
|
|
||||||
TA1 - RTEMS[00] successful completion
|
|
||||||
TA1 - message b1 received correctly
|
|
||||||
TA1 - send f1 to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA1 - send f1 to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA1 - send f1 to mq_2 - RTEMS[00] successful completion
|
|
||||||
TA1 - flush mq_2 - RTEMS[00] successful completion, flushed=3
|
|
||||||
* END MessageQueue Class test *
|
|
||||||
<pause - screen 7>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
TEST = rtmonuse
|
|
||||||
|
|
||||||
MANAGERS = io rate_monotonic
|
|
||||||
|
|
||||||
C_FILES = init.c getall.c task1.c
|
|
||||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
|
||||||
|
|
||||||
H_FILES = system.h
|
|
||||||
noinst_HEADERS = $(H_FILES)
|
|
||||||
|
|
||||||
DOCTYPES = scn
|
|
||||||
DOCS = $(DOCTYPES:%=$(TEST).%)
|
|
||||||
|
|
||||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
|
||||||
OBJS = $(C_O_FILES)
|
|
||||||
|
|
||||||
PRINT_SRCS = $(DOCS)
|
|
||||||
|
|
||||||
PGM = ${ARCH}/$(TEST).exe
|
|
||||||
|
|
||||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
|
||||||
include $(top_srcdir)/../automake/compile.am
|
|
||||||
include $(top_srcdir)/../automake/leaf.am
|
|
||||||
include $(top_srcdir)/libtests.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
${PGM}: $(OBJS) $(LINK_FILES)
|
|
||||||
$(make-exe)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
/* Get_all_counters
|
|
||||||
*
|
|
||||||
* This routine allows TA5 to atomically obtain the iteration counters.
|
|
||||||
*
|
|
||||||
* 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"
|
|
||||||
|
|
||||||
void Get_all_counters()
|
|
||||||
{
|
|
||||||
rtems_mode previous_mode;
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
status = rtems_task_mode(
|
|
||||||
RTEMS_NO_PREEMPT,
|
|
||||||
RTEMS_PREEMPT_MASK,
|
|
||||||
&previous_mode
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_mode to RTEMS_NO_PREEMPT" );
|
|
||||||
|
|
||||||
Temporary_count = Count;
|
|
||||||
Count.count[ 1 ] = 0;
|
|
||||||
Count.count[ 2 ] = 0;
|
|
||||||
Count.count[ 3 ] = 0;
|
|
||||||
Count.count[ 4 ] = 0;
|
|
||||||
Count.count[ 5 ] = 0;
|
|
||||||
|
|
||||||
status = rtems_task_mode( RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &previous_mode );
|
|
||||||
directive_failed( status, "rtems_task_mode to RTEMS_PREEMPT" );
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
/* Init
|
|
||||||
*
|
|
||||||
* This routine is the initialization task for this test program.
|
|
||||||
* It is a user initialization task 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:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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 TEST_INIT
|
|
||||||
#include "system.h"
|
|
||||||
|
|
||||||
#include <rtems/rtmonuse.h>
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_unsigned32 index;
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
puts( "\n\n*** RATE MONOTONIC PERIOD STATISTICS TEST ***" );
|
|
||||||
Period_usage_Initialize();
|
|
||||||
|
|
||||||
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', ' ' );
|
|
||||||
Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' );
|
|
||||||
Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' );
|
|
||||||
|
|
||||||
for ( index = 1 ; index <= 5 ; index++ ) {
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ index ],
|
|
||||||
Priorities[ index ],
|
|
||||||
RTEMS_MINIMUM_STACK_SIZE * 4,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
(index == 5) ? RTEMS_FLOATING_POINT : RTEMS_DEFAULT_ATTRIBUTES,
|
|
||||||
&Task_id[ index ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create loop" );
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( index = 1 ; index <= 5 ; index++ ) {
|
|
||||||
status = rtems_task_start( Task_id[ index ], Task_1_through_5, index );
|
|
||||||
directive_failed( status, "rtems_task_start loop" );
|
|
||||||
}
|
|
||||||
|
|
||||||
Count.count[ 1 ] = 0;
|
|
||||||
Count.count[ 2 ] = 0;
|
|
||||||
Count.count[ 3 ] = 0;
|
|
||||||
Count.count[ 4 ] = 0;
|
|
||||||
Count.count[ 5 ] = 0;
|
|
||||||
|
|
||||||
status = rtems_task_delete( RTEMS_SELF );
|
|
||||||
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
*** TEST 20 ***
|
|
||||||
TA1 - rtems_rate_monotonic_create id = 0x28010001
|
|
||||||
TA1 - rtems_rate_monotonic_ident id = 0x28010001
|
|
||||||
TA1 - (0x28010001) period 2
|
|
||||||
TA2 - rtems_rate_monotonic_create id = 0x28010002
|
|
||||||
TA2 - rtems_rate_monotonic_ident id = 0x28010002
|
|
||||||
TA2 - (0x28010002) period 2
|
|
||||||
TA3 - rtems_rate_monotonic_create id = 0x28010003
|
|
||||||
TA3 - rtems_rate_monotonic_ident id = 0x28010003
|
|
||||||
TA3 - (0x28010003) period 2
|
|
||||||
TA4 - rtems_rate_monotonic_create id = 0x28010004
|
|
||||||
TA4 - rtems_rate_monotonic_ident id = 0x28010004
|
|
||||||
TA4 - (0x28010004) period 2
|
|
||||||
TA5 - rtems_rate_monotonic_create id = 0x28010005
|
|
||||||
TA5 - rtems_rate_monotonic_ident id = 0x28010005
|
|
||||||
TA5 - (0x28010005) period 100
|
|
||||||
TA5 - PERIODS CHECK OK (1)
|
|
||||||
TA5 - PERIODS CHECK OK (2)
|
|
||||||
TA5 - PERIODS CHECK OK (3)
|
|
||||||
TA5 - PERIODS CHECK OK (4)
|
|
||||||
TA5 - PERIODS CHECK OK (5)
|
|
||||||
TA5 - PERIODS CHECK OK (6)
|
|
||||||
TA5 - PERIODS CHECK OK (7)
|
|
||||||
TA5 - PERIODS CHECK OK (8)
|
|
||||||
TA5 - PERIODS CHECK OK (9)
|
|
||||||
TA5 - PERIODS CHECK OK (10)
|
|
||||||
*** END OF TEST 20 ***
|
|
||||||
@@ -1,61 +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 <tmacros.h>
|
|
||||||
|
|
||||||
/* types */
|
|
||||||
|
|
||||||
struct counters {
|
|
||||||
rtems_unsigned32 count[6];
|
|
||||||
};
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
rtems_task Task_1_through_5(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
void Get_all_counters( void );
|
|
||||||
|
|
||||||
/* configuration information */
|
|
||||||
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
|
||||||
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 6
|
|
||||||
#define CONFIGURE_MAXIMUM_PERIODS 10
|
|
||||||
|
|
||||||
#define CONFIGURE_INIT_TASK_PRIORITY 10
|
|
||||||
#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
|
|
||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
|
||||||
|
|
||||||
#define CONFIGURE_EXTRA_TASK_STACKS (15 * RTEMS_MINIMUM_STACK_SIZE)
|
|
||||||
#include <confdefs.h>
|
|
||||||
|
|
||||||
/* global variables */
|
|
||||||
|
|
||||||
TEST_EXTERN rtems_id Task_id[ 6 ]; /* array of task ids */
|
|
||||||
TEST_EXTERN rtems_name Task_name[ 6 ]; /* array of task names */
|
|
||||||
|
|
||||||
TEST_EXTERN struct counters Count; /* iteration counters */
|
|
||||||
TEST_EXTERN struct counters Temporary_count;
|
|
||||||
extern rtems_task_priority Priorities[ 6 ];
|
|
||||||
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,123 +0,0 @@
|
|||||||
/* Task_1_through_5
|
|
||||||
*
|
|
||||||
* This routine serves as a test task for the period capabilities of the
|
|
||||||
* Rate Monotonic Manager.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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 <rtems/cpuuse.h>
|
|
||||||
#include <rtems/rtmonuse.h>
|
|
||||||
|
|
||||||
rtems_unsigned32 Periods[6] = { 0, 2, 2, 2, 2, 100 };
|
|
||||||
rtems_unsigned32 Iterations[6] = { 0, 50, 50, 50, 50, 1 };
|
|
||||||
rtems_task_priority Priorities[6] = { 0, 1, 1, 3, 4, 5 };
|
|
||||||
|
|
||||||
rtems_task Task_1_through_5(
|
|
||||||
rtems_unsigned32 argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_id rmid;
|
|
||||||
rtems_id test_rmid;
|
|
||||||
rtems_unsigned32 index;
|
|
||||||
rtems_unsigned32 pass;
|
|
||||||
rtems_unsigned32 failed;
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
status = rtems_rate_monotonic_create( argument, &rmid );
|
|
||||||
directive_failed( status, "rtems_rate_monotonic_create" );
|
|
||||||
put_name( Task_name[ argument ], FALSE );
|
|
||||||
printf( "- rtems_rate_monotonic_create id = 0x%08x\n", rmid );
|
|
||||||
|
|
||||||
status = rtems_rate_monotonic_ident( argument, &test_rmid );
|
|
||||||
directive_failed( status, "rtems_rate_monotonic_ident" );
|
|
||||||
put_name( Task_name[ argument ], FALSE );
|
|
||||||
printf( "- rtems_rate_monotonic_ident id = 0x%08x\n", test_rmid );
|
|
||||||
|
|
||||||
if ( rmid != test_rmid ) {
|
|
||||||
printf( "RMID's DO NOT MATCH (0x%x and 0x%x)\n", rmid, test_rmid );
|
|
||||||
rtems_test_exit( 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
put_name( Task_name[ argument ], FALSE );
|
|
||||||
printf( "- (0x%08x) period %d\n", rmid, Periods[ argument ] );
|
|
||||||
|
|
||||||
status = rtems_task_wake_after( 2 );
|
|
||||||
directive_failed( status, "rtems_task_wake_after" );
|
|
||||||
|
|
||||||
switch ( argument ) {
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
case 4:
|
|
||||||
while ( FOREVER ) {
|
|
||||||
Period_usage_Update( rmid );
|
|
||||||
|
|
||||||
status = rtems_rate_monotonic_period( rmid, Periods[ argument ] );
|
|
||||||
directive_failed( status, "rtems_rate_monotonic_period" );
|
|
||||||
Count.count[ argument ]++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
pass = 0;
|
|
||||||
failed = 0;
|
|
||||||
|
|
||||||
status = rtems_rate_monotonic_period( rmid, Periods[ argument ] );
|
|
||||||
directive_failed( status, "rtems_rate_monotonic_period 1 of TA5" );
|
|
||||||
|
|
||||||
Get_all_counters();
|
|
||||||
|
|
||||||
while ( FOREVER ) {
|
|
||||||
Period_usage_Update( rmid );
|
|
||||||
|
|
||||||
status = rtems_rate_monotonic_period( rmid, Periods[ argument ] );
|
|
||||||
directive_failed( status, "rtems_rate_monotonic_period 2 of TA5" );
|
|
||||||
|
|
||||||
Get_all_counters();
|
|
||||||
|
|
||||||
for( index = 1 ; index <= 4 ; index++ ) {
|
|
||||||
if ( Temporary_count.count[ index ] != Iterations[ index ] ) {
|
|
||||||
puts_nocr( "FAIL -- " );
|
|
||||||
put_name ( Task_name[ index ], FALSE );
|
|
||||||
printf ( " Actual=%d, Expected=%d\n",
|
|
||||||
Temporary_count.count[ index ],
|
|
||||||
Iterations[ index ]
|
|
||||||
);
|
|
||||||
failed += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( failed == 5 )
|
|
||||||
rtems_test_exit( 0 );
|
|
||||||
|
|
||||||
pass += 1;
|
|
||||||
|
|
||||||
printf( "TA5 - PERIODS CHECK OK (%d)\n", pass );
|
|
||||||
|
|
||||||
fflush( stdout );
|
|
||||||
|
|
||||||
if ( pass == 10 ) {
|
|
||||||
puts( "*** END OF RATE MONOTONIC PERIOD STATISTICS TEST ***" );
|
|
||||||
CPU_usage_Dump();
|
|
||||||
Period_usage_Dump();
|
|
||||||
rtems_test_exit( 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
TEST = stackchk
|
|
||||||
|
|
||||||
MANAGERS = io
|
|
||||||
|
|
||||||
C_FILES = blow.c init.c task1.c
|
|
||||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
|
||||||
|
|
||||||
H_FILES = system.h
|
|
||||||
noinst_HEADERS = $(H_FILES)
|
|
||||||
|
|
||||||
DOCTYPES = scn
|
|
||||||
DOCS = $(DOCTYPES:%=$(TEST).%)
|
|
||||||
|
|
||||||
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
|
|
||||||
OBJS = $(C_O_FILES)
|
|
||||||
|
|
||||||
PRINT_SRCS = $(DOCS)
|
|
||||||
|
|
||||||
PGM = ${ARCH}/$(TEST).exe
|
|
||||||
|
|
||||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
|
||||||
include $(top_srcdir)/../automake/compile.am
|
|
||||||
include $(top_srcdir)/../automake/leaf.am
|
|
||||||
include $(top_srcdir)/libtests.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
${PGM}: $(OBJS) $(LINK_FILES)
|
|
||||||
$(make-exe)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
/* task1.c
|
|
||||||
*
|
|
||||||
* This set of three tasks do some simple task switching for about
|
|
||||||
* 15 seconds and then call a routine to "blow the stack".
|
|
||||||
*
|
|
||||||
* 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>
|
|
||||||
|
|
||||||
void b() {}
|
|
||||||
|
|
||||||
void blow_stack( void )
|
|
||||||
{
|
|
||||||
volatile unsigned32 *low, *high;
|
|
||||||
unsigned char *area;
|
|
||||||
|
|
||||||
b();
|
|
||||||
/*
|
|
||||||
* Destroy the first and last 16 bytes of our stack... Hope it
|
|
||||||
* does not cause problems :)
|
|
||||||
*/
|
|
||||||
|
|
||||||
area = (unsigned char *)_Thread_Executing->Start.Initial_stack.area;
|
|
||||||
|
|
||||||
low = (volatile unsigned32 *) (area + HEAP_OVERHEAD);
|
|
||||||
high = (volatile unsigned32 *)
|
|
||||||
(area + _Thread_Executing->Start.Initial_stack.size - 16);
|
|
||||||
|
|
||||||
|
|
||||||
low[0] = 0x11111111;
|
|
||||||
low[1] = 0x22222222;
|
|
||||||
low[2] = 0x33333333;
|
|
||||||
low[3] = 0x44444444;
|
|
||||||
|
|
||||||
high[0] = 0x55555555;
|
|
||||||
high[1] = 0x66666666;
|
|
||||||
high[2] = 0x77777777;
|
|
||||||
high[3] = 0x88888888;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
/* Init
|
|
||||||
*
|
|
||||||
* This routine is the initialization task for this test program.
|
|
||||||
* It is a user initialization task 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:
|
|
||||||
* argument - task argument
|
|
||||||
*
|
|
||||||
* 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 TEST_INIT
|
|
||||||
#include "system.h"
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_time_of_day time;
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
puts( "\n\n*** TEST STACK CHECKER ***" );
|
|
||||||
|
|
||||||
build_time( &time, 12, 31, 1988, 9, 0, 0, 0 );
|
|
||||||
status = rtems_clock_set( &time );
|
|
||||||
directive_failed( status, "rtems_clock_set" );
|
|
||||||
|
|
||||||
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,
|
|
||||||
TASK_STACK_SIZE,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
RTEMS_DEFAULT_ATTRIBUTES,
|
|
||||||
&Task_id[ 1 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA1" );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 2 ],
|
|
||||||
1,
|
|
||||||
TASK_STACK_SIZE,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
RTEMS_DEFAULT_ATTRIBUTES,
|
|
||||||
&Task_id[ 2 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA2" );
|
|
||||||
|
|
||||||
status = rtems_task_create(
|
|
||||||
Task_name[ 3 ],
|
|
||||||
1,
|
|
||||||
TASK_STACK_SIZE,
|
|
||||||
RTEMS_DEFAULT_MODES,
|
|
||||||
RTEMS_DEFAULT_ATTRIBUTES,
|
|
||||||
&Task_id[ 3 ]
|
|
||||||
);
|
|
||||||
directive_failed( status, "rtems_task_create of TA3" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 1 ], Task_1_through_3, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA1" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 2 ], Task_1_through_3, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA2" );
|
|
||||||
|
|
||||||
status = rtems_task_start( Task_id[ 3 ], Task_1_through_3, 0 );
|
|
||||||
directive_failed( status, "rtems_task_start of TA3" );
|
|
||||||
|
|
||||||
status = rtems_task_delete( RTEMS_SELF );
|
|
||||||
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
*** TEST STACK CHECKER ***
|
|
||||||
TA1 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
TA2 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
TA3 - rtems_clock_get - 09:00:00 12/31/1988
|
|
||||||
TA1 - rtems_clock_get - 09:00:05 12/31/1988
|
|
||||||
TA1 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
TA2 - rtems_clock_get - 09:00:10 12/31/1988
|
|
||||||
TA1 - rtems_clock_get - 09:00:15 12/31/1988
|
|
||||||
---> error indictation
|
|
||||||
@@ -1,53 +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 <tmacros.h>
|
|
||||||
|
|
||||||
/* macros */
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
|
|
||||||
rtems_task Init(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
rtems_task Task_1_through_3(
|
|
||||||
rtems_task_argument argument
|
|
||||||
);
|
|
||||||
|
|
||||||
void blow_stack( void );
|
|
||||||
|
|
||||||
/* configuration information */
|
|
||||||
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
|
||||||
|
|
||||||
#define TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE*3)
|
|
||||||
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 4
|
|
||||||
#define CONFIGURE_EXTRA_TASK_STACKS (3 * (RTEMS_MINIMUM_STACK_SIZE * 2))
|
|
||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
|
||||||
|
|
||||||
#define STACK_CHECKER_ON
|
|
||||||
|
|
||||||
#include <confdefs.h>
|
|
||||||
|
|
||||||
/* global variables */
|
|
||||||
|
|
||||||
TEST_EXTERN rtems_id Task_id[ 4 ]; /* array of task ids */
|
|
||||||
TEST_EXTERN rtems_name Task_name[ 4 ]; /* array of task names */
|
|
||||||
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
/* task1.c
|
|
||||||
*
|
|
||||||
* This set of three tasks do some simple task switching for about
|
|
||||||
* 15 seconds and then call a routine to "blow the stack".
|
|
||||||
*
|
|
||||||
* 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"
|
|
||||||
|
|
||||||
rtems_task Task_1_through_3(
|
|
||||||
rtems_task_argument argument
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_id tid;
|
|
||||||
rtems_time_of_day time;
|
|
||||||
rtems_status_code status;
|
|
||||||
|
|
||||||
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid );
|
|
||||||
directive_failed( status, "rtems_task_ident" );
|
|
||||||
|
|
||||||
while( FOREVER ) {
|
|
||||||
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
|
|
||||||
directive_failed( status, "rtems_clock_get" );
|
|
||||||
|
|
||||||
if ( time.second >= 15 && tid == Task_id[ 1 ] ) {
|
|
||||||
blow_stack();
|
|
||||||
}
|
|
||||||
|
|
||||||
put_name( Task_name[ task_number( tid ) ], FALSE );
|
|
||||||
print_time( " - rtems_clock_get - ", &time, "\n" );
|
|
||||||
|
|
||||||
status = rtems_task_wake_after( task_number( tid ) * 5 * TICKS_PER_SECOND );
|
|
||||||
directive_failed( status, "rtems_task_wake_after" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
TEST = termios
|
|
||||||
|
|
||||||
MANAGERS = io
|
|
||||||
|
|
||||||
C_FILES = init.c
|
|
||||||
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.$(OBJEXT))
|
|
||||||
|
|
||||||
H_FILES =
|
|
||||||
noinst_HEADERS = $(H_FILES)
|
|
||||||
|
|
||||||
DOCTYPES =
|
|
||||||
DOCS = $(DOCTYPES:%=$(TEST).%)
|
|
||||||
|
|
||||||
SRCS = $(DOCS) $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES)
|
|
||||||
OBJS = $(C_O_FILES) $(CC_O_FILES) $(S_O_FILES)
|
|
||||||
|
|
||||||
PRINT_SRCS = $(DOCS)
|
|
||||||
|
|
||||||
PGM = ${ARCH}/$(TEST).exe
|
|
||||||
|
|
||||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
|
||||||
include $(top_srcdir)/../automake/compile.am
|
|
||||||
include $(top_srcdir)/../automake/leaf.am
|
|
||||||
include $(top_srcdir)/libtests.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
${PGM}: $(OBJS) $(LINK_FILES)
|
|
||||||
$(make-exe)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(TMPINSTALL_FILES)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(C_FILES) $(DOCS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/../automake/local.am
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
#
|
|
||||||
# $Id$
|
|
||||||
#
|
|
||||||
|
|
||||||
These tests are brought to you by the letter `q'.
|
|
||||||
|
|
||||||
When you start the test, you should see:
|
|
||||||
|
|
||||||
You have the following choices:
|
|
||||||
1 - Reset the struct termios
|
|
||||||
2 - Look at the current termios setting
|
|
||||||
3 - Change the line characteristics
|
|
||||||
4 - Test canonical input
|
|
||||||
5 - Test raw input
|
|
||||||
9 - Exit
|
|
||||||
Enter your choice (1 to 5 or 9, followed by a carriage return):
|
|
||||||
|
|
||||||
The individual tests are briefly described below:
|
|
||||||
|
|
||||||
|
|
||||||
1. Reset the struct termios.
|
|
||||||
|
|
||||||
Included just in case you get into trouble. More than likely, if you are in
|
|
||||||
trouble, neither input nor output are likely to work and this won't help. But
|
|
||||||
hey, it should give you some warm fuzzy feeling that its there...
|
|
||||||
|
|
||||||
|
|
||||||
2. Look at the current termios setting
|
|
||||||
|
|
||||||
Dumps the current state of the termios settings in hex and with symbolic flag
|
|
||||||
names.
|
|
||||||
|
|
||||||
|
|
||||||
3. Change the line characteristics
|
|
||||||
|
|
||||||
Allows you to change the line speed, parity, number of data bits and number of
|
|
||||||
stop bits. You must supply a delay before the change takes effect. This gives
|
|
||||||
you time to switch your terminal settings to continue with the test.
|
|
||||||
|
|
||||||
WARNING: Minicom under Linux gets extremely unhappy (as does the /dev/ttyS?
|
|
||||||
underlying devices) if you change the line characteristics and do not make the
|
|
||||||
corresponding change in the terminal emulator.
|
|
||||||
|
|
||||||
|
|
||||||
4. Test canonical input
|
|
||||||
|
|
||||||
Simple test of canonical or cooked input mode. Try typing some tabs and/or control characters and make sure that you can backspace over them properly.
|
|
||||||
|
|
||||||
|
|
||||||
5. Test raw input
|
|
||||||
|
|
||||||
The line is placed into raw mode and four separate test are done:
|
|
||||||
|
|
||||||
VMIN=0, VTIME=0
|
|
||||||
Each letter you type should produce a line of output.
|
|
||||||
The `count' should be quite large, since (as you correctly
|
|
||||||
pointed out) the read is non-blocking. The time should be
|
|
||||||
the interval between typing characters.
|
|
||||||
Type a `q' to finish the test.
|
|
||||||
VMIN=0, VTIME=20
|
|
||||||
Again, each letter should produce a line of output. The
|
|
||||||
`count' should be much smaller -- the read is non-blocking
|
|
||||||
but has a timeout of 2 seconds, so the count should be about
|
|
||||||
half the `interval'.
|
|
||||||
Type a `q' to finish the test.
|
|
||||||
VMIN=5, VTIME=0
|
|
||||||
A line should be produced for every 5 characters typed. The
|
|
||||||
count should be 1. This is a blocking read.
|
|
||||||
Type a `q' as the first character of a group of 5 to finish
|
|
||||||
the test.
|
|
||||||
VMIN=5, VTIME=20
|
|
||||||
Type a character. Two seconds later a line should be printed.
|
|
||||||
Count should be 1. Type a character, and another within 2 seconds.
|
|
||||||
Two seconds after last character (or right after the 5th character)
|
|
||||||
a line should be printed.
|
|
||||||
Type a `q' as the first character of a group to finish the test.
|
|
||||||
|
|
||||||
|
|
||||||
9. Exit
|
|
||||||
|
|
||||||
Gets you out of the test.
|
|
||||||
|
|
||||||
|
|
||||||
Clear???
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
Eric Norum
|
|
||||||
eric@skatter.usask.ca
|
|
||||||
Saskatchewan Accelerator Laboratory
|
|
||||||
University of Saskatchewan
|
|
||||||
Saskatoon, Canada.
|
|
||||||
|
|
||||||
Charles-Antoine Gauthier
|
|
||||||
Software Engineering Group
|
|
||||||
Institute for Information Technology
|
|
||||||
National Research Council of Canada
|
|
||||||
charles.gauthier@nrc.ca
|
|
||||||
|
|
||||||
@@ -1,781 +0,0 @@
|
|||||||
/*
|
|
||||||
* RTEMS configuration/initialization
|
|
||||||
*
|
|
||||||
* This program may be distributed and used for any purpose.
|
|
||||||
* I ask only that you:
|
|
||||||
* 1. Leave this author information intact.
|
|
||||||
* 2. Document any changes you make.
|
|
||||||
*
|
|
||||||
* W. Eric Norum
|
|
||||||
* Saskatchewan Accelerator Laboratory
|
|
||||||
* University of Saskatchewan
|
|
||||||
* Saskatoon, Saskatchewan, CANADA
|
|
||||||
* eric@skatter.usask.ca
|
|
||||||
*
|
|
||||||
* Additions:
|
|
||||||
* Charles-Antoine Gauthier
|
|
||||||
* Software Engineering Group
|
|
||||||
* Institute for Information Technology
|
|
||||||
* National Research Council of Canada
|
|
||||||
* charles.gauthier@nrc.ca
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <bsp.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
|
||||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
|
||||||
|
|
||||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
|
||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
|
||||||
|
|
||||||
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
|
|
||||||
|
|
||||||
#define CONFIGURE_INIT
|
|
||||||
|
|
||||||
rtems_task Init (rtems_task_argument argument);
|
|
||||||
|
|
||||||
#include <confdefs.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <termios.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <tmacros.h>
|
|
||||||
|
|
||||||
#if !defined(fileno)
|
|
||||||
int fileno( FILE *stream); /* beyond ANSI */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Some of the termios dumping code depends on bit positions! */
|
|
||||||
|
|
||||||
void print_32bits( unsigned long bits, unsigned char size, char * names[] )
|
|
||||||
{
|
|
||||||
unsigned char i;
|
|
||||||
|
|
||||||
for( i = 0; i < size; i++ ) {
|
|
||||||
if( (bits >> i) & 0x1 )
|
|
||||||
printf( "%s ", names[i] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void print_c_iflag( struct termios * tp )
|
|
||||||
{
|
|
||||||
char * c_iflag_bits [] = {
|
|
||||||
"IGNBRK", /* 0000001 */
|
|
||||||
"BRKINT", /* 0000002 */
|
|
||||||
"IGNPAR", /* 0000004 */
|
|
||||||
"PARMRK", /* 0000010 */
|
|
||||||
"INPCK", /* 0000020 */
|
|
||||||
"ISTRIP", /* 0000040 */
|
|
||||||
"INLCR", /* 0000100 */
|
|
||||||
"IGNCR", /* 0000200 */
|
|
||||||
"ICRNL", /* 0000400 */
|
|
||||||
"IUCLC", /* 0001000 */
|
|
||||||
"IXON", /* 0002000 */
|
|
||||||
"IXANY", /* 0004000 */
|
|
||||||
"IXOFF", /* 0010000 */
|
|
||||||
"IMAXBEL", /* 0020000 */
|
|
||||||
"unknown", /* 0040000 */
|
|
||||||
"unknown", /* 0100000 */
|
|
||||||
"unknown", /* 0200000 */
|
|
||||||
"unknown", /* 0400000 */
|
|
||||||
"unknown", /* 1000000 */
|
|
||||||
"unknown", /* 2000000 */
|
|
||||||
"unknown" /* 4000000 */
|
|
||||||
};
|
|
||||||
|
|
||||||
printf( "c_iflag = 0x%08x\n\t", tp->c_iflag );
|
|
||||||
print_32bits( tp->c_iflag, sizeof( c_iflag_bits )/sizeof( char * ), c_iflag_bits );
|
|
||||||
printf( "\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void print_c_oflag( struct termios * tp )
|
|
||||||
{
|
|
||||||
printf( "c_oflag = 0x%08x\n\t", tp->c_oflag );
|
|
||||||
|
|
||||||
if( tp->c_oflag & OPOST )
|
|
||||||
printf( "OPOST " );
|
|
||||||
|
|
||||||
if( tp->c_oflag & OLCUC )
|
|
||||||
printf( "OLCUC " );
|
|
||||||
|
|
||||||
if( tp->c_oflag & ONLCR )
|
|
||||||
printf( "ONLCR " );
|
|
||||||
|
|
||||||
if( tp->c_oflag & OCRNL )
|
|
||||||
printf( "OCRNL " );
|
|
||||||
|
|
||||||
if( tp->c_oflag & ONOCR )
|
|
||||||
printf( "ONOCR " );
|
|
||||||
|
|
||||||
if( tp->c_oflag & ONLRET )
|
|
||||||
printf( "ONLRET " );
|
|
||||||
|
|
||||||
if( tp->c_oflag & OFILL )
|
|
||||||
printf( "OFILL " );
|
|
||||||
|
|
||||||
if( tp->c_oflag & OFDEL )
|
|
||||||
printf( "OFDEL " );
|
|
||||||
|
|
||||||
switch( tp->c_oflag & NLDLY ) {
|
|
||||||
case NL0:
|
|
||||||
printf( "NL0 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NL1:
|
|
||||||
printf( "NL1 " );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( tp->c_oflag & CRDLY ) {
|
|
||||||
case CR0:
|
|
||||||
printf( "CR0 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CR1:
|
|
||||||
printf( "CR1 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CR2:
|
|
||||||
printf( "CR2 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CR3:
|
|
||||||
printf( "CR3 " );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( tp->c_oflag & TABDLY ) {
|
|
||||||
case TAB0:
|
|
||||||
printf( "TAB0 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TAB1:
|
|
||||||
printf( "TAB1 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TAB2:
|
|
||||||
printf( "TAB2 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TAB3:
|
|
||||||
printf( "TAB3 " );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( tp->c_oflag & BSDLY ) {
|
|
||||||
case BS0:
|
|
||||||
printf( "BS0 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BS1:
|
|
||||||
printf( "BS1 " );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( tp->c_oflag & VTDLY ) {
|
|
||||||
case VT0:
|
|
||||||
printf( "VT0 " );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VT1:
|
|
||||||
printf( "VT1 " );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( tp->c_oflag & FFDLY ) {
|
|
||||||
case FF0:
|
|
||||||
printf( "FF0" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FF1:
|
|
||||||
printf( "FF1" );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
printf( "\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void print_c_lflag( struct termios * tp )
|
|
||||||
{
|
|
||||||
char * c_lflag_bits [] = {
|
|
||||||
"ISIG", /* 0000001 */
|
|
||||||
"ICANON", /* 0000002 */
|
|
||||||
"XCASE", /* 0000004 */
|
|
||||||
"ECHO", /* 0000010 */
|
|
||||||
"ECHOE", /* 0000020 */
|
|
||||||
"ECHOK", /* 0000040 */
|
|
||||||
"ECHONL", /* 0000100 */
|
|
||||||
"NOFLSH", /* 0000200 */
|
|
||||||
"TOSTOP", /* 0000400 */
|
|
||||||
"ECHOCTL", /* 0001000 */
|
|
||||||
"ECHOPRT", /* 0002000 */
|
|
||||||
"ECHOKE", /* 0004000 */
|
|
||||||
"FLUSHO", /* 0010000 */
|
|
||||||
"unknown", /* 0020000 */
|
|
||||||
"PENDIN", /* 0040000 */
|
|
||||||
"IEXTEN", /* 0100000 */
|
|
||||||
"unknown", /* 0200000 */
|
|
||||||
"unknown", /* 0400000 */
|
|
||||||
"unknown", /* 1000000 */
|
|
||||||
"unknown", /* 2000000 */
|
|
||||||
"unknown", /* 4000000 */
|
|
||||||
};
|
|
||||||
|
|
||||||
printf( "c_lflag = 0x%08x\n\t", tp->c_lflag );
|
|
||||||
print_32bits( tp->c_lflag, sizeof( c_lflag_bits )/sizeof( char * ), c_lflag_bits );
|
|
||||||
printf( "\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void print_c_cflag( struct termios * tp )
|
|
||||||
{
|
|
||||||
unsigned int baud;
|
|
||||||
|
|
||||||
printf( "c_cflag = 0x%08x\n", tp->c_cflag );
|
|
||||||
|
|
||||||
baud = (tp->c_cflag & CBAUD) ;
|
|
||||||
#if defined(__sh2__)
|
|
||||||
if ( tp->c_cflag & CBAUDEX )
|
|
||||||
#endif
|
|
||||||
switch( baud ) {
|
|
||||||
case B0:
|
|
||||||
printf( "\tCBAUD =\tB0\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B50:
|
|
||||||
printf( "\tCBAUD =\tB50\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B75:
|
|
||||||
printf( "\tCBAUD =\tB75\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B110:
|
|
||||||
printf( "\tCBAUD =\tB110\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B134:
|
|
||||||
printf( "\tCBAUD =\tB134\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B150:
|
|
||||||
printf( "\tCBAUD =\tB150\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B200:
|
|
||||||
printf( "\tCBAUD =\tB200\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B300:
|
|
||||||
printf( "\tCBAUD =\tB300\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B600:
|
|
||||||
printf( "\tCBAUD =\tB600\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B1200:
|
|
||||||
printf( "\tCBAUD =\tB1200\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B1800:
|
|
||||||
printf( "\tCBAUD =\tB1800\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B2400:
|
|
||||||
printf( "\tCBAUD =\tB2400\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B4800:
|
|
||||||
printf( "\tCBAUD =\tB4800\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B9600:
|
|
||||||
printf( "\tCBAUD =\tB9600\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B19200:
|
|
||||||
printf( "\tCBAUD =\tB19200\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B38400:
|
|
||||||
printf( "\tCBAUD =\tB38400\n" );
|
|
||||||
break;
|
|
||||||
#if defined(__sh2__)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
switch ( baud )
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
case B57600:
|
|
||||||
printf( "\tCBAUD =\tB57600\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B115200:
|
|
||||||
printf( "\tCBAUD =\tB115200\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B230400:
|
|
||||||
printf( "\tCBAUD =\tB230400\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B460800:
|
|
||||||
printf( "\tCBAUD =\tB460800\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf( "\tCBAUD =\tunknown (0x%08x)\n", baud );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( tp->c_cflag & CSIZE ) {
|
|
||||||
case CS5:
|
|
||||||
printf( "\tCSIZE =\tCS5\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CS6:
|
|
||||||
printf( "\tCSIZE =\tCS6\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CS7:
|
|
||||||
printf( "\tCSIZE =\tCS7\n" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CS8:
|
|
||||||
printf( "\tCSIZE =\tCS8\n" );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( tp->c_cflag & CSTOPB )
|
|
||||||
printf( "\tCSTOPB set: send 2 stop bits\n" );
|
|
||||||
else
|
|
||||||
printf( "\tCSTOPB clear: send 1 stop bit\n" );
|
|
||||||
|
|
||||||
if( tp->c_cflag & PARENB )
|
|
||||||
printf( "\tPARENB set: parity enabled\n" );
|
|
||||||
else
|
|
||||||
printf( "\tPARENB clear: parity disabled\n" );
|
|
||||||
|
|
||||||
if( tp->c_cflag & PARODD )
|
|
||||||
printf( "\tPARODD set: parity odd\n" );
|
|
||||||
else
|
|
||||||
printf( "\tPARODD clear: parity even\n" );
|
|
||||||
|
|
||||||
if( tp->c_cflag & CREAD )
|
|
||||||
printf( "\tCREAD set: receiver enabled\n" );
|
|
||||||
else
|
|
||||||
printf( "\tCREAD clear: treceiver disabled\n" );
|
|
||||||
|
|
||||||
if( tp->c_cflag & HUPCL )
|
|
||||||
printf( "\tHUPCL set: enabled\n" );
|
|
||||||
else
|
|
||||||
printf( "\tHUPCL clear: disabled\n" );
|
|
||||||
|
|
||||||
if( tp->c_cflag & CLOCAL )
|
|
||||||
printf( "\tCLOCAL set: ignore modem lines\n" );
|
|
||||||
else
|
|
||||||
printf( "\tCLOCAL clear: don't ignore modem lines\n" );
|
|
||||||
|
|
||||||
#if defined(CBAUDEX)
|
|
||||||
if( tp->c_cflag & CBAUDEX )
|
|
||||||
printf( "\tCBAUDEX set: What does this do?\n" );
|
|
||||||
else
|
|
||||||
printf( "\tCBAUDEX clear: What does this do?\n" );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if( tp->c_cflag & CRTSCTS )
|
|
||||||
printf( "\tCRTSCTS: harware flow control enabled?\n" );
|
|
||||||
else
|
|
||||||
printf( "\tCRTSCTS: hardware flow control disabled?\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void print_c_cc( struct termios * tp )
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
char * cc_index_names [NCCS] = {
|
|
||||||
"[VINTR] ", /* 0 */
|
|
||||||
"[VQUIT] ", /* 1 */
|
|
||||||
"[VERASE] ", /* 2 */
|
|
||||||
"[VKILL] ", /* 3 */
|
|
||||||
"[VEOF] ", /* 4 */
|
|
||||||
"[VTIME] ", /* 5 */
|
|
||||||
"[VMIN] ", /* 6 */
|
|
||||||
"[VSWTC ", /* 7 */
|
|
||||||
"[VSTART] ", /* 8 */
|
|
||||||
"[VSTOP] ", /* 9 */
|
|
||||||
"[VSUSP] ", /* 10 */
|
|
||||||
"[VEOL] ", /* 11 */
|
|
||||||
"[VREPRINT]", /* 12 */
|
|
||||||
"[VDISCARD]", /* 13 */
|
|
||||||
"[VWERASE] ", /* 14 */
|
|
||||||
"[VLNEXT ", /* 15 */
|
|
||||||
"[VEOL2] ", /* 16 */
|
|
||||||
"unknown ", /* 17 */
|
|
||||||
"unknown ", /* 18 */
|
|
||||||
};
|
|
||||||
|
|
||||||
for( i = 0; i < NCCS; i++ ) {
|
|
||||||
printf( "c_cc%s = 0x%08x\n", cc_index_names[i], tp->c_cc[i] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void print_termios( struct termios *tp )
|
|
||||||
{
|
|
||||||
printf( "\nLooking at the current termios settings:\n\n" );
|
|
||||||
print_c_iflag( tp );
|
|
||||||
print_c_oflag( tp );
|
|
||||||
print_c_cflag( tp );
|
|
||||||
print_c_lflag( tp );
|
|
||||||
print_c_cc( tp );
|
|
||||||
printf( "\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unsigned long get_baud_rate( void )
|
|
||||||
{
|
|
||||||
unsigned long baud_rate;
|
|
||||||
|
|
||||||
while( TRUE ) {
|
|
||||||
printf( "Enter the numerical value for the new baud rate.\n" );
|
|
||||||
printf( "Choices are: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800\n" );
|
|
||||||
printf( "2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800\n" );
|
|
||||||
printf( "\nYour choice: " );
|
|
||||||
scanf( "%lu", &baud_rate );
|
|
||||||
printf( "\n" );
|
|
||||||
switch( baud_rate ) {
|
|
||||||
case 50: return B50;
|
|
||||||
case 75: return B75;
|
|
||||||
case 110: return B110;
|
|
||||||
case 134: return B134;
|
|
||||||
case 150: return B150;
|
|
||||||
case 200: return B200;
|
|
||||||
case 300: return B300;
|
|
||||||
case 600: return B600;
|
|
||||||
case 1200: return B1200;
|
|
||||||
case 1800: return B1800;
|
|
||||||
case 2400: return B2400;
|
|
||||||
case 4800: return B4800;
|
|
||||||
case 9600: return B9600;
|
|
||||||
case 19200: return B19200;
|
|
||||||
case 38400: return B38400;
|
|
||||||
case 57600: return B57600;
|
|
||||||
case 115200: return B115200;
|
|
||||||
case 230400: return B230400;
|
|
||||||
case 460800: return B460800;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf( "%lu is not a valid choice. Try again.\n\n", baud_rate );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unsigned long get_parity()
|
|
||||||
{
|
|
||||||
int parity;
|
|
||||||
|
|
||||||
while( TRUE ) {
|
|
||||||
printf( "Enter the numerical value for the new parity\n" );
|
|
||||||
printf( "Choices are: 0 for no parity, 1 for even parity, 2 for odd parity\n" );
|
|
||||||
printf( "\nYour choice: " );
|
|
||||||
scanf( "%d", &parity );
|
|
||||||
printf( "\n" );
|
|
||||||
switch( parity ) {
|
|
||||||
case 0:
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
return PARENB;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
return PARENB | PARODD;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf( "%d is not a valid choice. Try again.\n\n", parity );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unsigned long get_stop_bits()
|
|
||||||
{
|
|
||||||
int stop_bits;
|
|
||||||
|
|
||||||
while( TRUE ) {
|
|
||||||
printf( "Enter the numerical value for the new number of stop bits\n" );
|
|
||||||
printf( "Choices are: 1 or 2\n" );
|
|
||||||
printf( "\nYour choice: " );
|
|
||||||
scanf( "%d", &stop_bits );
|
|
||||||
printf( "\n" );
|
|
||||||
switch( stop_bits ) {
|
|
||||||
case 1:
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
return CSTOPB;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf( "%d is not a valid choice. Try again.\n\n", stop_bits );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unsigned long get_data_bits()
|
|
||||||
{
|
|
||||||
int data_bits;
|
|
||||||
|
|
||||||
while( TRUE ) {
|
|
||||||
printf( "Enter the numerical value for the new number of data bits\n" );
|
|
||||||
printf( "Choices are: 5, 6, 7 or 8\n" );
|
|
||||||
printf( "\nYour choice: " );
|
|
||||||
scanf( "%d", &data_bits );
|
|
||||||
printf( "\n" );
|
|
||||||
switch( data_bits ) {
|
|
||||||
case 5:
|
|
||||||
return CS5;
|
|
||||||
|
|
||||||
case 6:
|
|
||||||
return CS6;
|
|
||||||
|
|
||||||
case 7:
|
|
||||||
return CS7;
|
|
||||||
|
|
||||||
case 8:
|
|
||||||
return CS8;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf( "%d is not a valid choice. Try again.\n\n", data_bits );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void change_line_settings( struct termios *tp )
|
|
||||||
{
|
|
||||||
unsigned long baud_rate, parity, stop_bits, data_bits, sleep_time;
|
|
||||||
|
|
||||||
printf( "\nSetting line characteristics\n\n" );
|
|
||||||
|
|
||||||
baud_rate = get_baud_rate();
|
|
||||||
parity = get_parity();
|
|
||||||
stop_bits = get_stop_bits();
|
|
||||||
data_bits = get_data_bits();
|
|
||||||
|
|
||||||
printf( "NOTE: You will not see output until you switch your terminal settings!\n" );
|
|
||||||
printf( "WARNING: If you do not switch your terminal settings, your terminal may hang.\n" );
|
|
||||||
printf( "Enter the number of seconds the test will wait for you to switch your terminal\n" );
|
|
||||||
printf( "settings before it continues\n" );
|
|
||||||
printf( "Sleep time (in seconds): " );
|
|
||||||
scanf( "%lu", &sleep_time );
|
|
||||||
printf( "\n" );
|
|
||||||
printf( "Setting line to new termios settings in %lu seconds.\n", sleep_time );
|
|
||||||
|
|
||||||
sleep( sleep_time );
|
|
||||||
|
|
||||||
tp->c_cflag = CLOCAL | CREAD | parity | stop_bits | data_bits | baud_rate;
|
|
||||||
if( tcsetattr( fileno( stdin ), TCSADRAIN, tp ) < 0 ) {
|
|
||||||
perror( "change_line_settings(): tcsetattr() failed" );
|
|
||||||
rtems_test_exit( 1 );
|
|
||||||
}
|
|
||||||
printf( "Line settings set.\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void canonical_input( struct termios *tp )
|
|
||||||
{
|
|
||||||
char c, first_time = TRUE;
|
|
||||||
|
|
||||||
printf( "\nTesting canonical input\n\n" );
|
|
||||||
|
|
||||||
printf( "Setting line to canonical input mode.\n" );
|
|
||||||
tp->c_lflag = ISIG | ICANON | ECHO | ECHONL | ECHOK | ECHOE | ECHOPRT | ECHOCTL | IEXTEN;
|
|
||||||
tp->c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
|
|
||||||
if( tcsetattr( fileno( stdin ), TCSADRAIN, tp ) < 0 ) {
|
|
||||||
perror( "canonical_input(): tcsetattr() failed" );
|
|
||||||
rtems_test_exit( 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
while ( ( c = getchar () ) != '\n');
|
|
||||||
printf( "Testing getchar(). Type some text followed by carriage return\n" );
|
|
||||||
printf( "Each character you entered will be echoed back to you\n\n" );
|
|
||||||
while ( ( c = getchar () ) != '\n') {
|
|
||||||
if( first_time ) {
|
|
||||||
printf( "\nYou typed:\n");
|
|
||||||
first_time = FALSE;
|
|
||||||
}
|
|
||||||
printf( "%c", c );
|
|
||||||
}
|
|
||||||
printf( "\n\nCanonical input test done.\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Test raw (ICANON=0) input
|
|
||||||
*/
|
|
||||||
void do_raw_input( int vmin, int vtime )
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
struct termios old, new;
|
|
||||||
rtems_interval ticksPerSecond, then, now;
|
|
||||||
unsigned int msec;
|
|
||||||
unsigned long count;
|
|
||||||
int nread;
|
|
||||||
unsigned char cbuf[100];
|
|
||||||
|
|
||||||
printf( "Raw input test with VMIN=%d VTIME=%d\n", vmin, vtime );
|
|
||||||
|
|
||||||
rtems_clock_get( RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticksPerSecond );
|
|
||||||
if ( tcgetattr( fileno ( stdin ), &old ) < 0 ) {
|
|
||||||
perror( "do_raw_input(): tcgetattr() failed" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
new = old;
|
|
||||||
new.c_lflag &= ~( ICANON | ECHO | ECHONL | ECHOK | ECHOE | ECHOPRT | ECHOCTL );
|
|
||||||
new.c_cc[VMIN] = vmin;
|
|
||||||
new.c_cc[VTIME] = vtime;
|
|
||||||
if( tcsetattr( fileno( stdin ), TCSADRAIN, &new ) < 0 ) {
|
|
||||||
perror ("do_raw_input(): tcsetattr() failed" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
|
||||||
rtems_clock_get( RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &then );
|
|
||||||
count = 0;
|
|
||||||
for(;;) {
|
|
||||||
nread = read( fileno( stdin ), cbuf, sizeof cbuf );
|
|
||||||
if( nread < 0 ) {
|
|
||||||
perror( "do_raw_input(): read() failed" );
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
count++;
|
|
||||||
if( nread != 0 )
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
rtems_clock_get( RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &now );
|
|
||||||
msec = (now - then) * 1000 / ticksPerSecond;
|
|
||||||
printf( "Count:%-10lu Interval:%3u.%3.3d Char:",
|
|
||||||
count, msec / 1000, msec % 1000 );
|
|
||||||
|
|
||||||
for( i = 0 ; i < nread ; i++ )
|
|
||||||
printf (" 0x%2.2x", cbuf[i]);
|
|
||||||
printf ("\n");
|
|
||||||
|
|
||||||
} while( cbuf[0] != 'q' );
|
|
||||||
|
|
||||||
out:
|
|
||||||
if( tcsetattr( fileno( stdin ), TCSADRAIN, &old) < 0 )
|
|
||||||
perror("do_raw_input(): tcsetattr() failed: %s\n" );
|
|
||||||
|
|
||||||
printf ("*** End of Raw input VMIN=%d VTIME=%d ***\n", vmin, vtime);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void raw_input( struct termios *tp )
|
|
||||||
{
|
|
||||||
printf( "\nTesting raw input input\n\n" );
|
|
||||||
printf( "Hit 'q' to terminate the test\n" );
|
|
||||||
|
|
||||||
do_raw_input( 0, 0 );
|
|
||||||
do_raw_input( 0, 20 );
|
|
||||||
do_raw_input( 5, 0 );
|
|
||||||
do_raw_input( 5, 20 );
|
|
||||||
|
|
||||||
printf( "\nRaw input test done.\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void usage( void )
|
|
||||||
{
|
|
||||||
printf( "\nYou have the following choices:\n" );
|
|
||||||
printf( " 1 - Reset the struct termios\n" );
|
|
||||||
printf( " 2 - Look at the current termios setting\n" );
|
|
||||||
printf( " 3 - Change the line characteristics\n" );
|
|
||||||
printf( " 4 - Test canonical input\n" );
|
|
||||||
printf( " 5 - Test raw input\n" );
|
|
||||||
printf( " 9 - Exit\n" );
|
|
||||||
printf( "Enter your choice (1 to 5 or 9, followed by a carriage return): " );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* RTEMS Startup Task
|
|
||||||
*/
|
|
||||||
rtems_task
|
|
||||||
Init (rtems_task_argument ignored)
|
|
||||||
{
|
|
||||||
char c ;
|
|
||||||
struct termios orig_termios, test_termios;
|
|
||||||
|
|
||||||
printf( "\n\n*** TEST OF TERMIOS INPUT CAPABILITIES ***\n" );
|
|
||||||
|
|
||||||
if( tcgetattr( fileno( stdin ), &orig_termios ) < 0 ) {
|
|
||||||
perror( "tcgetattr() failed" );
|
|
||||||
rtems_test_exit( 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
test_termios = orig_termios;
|
|
||||||
|
|
||||||
usage();
|
|
||||||
for(;;) {
|
|
||||||
switch( c = getchar() ) {
|
|
||||||
case '1':
|
|
||||||
printf( "\nResetting the line to the original termios setting\n\n" );
|
|
||||||
test_termios = orig_termios;
|
|
||||||
if( tcsetattr( fileno( stdin ), TCSADRAIN, &test_termios ) < 0 ) {
|
|
||||||
perror( "tcsetattr() failed" );
|
|
||||||
rtems_test_exit( 1 );
|
|
||||||
}
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '2':
|
|
||||||
print_termios( &test_termios );
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '3':
|
|
||||||
change_line_settings( &test_termios );
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '4':
|
|
||||||
canonical_input( &test_termios );
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '5':
|
|
||||||
raw_input( &test_termios );
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '9':
|
|
||||||
rtems_test_exit( 1 );
|
|
||||||
|
|
||||||
case '\n':
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf( "\n%c is not a valid choice. Try again\n\n", c );
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user