File indexing completed on 2025-05-11 08:24:51
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
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051 #ifdef HAVE_CONFIG_H
0052 #include "config.h"
0053 #endif
0054
0055 #include <rtems.h>
0056 #include <rtems/bspIo.h>
0057 #include <rtems/test-info.h>
0058 #include <rtems/test.h>
0059 #include <rtems/testopts.h>
0060 #include <rtems/score/smpimpl.h>
0061
0062 #include "ts-config.h"
0063 #include "tx-support.h"
0064
0065 #include <rtems/test.h>
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078 const char rtems_test_name[] = "TestsuitesBspsFatalExtension";
0079
0080 static char buffer[ 512 ];
0081
0082 static const T_action actions[] = {
0083 T_report_hash_sha256
0084 };
0085
0086 static const T_config test_config = {
0087 .name = rtems_test_name,
0088 .buf = buffer,
0089 .buf_size = sizeof( buffer ),
0090 .putchar = rtems_put_char,
0091 .verbosity = RTEMS_TEST_VERBOSITY,
0092 .now = T_now_tick,
0093 .allocate = T_memory_allocate,
0094 .deallocate = T_memory_deallocate,
0095 .action_count = T_ARRAY_SIZE( actions ),
0096 .actions = actions
0097 };
0098
0099 void __real_bsp_reset( rtems_fatal_source source, rtems_fatal_code code );
0100
0101 void __wrap_bsp_reset( rtems_fatal_source source, rtems_fatal_code code );
0102
0103 void __wrap_bsp_reset( rtems_fatal_source source, rtems_fatal_code code )
0104 {
0105 int exit_code;
0106
0107 T_register();
0108 exit_code = T_main( &test_config );
0109
0110 if ( exit_code == 0 ) {
0111 rtems_test_end( rtems_test_name );
0112 }
0113
0114 #if defined(RTEMS_GCOV_COVERAGE)
0115 rtems_test_gcov_dump_info();
0116 #endif
0117 __real_bsp_reset( source, code );
0118 }
0119
0120 #if !defined(RTEMS_SMP)
0121 void *__real__CPU_Thread_Idle_body( void *arg );
0122
0123 void *__wrap__CPU_Thread_Idle_body( void *arg );
0124
0125 void *__wrap__CPU_Thread_Idle_body( void *arg )
0126 {
0127 return __real__CPU_Thread_Idle_body( arg );
0128 }
0129 #endif
0130
0131 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0132
0133 #if defined(RTEMS_SMP)
0134 #define CONFIGURE_MAXIMUM_PROCESSORS 2
0135
0136 #include <rtems/score/scheduleredfsmp.h>
0137
0138 #define CONFIGURE_SCHEDULER_EDF_SMP
0139
0140 #include <rtems/scheduler.h>
0141
0142 RTEMS_SCHEDULER_EDF_SMP( a );
0143
0144 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
0145 RTEMS_SCHEDULER_TABLE_EDF_SMP( a, TEST_SCHEDULER_A_NAME )
0146
0147 #define CONFIGURE_SCHEDULER_ASSIGNMENTS \
0148 RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY ), \
0149 RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY )
0150 #endif
0151
0152 #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0
0153
0154 #define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
0155
0156 #define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
0157
0158 #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
0159
0160 #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
0161
0162 #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
0163
0164 static void *ShutdownIdleBody( uintptr_t arg )
0165 {
0166 #if defined(RTEMS_SMP)
0167 if ( rtems_scheduler_get_processor() == 0 ) {
0168 rtems_test_begin( rtems_test_name, TEST_STATE );
0169 rtems_fatal( RTEMS_FATAL_SOURCE_SMP, SMP_FATAL_SHUTDOWN );
0170 }
0171
0172 return _CPU_Thread_Idle_body( arg );
0173 #else
0174 rtems_test_begin( rtems_test_name, TEST_STATE );
0175 rtems_fatal( RTEMS_FATAL_SOURCE_APPLICATION, 123 );
0176 #endif
0177 }
0178
0179 #define CONFIGURE_IDLE_TASK_BODY ShutdownIdleBody
0180
0181 #define CONFIGURE_INITIAL_EXTENSIONS { .fatal = FatalInitialExtension }
0182
0183 #define CONFIGURE_INIT
0184
0185 #include <rtems/confdefs.h>
0186
0187