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 #define CONFIGURE_INIT
0034 #include "system.h"
0035
0036 const char rtems_test_name[] = "SMP 8";
0037
0038 void PrintTaskInfo(
0039 const char *task_name,
0040 rtems_time_of_day *_tb
0041 )
0042 {
0043 uint32_t cpu_num;
0044
0045 cpu_num = rtems_scheduler_get_processor();
0046
0047
0048 locked_printf(
0049 " CPU %" PRIu32 " running task %s - rtems_clock_get_tod "
0050 "%02" PRId32 ":%02" PRId32 ":%02" PRId32 " %02" PRId32
0051 "/%02" PRId32 "/%04" PRId32 "\n",
0052 cpu_num,
0053 task_name,
0054 _tb->hour, _tb->minute, _tb->second,
0055 _tb->month, _tb->day, _tb->year
0056 );
0057 }
0058
0059 rtems_task Init(
0060 rtems_task_argument argument
0061 )
0062 {
0063 rtems_status_code status;
0064 rtems_time_of_day time;
0065 uint32_t i;
0066 char ch[4];
0067 rtems_id id;
0068
0069 TEST_BEGIN();
0070
0071 locked_print_initialize();
0072
0073 time.year = 1988;
0074 time.month = 12;
0075 time.day = 31;
0076 time.hour = 9;
0077 time.minute = 0;
0078 time.second = 0;
0079 time.ticks = 0;
0080
0081 status = rtems_clock_set( &time );
0082
0083
0084 status = rtems_semaphore_create(
0085 rtems_build_name ('S', 'E', 'M', '1'),
0086 1,
0087 RTEMS_LOCAL |
0088 RTEMS_SIMPLE_BINARY_SEMAPHORE |
0089 RTEMS_PRIORITY,
0090 1,
0091 &Semaphore
0092 );
0093 directive_failed( status, "rtems_semaphore_create" );
0094
0095
0096 PrintTaskInfo( "Init", &time );
0097
0098 for ( i=1; i <= rtems_scheduler_get_processor_maximum() *3; i++ ) {
0099
0100 sprintf(ch, "%02" PRIu32, i );
0101 status = rtems_task_create(
0102 rtems_build_name( 'T', 'A', ch[0], ch[1] ),
0103 2,
0104 RTEMS_MINIMUM_STACK_SIZE,
0105 RTEMS_DEFAULT_MODES,
0106 RTEMS_DEFAULT_ATTRIBUTES,
0107 &id
0108 );
0109 directive_failed( status, "task create" );
0110
0111 status = rtems_task_start( id, Test_task, i+1 );
0112 directive_failed( status, "task start" );
0113 }
0114
0115 rtems_task_exit();
0116 }