diff options
Diffstat (limited to 'testsuites')
-rw-r--r-- | testsuites/psxtests/Makefile.am | 4 | ||||
-rw-r--r-- | testsuites/psxtests/configure.ac | 9 | ||||
-rw-r--r-- | testsuites/psxtests/psxglobalcon01/Makefile.am | 19 | ||||
-rw-r--r-- | testsuites/psxtests/psxglobalcon01/init.cc | 58 | ||||
-rw-r--r-- | testsuites/psxtests/psxglobalcon01/psxglobalcon01.doc | 12 | ||||
-rw-r--r-- | testsuites/psxtests/psxglobalcon01/psxglobalcon01.scn | 2 | ||||
-rw-r--r-- | testsuites/psxtests/psxglobalcon02/Makefile.am | 19 | ||||
-rw-r--r-- | testsuites/psxtests/psxglobalcon02/init.cc | 73 | ||||
-rw-r--r-- | testsuites/psxtests/psxglobalcon02/psxglobalcon02.doc | 12 | ||||
-rw-r--r-- | testsuites/psxtests/psxglobalcon02/psxglobalcon02.scn | 2 | ||||
-rw-r--r-- | testsuites/sptests/Makefile.am | 1 | ||||
-rw-r--r-- | testsuites/sptests/configure.ac | 1 | ||||
-rw-r--r-- | testsuites/sptests/spglobalcon01/Makefile.am | 19 | ||||
-rw-r--r-- | testsuites/sptests/spglobalcon01/init.cc | 61 | ||||
-rw-r--r-- | testsuites/sptests/spglobalcon01/spglobalcon01.doc | 12 | ||||
-rw-r--r-- | testsuites/sptests/spglobalcon01/spglobalcon01.scn | 2 | ||||
-rw-r--r-- | testsuites/sptests/spthreadlife01/init.c | 6 |
17 files changed, 310 insertions, 2 deletions
diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am index d8eee14a7e..e15d72f105 100644 --- a/testsuites/psxtests/Makefile.am +++ b/testsuites/psxtests/Makefile.am @@ -15,6 +15,10 @@ _SUBDIRS += psxhdrs psx01 psx02 psx03 psx04 psx05 psx06 psx07 psx08 psx09 \ psxtime psxtimer01 psxtimer02 psxualarm psxusleep psxfatal01 psxfatal02 \ psxintrcritical01 psxstack01 psxstack02 \ psxeintr_join psxgetattrnp01 +if HAS_CPLUSPLUS +_SUBDIRS += psxglobalcon01 +_SUBDIRS += psxglobalcon02 +endif endif ## File IO tests diff --git a/testsuites/psxtests/configure.ac b/testsuites/psxtests/configure.ac index 26e4b60ed3..23c7211647 100644 --- a/testsuites/psxtests/configure.ac +++ b/testsuites/psxtests/configure.ac @@ -11,17 +11,22 @@ RTEMS_CANONICAL_TARGET_CPU AM_INIT_AUTOMAKE([no-define foreign 1.12.2]) AM_MAINTAINER_MODE +RTEMS_ENABLE_CXX + RTEMS_ENV_RTEMSBSP RTEMS_PROJECT_ROOT RTEMS_PROG_CC_FOR_TARGET +RTEMS_PROG_CXX_FOR_TARGET RTEMS_CANONICALIZE_TOOLS RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP) +RTEMS_CHECK_CXX(RTEMS_BSP) -AM_CONDITIONAL([HAS_NETWORKING],[test "$HAS_NETWORKING" = "yes"]) +AM_CONDITIONAL([HAS_NETWORKING],[test x"$HAS_NETWORKING" = x"yes"]) +AM_CONDITIONAL([HAS_CPLUSPLUS],[test x"$HAS_CPLUSPLUS" = x"yes"]) RTEMS_CHECK_CPUOPTS([RTEMS_POSIX_API]) AM_CONDITIONAL(HAS_POSIX,test x"${rtems_cv_RTEMS_POSIX_API}" = x"yes") @@ -145,6 +150,8 @@ psxfile02/Makefile psxfilelock01/Makefile psxgetattrnp01/Makefile psxgetrusage01/Makefile +psxglobalcon01/Makefile +psxglobalcon02/Makefile psxhdrs/Makefile psxid01/Makefile psximfs01/Makefile diff --git a/testsuites/psxtests/psxglobalcon01/Makefile.am b/testsuites/psxtests/psxglobalcon01/Makefile.am new file mode 100644 index 0000000000..3b87ebe013 --- /dev/null +++ b/testsuites/psxtests/psxglobalcon01/Makefile.am @@ -0,0 +1,19 @@ +rtems_tests_PROGRAMS = psxglobalcon01 +psxglobalcon01_SOURCES = init.cc + +dist_rtems_tests_DATA = psxglobalcon01.scn psxglobalcon01.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(psxglobalcon01_OBJECTS) +LINK_LIBS = $(psxglobalcon01_LDLIBS) + +psxglobalcon01$(EXEEXT): $(psxglobalcon01_OBJECTS) $(psxglobalcon01_DEPENDENCIES) + @rm -f psxglobalcon01$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtests/psxglobalcon01/init.cc b/testsuites/psxtests/psxglobalcon01/init.cc new file mode 100644 index 0000000000..f33efc3838 --- /dev/null +++ b/testsuites/psxtests/psxglobalcon01/init.cc @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include "tmacros.h" + +const char rtems_test_name[] = "PSXGLOBALCON 1"; + +class A { + public: + A() + { + ++i; + } + + static int i; +}; + +int A::i; + +static A a; + +static void *POSIX_Init(void *argument) +{ + TEST_BEGIN(); + + rtems_test_assert(a.i == 1); + + TEST_END(); + rtems_test_exit(0); +} + +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_MAXIMUM_POSIX_THREADS 1 + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> diff --git a/testsuites/psxtests/psxglobalcon01/psxglobalcon01.doc b/testsuites/psxtests/psxglobalcon01/psxglobalcon01.doc new file mode 100644 index 0000000000..7ed81dadaf --- /dev/null +++ b/testsuites/psxtests/psxglobalcon01/psxglobalcon01.doc @@ -0,0 +1,12 @@ +This file describes the directives and concepts tested by this test set. + +test set name: psxglobalcon01 + +directives: + + - _Thread_Global_construction() + +concepts: + + - Ensure that the global construction is performed exactly once in case only + a POSIX initialization thread is present. diff --git a/testsuites/psxtests/psxglobalcon01/psxglobalcon01.scn b/testsuites/psxtests/psxglobalcon01/psxglobalcon01.scn new file mode 100644 index 0000000000..13d7b65eb9 --- /dev/null +++ b/testsuites/psxtests/psxglobalcon01/psxglobalcon01.scn @@ -0,0 +1,2 @@ +*** BEGIN OF TEST PSXGLOBALCON 1 *** +*** END OF TEST PSXGLOBALCON 1 *** diff --git a/testsuites/psxtests/psxglobalcon02/Makefile.am b/testsuites/psxtests/psxglobalcon02/Makefile.am new file mode 100644 index 0000000000..0d29894baa --- /dev/null +++ b/testsuites/psxtests/psxglobalcon02/Makefile.am @@ -0,0 +1,19 @@ +rtems_tests_PROGRAMS = psxglobalcon02 +psxglobalcon02_SOURCES = init.cc + +dist_rtems_tests_DATA = psxglobalcon02.scn psxglobalcon02.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(psxglobalcon02_OBJECTS) +LINK_LIBS = $(psxglobalcon02_LDLIBS) + +psxglobalcon02$(EXEEXT): $(psxglobalcon02_OBJECTS) $(psxglobalcon02_DEPENDENCIES) + @rm -f psxglobalcon02$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtests/psxglobalcon02/init.cc b/testsuites/psxtests/psxglobalcon02/init.cc new file mode 100644 index 0000000000..6de4fbd7c7 --- /dev/null +++ b/testsuites/psxtests/psxglobalcon02/init.cc @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include "tmacros.h" + +const char rtems_test_name[] = "PSXGLOBALCON 2"; + +class A { + public: + A() + { + ++i; + } + + static int i; +}; + +int A::i; + +static A a; + +static bool rtems_init_done; + +extern "C" void Init(rtems_task_argument argument) +{ + TEST_BEGIN(); + + rtems_test_assert(a.i == 1); + + rtems_init_done = true; + + rtems_task_delete(RTEMS_SELF); + rtems_test_assert(0); +} + +static void *POSIX_Init(void *argument) +{ + rtems_test_assert(rtems_init_done); + rtems_test_assert(a.i == 1); + + TEST_END(); + rtems_test_exit(0); +} + +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_MAXIMUM_TASKS 1 +#define CONFIGURE_MAXIMUM_POSIX_THREADS 1 + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> diff --git a/testsuites/psxtests/psxglobalcon02/psxglobalcon02.doc b/testsuites/psxtests/psxglobalcon02/psxglobalcon02.doc new file mode 100644 index 0000000000..4dc5bde09d --- /dev/null +++ b/testsuites/psxtests/psxglobalcon02/psxglobalcon02.doc @@ -0,0 +1,12 @@ +This file describes the directives and concepts tested by this test set. + +test set name: psxglobalcon02 + +directives: + + - _Thread_Global_construction() + +concepts: + + - Ensure that the global construction is performed exactly once in case a + RTEMS initialization task and a POSIX initialization thread are present. diff --git a/testsuites/psxtests/psxglobalcon02/psxglobalcon02.scn b/testsuites/psxtests/psxglobalcon02/psxglobalcon02.scn new file mode 100644 index 0000000000..54ae33b5f6 --- /dev/null +++ b/testsuites/psxtests/psxglobalcon02/psxglobalcon02.scn @@ -0,0 +1,2 @@ +*** BEGIN OF TEST PSXGLOBALCON 2 *** +*** END OF TEST PSXGLOBALCON 2 *** diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am index 7764a3e8f8..a71c02436f 100644 --- a/testsuites/sptests/Makefile.am +++ b/testsuites/sptests/Makefile.am @@ -50,6 +50,7 @@ _SUBDIRS += spcache01 _SUBDIRS += sptls03 _SUBDIRS += spcpucounter01 if HAS_CPLUSPLUS +_SUBDIRS += spglobalcon01 _SUBDIRS += sptls02 endif _SUBDIRS += sptls01 diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac index 282cbcf304..5acf7c0d75 100644 --- a/testsuites/sptests/configure.ac +++ b/testsuites/sptests/configure.ac @@ -40,6 +40,7 @@ AM_CONDITIONAL(HAS_SMP,test "$rtems_cv_RTEMS_SMP" = "yes") # Explicitly list all Makefiles here AC_CONFIG_FILES([Makefile +spglobalcon01/Makefile spintrcritical22/Makefile spsem03/Makefile spresource01/Makefile diff --git a/testsuites/sptests/spglobalcon01/Makefile.am b/testsuites/sptests/spglobalcon01/Makefile.am new file mode 100644 index 0000000000..a7d94af8fb --- /dev/null +++ b/testsuites/sptests/spglobalcon01/Makefile.am @@ -0,0 +1,19 @@ +rtems_tests_PROGRAMS = spglobalcon01 +spglobalcon01_SOURCES = init.cc + +dist_rtems_tests_DATA = spglobalcon01.scn spglobalcon01.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(spglobalcon01_OBJECTS) +LINK_LIBS = $(spglobalcon01_LDLIBS) + +spglobalcon01$(EXEEXT): $(spglobalcon01_OBJECTS) $(spglobalcon01_DEPENDENCIES) + @rm -f spglobalcon01$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/sptests/spglobalcon01/init.cc b/testsuites/sptests/spglobalcon01/init.cc new file mode 100644 index 0000000000..92a8a2c141 --- /dev/null +++ b/testsuites/sptests/spglobalcon01/init.cc @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#define TESTS_USE_PRINTK +#include "tmacros.h" + +const char rtems_test_name[] = "SPGLOBALCON 1"; + +class A { + public: + A() + { + ++i; + } + + static int i; +}; + +int A::i; + +static A a; + +static void *idle_body(uintptr_t ignored) +{ + TEST_BEGIN(); + + rtems_test_assert(a.i == 0); + + TEST_END(); + rtems_test_exit(0); + + return NULL; +} + +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION + +#define CONFIGURE_IDLE_TASK_BODY idle_body + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> diff --git a/testsuites/sptests/spglobalcon01/spglobalcon01.doc b/testsuites/sptests/spglobalcon01/spglobalcon01.doc new file mode 100644 index 0000000000..48c64c6aa1 --- /dev/null +++ b/testsuites/sptests/spglobalcon01/spglobalcon01.doc @@ -0,0 +1,12 @@ +This file describes the directives and concepts tested by this test set. + +test set name: spglobalcon01 + +directives: + + - _Thread_Global_construction() + +concepts: + + - Ensure that the global construction is not performed in case the idle + thread initializes the application. diff --git a/testsuites/sptests/spglobalcon01/spglobalcon01.scn b/testsuites/sptests/spglobalcon01/spglobalcon01.scn new file mode 100644 index 0000000000..b15a43187b --- /dev/null +++ b/testsuites/sptests/spglobalcon01/spglobalcon01.scn @@ -0,0 +1,2 @@ +*** BEGIN OF TEST SPGLOBALCON 1 *** +*** END OF TEST SPGLOBALCON 1 *** diff --git a/testsuites/sptests/spthreadlife01/init.c b/testsuites/sptests/spthreadlife01/init.c index 4e6c98487b..f4005169de 100644 --- a/testsuites/sptests/spthreadlife01/init.c +++ b/testsuites/sptests/spthreadlife01/init.c @@ -136,17 +136,21 @@ static void restart_extension( rtems_status_code sc; rtems_test_assert(executing == restarted); - rtems_test_assert(ctx->worker_task_id == rtems_task_self()); switch (ctx->current) { case RESTART_0: + rtems_test_assert(ctx->worker_task_id == rtems_task_self()); ctx->current = RESTART_1; sc = rtems_task_restart(RTEMS_SELF, 0); rtems_test_assert(sc == RTEMS_SUCCESSFUL); break; case RESTART_1: + rtems_test_assert(ctx->worker_task_id == rtems_task_self()); ctx->current = RESTART_2; break; + case INIT: + /* Restart via _Thread_Global_construction() */ + break; default: rtems_test_assert(0); break; |