File indexing completed on 2025-05-11 08:24:42
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 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #include <tmacros.h>
0034 #include "test_support.h"
0035
0036 const char rtems_test_name[] = "SMP 5";
0037
0038 static volatile bool init_task_done;
0039
0040 rtems_task Init(
0041 rtems_task_argument argument
0042 );
0043
0044 rtems_task Test_task(
0045 rtems_task_argument argument
0046 );
0047
0048
0049 static void success(void)
0050 {
0051 TEST_END();
0052 rtems_test_exit( 0 );
0053 }
0054
0055 rtems_task Test_task(
0056 rtems_task_argument argument
0057 )
0058 {
0059 while (!init_task_done) {
0060
0061 }
0062
0063 locked_printf( "Shut down from CPU %" PRIu32 "\n", rtems_scheduler_get_processor() );
0064 success();
0065 }
0066
0067 rtems_task Init(
0068 rtems_task_argument argument
0069 )
0070 {
0071 uint32_t i;
0072 char ch;
0073 uint32_t cpu_num;
0074 rtems_id id;
0075 rtems_status_code status;
0076
0077 locked_print_initialize();
0078 TEST_BEGIN();
0079
0080 if ( rtems_scheduler_get_processor_maximum() == 1 ) {
0081 success();
0082 }
0083
0084 for ( i=0; i<rtems_scheduler_get_processor_maximum() ; i++ ) {
0085 ch = '1' + i;
0086
0087 status = rtems_task_create(
0088 rtems_build_name( 'T', 'A', ch, ' ' ),
0089 1,
0090 RTEMS_MINIMUM_STACK_SIZE,
0091 RTEMS_DEFAULT_MODES,
0092 RTEMS_DEFAULT_ATTRIBUTES,
0093 &id
0094 );
0095 directive_failed( status, "task create" );
0096
0097 cpu_num = rtems_scheduler_get_processor();
0098 locked_printf(" CPU %" PRIu32 " start task TA%c\n", cpu_num, ch);
0099
0100 status = rtems_task_start( id, Test_task, i+1 );
0101 directive_failed( status, "task start" );
0102 }
0103
0104 init_task_done = true;
0105
0106 while (1)
0107 ;
0108 }
0109
0110
0111
0112 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0113 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0114
0115 #define CONFIGURE_MAXIMUM_PROCESSORS 2
0116
0117 #define CONFIGURE_MAXIMUM_TASKS \
0118 (1 + CONFIGURE_MAXIMUM_PROCESSORS)
0119 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0120
0121 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0122
0123 #define CONFIGURE_MAXIMUM_SEMAPHORES 1
0124
0125 #define CONFIGURE_INIT
0126
0127 #include <rtems/confdefs.h>
0128