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
0030
0031 #ifdef HAVE_CONFIG_H
0032 #include "config.h"
0033 #endif
0034
0035 #include <tmacros.h>
0036 #include <rtems/libcsupport.h>
0037
0038 const char rtems_test_name[] = "SP 48";
0039
0040 rtems_task Init(rtems_task_argument ignored);
0041
0042 #define SEMA_COUNT 5000
0043 rtems_id Semaphores[SEMA_COUNT];
0044
0045 rtems_task Init(rtems_task_argument ignored)
0046 {
0047 rtems_status_code sc;
0048 int i;
0049 int created;
0050
0051 TEST_BEGIN();
0052
0053 printf(
0054 "Largest C program heap block available: %zu\n",
0055 malloc_free_space()
0056 );
0057 for (i=0 ; i<SEMA_COUNT ; i++ ) {
0058 sc = rtems_semaphore_create(
0059 rtems_build_name('s', 'e', 'm', ' '),
0060 1,
0061 RTEMS_DEFAULT_ATTRIBUTES,
0062 0,
0063 &Semaphores[i]
0064 );
0065
0066
0067 if (sc == RTEMS_TOO_MANY) {
0068 printf("We run out at %i!\n", i);
0069 break;
0070 }
0071 if (sc != RTEMS_SUCCESSFUL) {
0072 printf("FAILED creating at %i\n", i);
0073 directive_failed( sc, "rtems_semaphore_create " );
0074 rtems_test_exit( 0 );
0075 }
0076 }
0077
0078 created = i;
0079 if ( created == SEMA_COUNT )
0080 puts( "Created all semaphores allowed in this test" );
0081
0082 printf( "%d semaphores created\n", i );
0083 printf(
0084 "Largest C program heap block available: %zu\n",
0085 malloc_free_space()
0086 );
0087
0088 for ( i-- ; i ; i-- ) {
0089 sc = rtems_semaphore_delete( Semaphores[i] );
0090 if (sc != RTEMS_SUCCESSFUL) {
0091 printf("FAILED deleting at %i\n", i);
0092 directive_failed( sc, "rtems_semaphore_delete " );
0093 rtems_test_exit( 0 );
0094 }
0095 }
0096
0097 printf( "%d semaphores successfully deleted\n", created );
0098 printf(
0099 "Largest C program heap block available: %zu\n",
0100 malloc_free_space()
0101 );
0102
0103 TEST_END();
0104 rtems_test_exit( 0 );
0105 }
0106
0107
0108
0109 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0110 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0111
0112 #define CONFIGURE_MAXIMUM_TASKS 1
0113 #define CONFIGURE_MAXIMUM_SEMAPHORES rtems_resource_unlimited(5)
0114 #if 1
0115 #define CONFIGURE_UNIFIED_WORK_AREAS
0116 #else
0117 #define CONFIGURE_MEMORY_OVERHEAD 1024
0118 #endif
0119
0120 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0121
0122 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0123
0124 #define CONFIGURE_INIT
0125 #include <rtems/confdefs.h>