static void test_tod_to_seconds(void) { rtems_status_code sc = RTEMS_SUCCESSFUL; size_t i = 0; size_t n = sizeof(sample_seconds) / sizeof(sample_seconds [0]); for (i = 0; i < n; ++i) { rtems_time_of_day tod = nearly_problem_2106; uint32_t seconds = 0; rtems_interval seconds_as_interval = 0; tod.year = 1988 + i; seconds = _TOD_To_seconds(&tod); rtems_test_assert(seconds == sample_seconds [i]); sc = rtems_clock_set(&tod); ASSERT_SC(sc); sc = rtems_clock_get_seconds_since_epoch(&seconds_as_interval); ASSERT_SC(sc); rtems_test_assert(seconds_as_interval == sample_seconds [i]); } }
rtems_task Task_1( rtems_task_argument argument ) { uint32_t seconds; uint32_t old_seconds; rtems_mode previous_mode; rtems_time_of_day time; rtems_status_code status; uint32_t start_time; uint32_t end_time; puts( "TA1 - rtems_task_suspend - on Task 2" ); status = rtems_task_suspend( Task_id[ 2 ] ); directive_failed( status, "rtems_task_suspend of TA2" ); puts( "TA1 - rtems_task_suspend - on Task 3" ); status = rtems_task_suspend( Task_id[ 3 ] ); directive_failed( status, "rtems_task_suspend of TA3" ); status = rtems_clock_get_seconds_since_epoch( &start_time ); directive_failed( status, "rtems_clock_get_seconds_since_epoch" ); puts( "TA1 - killing time" ); for ( ; ; ) { status = rtems_clock_get_seconds_since_epoch( &end_time ); directive_failed( status, "rtems_clock_get_seconds_since_epoch" ); if ( end_time > (start_time + 2) ) break; } puts( "TA1 - rtems_task_resume - on Task 2" ); status = rtems_task_resume( Task_id[ 2 ] ); directive_failed( status, "rtems_task_resume of TA2" ); puts( "TA1 - rtems_task_resume - on Task 3" ); status = rtems_task_resume( Task_id[ 3 ] ); directive_failed( status, "rtems_task_resume of TA3" ); while ( FOREVER ) { if ( Run_count[ 1 ] >= 3 ) { puts( "TA1 - rtems_task_mode - change mode to NO RTEMS_PREEMPT" ); status = rtems_task_mode( RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &previous_mode ); directive_failed( status, "rtems_task_mode" ); status = rtems_clock_get_tod( &time ); directive_failed( status, "rtems_clock_get_tod" ); old_seconds = time.second; for ( seconds = 0 ; seconds < 6 ; ) { status = rtems_clock_get_tod( &time ); directive_failed( status, "rtems_clock_get_tod" ); if ( time.second != old_seconds ) { old_seconds = time.second; seconds++; print_time( "TA1 - ", &time, "\n" ); } } puts( "TA1 - rtems_task_mode - change mode to RTEMS_PREEMPT" ); status = rtems_task_mode( RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &previous_mode ); directive_failed( status, "rtems_task_mode" ); while ( !testsFinished ); showTaskSwitches (); puts( "TA1 - rtems_extension_delete - successful" ); status = rtems_extension_delete( Extension_id[1] ); directive_failed( status, "rtems_extension_delete" ); puts( "*** END OF TEST 4 ***" ); rtems_test_exit (0); } } }
rtems_task Init( rtems_task_argument argument ) { rtems_time_of_day time; rtems_interval interval; struct timeval tv; rtems_status_code status; TEST_BEGIN(); puts( "TA1 - rtems_clock_get_tod - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_get_tod( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_get_tod NULL param" ); /* errors before clock is set */ status = rtems_clock_get_tod( &time ); if ( status == RTEMS_SUCCESSFUL ) { puts( "TA1 - rtems_clock_get_tod - RTEMS_NOT_DEFINED -- " "DID BSP SET THE TIME OF DAY?" ); } else { fatal_directive_status( status, RTEMS_NOT_DEFINED, "rtems_clock_get_tod before clock is set #1" ); puts( "TA1 - rtems_clock_get_tod - RTEMS_NOT_DEFINED" ); } puts( "TA1 - rtems_clock_get_seconds_since_epoch - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_get_seconds_since_epoch( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_get_seconds_since_epoch NULL param" ); status = rtems_clock_get_seconds_since_epoch( &interval ); if ( status == RTEMS_SUCCESSFUL ) { puts( "TA1 - rtems_clock_get_seconds_since_epoch - RTEMS_NOT_DEFINED -- " "DID BSP SET THE TIME OF DAY?" ); } else { fatal_directive_status( status, RTEMS_NOT_DEFINED, "rtems_clock_get_seconds_before_epoch" ); puts( "TA1 - rtems_clock_get_seconds_since_epoch - RTEMS_NOT_DEFINED" ); } puts( "TA1 - rtems_clock_get_uptime - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_get_uptime( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_get_uptime NULL param" ); puts( "TA1 - rtems_clock_get_uptime_timeval" ); rtems_clock_get_uptime_timeval( &tv ); puts( "TA1 - rtems_clock_get_uptime_seconds" ); rtems_clock_get_uptime_seconds(); puts( "TA1 - rtems_clock_get_uptime_nanoseconds" ); rtems_clock_get_uptime_nanoseconds(); puts( "TA1 - rtems_clock_get_tod_timeval - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_get_tod_timeval( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_get_tod_timeval NULL param" ); status = rtems_clock_get_tod_timeval( &tv ); if ( status == RTEMS_SUCCESSFUL ) { puts( "TA1 - rtems_clock_get_tod_timeval - RTEMS_NOT_DEFINED -- " "DID BSP SET THE TIME OF DAY?" ); } else { fatal_directive_status( status, RTEMS_NOT_DEFINED, "rtems_clock_get_timeval" ); puts( "TA1 - rtems_clock_get_tod_timeval - RTEMS_NOT_DEFINED" ); } /* NULL parameter */ status = rtems_clock_set( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_set sull pointer" ); puts( "TA1 - rtems_clock_set - RTEMS_INVALID_ADDRESS" ); build_time( &time, 2, 5, 1987, 8, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid year" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 15, 5, 1988, 8, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid month" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 32, 1988, 8, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid day" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 25, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid hour" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 8, 61, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid minute" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 8, 30, 61, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid second" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 8, 30, 45, rtems_clock_get_ticks_per_second() + 1 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid ticks per second" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 8, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); directive_failed( status, "rtems_clock_set successful" ); puts( " - RTEMS_SUCCESSFUL" ); rtems_clock_get_tod( &time ); print_time( "TA1 - current time - ", &time, "\n" ); TEST_END(); }
void Screen2() { rtems_time_of_day time; rtems_interval interval; struct timeval tv; rtems_status_code status; puts( "TA1 - rtems_clock_get_tod - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_get_tod( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_get_tod NULL param" ); /* errors before clock is set */ status = rtems_clock_get_tod( &time ); if ( status == RTEMS_SUCCESSFUL ) { puts( "TA1 - rtems_clock_get_tod - RTEMS_NOT_DEFINED -- " "DID BSP SET THE TIME OF DAY?" ); } else { fatal_directive_status( status, RTEMS_NOT_DEFINED, "rtems_clock_get_tod before clock is set #1" ); puts( "TA1 - rtems_clock_get_tod - RTEMS_NOT_DEFINED" ); } puts( "TA1 - rtems_clock_get_seconds_since_epoch - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_get_seconds_since_epoch( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_get_seconds_since_epoch NULL param" ); status = rtems_clock_get_seconds_since_epoch( &interval ); if ( status == RTEMS_SUCCESSFUL ) { puts( "TA1 - rtems_clock_get_seconds_since_epoch - RTEMS_NOT_DEFINED -- " "DID BSP SET THE TIME OF DAY?" ); } else { fatal_directive_status( status, RTEMS_NOT_DEFINED, "rtems_clock_get_seconds_before_epoch" ); puts( "TA1 - rtems_clock_get_seconds_since_epoch - RTEMS_NOT_DEFINED" ); } puts( "TA1 - rtems_clock_get_uptime - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_get_uptime( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_get_uptime NULL param" ); puts( "TA1 - rtems_clock_get_tod_timeval - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_get_tod_timeval( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_get_tod_timeval NULL param" ); status = rtems_clock_get_tod_timeval( &tv ); if ( status == RTEMS_SUCCESSFUL ) { puts( "TA1 - rtems_clock_get_tod_timeval - RTEMS_NOT_DEFINED -- " "DID BSP SET THE TIME OF DAY?" ); } else { fatal_directive_status( status, RTEMS_NOT_DEFINED, "rtems_clock_get_timeval" ); puts( "TA1 - rtems_clock_get_tod_timeval - RTEMS_NOT_DEFINED" ); } puts( "TA1 - rtems_clock_set_nanoseconds_extension - RTEMS_INVALID_ADDRESS" ); status = rtems_clock_set_nanoseconds_extension( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_set_nanoseconds_extension NULL param" ); /* NULL parameter */ status = rtems_clock_set( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_clock_set sull pointer" ); puts( "TA1 - rtems_clock_set - RTEMS_INVALID_ADDRESS" ); /* wake when NULL param */ status = rtems_task_wake_when( NULL ); fatal_directive_status( status, RTEMS_NOT_DEFINED, "rtems_task_wake_when NULL param" ); puts( "TA1 - rtems_task_wake_when - RTEMS_INVALID_ADDRESS" ); /* wake when before set */ status = rtems_task_wake_when( &time ); if ( status == RTEMS_SUCCESSFUL ) { puts( "TA1 - rtems_task_wake_when - RTEMS_NOT_DEFINED -- " "DID BSP SET THE TIME OF DAY?" ); } else { fatal_directive_status( status, RTEMS_NOT_DEFINED, "rtems_task_wake_when before clock is set" ); puts( "TA1 - rtems_task_wake_when - RTEMS_NOT_DEFINED" ); } /* before time set */ status = rtems_timer_fire_when( 0, &time, Delayed_routine, NULL ); if ( status == RTEMS_SUCCESSFUL ) { puts( "TA1 - timer_wake_when - RTEMS_NOT_DEFINED -- DID BSP SET THE TIME OF DAY?" ); } else { fatal_directive_status( status, RTEMS_NOT_DEFINED, "task_fire_when before clock is set" ); puts( "TA1 - rtems_timer_fire_when - RTEMS_NOT_DEFINED" ); } build_time( &time, 2, 5, 1987, 8, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid year" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 15, 5, 1988, 8, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid month" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 32, 1988, 8, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid day" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 25, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid hour" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 8, 61, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid minute" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 8, 30, 61, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid second" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 8, 30, 45, rtems_clock_get_ticks_per_second() + 1 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_clock_set with invalid ticks per second" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 8, 30, 45, 0 ); print_time( "TA1 - rtems_clock_set - ", &time, "" ); status = rtems_clock_set( &time ); directive_failed( status, "rtems_clock_set successful" ); puts( " - RTEMS_SUCCESSFUL" ); /* rtems_task_wake_when */ build_time( &time, 2, 5, 1988, 8, 30, 48, rtems_clock_get_ticks_per_second() + 1 ); time.second += 3; puts( "TA1 - rtems_task_wake_when - TICKINVALID - sleep about 3 seconds" ); /* NULL time */ status = rtems_task_wake_when( NULL ); fatal_directive_status( status, RTEMS_INVALID_ADDRESS, "rtems_task_wake_when with NULL" ); puts( "TA1 - rtems_task_wake_when - RTEMS_INVALID_ADDRESS" ); /* invalid ticks */ status = rtems_task_wake_when( &time ); directive_failed( status, "rtems_task_wake_when with invalid ticks per second" ); puts( "TA1 - rtems_task_wake_when - TICKINVALID - woke up RTEMS_SUCCESSFUL" ); build_time( &time, 2, 5, 1961, 8, 30, 48, 0 ); print_time( "TA1 - rtems_task_wake_when - ", &time, "" ); status = rtems_task_wake_when( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_task_wake_when with invalid year" ); puts( " - RTEMS_INVALID_CLOCK" ); build_time( &time, 2, 5, 1988, 25, 30, 48, 0 ); print_time( "TA1 - rtems_task_wake_when - ", &time, "" ); status = rtems_task_wake_when( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_task_wake_when with invalid hour" ); puts( " - RTEMS_INVALID_CLOCK" ); rtems_clock_get_tod( &time ); print_time( "TA1 - current time - ", &time, "\n" ); time.month = 1; print_time( "TA1 - rtems_task_wake_when - ", &time, "" ); status = rtems_task_wake_when( &time ); fatal_directive_status( status, RTEMS_INVALID_CLOCK, "rtems_task_wake_when before current time" ); puts( " - RTEMS_INVALID_CLOCK" ); }