File indexing completed on 2025-05-11 08:24:43
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 #ifdef HAVE_CONFIG_H
0029 #include "config.h"
0030 #endif
0031
0032 #include <rtems.h>
0033 #include <rtems/score/percpudata.h>
0034 #include <rtems/score/memory.h>
0035 #include <rtems/sysinit.h>
0036
0037 #include <tmacros.h>
0038
0039 PER_CPU_DATA_NEED_INITIALIZATION();
0040
0041 static PER_CPU_DATA_ITEM(int, i) = 123;
0042
0043 const char rtems_test_name[] = "SMPFATAL 9";
0044
0045 static void Init( rtems_task_argument arg )
0046 {
0047 (void) arg;
0048 }
0049
0050 static void consume_all_memory( void )
0051 {
0052 const Memory_Information *mem;
0053 size_t i;
0054
0055 mem = _Memory_Get();
0056
0057 for ( i = 0; i < _Memory_Get_count( mem ); ++i ) {
0058 Memory_Area *area;
0059
0060 area = _Memory_Get_area( mem, i );
0061 _Memory_Consume( area, _Memory_Get_free_size( area ) );
0062 }
0063 }
0064
0065 static void begin_test( void )
0066 {
0067 TEST_BEGIN();
0068 consume_all_memory();
0069 }
0070
0071 RTEMS_SYSINIT_ITEM(
0072 begin_test,
0073 RTEMS_SYSINIT_PER_CPU_DATA,
0074 RTEMS_SYSINIT_ORDER_FIRST
0075 );
0076
0077 static void fatal_extension(
0078 rtems_fatal_source source,
0079 bool always_set_to_false,
0080 rtems_fatal_code code
0081 )
0082 {
0083 if (
0084 source == INTERNAL_ERROR_CORE
0085 && !always_set_to_false
0086 && code == INTERNAL_ERROR_NO_MEMORY_FOR_PER_CPU_DATA
0087 ) {
0088 TEST_END();
0089 }
0090 }
0091
0092 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0093
0094 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0095
0096 #define CONFIGURE_INITIAL_EXTENSIONS \
0097 { .fatal = fatal_extension }, \
0098 RTEMS_TEST_INITIAL_EXTENSION
0099
0100 #define CONFIGURE_MAXIMUM_PROCESSORS 2
0101
0102 #define CONFIGURE_MAXIMUM_TASKS 1
0103
0104 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0105
0106 #define CONFIGURE_INIT
0107
0108 #include <rtems/confdefs.h>