diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/tests/tmitrontests/Makefile.am | 21 | ||||
-rw-r--r-- | c/src/tests/tmitrontests/README | 6 | ||||
-rw-r--r-- | c/src/tests/tmitrontests/configure.in | 45 | ||||
-rw-r--r-- | c/src/tests/tmitrontests/include/Makefile.am | 9 | ||||
-rw-r--r-- | c/src/tests/tmitrontests/include/timesys.h | 55 | ||||
-rw-r--r-- | c/src/tests/tmitrontests/tmitronsem01/Makefile.in | 73 | ||||
-rw-r--r-- | c/src/tests/tmitrontests/tmitronsem01/init.c | 141 | ||||
-rw-r--r-- | c/src/tests/tmitrontests/tmitronsem01/system.h | 39 | ||||
-rw-r--r-- | c/src/tests/tmitrontests/tmitronsem01/tmitronsem01.doc | 9 |
9 files changed, 398 insertions, 0 deletions
diff --git a/c/src/tests/tmitrontests/Makefile.am b/c/src/tests/tmitrontests/Makefile.am new file mode 100644 index 0000000000..3b10073729 --- /dev/null +++ b/c/src/tests/tmitrontests/Makefile.am @@ -0,0 +1,21 @@ +## +## $Id$ +## + +AUTOMAKE_OPTIONS = foreign 1.4 +ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal + +project_bspdir = $(PROJECT_ROOT)/@RTEMS_BSP@ + +PREINSTALLDIRS = $(project_bspdir)/tests/screens/psxtests +$(PREINSTALLDIRS): + @$(mkinstalldirs) $@ + +all-local: $(PREINSTALLDIRS) + +ITRON_DIRS = include tmitronsem01 + +SUBDIRS = $(ITRON_DIRS) + +include $(top_srcdir)/../../../../automake/subdirs.am +include $(top_srcdir)/../../../../automake/local.am diff --git a/c/src/tests/tmitrontests/README b/c/src/tests/tmitrontests/README new file mode 100644 index 0000000000..65c5d4165d --- /dev/null +++ b/c/src/tests/tmitrontests/README @@ -0,0 +1,6 @@ +# +# $Id$ +# + +This directory contains the functionality tests for the ITRON 3.0 API +implementation. diff --git a/c/src/tests/tmitrontests/configure.in b/c/src/tests/tmitrontests/configure.in new file mode 100644 index 0000000000..28da189e75 --- /dev/null +++ b/c/src/tests/tmitrontests/configure.in @@ -0,0 +1,45 @@ +dnl Process this file with autoconf to produce a configure script. +dnl +dnl $Id$ + +AC_PREREQ(2.13) +AC_INIT(tmitronsem01) +RTEMS_TOP(../../../..) +AC_CONFIG_AUX_DIR(../../../..) + +RTEMS_CANONICAL_TARGET_CPU + +AM_INIT_AUTOMAKE(rtems-c-src-tests-tmitrontests,$RTEMS_VERSION,no) +AM_MAINTAINER_MODE + +RTEMS_ENABLE_INLINES +RTEMS_ENABLE_GCC28 +RTEMS_ENABLE_LIBCDIR +RTEMS_ENABLE_BARE + +RTEMS_ENV_RTEMSBSP +RTEMS_CHECK_CPU +RTEMS_CANONICAL_HOST + +RTEMS_PROJECT_ROOT + +RTEMS_PROG_CC_FOR_TARGET + +RTEMS_CANONICALIZE_TOOLS + +RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP) + +AC_SUBST(RTEMS_USE_GCC272) +AC_SUBST(BARE_CPU_CFLAGS) +AC_SUBST(BARE_CPU_MODEL) +AC_SUBST(CC_CFLAGS_DEFAULT) +AC_SUBST(CC_CFLAGS_DEBUG_V) +AC_SUBST(CC_CFLAGS_PROFILE_V) +AC_SUBST(CC_LDFLAGS_PROFILE_V) + +# Try to explicitly list a Makefile here +AC_OUTPUT( +Makefile +include/Makefile +tmitronsem01/Makefile +) diff --git a/c/src/tests/tmitrontests/include/Makefile.am b/c/src/tests/tmitrontests/include/Makefile.am new file mode 100644 index 0000000000..fcf88cb578 --- /dev/null +++ b/c/src/tests/tmitrontests/include/Makefile.am @@ -0,0 +1,9 @@ +## +## $Id$ +## + +AUTOMAKE_OPTIONS = foreign 1.4 + +noinst_HEADERS = timesys.h + +include $(top_srcdir)/../../../../automake/local.am diff --git a/c/src/tests/tmitrontests/include/timesys.h b/c/src/tests/tmitrontests/include/timesys.h new file mode 100644 index 0000000000..4f75a9abf2 --- /dev/null +++ b/c/src/tests/tmitrontests/include/timesys.h @@ -0,0 +1,55 @@ +/* timesys.h + * + * This header file contains the global variables for the Time + * suite. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include <tmacros.h> + +/* + * How many times a particular operation is performed while timed. + */ + +#define OPERATION_COUNT 100 +#define IT_COUNT 100 + +/* functions */ + +#define put_time( _message, _total_time, \ + _iterations, _loop_overhead, _overhead ) \ + printf( \ + "%s %d\n", \ + (_message), \ + (((_total_time) - (_loop_overhead)) / (_iterations)) - (_overhead) \ + ) + +#if defined(STACK_CHECKER_ON) || defined(RTEMS_DEBUG) +#define Print_Warning() \ + do { \ + puts( \ + "\n" \ + "THE TIMES REPORTED BY THIS TEST INCLUDE DEBUG CODE!\n" \ + "\n" \ + ); \ + } while (0) + +#else +#define Print_Warning() +#endif + +/* variables */ + +TEST_EXTERN volatile unsigned32 end_time; /* ending time variable */ +TEST_EXTERN volatile unsigned32 overhead; /* loop overhead variable */ + +/* end of include file */ diff --git a/c/src/tests/tmitrontests/tmitronsem01/Makefile.in b/c/src/tests/tmitrontests/tmitronsem01/Makefile.in new file mode 100644 index 0000000000..8777928c69 --- /dev/null +++ b/c/src/tests/tmitrontests/tmitronsem01/Makefile.in @@ -0,0 +1,73 @@ +# +# $Id$ +# + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +subdir = tmitronsem01 + +RTEMS_ROOT = @RTEMS_ROOT@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + +TEST = tmitronsem01 + +MANAGERS = all + +# C source names, if any, go here -- minus the .c +C_PIECES = init +C_FILES = $(C_PIECES:%=%.c) +C_O_FILES = $(C_PIECES:%=${ARCH}/%.o) + +H_FILES = system.h + +DOCTYPES = doc +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 $(RTEMS_ROOT)/make/leaf.cfg + +INSTALL_CHANGE = @INSTALL_CHANGE@ +PACKHEX = @PACKHEX@ + +# +# (OPTIONAL) Add local stuff here using += +# + +DEFINES += +CPPFLAGS += -I$(srcdir)/../include +CFLAGS += + +LD_PATHS += +LD_LIBS += +LDFLAGS += + +# +# Add your list of files to delete here. The config files +# already know how to delete some stuff, so you may want +# to just run 'make clean' first to see what gets missed. +# 'make clobber' already includes 'make clean' +# + +CLEAN_ADDITIONS += +CLOBBER_ADDITIONS += + +all: ${ARCH} $(SRCS) $(PGM) + @$(INSTALL_VARIANT) -m 755 ${PGM} $(PROJECT_RELEASE)/tests + +${PGM}: $(OBJS) $(LINK_FILES) + $(make-exe) + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/c/src/tests/tmitrontests/tmitronsem01/init.c b/c/src/tests/tmitrontests/tmitronsem01/init.c new file mode 100644 index 0000000000..396d45d04b --- /dev/null +++ b/c/src/tests/tmitrontests/tmitronsem01/init.c @@ -0,0 +1,141 @@ +/* Init + * + * This routine is the initialization task for this test program. + * It is called from init_exec and has the responsibility for creating + * and starting the tasks that make up the test. If the time of day + * clock is required for the test, it should also be set to a known + * value by this function. + * + * Input parameters: NONE + * + * Output parameters: NONE + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#define TEST_INIT +#include "system.h" +#include <timesys.h> +#include <stdio.h> + +void ITRON_Init( void ) +{ + T_CSEM pk_csem; + T_RSEM pk_rsem; + int index; + + pk_csem.isemcnt = 2; + pk_csem.maxsem = 3; + pk_csem.sematr = TA_TFIFO; + + printf( "\n\n*** TMITRON01 -- ITRON TIMING TEST ***\n" ); + + /* + * time one invocation of cre_sem + */ + + Timer_initialize(); + (void) cre_sem( 1, &pk_csem ); + end_time = Read_timer(); + put_time( + "cre_sem", + end_time, + 1, + 0, /* no loop overhead to take out */ + 0 /* no calling overhead */ + ); + + /* + * time one invocation of del_sem + */ + + Timer_initialize(); + (void) del_sem( 1 ); + end_time = Read_timer(); + put_time( + "del_sem", + end_time, + 1, + 0, /* no loop overhead to take out */ + 0 /* no calling overhead */ + ); + + pk_csem.isemcnt = 100; + pk_csem.maxsem = 100; + pk_csem.sematr = TA_TFIFO; + (void) cre_sem( 1, &pk_csem ); + + /* + * time preq_sem (available) + */ + + Timer_initialize(); + for ( index = 1 ; index<=OPERATION_COUNT ; index++ ) + (void) preq_sem( 1 ); + end_time = Read_timer(); + put_time( + "preq_sem (available)", + end_time, + OPERATION_COUNT, + 0, /* don't take the loop overhead out */ + 0 /* no calling overhead */ + ); + + /* + * time preq_sem (not available) + */ + + Timer_initialize(); + for ( index = 1 ; index<=OPERATION_COUNT ; index++ ) + (void) preq_sem( 1 ); + end_time = Read_timer(); + put_time( + "preq_sem (not available)", + end_time, + OPERATION_COUNT, + 0, /* don't take the loop overhead out */ + 0 /* no calling overhead */ + ); + + /* + * time sig_sem (no waiting tasks) + */ + + Timer_initialize(); + for ( index = 1 ; index<=OPERATION_COUNT ; index++ ) + (void) sig_sem( 1 ); + end_time = Read_timer(); + put_time( + "sig_sem (no waiting tasks)", + end_time, + OPERATION_COUNT, + 0, /* don't take the loop overhead out */ + 0 /* no calling overhead */ + ); + + /* + * time ref_sem + */ + + Timer_initialize(); + for ( index = 1 ; index<=OPERATION_COUNT ; index++ ) + (void) ref_sem( 1, &pk_rsem ); + end_time = Read_timer(); + put_time( + "ref_sem", + end_time, + OPERATION_COUNT, + 0, /* don't take the loop overhead out */ + 0 /* no calling overhead */ + ); + + printf( "\n\nXXX ADD BLOCKING AND PREEMPTING TIME TESTS\n\n" ); + + + printf( "*** END OF TMITRON01 -- ITRON TIMING TEST ***\n" ); + exit( 0 ); +} diff --git a/c/src/tests/tmitrontests/tmitronsem01/system.h b/c/src/tests/tmitrontests/tmitronsem01/system.h new file mode 100644 index 0000000000..0537ae527a --- /dev/null +++ b/c/src/tests/tmitrontests/tmitronsem01/system.h @@ -0,0 +1,39 @@ +/* system.h + * + * This include file contains information that is included in every + * function in the test set. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include <tmacros.h> +#include <itron.h> +#include <assert.h> + +/* functions */ + +void ITRON_Init( void ); + +/* configuration information */ + +#define CONFIGURE_TEST_NEEDS_TIMER_DRIVER +#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_ITRON_INIT_TASK_TABLE +#define CONFIGURE_MAXIMUM_ITRON_SEMAPHORES 100 + +#include <confdefs.h> + +/* global variables */ + +TEST_EXTERN rtems_id Global_variable; /* example global variable */ + +/* end of include file */ diff --git a/c/src/tests/tmitrontests/tmitronsem01/tmitronsem01.doc b/c/src/tests/tmitrontests/tmitronsem01/tmitronsem01.doc new file mode 100644 index 0000000000..558f0594c8 --- /dev/null +++ b/c/src/tests/tmitrontests/tmitronsem01/tmitronsem01.doc @@ -0,0 +1,9 @@ +# +# $Id$ +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.OARcorp.com/rtems/license.html. +# + +Time some basic ITRON semaphore operations |