File indexing completed on 2025-05-11 08:24:44
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 #ifdef HAVE_CONFIG_H
0042 #include "config.h"
0043 #endif
0044
0045 #define CONFIGURE_INIT
0046 #include "system.h"
0047
0048 const char rtems_test_name[] = "SP 12";
0049
0050 rtems_task Init(
0051 rtems_task_argument argument
0052 )
0053 {
0054 rtems_status_code status;
0055
0056 TEST_BEGIN();
0057
0058 Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );
0059 Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' );
0060 Task_name[ 3 ] = rtems_build_name( 'T', 'A', '3', ' ' );
0061 Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' );
0062 Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' );
0063
0064 Priority_task_name[ 1 ] = rtems_build_name( 'P', 'R', 'I', '1' );
0065 Priority_task_name[ 2 ] = rtems_build_name( 'P', 'R', 'I', '2' );
0066 Priority_task_name[ 3 ] = rtems_build_name( 'P', 'R', 'I', '3' );
0067 Priority_task_name[ 4 ] = rtems_build_name( 'P', 'R', 'I', '4' );
0068 Priority_task_name[ 5 ] = rtems_build_name( 'P', 'R', 'I', '5' );
0069
0070 Semaphore_name[ 1 ] = rtems_build_name( 'S', 'M', '1', ' ' );
0071 Semaphore_name[ 2 ] = rtems_build_name( 'S', 'M', '2', ' ' );
0072 Semaphore_name[ 3 ] = rtems_build_name( 'S', 'M', '3', ' ' );
0073
0074 status = rtems_semaphore_create(
0075 Semaphore_name[ 1 ],
0076 1,
0077 RTEMS_DEFAULT_ATTRIBUTES,
0078 RTEMS_NO_PRIORITY,
0079 &Semaphore_id[ 1 ]
0080 );
0081 directive_failed( status, "rtems_semaphore_create of SM1" );
0082
0083 status = rtems_semaphore_create(
0084 Semaphore_name[ 2 ],
0085 0,
0086 RTEMS_PRIORITY,
0087 RTEMS_NO_PRIORITY,
0088 &Semaphore_id[ 2 ]
0089 );
0090 directive_failed( status, "rtems_semaphore_create of SM2" );
0091
0092 status = rtems_semaphore_create(
0093 Semaphore_name[ 3 ],
0094 1,
0095 RTEMS_GLOBAL,
0096 RTEMS_NO_PRIORITY,
0097 &Semaphore_id[ 3 ]
0098 );
0099 directive_failed( status, "rtems_semaphore_create of SM3" );
0100
0101 puts( "INIT - Forward priority queue test" );
0102 Priority_test_driver( 0 );
0103
0104 puts( "INIT - Backward priority queue test" );
0105 Priority_test_driver( (RTEMS_MAXIMUM_PRIORITY / 2u) + 1u );
0106
0107 puts( "INIT - Binary Semaphore and Priority Inheritance Test" );
0108
0109 status = rtems_semaphore_delete( Semaphore_id[ 2 ] );
0110 directive_failed( status, "rtems_semaphore_delete of SM2 #1" );
0111
0112 puts( "INIT - rtems_semaphore_create - allocated binary semaphore" );
0113 status = rtems_semaphore_create(
0114 Semaphore_name[ 2 ],
0115 0,
0116 RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_INHERIT_PRIORITY,
0117 RTEMS_NO_PRIORITY,
0118 &Semaphore_id[ 2 ]
0119 );
0120 directive_failed( status, "rtems_semaphore_create of priority inherit SM2" );
0121
0122 puts( "INIT - rtems_semaphore_release - allocated binary semaphore" );
0123 status = rtems_semaphore_release( Semaphore_id[ 2 ] );
0124 directive_failed( status, "rtems_semaphore_release of SM2" );
0125
0126 puts( "INIT - rtems_semaphore_delete - allocated binary semaphore" );
0127 status = rtems_semaphore_delete( Semaphore_id[ 2 ] );
0128 directive_failed( status, "rtems_semaphore_delete of SM2 #2" );
0129
0130 status = rtems_semaphore_create(
0131 Semaphore_name[ 2 ],
0132 1,
0133 RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_INHERIT_PRIORITY,
0134 RTEMS_NO_PRIORITY,
0135 &Semaphore_id[ 2 ]
0136 );
0137 directive_failed( status, "rtems_semaphore_create of priority inherit SM2" );
0138
0139 Priority_test_driver( PRIORITY_INHERIT_BASE_PRIORITY );
0140
0141 status = rtems_semaphore_delete( Semaphore_id[ 2 ] );
0142 directive_failed( status, "rtems_semaphore_delete of SM2 #3" );
0143
0144 status = rtems_semaphore_create(
0145 Semaphore_name[ 2 ],
0146 0,
0147 RTEMS_PRIORITY,
0148 RTEMS_NO_PRIORITY,
0149 &Semaphore_id[ 2 ]
0150 );
0151 directive_failed( status, "rtems_semaphore_create of priority SM2" );
0152
0153 status = rtems_semaphore_release( Semaphore_id[ 2 ] );
0154 directive_failed( status, "rtems_semaphore_release of SM2" );
0155
0156 status = rtems_task_create(
0157 Task_name[ 1 ],
0158 4,
0159 RTEMS_MINIMUM_STACK_SIZE * 2,
0160 RTEMS_DEFAULT_MODES,
0161 RTEMS_DEFAULT_ATTRIBUTES,
0162 &Task_id[ 1 ]
0163 );
0164 directive_failed( status, "rtems_task_create of TA1" );
0165
0166 status = rtems_task_create(
0167 Task_name[ 2 ],
0168 4,
0169 RTEMS_MINIMUM_STACK_SIZE,
0170 RTEMS_DEFAULT_MODES,
0171 RTEMS_DEFAULT_ATTRIBUTES,
0172 &Task_id[ 2 ]
0173 );
0174 directive_failed( status, "rtems_task_create of TA2" );
0175
0176 status = rtems_task_create(
0177 Task_name[ 3 ],
0178 4,
0179 RTEMS_MINIMUM_STACK_SIZE,
0180 RTEMS_DEFAULT_MODES,
0181 RTEMS_DEFAULT_ATTRIBUTES,
0182 &Task_id[ 3 ]
0183 );
0184 directive_failed( status, "rtems_task_create of TA3" );
0185
0186 status = rtems_task_start( Task_id[ 1 ], Task_1, 0 );
0187 directive_failed( status, "rtems_task_start of TA1" );
0188
0189 status = rtems_task_start( Task_id[ 2 ], Task_2, 0 );
0190 directive_failed( status, "rtems_task_start of TA2" );
0191
0192 status = rtems_task_start( Task_id[ 3 ], Task_3, 0 );
0193 directive_failed( status, "rtems_task_start of TA3" );
0194
0195 rtems_task_exit();
0196 }