rtems_task Init( rtems_task_argument argument ) { rtems_status_code status; puts( "\n\n*** LED BLINKER -- timer ***" ); LED_INIT(); status = rtems_timer_create(rtems_build_name( 'T', 'M', 'R', '1' ), &Timer1); if ( status != RTEMS_SUCCESSFUL ) fputs( "Timer1 create failed\n", stderr ); status = rtems_timer_create(rtems_build_name( 'T', 'M', 'R', '2' ), &Timer2); if ( status != RTEMS_SUCCESSFUL ) fputs( "Timer2 create failed\n", stderr ); Timer_Routine(Timer1, NULL); LED_Change_Routine(); status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() ); Timer_Routine(Timer2, NULL); LED_Change_Routine(); while (1) { status = rtems_task_wake_after( 10 ); LED_Change_Routine(); } status = rtems_task_delete( RTEMS_SELF ); }
rtems_task Init( rtems_task_argument argument ) { rtems_status_code status; puts( "\n\n*** LED BLINKER -- timer_server ***" ); LED_INIT(); status = rtems_timer_initiate_server( 1, RTEMS_MINIMUM_STACK_SIZE * 2, RTEMS_DEFAULT_ATTRIBUTES ); if ( status != RTEMS_SUCCESSFUL ) fputs( "timer create server failed\n", stderr ); status = rtems_timer_create(rtems_build_name( 'T', 'M', 'R', '1' ), &Timer1); if ( status != RTEMS_SUCCESSFUL ) fputs( "Timer1 create failed\n", stderr ); status = rtems_timer_create(rtems_build_name( 'T', 'M', 'R', '2' ), &Timer2); if ( status != RTEMS_SUCCESSFUL ) fputs( "Timer2 create failed\n", stderr ); Timer_Routine(Timer1, NULL); status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() ); Timer_Routine(Timer2, NULL); status = rtems_task_delete( RTEMS_SELF ); }
rtems_task Init( rtems_task_argument argument ) { rtems_status_code sc; rtems_id timer1; struct timespec uptime; TEST_BEGIN(); sc = rtems_timer_initiate_server( 1, RTEMS_MINIMUM_STACK_SIZE, RTEMS_DEFAULT_ATTRIBUTES ); directive_failed( sc, "rtems_timer_initiate_server" ); sc = rtems_timer_create(rtems_build_name( 'T', 'M', 'R', '1' ), &timer1); directive_failed( sc, "rtems_timer_create" ); Fired = 0; timerRan = false; Timer_Routine(timer1, NULL); while (1) { sc = rtems_task_wake_after( 10 ); directive_failed( sc, "rtems_task_wake_after" ); if ( timerRan == true ) { timerRan = false; sc = rtems_clock_get_uptime( &uptime ); directive_failed( sc, "rtems_clock_get_uptime" ); printf( "Timer fired at %" PRIdtime_t "\n", uptime.tv_sec ); } if ( Fired >= 10 ) { TEST_END(); rtems_test_exit( 0 ); } /* technically the following is a critical section */ } }