File indexing completed on 2025-05-11 08:24:45
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 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #include <tmacros.h>
0034 #include "pritime.h"
0035
0036 const char rtems_test_name[] = "SP 50";
0037
0038
0039 rtems_timer_service_routine Timer_Routine(rtems_id id, void *ignored);
0040 rtems_task Init(rtems_task_argument argument);
0041
0042 volatile int Fired;
0043 volatile bool timerRan;
0044
0045 rtems_timer_service_routine Timer_Routine(rtems_id id, void *ignored)
0046 {
0047 rtems_status_code status;
0048
0049 Fired++;
0050 timerRan = true;
0051
0052 status = rtems_timer_server_fire_after(
0053 id,
0054 rtems_clock_get_ticks_per_second(),
0055 Timer_Routine,
0056 NULL
0057 );
0058 directive_failed( status, "fire after" );
0059
0060 }
0061
0062 rtems_task Init(
0063 rtems_task_argument argument
0064 )
0065 {
0066 rtems_status_code sc;
0067 rtems_id timer1;
0068 struct timespec uptime;
0069
0070 TEST_BEGIN();
0071
0072 sc = rtems_timer_initiate_server(
0073 1,
0074 RTEMS_MINIMUM_STACK_SIZE,
0075 RTEMS_DEFAULT_ATTRIBUTES
0076 );
0077 directive_failed( sc, "rtems_timer_initiate_server" );
0078
0079 sc = rtems_timer_create(rtems_build_name( 'T', 'M', 'R', '1' ), &timer1);
0080 directive_failed( sc, "rtems_timer_create" );
0081
0082 Fired = 0;
0083 timerRan = false;
0084
0085 Timer_Routine(timer1, NULL);
0086
0087 while (1) {
0088 sc = rtems_task_wake_after( 10 );
0089 directive_failed( sc, "rtems_task_wake_after" );
0090
0091 if ( timerRan == true ) {
0092 timerRan = false;
0093
0094 sc = rtems_clock_get_uptime( &uptime );
0095 directive_failed( sc, "rtems_clock_get_uptime" );
0096
0097 printf( "Timer fired at %" PRIdtime_t "\n", uptime.tv_sec );
0098 }
0099
0100 if ( Fired >= 10 ) {
0101 TEST_END();
0102 rtems_test_exit( 0 );
0103 }
0104
0105 }
0106 }
0107
0108
0109
0110
0111 #define CONFIGURE_INIT
0112 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0113 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0114
0115 #define CONFIGURE_MAXIMUM_TASKS 2
0116 #define CONFIGURE_MAXIMUM_TIMERS 1
0117
0118 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0119
0120 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0121
0122 #include <rtems/confdefs.h>
0123
0124