From 73ba772ce15ce9d1851b0864ce314deca9596ada Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 7 Sep 2021 08:15:15 +0200 Subject: validation: Test thread-local storage support --- spec/build/testsuites/validation/grp.yml | 2 + .../testsuites/validation/validation-tls-1.yml | 21 +++++ testsuites/validation/tc-score-thread-tls.c | 1 + testsuites/validation/ts-idle.h | 98 ++++++++++++++++++++++ testsuites/validation/ts-validation-tls-1.c | 75 +++++++++++++++++ 5 files changed, 197 insertions(+) create mode 100644 spec/build/testsuites/validation/validation-tls-1.yml create mode 100644 testsuites/validation/ts-idle.h create mode 100644 testsuites/validation/ts-validation-tls-1.c diff --git a/spec/build/testsuites/validation/grp.yml b/spec/build/testsuites/validation/grp.yml index 3934ee10f5..49632875c4 100644 --- a/spec/build/testsuites/validation/grp.yml +++ b/spec/build/testsuites/validation/grp.yml @@ -66,6 +66,8 @@ links: uid: validation-smp-only-2 - role: build-dependency uid: validation-tls-0 +- role: build-dependency + uid: validation-tls-1 type: build use-after: - rtemstest diff --git a/spec/build/testsuites/validation/validation-tls-1.yml b/spec/build/testsuites/validation/validation-tls-1.yml new file mode 100644 index 0000000000..cfa3d0db7b --- /dev/null +++ b/spec/build/testsuites/validation/validation-tls-1.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +build-type: test-program +cflags: [] +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +cppflags: [] +cxxflags: [] +enabled-by: true +features: c cprogram +includes: [] +ldflags: [] +links: [] +source: +- testsuites/validation/tc-score-thread-tls.c +- testsuites/validation/ts-validation-tls-1.c +stlib: [] +target: testsuites/validation/ts-validation-tls-1.exe +type: build +use-after: +- validation +use-before: [] diff --git a/testsuites/validation/tc-score-thread-tls.c b/testsuites/validation/tc-score-thread-tls.c index 485333912e..0676d4249a 100644 --- a/testsuites/validation/tc-score-thread-tls.c +++ b/testsuites/validation/tc-score-thread-tls.c @@ -62,6 +62,7 @@ * @defgroup RTEMSTestCaseScoreThreadValTls spec:/score/thread/val/tls * * @ingroup RTEMSTestSuiteTestsuitesValidationTls0 + * @ingroup RTEMSTestSuiteTestsuitesValidationTls1 * * @brief Tests properties of thread-local objects. * diff --git a/testsuites/validation/ts-idle.h b/testsuites/validation/ts-idle.h new file mode 100644 index 0000000000..9a2c7de9f4 --- /dev/null +++ b/testsuites/validation/ts-idle.h @@ -0,0 +1,98 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @brief This header file provides a configurable validation test suite runner + * and application configuration for tests which should run within an idle + * task without a user initialization task. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include + +#include + +#include "tx-support.h" + +static char buffer[ 512 ]; + +static const T_action actions[] = { + T_report_hash_sha256 +}; + +static const T_config test_config = { + .name = rtems_test_name, + .buf = buffer, + .buf_size = sizeof( buffer ), + .putchar = rtems_put_char, + .verbosity = RTEMS_TEST_VERBOSITY, + .now = T_now_clock, + .allocate = T_memory_allocate, + .deallocate = T_memory_deallocate, + .action_count = T_ARRAY_SIZE( actions ), + .actions = actions +}; + +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER + +#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0 + +#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY + +#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM + +#define CONFIGURE_INITIAL_EXTENSIONS \ + { .fatal = FatalInitialExtension } + +#define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION + +static void *IdleBody( uintptr_t ignored ) +{ + int exit_code; + + (void) ignored; + + rtems_test_begin( rtems_test_name, TEST_STATE ); + T_register(); + exit_code = T_main( &test_config ); + + if ( exit_code == 0 ) { + rtems_test_end( rtems_test_name ); + } + + rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, (uint32_t) exit_code ); +} + +#define CONFIGURE_IDLE_TASK_BODY IdleBody + +#define CONFIGURE_INIT + +#include diff --git a/testsuites/validation/ts-validation-tls-1.c b/testsuites/validation/ts-validation-tls-1.c new file mode 100644 index 0000000000..d19cce2bcb --- /dev/null +++ b/testsuites/validation/ts-validation-tls-1.c @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuiteTestsuitesValidationTls1 + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/** + * @defgroup RTEMSTestSuiteTestsuitesValidationTls1 \ + * spec:/testsuites/validation-tls-1 + * + * @ingroup RTEMSTestSuites + * + * @brief This validation test suite contains test cases related to the + * thread-local storage support. + * + * @{ + */ + +const char rtems_test_name[] = "ValidationTls1"; + +#define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE 0 + +#include "ts-idle.h" + +/** @} */ -- cgit v1.2.3