File indexing completed on 2025-05-11 08:24:32
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 #ifdef HAVE_CONFIG_H
0039 #include "config.h"
0040 #endif
0041
0042 #include "system.h"
0043
0044 rtems_task Task_1(
0045 rtems_task_argument argument
0046 )
0047 {
0048 uint32_t seconds;
0049 uint32_t old_seconds;
0050 rtems_mode previous_mode;
0051 rtems_time_of_day time;
0052 rtems_status_code status;
0053 uint32_t start_time;
0054 uint32_t end_time;
0055
0056 puts( "TA1 - rtems_task_suspend - on Task 2" );
0057 status = rtems_task_suspend( Task_id[ 2 ] );
0058 directive_failed( status, "rtems_task_suspend of TA2" );
0059
0060 puts( "TA1 - rtems_task_suspend - on Task 3" );
0061 status = rtems_task_suspend( Task_id[ 3 ] );
0062 directive_failed( status, "rtems_task_suspend of TA3" );
0063
0064 status = rtems_clock_get_seconds_since_epoch( &start_time );
0065 directive_failed( status, "rtems_clock_get_seconds_since_epoch" );
0066
0067 puts( "TA1 - killing time" );
0068
0069 for ( ; ; ) {
0070 status = rtems_clock_get_seconds_since_epoch( &end_time );
0071 directive_failed( status, "rtems_clock_get_seconds_since_epoch" );
0072
0073 if ( end_time > (start_time + 2) )
0074 break;
0075 }
0076
0077 puts( "TA1 - rtems_task_resume - on Task 2" );
0078 status = rtems_task_resume( Task_id[ 2 ] );
0079 directive_failed( status, "rtems_task_resume of TA2" );
0080
0081 puts( "TA1 - rtems_task_resume - on Task 3" );
0082 status = rtems_task_resume( Task_id[ 3 ] );
0083 directive_failed( status, "rtems_task_resume of TA3" );
0084
0085 while ( FOREVER ) {
0086 if ( Run_count[ 1 ] == 3 ) {
0087 puts( "TA1 - rtems_task_mode - change mode to NO RTEMS_PREEMPT" );
0088
0089 status = rtems_task_mode(
0090 RTEMS_NO_PREEMPT,
0091 RTEMS_PREEMPT_MASK,
0092 &previous_mode
0093 );
0094 directive_failed( status, "rtems_task_mode" );
0095
0096 status = rtems_clock_get_tod( &time );
0097 directive_failed( status, "rtems_clock_get_tod" );
0098
0099 old_seconds = time.second;
0100
0101 for ( seconds = 0 ; seconds < 6 ; ) {
0102 status = rtems_clock_get_tod( &time );
0103 directive_failed( status, "rtems_clock_get_tod" );
0104
0105 if ( time.second != old_seconds ) {
0106 old_seconds = time.second;
0107 seconds++;
0108 print_time( "TA1 - ", &time, "\n" );
0109 }
0110 }
0111
0112 puts( "TA1 - rtems_task_mode - change mode to RTEMS_PREEMPT" );
0113 status = rtems_task_mode(
0114 RTEMS_PREEMPT,
0115 RTEMS_PREEMPT_MASK,
0116 &previous_mode
0117 );
0118 directive_failed( status, "rtems_task_mode" );
0119
0120 while ( FOREVER );
0121 }
0122 }
0123 }