File indexing completed on 2025-05-11 08:24:44
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 <rtems/libcsupport.h>
0034
0035 #include <tmacros.h>
0036
0037 const char rtems_test_name[] = "SP 18";
0038
0039
0040 rtems_task Init(rtems_task_argument argument);
0041
0042 rtems_task Init(
0043 rtems_task_argument ignored
0044 )
0045 {
0046 rtems_id task_id;
0047 rtems_status_code sc;
0048 bool ok;
0049 uintptr_t stack_size;
0050 rtems_resource_snapshot snapshot;
0051 void *greedy;
0052
0053 TEST_BEGIN();
0054
0055 greedy = rtems_workspace_greedy_allocate_all_except_largest( &stack_size );
0056 rtems_resource_snapshot_take( &snapshot );
0057
0058
0059 ++stack_size;
0060
0061 puts( "Init - rtems_task_create - Unsatisfied on Extensions" );
0062 while (1) {
0063
0064 sc = rtems_task_create(
0065 rtems_build_name( 'T', 'E', 'S', 'T' ),
0066 1,
0067 stack_size,
0068 RTEMS_DEFAULT_MODES,
0069 RTEMS_FLOATING_POINT,
0070 &task_id
0071 );
0072
0073 if ( sc == RTEMS_SUCCESSFUL )
0074 break;
0075
0076 fatal_directive_status( sc, RTEMS_UNSATISFIED, "rtems_task_create" );
0077
0078
0079
0080
0081 ok = rtems_resource_snapshot_check( &snapshot );
0082 rtems_test_assert( ok );
0083
0084 stack_size -= 8;
0085 if ( stack_size <= RTEMS_MINIMUM_STACK_SIZE )
0086 break;
0087 }
0088
0089 if ( sc != RTEMS_SUCCESSFUL )
0090 rtems_test_exit(0);
0091
0092
0093
0094
0095 puts( "Init - rtems_task_delete - OK" );
0096 sc = rtems_task_delete( task_id );
0097 directive_failed( sc, "rtems_task_delete" );
0098
0099 puts( "Init - verify workspace has same memory" );
0100 ok = rtems_resource_snapshot_check( &snapshot );
0101 rtems_test_assert( ok );
0102
0103 rtems_workspace_greedy_free( greedy );
0104
0105 TEST_END();
0106 rtems_test_exit(0);
0107 }
0108
0109
0110
0111 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0112 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0113
0114 #define CONFIGURE_MAXIMUM_TASKS 2
0115 #define CONFIGURE_MAXIMUM_USER_EXTENSIONS 20
0116 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0117
0118 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0119
0120 #define CONFIGURE_INIT
0121 #include <rtems/confdefs.h>
0122
0123