diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-11-13 22:19:37 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-11-19 08:44:23 +0100 |
commit | bf94588b6da8d29dc6406775bae270aeeb05cde0 (patch) | |
tree | 4e00426a23d495e37c480304d5f2ea63ec5bdee1 | |
parent | 190161dcc8ef740f5256ad80a76d765a8f8aea28 (diff) |
ts-default ts-config
-rw-r--r-- | testsuites/validation/ts-config.h | 29 | ||||
-rw-r--r-- | testsuites/validation/ts-default.h | 76 | ||||
-rw-r--r-- | testsuites/validation/tx-support.h | 4 |
3 files changed, 99 insertions, 10 deletions
diff --git a/testsuites/validation/ts-config.h b/testsuites/validation/ts-config.h index 6bfbfb3571..b31cfa3e87 100644 --- a/testsuites/validation/ts-config.h +++ b/testsuites/validation/ts-config.h @@ -51,6 +51,12 @@ extern "C" { #define TEST_MICROSECONDS_PER_TICK 1000 +#define TEST_RUNNER_NAME rtems_build_name( 'R', 'U', 'N', ' ' ) + +#define TEST_RUNNER_ARGUMENT 123456789 + +#define TEST_RUNNER_INITIAL_MODES RTEMS_NO_ASR + #define TEST_SCHEDULER_A_NAME rtems_build_name( 'A', ' ', ' ', ' ' ) #define TEST_SCHEDULER_B_NAME rtems_build_name( 'B', ' ', ' ', ' ' ) @@ -60,11 +66,20 @@ extern "C" { #define TEST_SCHEDULER_D_NAME rtems_build_name( 'D', ' ', ' ', ' ' ) #if defined( __OPTIMIZE__ ) && !defined( RTEMS_COVERAGE ) -#define TEST_MINIMUM_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE +#define TEST_BASE_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE #else -#define TEST_MINIMUM_STACK_SIZE ( 4 * RTEMS_MINIMUM_STACK_SIZE ) +#define TEST_BASE_STACK_SIZE ( 4 * RTEMS_MINIMUM_STACK_SIZE ) #endif +#define TEST_MINIMUM_STACK_SIZE \ + ( TEST_BASE_STACK_SIZE + CPU_STACK_ALIGNMENT ) + +#define TEST_IDLE_STACK_SIZE \ + ( TEST_BASE_STACK_SIZE + 2 * CPU_STACK_ALIGNMENT ) + +#define TEST_INTERRUPT_STACK_SIZE \ + ( TEST_BASE_STACK_SIZE + 4 * CPU_INTERRUPT_STACK_ALIGNMENT ) + #define TEST_MAXIMUM_BARRIERS 7 #define TEST_MAXIMUM_MESSAGE_QUEUES 3 @@ -91,6 +106,16 @@ void *test_task_stack_allocate( size_t size ); void test_task_stack_deallocate( void *stack ); +void *test_idle_task_stack_allocate( uint32_t cpu_index, size_t size ); + +void *test_idle_task_body( uintptr_t unused ); + +extern rtems_task_argument test_runner_argument; + +extern rtems_task_priority test_runner_initial_priority; + +extern rtems_mode test_runner_initial_modes; + /** @} */ #ifdef __cplusplus diff --git a/testsuites/validation/ts-default.h b/testsuites/validation/ts-default.h index 3f95c93de9..7e4798e0e5 100644 --- a/testsuites/validation/ts-default.h +++ b/testsuites/validation/ts-default.h @@ -32,7 +32,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include <rtems.h> +#include <bsp.h> #include <rtems/bspIo.h> #include <rtems/chain.h> #include <rtems/test-info.h> @@ -101,11 +101,29 @@ static union { rtems_chain_node node; } task_storage[ MAX_TASKS ]; -static void Init( rtems_task_argument arg ) +rtems_task_argument test_runner_argument; + +rtems_task_priority test_runner_initial_priority; + +rtems_mode test_runner_initial_modes; + +static void Runner( rtems_task_argument arg ) { int exit_code; - (void) arg; + test_runner_argument = arg; + + (void) rtems_task_mode( + RTEMS_ASR, + RTEMS_ASR_MASK, + &test_runner_initial_modes + ); + + (void) rtems_task_set_priority( + RTEMS_SELF, + PRIO_DEFAULT, + &test_runner_initial_priority + ); rtems_chain_initialize( &free_task_storage, @@ -131,6 +149,8 @@ void *test_task_stack_allocate( size_t size ) return NULL; } + T_quiet_ge_sz( size, TEST_MINIMUM_STACK_SIZE ); + return rtems_chain_get_unprotected( &free_task_storage ); } @@ -146,7 +166,9 @@ void test_task_stack_deallocate( void *stack ) #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #endif -#define CONFIGURE_INTERRUPT_STACK_SIZE TEST_MINIMUM_STACK_SIZE +#define CONFIGURE_MINIMUM_TASK_STACK_SIZE TEST_MINIMUM_STACK_SIZE + +#define CONFIGURE_INTERRUPT_STACK_SIZE TEST_INTERRUPT_STACK_SIZE #define CONFIGURE_MAXIMUM_BARRIERS TEST_MAXIMUM_BARRIERS @@ -187,12 +209,20 @@ void test_task_stack_deallocate( void *stack ) #define CONFIGURE_RTEMS_INIT_TASKS_TABLE -#define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES +#define CONFIGURE_INIT_TASK_ARGUMENTS TEST_RUNNER_ARGUMENT -#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES +#define CONFIGURE_INIT_TASK_ATTRIBUTES ( RTEMS_SYSTEM_TASK | TASK_ATTRIBUTES ) #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE +#define CONFIGURE_INIT_TASK_ENTRY_POINT Runner + +#define CONFIGURE_INIT_TASK_INITIAL_MODES TEST_RUNNER_INITIAL_MODES + +#define CONFIGURE_INIT_TASK_NAME TEST_RUNNER_NAME + +#define CONFIGURE_INIT_TASK_PRIORITY 0 + #if !defined( CONFIGURE_INITIAL_EXTENSIONS ) #define CONFIGURE_INITIAL_EXTENSIONS { .fatal = FatalInitialExtension } #endif @@ -268,8 +298,42 @@ T_scheduler_operations[ CONFIGURE_MAXIMUM_PROCESSORS ] = { #define CONFIGURE_SCHEDULER_NAME TEST_SCHEDULER_A_NAME +#define CONFIGURE_SCHEDULER_PRIORITY + +#define CONFIGURE_MAXIMUM_PRIORITY 127 + #endif +#define CONFIGURE_IDLE_TASK_STACK_SIZE TEST_IDLE_STACK_SIZE + +static char test_idle_stacks[ CONFIGURE_MAXIMUM_PROCESSORS ][ + ( TEST_IDLE_STACK_SIZE + CPU_IDLE_TASK_IS_FP * CONTEXT_FP_SIZE ) +] +RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT ) +RTEMS_SECTION( ".rtemsstack.idle" ); + +void *test_idle_task_stack_allocate( uint32_t cpu_index, size_t size ) +{ + if ( size > sizeof( test_idle_stacks[ 0 ] ) ) { + rtems_fatal( RTEMS_FATAL_SOURCE_APPLICATION, 0xABAD1DEA ); + } + + return &test_idle_stacks[ cpu_index ][0]; +} + +#define CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE test_idle_task_stack_allocate + +void *test_idle_task_body( uintptr_t unused ) +{ +#if defined(BSP_IDLE_TASK_BODY) + return BSP_IDLE_TASK_BODY( unused ); +#else + return _CPU_Thread_Idle_body( unused ); +#endif +} + +#define CONFIGURE_IDLE_TASK_BODY test_idle_task_body + #define CONFIGURE_INIT #include <rtems/confdefs.h> diff --git a/testsuites/validation/tx-support.h b/testsuites/validation/tx-support.h index efbb8097b2..5f0076363b 100644 --- a/testsuites/validation/tx-support.h +++ b/testsuites/validation/tx-support.h @@ -84,7 +84,7 @@ typedef enum { * It may be used for the runner thread together with PRIO_FLEXIBLE for worker * threads. */ -#define PRIO_NEARLY_IDLE 254 +#define PRIO_NEARLY_IDLE 126 /** * @brief This constants represents a priority with a wider range of higher and @@ -93,7 +93,7 @@ typedef enum { * It may be used for the worker threads together with PRIO_NEARLY_IDLE for the * runner thread. */ -#define PRIO_FLEXIBLE 128 +#define PRIO_FLEXIBLE 64 /** * @brief This constants represents an invalid RTEMS object identifier. |