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 #ifdef HAVE_CONFIG_H
0038 #include "config.h"
0039 #endif
0040
0041 #include "system.h"
0042
0043 rtems_task Task_1(
0044 rtems_task_argument argument
0045 )
0046 {
0047 rtems_id rnid;
0048 void *segment_address_1;
0049 void *segment_address_2;
0050 void *segment_address_3;
0051 void *segment_address_4;
0052 rtems_status_code status;
0053
0054 status = rtems_region_ident( Region_name[ 1 ], &rnid );
0055 printf( "TA1 - rtems_region_ident - rnid => %08" PRIxrtems_id "\n", rnid );
0056 directive_failed( status, "rtems_region_ident of RN1" );
0057
0058 puts(
0059 "TA1 - rtems_region_get_segment - wait on 1000 byte segment from region 2"
0060 );
0061 status = rtems_region_get_segment(
0062 Region_id[ 2 ],
0063 1000,
0064 RTEMS_DEFAULT_OPTIONS,
0065 RTEMS_NO_TIMEOUT,
0066 &segment_address_1
0067 );
0068 directive_failed( status, "rtems_region_get_segment" );
0069 puts_nocr( "TA1 - got segment from region 2 - " );
0070 Put_address_from_area_2( segment_address_1 );
0071 new_line;
0072
0073 puts( "TA1 - rtems_region_get_segment - wait on 3K segment from region 3" );
0074 status = rtems_region_get_segment(
0075 Region_id[ 3 ],
0076 3072,
0077 RTEMS_DEFAULT_OPTIONS,
0078 RTEMS_NO_TIMEOUT,
0079 &segment_address_2
0080 );
0081 directive_failed( status, "rtems_region_get_segment" );
0082 puts_nocr( "TA1 - got segment from region 3 - " );
0083 Put_address_from_area_3( segment_address_2 );
0084 new_line;
0085
0086 puts_nocr( "TA1 - rtems_region_get_segment - get 3080 byte segment " );
0087 puts ( "from region 1 - NO_WAIT" );
0088 status = rtems_region_get_segment(
0089 Region_id[ 1 ],
0090 3080,
0091 RTEMS_NO_WAIT,
0092 RTEMS_NO_TIMEOUT,
0093 &segment_address_3
0094 );
0095 directive_failed( status, "rtems_region_get_segment" );
0096 puts_nocr( "TA1 - got segment from region 1 - " );
0097 Put_address_from_area_1( segment_address_3 );
0098 new_line;
0099
0100 puts( "TA1 - rtems_task_wake_after - yield processor" );
0101 status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
0102 directive_failed( status, "rtems_task_wake_after" );
0103
0104 puts_nocr(
0105 "TA1 - rtems_region_return_segment - return segment to region 1 - "
0106 );
0107 Put_address_from_area_1( segment_address_3 );
0108 status = rtems_region_return_segment( Region_id[ 1 ], segment_address_3 );
0109 directive_failed( status, "rtems_region_return_segment" );
0110 new_line;
0111
0112 puts(
0113 "TA1 - rtems_region_get_segment - wait 10 seconds for 3K "
0114 "segment from region 1"
0115 );
0116 status = rtems_region_get_segment(
0117 Region_id[ 1 ],
0118 3072,
0119 RTEMS_DEFAULT_OPTIONS,
0120 10 * rtems_clock_get_ticks_per_second(),
0121 &segment_address_4
0122 );
0123 directive_failed( status, "rtems_region_get_segment" );
0124 puts_nocr( "TA1 - got segment from region 1 - " );
0125 Put_address_from_area_1( segment_address_4 );
0126 new_line;
0127
0128 puts_nocr(
0129 "TA1 - rtems_region_return_segment - return segment to region 2 - "
0130 );
0131 Put_address_from_area_2( segment_address_1 );
0132 new_line;
0133 status = rtems_region_return_segment( Region_id[ 2 ], segment_address_1 );
0134 directive_failed( status, "rtems_region_return_segment" );
0135
0136 puts( "TA1 - rtems_task_wake_after - yield processor" );
0137 status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
0138 directive_failed( status, "rtems_task_wake_after" );
0139
0140 puts( "TA1 - rtems_task_delete - delete TA3" );
0141 status = rtems_task_delete( Task_id[ 3 ] );
0142 directive_failed( status, "rtems_task_delete of TA3" );
0143
0144 status = rtems_task_create(
0145 Task_name[ 4 ],
0146 BASE_PRIORITY,
0147 RTEMS_MINIMUM_STACK_SIZE,
0148 RTEMS_DEFAULT_MODES,
0149 RTEMS_DEFAULT_ATTRIBUTES,
0150 &Task_id[ 4 ]
0151 );
0152 directive_failed( status, "rtems_task_create of TA4" );
0153
0154 status = rtems_task_create(
0155 Task_name[ 5 ],
0156 BASE_PRIORITY,
0157 RTEMS_MINIMUM_STACK_SIZE,
0158 RTEMS_DEFAULT_MODES,
0159 RTEMS_DEFAULT_ATTRIBUTES,
0160 &Task_id[ 5 ]
0161 );
0162 directive_failed( status, "rtems_task_create of TA5" );
0163
0164 status = rtems_task_start( Task_id[ 4 ], Task_4, 0 );
0165 directive_failed( status, "rtems_task_start of TA4" );
0166
0167 status = rtems_task_start( Task_id[ 5 ], Task5, 0 );
0168 directive_failed( status, "rtems_task_start of TA5" );
0169
0170 puts( "TA1 - rtems_task_wake_after - yield processor" );
0171 status = rtems_task_wake_after( 1 * rtems_clock_get_ticks_per_second() );
0172 directive_failed( status, "rtems_task_wake_after" );
0173
0174 puts_nocr(
0175 "TA1 - rtems_region_return_segment - return segment to region 1 - "
0176 );
0177 Put_address_from_area_1( segment_address_4 );
0178 status = rtems_region_return_segment( Region_id[ 1 ], segment_address_4 );
0179 directive_failed( status, "rtems_region_return_segment" );
0180 new_line;
0181
0182 puts( "TA1 - rtems_task_wake_after - yield processor" );
0183 status = rtems_task_wake_after( 1 * rtems_clock_get_ticks_per_second() );
0184 directive_failed( status, "rtems_task_wake_after" );
0185
0186 puts_nocr( "TA1 - rtems_region_get_segment - wait 10 seconds for 3K " );
0187 puts ( "segment from region 1");
0188 status = rtems_region_get_segment(
0189 Region_id[ 1 ],
0190 3072,
0191 RTEMS_DEFAULT_OPTIONS,
0192 10 * rtems_clock_get_ticks_per_second(),
0193 &segment_address_4
0194 );
0195 directive_failed( status, "rtems_region_get_segment" );
0196 puts_nocr( "TA1 - got segment from region 1 - " );
0197 Put_address_from_area_1( segment_address_4 );
0198 new_line;
0199
0200 puts( "TA1 - rtems_task_wake_after - yield processor" );
0201 status = rtems_task_wake_after( 1 * rtems_clock_get_ticks_per_second() );
0202 directive_failed( status, "rtems_task_wake_after" );
0203
0204 puts( "TA1 - rtems_task_delete - delete TA4" );
0205 status = rtems_task_delete( Task_id[ 4 ] );
0206 directive_failed( status, "rtems_task_delete of TA4" );
0207
0208 puts_nocr(
0209 "TA1 - rtems_region_return_segment - return segment to region 1 - "
0210 );
0211 Put_address_from_area_1( segment_address_4 );
0212 status = rtems_region_return_segment( Region_id[ 1 ], segment_address_4 );
0213 directive_failed( status, "rtems_region_return_segment" );
0214 new_line;
0215
0216 puts( "TA1 - rtems_task_wake_after - yield processor" );
0217 status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
0218
0219 puts( "TA1 - rtems_region_delete - delete region 1" );
0220 status = rtems_region_delete( Region_id[ 1 ] );
0221 directive_failed( status, "rtems_region_delete" );
0222
0223 puts( "TA1 - rtems_region_get_segment - get 3K segment from region 4" );
0224 status = rtems_region_get_segment(
0225 Region_id[ 4 ],
0226 3072,
0227 RTEMS_DEFAULT_OPTIONS,
0228 RTEMS_NO_TIMEOUT,
0229 &segment_address_1
0230 );
0231 directive_failed( status, "rtems_region_get_segment" );
0232 puts_nocr( "TA1 - got segment from region 4 - " );
0233 Put_address_from_area_4( segment_address_1 );
0234 new_line;
0235
0236 puts(
0237 "TA1 - rtems_region_get_segment - attempt to get 3K segment from region 4"
0238 );
0239 status = rtems_region_get_segment(
0240 Region_id[ 4 ],
0241 3072,
0242 RTEMS_NO_WAIT,
0243 RTEMS_NO_TIMEOUT,
0244 &segment_address_2
0245 );
0246 fatal_directive_status(
0247 status,
0248 RTEMS_UNSATISFIED,
0249 "rtems_region_get_segment with no memory left"
0250 );
0251 puts( "TA1 - rtems_region_get_segment - RTEMS_UNSATISFIED" );
0252
0253 puts( "TA1 - rtems_region_extend - extend region 4 by 1" );
0254 status = rtems_region_extend(
0255 Region_id[ 4 ],
0256 &Area_4[4096],
0257 1
0258 );
0259 fatal_directive_status(
0260 status,
0261 RTEMS_INVALID_ADDRESS,
0262 "rtems_region_extend with too small memory area"
0263 );
0264 puts( "TA1 - rtems_region_extend - RTEMS_INVALID_ADDRESS" );
0265
0266 puts( "TA1 - rtems_region_extend - extend region 4 by 4K - 1" );
0267 status = rtems_region_extend(
0268 Region_id[ 4 ],
0269 (char *) &Area_4[4096] + 1,
0270 4096 - 1
0271 );
0272 directive_failed( status, "rtems_region_extend" );
0273
0274 puts(
0275 "TA1 - rtems_region_get_segment - attempt to get 3K segment from region 4"
0276 );
0277 status = rtems_region_get_segment(
0278 Region_id[ 4 ],
0279 3072,
0280 RTEMS_NO_WAIT,
0281 RTEMS_NO_TIMEOUT,
0282 &segment_address_3
0283 );
0284 directive_failed( status, "rtems_region_get_segment" );
0285 puts_nocr( "TA1 - got 3K segment from region 4 - " );
0286 Put_address_from_area_4( segment_address_3 );
0287 new_line;
0288
0289 puts_nocr(
0290 "TA1 - rtems_region_return_segment - return segment to region 4 - "
0291 );
0292 Put_address_from_area_4( segment_address_1 );
0293 status = rtems_region_return_segment( Region_id[ 4 ], segment_address_1 );
0294 directive_failed( status, "rtems_region_return_segment" );
0295 new_line;
0296
0297 puts_nocr(
0298 "TA1 - rtems_region_return_segment - return segment to region 4 - "
0299 );
0300 Put_address_from_area_4( segment_address_3 );
0301 status = rtems_region_return_segment( Region_id[ 4 ], segment_address_3 );
0302 directive_failed( status, "rtems_region_return_segment" );
0303 new_line;
0304
0305 puts( "TA1 - rtems_region_delete - delete region 4" );
0306 status = rtems_region_delete( Region_id[ 4 ] );
0307 directive_failed( status, "rtems_region_delete" );
0308
0309 TEST_END();
0310 rtems_test_exit( 0 );
0311 }