File indexing completed on 2025-05-11 08:24:54
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 #include <rtems.h>
0039 #include <rtems/bspIo.h>
0040 #include <rtems/sysinit.h>
0041 #include <rtems/test-info.h>
0042 #include <rtems/testopts.h>
0043 #include <rtems/score/atomic.h>
0044
0045 #include <rtems/test.h>
0046
0047 #include "tx-support.h"
0048
0049 static char buffer[ 512 ];
0050
0051 static const T_action actions[] = {
0052 T_report_hash_sha256
0053 };
0054
0055 static const T_config test_config = {
0056 .name = rtems_test_name,
0057 .buf = buffer,
0058 .buf_size = sizeof( buffer ),
0059 .putchar = rtems_put_char,
0060 .verbosity = RTEMS_TEST_VERBOSITY,
0061 #if defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER)
0062 .now = T_now_clock,
0063 #else
0064 .now = T_now_tick,
0065 #endif
0066 .allocate = T_memory_allocate,
0067 .deallocate = T_memory_deallocate,
0068 .action_count = T_ARRAY_SIZE( actions ),
0069 .actions = actions
0070 };
0071
0072 static Atomic_Uint counter;
0073
0074 static void TestSuiteFatalExtension(
0075 rtems_fatal_source source,
0076 bool always_set_to_false,
0077 rtems_fatal_code code
0078 )
0079 {
0080 rtems_fatal_code exit_code;
0081
0082 (void) always_set_to_false;
0083
0084 if ( source == RTEMS_FATAL_SOURCE_EXIT ) {
0085 return;
0086 }
0087
0088 if ( _Atomic_Fetch_add_uint( &counter, 1, ATOMIC_ORDER_RELAXED ) != 0 ) {
0089 return;
0090 }
0091
0092 T_make_runner();
0093 FATAL_SYSINIT_RUN( source, code );
0094
0095 if ( T_run_finalize() ) {
0096 rtems_test_end( rtems_test_name );
0097 exit_code = 0;
0098 } else {
0099 exit_code = 1;
0100 }
0101
0102 #if defined(FATAL_SYSINIT_EXIT)
0103 FATAL_SYSINIT_EXIT( exit_code );
0104 #else
0105 rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, exit_code );
0106 #endif
0107 }
0108
0109 static void TestRunInitialize( void )
0110 {
0111 rtems_test_begin( rtems_test_name, TEST_STATE );
0112 T_run_initialize( &test_config );
0113 }
0114
0115 RTEMS_SYSINIT_ITEM(
0116 TestRunInitialize,
0117 RTEMS_SYSINIT_BSP_EARLY,
0118 RTEMS_SYSINIT_ORDER_FIRST
0119 );
0120
0121 #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0
0122
0123 #define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
0124
0125 #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
0126
0127 #ifdef FATAL_SYSINIT_INITIAL_EXTENSION
0128 #define OPTIONAL_FATAL_SYSINIT_INITIAL_EXTENSION FATAL_SYSINIT_INITIAL_EXTENSION,
0129 #else
0130 #define OPTIONAL_FATAL_SYSINIT_INITIAL_EXTENSION
0131 #endif
0132
0133 #define CONFIGURE_INITIAL_EXTENSIONS \
0134 OPTIONAL_FATAL_SYSINIT_INITIAL_EXTENSION \
0135 { .fatal = FatalInitialExtension }, \
0136 { .fatal = TestSuiteFatalExtension }
0137
0138 #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
0139
0140 #if !defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE)
0141
0142 #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
0143
0144 #if !defined(CONFIGURE_IDLE_TASK_BODY)
0145
0146 #define CONFIGURE_IDLE_TASK_BODY IdleBody
0147
0148 void *IdleBody( uintptr_t ignored )
0149 {
0150 (void) ignored;
0151
0152 rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, 1 );
0153 }
0154
0155 #endif
0156
0157 #endif
0158
0159 #define CONFIGURE_INIT
0160
0161 #include <rtems/confdefs.h>