epos_task Task_1_through_3( epos_task_argument argument ) { epos_id tid; epos_time_of_day time; epos_status_code status; status = epos_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "epos_task_ident" ); while( FOREVER ) { status = epos_clock_get( RTEMS_CLOCK_GET_TOD, &time ); directive_failed( status, "epos_clock_get" ); if ( time.second >= 35 ) { printk( "*** END OF TEST 1 ***" ); epos_test_exit( 0 ); } put_name( Task_name[ task_number( tid ) ], FALSE ); print_time( " - epos_clock_get - ", &time, "\n" ); // status = epos_task_wake_after( task_number( tid ) * 5 * TICKS_PER_SECOND ); status = epos_task_wake_after( task_number( tid ) * 5); directive_failed( status, "epos_task_wake_after" ); } }
rtems_task Task_1_through_3( rtems_task_argument argument ) { rtems_id tid; rtems_time_of_day time; rtems_status_code status; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident of self" ); while ( FOREVER ) { status = rtems_timer_fire_after( Timer_id[ argument ], task_number( tid ) * 5 * TICKS_PER_SECOND, Resume_task, NULL ); directive_failed( status, "tm_fire_after failed" ); status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time ); directive_failed( status, "rtems_clock_get failed" ); if ( time.second >= 35 ) { puts( "*** END OF TEST 24 ***" ); rtems_test_exit( 0 ); } put_name( Task_name[ task_number( tid ) ], FALSE ); print_time( " - rtems_clock_get - ", &time, "\n" ); status = rtems_task_suspend( RTEMS_SELF ); directive_failed( status, "rtems_task_suspend" ); } }
rtems_task Task_1( rtems_task_argument argument ) { rtems_status_code status; rtems_id tid; rtems_time_of_day time; uint32_t task_index; INTEGER_DECLARE; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident" ); task_index = task_number( tid ); INTEGER_LOAD( INTEGER_factors[ task_index ] ); put_name( Task_name[ task_index ], FALSE ); printf( " - integer base = (0x%" PRIx32 ")\n", INTEGER_factors[ task_index ] ); while( FOREVER ) { status = rtems_clock_get_tod( &time ); directive_failed( status, "rtems_clock_get_tod" ); put_name( Task_name[ task_number( tid ) ], FALSE ); print_time( " - rtems_clock_get_tod - ", &time, "\n" ); INTEGER_CHECK( INTEGER_factors[ task_index ] ); status = rtems_task_wake_after( ( task_number( tid ) ) * 5 * rtems_clock_get_ticks_per_second() ); directive_failed( status, "rtems_task_wake_after" ); } }
void Task_switch( rtems_tcb *unused, rtems_tcb *heir ) { uint32_t index; rtems_time_of_day time; rtems_status_code status; index = task_number( heir->Object.id ) - task_number( Task_id[1] ) + 1; switch( index ) { case 1: case 2: case 3: Run_count[ index ] += 1; status = rtems_clock_get_tod( &time ); directive_failed_with_level( status, "rtems_clock_get_tod", 1 ); if (taskSwitchLogIndex < (sizeof taskSwitchLog / sizeof taskSwitchLog[0])) { taskSwitchLog[taskSwitchLogIndex].taskIndex = index; taskSwitchLog[taskSwitchLogIndex].when = time; taskSwitchLogIndex++; } if ( time.second >= 16 ) testsFinished = 1; break; case 0: default: break; } }
rtems_task Task_1_through_3( rtems_task_argument argument ) { rtems_id tid; rtems_time_of_day time; rtems_status_code status; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident of self" ); while ( FOREVER ) { status = rtems_timer_server_fire_after( Timer_id[ argument ], (task_number( tid ) - 1) * 5 * rtems_clock_get_ticks_per_second(), Resume_task, (void *) &tid ); directive_failed( status, "rtems_timer_server_fire_after failed" ); status = rtems_clock_get_tod( &time ); directive_failed( status, "rtems_clock_get_tod failed" ); if ( time.second >= 35 ) { puts( "*** END OF TEST 30 ***" ); rtems_test_exit( 0 ); } put_name( Task_name[ task_number( tid ) - 1 ], FALSE ); print_time( " - rtems_clock_get_tod - ", &time, "\n" ); status = rtems_task_suspend( RTEMS_SELF ); directive_failed( status, "rtems_task_suspend" ); } }
rtems_task Task_1_through_3( rtems_task_argument argument ) { rtems_id tid; rtems_time_of_day time; rtems_status_code status; rtems_interval ticks; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident" ); /* * Use TOD_MILLISECONDS_TO_TICKS not RTEMS_MILLISECONDS_TO_TICKS to * test C implementation in SuperCore -- not macro version used * everywhere else. */ ticks = TOD_MILLISECONDS_TO_TICKS( task_number( tid ) * 5 * 1000 ); while( FOREVER ) { status = rtems_clock_get_tod( &time ); directive_failed( status, "rtems_clock_get_tod" ); if ( time.second >= 35 ) { puts( "*** END OF CBS SCHEDULER TEST 1 ***" ); rtems_test_exit( 0 ); } put_name( Task_name[ task_number( tid ) ], FALSE ); print_time( " - rtems_clock_get_tod - ", &time, "\n" ); status = rtems_task_wake_after( ticks ); directive_failed( status, "rtems_task_wake_after" ); } }
rtems_task Test_task( rtems_task_argument argument ) { rtems_status_code status; rtems_id tid; rtems_time_of_day time; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident" ); status = rtems_clock_get_tod( &time ); directive_failed( status, "rtems_clock_get_tod" ); put_name( Task_name[ task_number( tid ) ], FALSE ); print_time( " - rtems_clock_get_tod - ", &time, "\n" ); status = rtems_task_wake_after( task_number( tid ) * 1 * rtems_clock_get_ticks_per_second() ); directive_failed( status, "rtems_task_wake_after" ); status = rtems_clock_get_tod( &time ); directive_failed( status, "rtems_clock_get_tod" ); put_name( Task_name[ task_number( tid ) ], FALSE ); print_time( " - rtems_clock_get_tod - ", &time, "\n" ); if ( task_number(tid) == 1 ) { /* TASK 1 */ put_name( Task_name[ 1 ], FALSE ); printf( " - deleting self\n" ); status = rtems_task_delete( RTEMS_SELF ); directive_failed( status, "rtems_task_delete of RTEMS_SELF" ); } else if ( task_number(tid) == 2 ) { /* TASK 2 */ put_name( Task_name[ 2 ], FALSE ); printf( " - waiting to be deleted by " ); put_name( Task_name[ 3 ], TRUE ); while ( FOREVER ); } else { /* TASK 3 */ put_name( Task_name[ 3 ], FALSE ); printf( " - getting TID of " ); put_name( Task_name[ 2 ], TRUE ); do { status = rtems_task_ident( Task_name[ 2 ], RTEMS_SEARCH_ALL_NODES, &tid ); } while ( status != RTEMS_SUCCESSFUL ); directive_failed( status, "rtems_task_ident" ); put_name( Task_name[ 3 ], FALSE ); printf( " - deleting " ); put_name( Task_name[ 2 ], TRUE ); status = rtems_task_delete( tid ); directive_failed( status, "rtems_task_delete of Task 2" ); puts( "*** END OF TEST 1 ***" ); rtems_test_exit(0); } }
rtems_task Task_1_through_5( rtems_task_argument argument ) { int i; unsigned int passes = 0; rtems_id tid; rtems_time_of_day time; rtems_status_code status; unsigned char *mem_ptr; int mem_amt; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident" ); while (TRUE) { bool malloc_walk_ok; if ( passes++ > NUM_PASSES ) { TEST_END(); rtems_test_exit(0); } status = rtems_clock_get_tod( &time ); directive_failed( status, "rtems_clock_get_tod" ); put_name( Task_name[ task_number( tid ) ], FALSE ); print_time( " - rtems_clock_get_tod - ", &time, "\n" ); mem_amt = ((int)((float)rand()*1000.0/(float)RAND_MAX)); while (!(mem_ptr = malloc ( mem_amt))) { printf("out of memory... trying again.\n"); mem_amt = ((int)((float)rand()*1000.0/(float)RAND_MAX)); } printf("mallocing %d bytes\n",mem_amt); memset( mem_ptr, mem_amt, mem_amt ); malloc_report_statistics(); malloc_walk_ok = malloc_walk( 1, false ); rtems_test_assert( malloc_walk_ok ); status = rtems_task_wake_after( task_number( tid ) * 1 * rtems_clock_get_ticks_per_second()/4 ); for (i=0; i < mem_amt; i++) { if ( mem_ptr[i] != (mem_amt & 0xff)) { printf("failed %d, %d, 0x%x, 0x%x\n",i,mem_amt,mem_ptr[i],mem_amt&0xff); rtems_test_exit(1); } } directive_failed( status, "rtems_task_wake_after" ); free( mem_ptr ); } }
rtems_extension Task_exit_extension( rtems_tcb *running_task ) { if ( task_number( running_task->Object.id ) > 0 ) { puts_nocr( "RTEMS_TASK_EXITTED - extension invoked for " ); put_name( Task_name[ task_number( running_task->Object.id ) ], TRUE ); } puts("*** END OF TEST 7 ***" ); rtems_test_exit( 0 ); }
rtems_task Test_task( rtems_task_argument unused ) { rtems_id tid; rtems_time_of_day time; uint32_t task_index; rtems_status_code status; int cpu_num; char name[5]; char *p; /* Get the task name */ p = rtems_object_get_name( RTEMS_SELF, 5, name ); rtems_test_assert( p != NULL ); status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); task_index = task_number( tid ); for ( ; ; ) { /* Get the CPU Number */ cpu_num = bsp_smp_processor_id(); status = rtems_clock_get_tod( &time ); if ( time.second >= 35 ) { locked_printf( "*** END OF SMP08 TEST ***" ); rtems_test_exit( 0 ); } PrintTaskInfo( p, &time ); status = rtems_task_wake_after( task_index * 5 * rtems_clock_get_ticks_per_second() ); } }
rtems_task Test_task( rtems_task_argument unused ) { rtems_id tid; rtems_time_of_day time; uint32_t task_index; rtems_status_code status; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "task ident" ); task_index = task_number( tid ); for ( ; ; ) { status = rtems_clock_get_tod( &time ); if ( time.second >= 35 ) { puts( "*** END OF CLOCK TICK TEST ***" ); rtems_test_exit( 0 ); } put_name( Task_name[ task_index ], FALSE ); print_time( " - rtems_clock_get_tod - ", &time, "\n" ); status = rtems_task_wake_after( task_index * 5 * rtems_clock_get_ticks_per_second() ); directive_failed( status, "wake after" ); } }
rtems_task Test_task( rtems_task_argument unused ) { rtems_id tid; rtems_time_of_day time; uint32_t task_index; rtems_status_code status; char name[5]; char *p; /* Get the task name */ p = rtems_object_get_name( RTEMS_SELF, 5, name ); rtems_test_assert( p != NULL ); status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); rtems_test_assert( status == RTEMS_SUCCESSFUL ); task_index = task_number( tid ); for ( ; ; ) { status = rtems_clock_get_tod( &time ); rtems_test_assert( status == RTEMS_SUCCESSFUL ); if ( time.second >= 35 ) { TEST_END(); rtems_test_exit( 0 ); } PrintTaskInfo( p, &time ); status = rtems_task_wake_after( task_index * 5 * rtems_clock_get_ticks_per_second() ); rtems_test_assert( status == RTEMS_SUCCESSFUL ); } }
rtems_boolean Task_create_extension( rtems_tcb *unused, rtems_tcb *created_task ) { char line[80]; rtems_name name; if ( task_number( created_task->Object.id ) > 0 ) { name = Task_name[ task_number( created_task->Object.id ) ]; sprintf( line, "TASK_CREATE - %c%c%c%c - created\n", (name >> 24) & 0xff, (name >> 16) & 0xff, (name >> 8) & 0xff, name & 0xff ); buffered_io_add_string( line ); }
void Task_restart_extension( rtems_tcb *unused, rtems_tcb *restarted_task ) { char line[80]; rtems_name name; if ( task_number( restarted_task->Object.id ) > 0 ) { name = Task_name[ task_number( restarted_task->Object.id ) ]; sprintf( line, "TASK_RESTART - %c%c%c%c - restarted\n", (name >> 24) & 0xff, (name >> 16) & 0xff, (name >> 8) & 0xff, name & 0xff ); buffered_io_add_string( line ); }
rtems_task First_FP_task( rtems_task_argument argument ) { rtems_status_code status; rtems_id tid; rtems_time_of_day time; uint32_t task_index; INTEGER_DECLARE; FP_DECLARE; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident" ); task_index = task_number( tid ); INTEGER_LOAD( INTEGER_factors[ task_index ] ); FP_LOAD( FP_factors[ task_index ] ); put_name( Task_name[ task_index ], FALSE ); printf( " - integer base = (0x%" PRIx32 ")\n", INTEGER_factors[ task_index ] ); put_name( Task_name[ task_index ], FALSE ); #if ( RTEMS_HAS_HARDWARE_FP == 1 ) printf( " - float base = (%g)\n", FP_factors[ task_index ] ); #else printf( " - float base = (NA)\n" ); #endif if ( argument == 0 ) { status = rtems_task_restart( RTEMS_SELF, 1 ); directive_failed( status, "rtems_task_restart of RTEMS_SELF" ); } else { build_time( &time, 12, 31, 1988, 9, 0, 0, 0 ); status = rtems_clock_set( &time ); directive_failed( status, "rtems_clock_set" ); status = rtems_task_delete( RTEMS_SELF ); directive_failed( status, "rtems_task_delete of RTEMS_SELF" ); } }
rtems_extension Task_switch( rtems_tcb *unused, rtems_tcb *heir ) { uint32_t index; rtems_time_of_day time; rtems_status_code status; index = task_number( heir->Object.id ); switch( index ) { case 1: case 2: case 3: Run_count[ index ] += 1; status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time ); fatal_directive_status_with_level( status, RTEMS_SUCCESSFUL, "rtems_clock_get", 1 ); if (taskSwitchLogIndex < (sizeof taskSwitchLog / sizeof taskSwitchLog[0])) { taskSwitchLog[taskSwitchLogIndex].taskIndex = index; taskSwitchLog[taskSwitchLogIndex].when = time; taskSwitchLogIndex++; } if ( time.second >= 16 ) testsFinished = 1; break; case 0: default: break; } }
static rtems_task Locker_task( rtems_task_argument task_index ) { rtems_id tid; rtems_status_code status; rtems_task_argument my_obtain_counter; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident" ); rtems_test_assert( task_index == task_number( tid ) - 1 ); status = rtems_semaphore_obtain( Semaphore, RTEMS_DEFAULT_OPTIONS, 0 ); directive_failed( status, "rtems_semaphore_obtain" ); put_name( Task_name[ task_index ], FALSE ); puts( " - unblocked - OK" ); status = rtems_task_wake_after( 10 ); directive_failed( status, "rtems_task_wake_after" ); my_obtain_counter = Obtain_counter; rtems_test_assert( task_index == Obtain_order[ Variant ][ Obtain_counter ] ); ++Obtain_counter; status = rtems_semaphore_release( Semaphore ); directive_failed( status, "rtems_semaphore_release" ); if ( my_obtain_counter == MAX_TASKS - 1 ) { status = rtems_event_transient_send( Master ); directive_failed( status, "rtems_event_transient_send" ); } (void) rtems_task_delete( RTEMS_SELF ); }
rtems_task FP_task( rtems_task_argument argument ) { rtems_status_code status; rtems_id tid; rtems_time_of_day time; uint32_t task_index; uint32_t previous_seconds; INTEGER_DECLARE; FP_DECLARE; status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); directive_failed( status, "rtems_task_ident of self" ); task_index = task_number( tid ); INTEGER_LOAD( INTEGER_factors[ task_index ] ); FP_LOAD( FP_factors[ task_index ] ); put_name( Task_name[ task_index ], FALSE ); printf( " - integer base = (0x%x)\n", INTEGER_factors[ task_index ] ); put_name( Task_name[ task_index ], FALSE ); #if ( RTEMS_HAS_HARDWARE_FP == 1 ) printf( " - float base = (%g)\n", FP_factors[ task_index ] ); #else printf( " - float base = (NA)\n" ); #endif previous_seconds = -1; while( FOREVER ) { status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time ); directive_failed( status, "rtems_clock_get" ); if ( time.second >= 16 ) { if ( task_number( tid ) == 4 ) { puts( "TA4 - rtems_task_delete - self" ); status = rtems_task_delete( RTEMS_SELF ); directive_failed( status, "rtems_task_delete of TA4" ); } puts( "TA5 - rtems_task_delete - TA3" ); status = rtems_task_delete( Task_id[ 3 ] ); directive_failed( status, "rtems_task_delete of TA3" ); puts( "*** END OF TEST 19 *** " ); rtems_test_exit( 0 ); } if (previous_seconds != time.second) { put_name( Task_name[ task_index ], FALSE ); print_time( " - rtems_clock_get - ", &time, "\n" ); previous_seconds = time.second; } INTEGER_CHECK( INTEGER_factors[ task_index ] ); FP_CHECK( FP_factors[ task_index ] ); /* for the first 4 seconds we spin as fast as possible * so that we likely are interrupted * After that, we go to sleep for a second at a time */ if (time.second >= 4) { status = rtems_task_wake_after( TICKS_PER_SECOND ); directive_failed( status, "rtems_task_wake_after" ); } } }