File indexing completed on 2025-05-11 08:24:33
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 #ifdef HAVE_CONFIG_H
0034 #include "config.h"
0035 #endif
0036
0037 #define CONFIGURE_INIT
0038 #include "system.h"
0039
0040 #include <rtems/monitor.h>
0041 #include <rtems/shell.h>
0042
0043 const char rtems_test_name[] = "MONITOR";
0044
0045 rtems_task_priority Priorities[6] = { 0, 1, 1, 3, 4, 5 };
0046
0047 rtems_task Task_1_through_5(
0048 rtems_task_argument argument
0049 )
0050 {
0051 rtems_status_code status;
0052
0053 for ( ; ; ) {
0054 status = rtems_task_wake_after( 100 );
0055 directive_failed( status, "rtems_task_wake_after" );
0056 }
0057 }
0058
0059 static void notification(int fd, int seconds_remaining, void *arg)
0060 {
0061 printf(
0062 "Press any key to enter monitor (%is remaining)\n",
0063 seconds_remaining
0064 );
0065 }
0066
0067 rtems_task Init(
0068 rtems_task_argument argument
0069 )
0070 {
0071 uint32_t index;
0072 rtems_status_code status;
0073
0074 TEST_BEGIN();
0075
0076 Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );
0077 Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' );
0078 Task_name[ 3 ] = rtems_build_name( 'T', 'A', '3', ' ' );
0079 Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' );
0080 Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' );
0081
0082 for ( index = 1 ; index <= 5 ; index++ ) {
0083 status = rtems_task_create(
0084 Task_name[ index ],
0085 Priorities[ index ],
0086 RTEMS_MINIMUM_STACK_SIZE * 4,
0087 RTEMS_DEFAULT_MODES,
0088 (index == 5) ? RTEMS_FLOATING_POINT : RTEMS_DEFAULT_ATTRIBUTES,
0089 &Task_id[ index ]
0090 );
0091 directive_failed( status, "rtems_task_create loop" );
0092 }
0093
0094 for ( index = 1 ; index <= 5 ; index++ ) {
0095 status = rtems_task_start( Task_id[ index ], Task_1_through_5, index );
0096 directive_failed( status, "rtems_task_start loop" );
0097 }
0098
0099 status = rtems_shell_wait_for_input(
0100 STDIN_FILENO,
0101 20,
0102 notification,
0103 NULL
0104 );
0105 if (status == RTEMS_SUCCESSFUL) {
0106 rtems_monitor_init( 0 );
0107
0108 rtems_task_exit();
0109 } else {
0110 TEST_END();
0111
0112 rtems_test_exit( 0 );
0113 }
0114 }