diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-10-10 09:09:19 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-10-13 14:30:22 +0200 |
commit | a38ced268314dfe3f61cbba5b982eeb77c2b8de4 (patch) | |
tree | 2fa13257e71eb2d5e391d8bc2a95f74a2d6fce74 /testsuites/psxtests/psxglobalcon01 | |
parent | arm/nds: Warning clean up (diff) | |
download | rtems-a38ced268314dfe3f61cbba5b982eeb77c2b8de4.tar.bz2 |
score: Rework global construction
Ensure that the global construction is performed in the context of the
first initialization thread. On SMP this was not guaranteed in the
previous implementation.
Diffstat (limited to 'testsuites/psxtests/psxglobalcon01')
-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 |
4 files changed, 91 insertions, 0 deletions
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 *** |